diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 4b2d211..0000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -/node_modules -/build -/key -/dist -project.*.json -*.lock -*.log -iconfont/ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index a2e22a0..0000000 --- a/.eslintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": ["taro/react", "@aaronghx/eslint-config-react"], - "rules": { - "no-console": "off", - "@typescript-eslint/no-shadow": "off", - "@typescript-eslint/no-unused-vars": "off", - "eqeqeq": "off", - "no-prototype-builtins": "off", - "import/first": "off", - "react/no-children-prop": "off", - "import/no-commonjs": "off", - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": "off" - } -} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6125037..0000000 --- a/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -dist/ -build/ -deploy_versions/ -.temp/ -.rn_temp/ -node_modules/ -.DS_Store -.swc/ diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 1a3ecc7..0000000 --- a/.prettierrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "printWidth": 160, - "tabWidth": 2, - "useTabs": false, - "semi": false, - "singleQuote": true, - "jsxSingleQuote": true, - "jsxBracketSameLine": true, - "trailingComma": "all" -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 3fe440c..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "editor.defaultFormatter": "dbaeumer.vscode-eslint", - "eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact", "vue", "html", "markdown", "json", "jsonc", "json5"], - // Set the default - "editor.formatOnSave": true, - // Enable per-language - "[javascript]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[typescript]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[typescriptreact]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[javascriptreact]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[css]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[json]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[jsonc]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[scss]": { - "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" - } -} diff --git a/README.md b/README.md deleted file mode 100644 index 146e811..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# 阿里图标库 iconfont 使用 Symbol 我们使用了 [taro-iconfont-svg](https://github.com/HongxuanG/taro-iconfont-svg) 这个库 diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 8829a94..0000000 --- a/babel.config.js +++ /dev/null @@ -1,13 +0,0 @@ -// babel-preset-taro 更多选项和默认值: -// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md -module.exports = { - presets: [ - [ - 'taro', - { - framework: 'react', - ts: true, - }, - ], - ], -} diff --git a/config/dev.js b/config/dev.js deleted file mode 100644 index 6a38774..0000000 --- a/config/dev.js +++ /dev/null @@ -1,51 +0,0 @@ -const path = require('path') - -module.exports = { - env: { - NODE_ENV: '"development"', - }, - defineConstants: { - CURRENT_BASE_URL: '"https://test.zzfzyc.com/lymarket"', - CURRENT_CAP_HTML_TO_IMAGE_BASE_URL: '"https://test.zzfzyc.com"', - CURRENT_PAY_H5_CODE_URL: '"https://test.zzfzyc.com/cashier"', - CURRENT_IMG_CND_Prefix: '"https://test.cdn.zzfzyc.com"', - }, - mini: { - // optimizeMainPackage: { - // enable: true - // }, - webpackChain: (chain, webpack) => { - chain.merge({ - plugin: { - install: { - plugin: require('terser-webpack-plugin'), - args: [ - { - terserOptions: { - compress: false, // 默认使用terser压缩 - // compress: { - // drop_console: true, // 去掉打印 - // }, // 默认使用terser压缩 - // mangle: false, - keep_classnames: true, // 不改变class名称 - keep_fnames: true, // 不改变函数名称 - }, - }, - ], - }, - }, - }) - }, - }, - h5: {}, - alias: { - '@': path.resolve(__dirname, '..', 'src'), - }, - - sass: { - resource: [path.resolve(__dirname, '..', 'src/styles/common.scss'), path.resolve(__dirname, '..', 'src/styles/iconfont.scss')], - }, - // plugins: [ - // '@tarojs/plugin-react-devtools' - // ], -} diff --git a/config/index.js b/config/index.js deleted file mode 100644 index 306c8f0..0000000 --- a/config/index.js +++ /dev/null @@ -1,139 +0,0 @@ -const path = require('path') -const childProcess = require('child_process') - -const versions - = childProcess.execSync('git rev-parse --abbrev-ref HEAD', { - encoding: 'utf8', - }) != 'HEAD\n' - ? childProcess.execSync('git rev-parse --abbrev-ref HEAD', { - encoding: 'utf8', - }) - : childProcess.execSync('git describe --tags --abbrev=0', { - encoding: 'utf8', - }) -const CURRENT_GITHASH = childProcess.execSync('git rev-parse --short HEAD', { - encoding: 'utf8', -}) -const CURRENT_VERSION = `Version: ${JSON.stringify(process.env.CODE_BRANCH || versions)} ${CURRENT_GITHASH} ${new Date().toLocaleString()}`.replace( - /\"|\\n/g, - '', -) - -const config = { - appid: 'wx64fe67f111d52457', // 测试/体验环境 - projectName: 'SpiderSteward', - date: '2022-4-6', - designWidth: 750, - deviceRatio: { - 640: 2.34 / 2, - 750: 1, - 828: 1.81 / 2, - }, - sourceRoot: 'src', - outputRoot: 'dist', - defineConstants: { - CURRENT_VERSION: JSON.stringify(CURRENT_VERSION), - CURRENT_GITHASH: JSON.stringify(CURRENT_GITHASH), - CURRENT_ENV: JSON.stringify(process.env.NODE_ENV), - }, - copy: { - patterns: [], - options: {}, - }, - framework: 'react', - mini: { - postcss: { - pxtransform: { - enable: true, - config: { - onePxTransform: false, - }, - }, - url: { - enable: true, - config: { - limit: 1024, // 设定转换尺寸上限 - }, - }, - cssModules: { - enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true - config: { - namingPattern: 'module', // 转换模式,取值为 global/module - generateScopedName: '[name]__[local]___[hash:base64:5]', - }, - }, - }, - enableSourceMap: true, // 默认值:watch 模式下为 true,否则为 false。 用于控制是否生成 js、css 对应的 sourceMap。 - }, - h5: { - router: { - mode: 'hash', - }, - // 设置代理服务器转发 - // devServer: { - // proxy: { - // '/mp/': { - // target: Domain, - // pathRewrite: { - // '^/mp/': '' // 所以带有/api/请求的链接一律替换为空并追加域名请求 - // }, - // changeOrigin: true - // } - // } - // } - // }, - output: { - filename: 'js/[name].[hash].js', - chunkFilename: 'js/[name].[chunkhash].js', - }, - imageUrlLoaderOption: { - limit: 5000, - name: 'static/images/[name].[hash].[ext]', - }, - miniCssExtractPluginOption: { - filename: 'css/[name].[hash].css', - chunkFilename: 'css/[name].[chunkhash].css', - }, - devServer: { - https: true, - }, - publicPath: '/', - staticDirectory: 'static', - postcss: { - autoprefixer: { - enable: true, - config: {}, - }, - cssModules: { - enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true - config: { - namingPattern: 'module', // 转换模式,取值为 global/module - generateScopedName: '[name]__[local]___[hash:base64:5]', - }, - }, - }, - }, - compiler: { - type: 'webpack5', - // 依赖预编译配置 - prebundle: { - enable: false, - timings: true, - }, - }, - // 持久化缓存配置 - cache: { - enable: true, - }, - plugins: [['@tarojs/plugin-framework-react', { reactMode: 'concurrent' }]], -} - -module.exports = function(merge) { - if (process.env.NODE_ENV === 'development') { - return merge({}, config, require('./dev')) - } - if (process.env.NODE_ENV === 'pre') { - return merge({}, config, require('./pre')) - } - return merge({}, config, require('./prod')) -} diff --git a/config/pre.js b/config/pre.js deleted file mode 100644 index 1f20b3e..0000000 --- a/config/pre.js +++ /dev/null @@ -1,47 +0,0 @@ -const path = require('path') - -module.exports = { - env: { - NODE_ENV: '"pre"', - }, - defineConstants: { - CURRENT_BASE_URL: '"https://pre.zzfzyc.com/lymarket"', - CURRENT_CAP_HTML_TO_IMAGE_BASE_URL: '"https://pre.zzfzyc.com"', - CURRENT_PAY_H5_CODE_URL: '"https://pre.zzfzyc.com/cashier"', - CURRENT_IMG_CND_Prefix: '"https://test.cdn.zzfzyc.com"', - }, - mini: { - optimizeMainPackage: { - enable: true, - }, - webpackChain: (chain, webpack) => { - chain.merge({ - plugin: { - install: { - plugin: require('terser-webpack-plugin'), - args: [ - { - terserOptions: { - // compress: true, // 默认使用terser压缩 - compress: { - drop_console: false, // 去掉打印 - }, // 默认使用terser压缩 - // mangle: false, - keep_classnames: true, // 不改变class名称 - keep_fnames: true, // 不改变函数名称 - }, - }, - ], - }, - }, - }) - }, - }, - h5: {}, - alias: { - '@': path.resolve(__dirname, '..', 'src'), - }, - sass: { - resource: [path.resolve(__dirname, '..', 'src/styles/common.scss')], - }, -} diff --git a/config/prod.js b/config/prod.js deleted file mode 100644 index 46e09ea..0000000 --- a/config/prod.js +++ /dev/null @@ -1,56 +0,0 @@ -const path = require('path') - -module.exports = { - env: { - NODE_ENV: '"production"', - }, - defineConstants: { - CURRENT_BASE_URL: '"https://www.zzfzyc.com/lymarket"', - CURRENT_CAP_HTML_TO_IMAGE_BASE_URL: '"https://www.zzfzyc.com"', - CURRENT_PAY_H5_CODE_URL: '"https://www.zzfzyc.com/cashier"', - CURRENT_IMG_CND_Prefix: '"https://cdn.zzfzyc.com"', - }, - mini: { - optimizeMainPackage: { - enable: false, - }, - webpackChain: (chain, webpack) => { - chain.merge({ - plugin: { - install: { - plugin: require('terser-webpack-plugin'), - args: [ - { - terserOptions: { - // compress: true, // 默认使用terser压缩 - compress: { - drop_console: false, // 去掉打印 - }, // 默认使用terser压缩 - // mangle: false, - keep_classnames: true, // 不改变class名称 - keep_fnames: true, // 不改变函数名称 - }, - }, - ], - }, - }, - }) - }, - }, - h5: { - /** - * 如果h5端编译后体积过大,可以使用webpack-bundle-analyzer插件对打包体积进行分析。 - * 参考代码如下: - * webpackChain (chain) { - * chain.plugin('analyzer') - * .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []) - * } - */ - }, - alias: { - '@': path.resolve(__dirname, '..', 'src'), - }, - sass: { - resource: path.resolve(__dirname, '..', 'src/styles/common.scss'), - }, -} diff --git a/global.d.ts b/global.d.ts deleted file mode 100644 index bf7cc05..0000000 --- a/global.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -/// - -declare module '*.png' -declare module '*.gif' -declare module '*.jpg' -declare module '*.jpeg' -declare module '*.svg' -declare module '*.css' -declare module '*.less' -declare module '*.scss' -declare module '*.sass' -declare module '*.styl' - -declare namespace NodeJS { - interface ProcessEnv { - TARO_ENV: 'weapp' | 'swan' | 'alipay' | 'h5' | 'rn' | 'tt' | 'quickapp' | 'qq' | 'jd' - } -} - -declare const CURRENT_VERSION: string -declare const CURRENT_GITHASH: string -declare const CURRENT_ENV: string -declare const CURRENT_BASE_URL: string -declare const CURRENT_CAP_HTML_TO_IMAGE_BASE_URL: string -declare const CURRENT_PAY_H5_CODE_URL: string -declare const CURRENT_IMG_CND_Prefix: string diff --git a/iconfont.json b/iconfont.json deleted file mode 100644 index bd77778..0000000 --- a/iconfont.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "symbol_url": "http://at.alicdn.com/t/c/font_3619513_vf4qkipwb0s.js", - "parse_local_svg": true, - "local_svg_dir": "./src/styles/svg", - "save_dir": "./src/components/iconfont", - "trim_icon_prefix": "", - "default_icon_size": 36 -} diff --git a/key/private.wx64fe67f111d52457.key b/key/private.wx64fe67f111d52457.key deleted file mode 100644 index 5d1a014..0000000 --- a/key/private.wx64fe67f111d52457.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA7MJYN3Kid2crMZu9ujUQF3ReSHT/PzZfEi65nxjp73Wn30jy -BcB0hkoFTDSr11U5/YIsH60T3UGJFpFsVU4K9acMlR//+/FlNJnHxCBpsLV6SvQH -IKzvjxHyNyB4eEUKiIod7AcnB2y7ppOKh1i6RemunfApCgHrJciFMn9ngzdSTihc -91WEVjqbSX5vOBnXH8O5+Gv8hzC8Oy9xEBhuJTkgIv5R6vtWIo87YlgaQagDq9cd -3GT//Jo6UCvp2PeVVnNCS40cG8QYS26dFDq/p4ZWcrcq67epliB3yDTMEgMEdSoA -gLEvdGcEPE9HG3A5eQwbwMI8A5pftEAgpo+ciQIDAQABAoIBAQCW0LnHIFPTwbln -EXFLM0/70NnaSATsLGNlPrRpX0JtkkIMXvgkp9LSVEaJo6evNJALJ6eZyfO0ZnHA -GYSr1lnu36mJOOgkgkHYvvjcu1T4BrJPGqGLs/2p4mGrshhrbHdoQKsM1gWLmjzy -wFtnGiMWM+RSoVBTGqPC3rfSUgwLLbGsI/qsxuSJ6bA6lay2/r/is0nupjtnjvlt -PkIo5r9gpGFRCyiW0qh3XsFzL2sVp2scuFEGAj1dodscR9sUrnsdmPTctqs5sY8M -EEN7FghkX8MQYUKHjsUeL4Qe8cUWyqD+L1y29HvgLOqdbw2oqu8RhVPQUsJ7I50y -H017wf1xAoGBAPfwIk1/2QPjRrCmTA2mM9TAyBRfumcxHi9BUsi4UIzZvgZpp1pY -i5i3w/YYawnuVZb1M7d0eo7ak4Gl7KrRkvVl2ulAQHcJesn4vCVNLRjVw3k8Jz8V -/3hzp+wwUL5Y6bdWPnusdkP5tyhqw7eYz171t9T+frqhysrIZrl5MRfFAoGBAPR1 -KAinx6ZPbw/jh7I/MnQmm9u+dGJGXZo9FCOZQr+wKRITFlxXmlUNsBTpkmqQ71xb -qjCeXJ1YwSv5QRVpohtykO/1g7+5zORMzV3MrGLg5PsZugmetLX57Vrxpe832LZc -wsVq1D5jbDjXbY4mj/R0mOfacHlOfnHgpIcWtTn1AoGAbjkMFuYCRS8xyvBzGRJN -MoTtrdkM1jlI0Ps6YU9HSAa46sLnikuY67CuZmZel5Cj7jNd5W3b2kwjjVyFRT9c -FMpOMqnEvuaw9r8kbXTM2qCVgP0T+YC/DP5lpaOpEaYXaNDngDWgcgG+wjIMhj9h -2TZlnkPxdOjebZ3/xO6yu30CgYATN6KOC6KGUHhKp3hjatRsjRxzieVcVGvHVEXh -BotYxmB0K0v2tmxLg2f0POhluD8Y45vddpWRSQjmjBGxvTwhLEB4nLRevhx9VgxO -82gZ3dQiaUNWvkM2iw89twF0bM98ho5JNry4qtg3H7hdFGr8rK3YjDOLVcBa8237 -sK1OgQKBgQDZ3YdqxlEhp6mG+HqQVe7vh+t1hUyLqcLt6T+DpRFP3BYBRSd/Ftom -qXUn6NcZWjzkvY5npG7+c/XFuqYc18BDh0egADDh0dqdl8tBzXVGNYuXSyT/oQOd -WAWvYvyvXvuOBqf5Ov4OVXiGtrzcxBuAFWTudaKOTh4APyFrOSHSfw== ------END RSA PRIVATE KEY----- diff --git a/package.json b/package.json deleted file mode 100644 index c6371aa..0000000 --- a/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "wechat-lymarket", - "version": "1.0.0", - "private": true, - "description": "重构内部商城小程序", - "templateInfo": { - "name": "default", - "typescript": true, - "css": "sass" - }, - "author": "", - "scripts": { - "build:weapp": "taro build --type weapp", - "build:swan": "taro build --type swan", - "build:alipay": "taro build --type alipay", - "build:tt": "taro build --type tt", - "build:h5": "taro build --type h5", - "build:rn": "taro build --type rn", - "build:qq": "taro build --type qq", - "build:jd": "taro build --type jd", - "build:quickapp": "taro build --type quickapp", - "dev:weapp": "npm run build:weapp -- --watch", - "dev:swan": "npm run build:swan -- --watch", - "dev:alipay": "npm run build:alipay -- --watch", - "dev:tt": "npm run build:tt -- --watch", - "dev:h5": "npm run build:h5 -- --watch", - "dev:rn": "npm run build:rn -- --watch", - "dev:qq": "npm run build:qq -- --watch", - "dev:jd": "npm run build:jd -- --watch", - "dev:quickapp": "npm run build:quickapp -- --watch", - "build:weapp:pre": "cross-env NODE_ENV=pre taro build --type weapp", - "dev:weapp:pre": "cross-env NODE_ENV=pre npm run build:weapp -- --watch", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "iconfont:update": "npx iconfont-taro", - "iconfont:init": "npx iconfont-init" - }, - "browserslist": [ - "last 3 versions", - "Android >= 4.1", - "ios >= 8" - ], - "dependencies": { - "@babel/runtime": "^7.20.6", - "@tarojs/cli": "3.6.6", - "@tarojs/components": "3.6.6", - "@tarojs/helper": "3.6.6", - "@tarojs/plugin-framework-react": "3.6.6", - "@tarojs/react": "3.6.6", - "@tarojs/router": "3.6.6", - "@tarojs/runtime": "3.6.6", - "@tarojs/shared": "3.6.6", - "@tarojs/taro": "3.6.6", - "@tarojs/taro-h5": "3.6.6", - "big.js": "^6.2.1", - "dayjs": "^1.11.6", - "immer": "^9.0.16", - "lodash": "^4.17.10", - "qs": "^6.10.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-redux": "^8.0.5", - "redux": "^4.2.0", - "redux-logger": "^3.0.6", - "redux-thunk": "^2.4.2" - }, - "devDependencies": { - "@aaronghx/eslint-config-react": "^0.1.11", - "@babel/core": "^7.20.5", - "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", - "@tarojs/plugin-platform-weapp": "3.6.6", - "@tarojs/plugin-react-devtools": "3.6.6", - "@tarojs/webpack5-runner": "3.6.6", - "@types/node": "^18.11.10", - "@types/qs": "^6.9.7", - "@types/react": "^18.0.25", - "@types/webpack-env": "^1.13.6", - "babel-preset-taro": "3.6.6", - "classnames": "^2.3.2", - "cross-env": "^7.0.3", - "eslint": "^8.28.0", - "eslint-config-taro": "3.6.6", - "prettier": "^2.8.0", - "react-refresh": "0.14.0", - "stylelint": "14.15.0", - "taro-iconfont-svg": "^1.1.1", - "terser-webpack-plugin": "^5.3.6", - "typescript": "^4.9.3", - "webpack": "^5.75.0" - } -} diff --git a/project.config.json b/project.config.json deleted file mode 100644 index 2c1e5d7..0000000 --- a/project.config.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "miniprogramRoot": "dist/", - "projectname": "Mall-lymarket", - "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "appid": "wx64fe67f111d52457", - "setting": { - "urlCheck": false, - "es6": true, - "postcss": false, - "minified": false, - "coverView": true, - "lazyloadPlaceholderEnable": false, - "preloadBackgroundData": false, - "autoAudits": false, - "uglifyFileName": false, - "uploadWithSourceMap": true, - "enhance": true, - "useMultiFrameRuntime": true, - "showShadowRootInWxmlPanel": true, - "packNpmManually": false, - "packNpmRelationList": [], - "minifyWXSS": false, - "useStaticServer": true, - "showES6CompileOption": false, - "checkInvalidKey": true, - "compileHotReLoad": true, - "babelSetting": { - "ignore": [], - "disablePlugins": [], - "outputPath": "" - }, - "disableUseStrict": false, - "useCompilerPlugins": false, - "minifyWXML": false, - "condition": false, - "ignoreUploadUnusedFiles": false - }, - "compileType": "miniprogram", - "libVersion": "2.24.5", - "srcMiniprogramRoot": "dist/", - "packOptions": { - "ignore": [], - "include": [] - }, - "condition": {}, - "editorSetting": { - "tabIndent": "insertSpaces", - "tabSize": 2 - } -} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json deleted file mode 100644 index e07cf60..0000000 --- a/project.private.config.json +++ /dev/null @@ -1,342 +0,0 @@ -{ - "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "condition": { - "miniprogram": { - "list": [ - { - "name": "", - "pathName": "pages/getColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/sampleCutting/addSampleCutting/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/colorCardDetail/index", - "query": "id=2", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/sampleCutting/sampleCuttingDetail/index", - "query": "id=1", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/sampleCutting/sampleCuttingList/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/login/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/addColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/colorCardList/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/addColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/sampleCutting/addSampleCutting/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/addColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/sampleCutting/sampleCuttingDetail/index", - "query": "id=45", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/addColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/sampleCutting/addSampleCutting/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/addColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/submitOrder/index", - "query": "purchaser_id=1860&sale_mode=2&shopping_cart_product_color_list=%5B75384%2C75385%5D&purchaser_name=%E5%A4%A7%E5%90%89%E5%A4%A7%E5%88%A9", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/submitOrder/index", - "query": "purchaser_id=1808&sale_mode=0&shopping_cart_product_color_list=%5B71143%2C71159%2C71160%5D&purchaser_name=%E6%B8%B8%E5%AE%A2_65d59b5", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderDetails/index", - "query": "id=34311", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/submitOrder/index", - "query": "purchaser_id=1873&sale_mode=0&shopping_cart_product_color_list=%5B75484%2C75485%5D&purchaser_name=%E5%AD%9C%E7%84%B6%E7%83%A4%E9%B1%BF%E9%B1%BC", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/submitOrder/index", - "query": "purchaser_id=1861&sale_mode=0&shopping_cart_product_color_list=%5B75615%5D&purchaser_name=%E5%93%88%E5%96%BD", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderDetails/index", - "query": "id=36955", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/refundDetail/index", - "query": "id=907", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/refundDetail/index", - "query": "id=1059", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/getColorCard/colorCardDetail/index", - "query": "id=180", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/refundDetail/index", - "query": "id=902", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/refundMoneyDetail/index", - "query": "id=835", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/collectionDetail/index", - "query": "id=9622", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderWarningAnalysis/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderWarningAnalysis/orderWarningAnalysisDetail/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderDetails/index", - "query": "id=34514", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderWarningAnalysis/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderWarningAnalysis/orderWarningAnalysisDetail/index", - "query": "sale_order_no=XS-IT-2304270017", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/delivery/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderWarningAnalysis/orderWarningAnalysisDetail/index", - "query": "sale_order_no=XS-IT-2304270012", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/deliveryDetail/index", - "query": "id=28127&order_no=FH-IT-2303310002", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderWarningAnalysis/orderWarningAnalysisDetail/index", - "query": "sale_order_no=XS-IT-2304270018", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/orderDetails/index", - "query": "id=36796", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/refundPage/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/newCollection/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/index/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/index/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/login/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/login/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/deliveryDetail/index", - "query": "id=28215", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/takeDeliveryDetail/index", - "query": "id=40320", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "pages/takeDelivery/index", - "query": "", - "launchMode": "default", - "scene": null - } - ] - } - }, - "projectname": "spider_cloud_warehouse", - "setting": { - "compileHotReLoad": true - } -} \ No newline at end of file diff --git a/project.tt.json b/project.tt.json deleted file mode 100644 index 06eded3..0000000 --- a/project.tt.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "miniprogramRoot": "./", - "projectname": "EShop", - "appid": "touristappid", - "setting": { - "es6": false, - "minified": false - } -} diff --git a/src/api/addressList.ts b/src/api/addressList.ts deleted file mode 100644 index f88c3b6..0000000 --- a/src/api/addressList.ts +++ /dev/null @@ -1,48 +0,0 @@ - -import { useRequest } from '@/use/useHttp' - -/** - * 获取行政地区列表 - */ -export const GetAddressListApi = () => { - return useRequest({ - url: '/v2/mp/district/list', - method: 'get', - }) -} - -// 获取客户地址 -export const MpPurchaserAddressList = () => { - return useRequest({ - url: '/v2/mp/purchaser/address/list', - method: 'get', - }) -} -// 新增客户地址 -export const MpPurchaserAddress = () => { - return useRequest({ - url: '/v2/mp/purchaser/address', - method: 'post', - }) -} -// 获取编辑地址信息 -export const MpPurchaserAddressGet = () => { - return useRequest({ - url: '/v2/mp/purchaser/address', - method: 'get', - }) -} -// 编辑收货地址信息 -export const MpPurchaserAddressPut = () => { - return useRequest({ - url: '/v2/mp/purchaser/address', - method: 'put', - }) -} -// 删除收货地址信息 -export const MpPurchaserAddressDelete = () => { - return useRequest({ - url: '/v2/mp/purchaser/address', - method: 'delete', - }) -} diff --git a/src/api/cdn.ts b/src/api/cdn.ts deleted file mode 100644 index e3b45ae..0000000 --- a/src/api/cdn.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 获取cdn 签名/密钥 - * @returns - */ -export const GetSignApi = () => { - return useRequest({ - url: '/v2/mp/cdn/token', - method: 'get', - }) -} diff --git a/src/api/colorCard/colorCardOrder.ts b/src/api/colorCard/colorCardOrder.ts deleted file mode 100644 index 8e0308e..0000000 --- a/src/api/colorCard/colorCardOrder.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 获取色卡订单列表 - * @returns - */ -export const GetColorCardOrderList = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/list', - method: 'get', - }) -} - -/** - * 获取色卡订单详情 - * @returns - */ -export const GetColorCardOrderDetail = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder', - method: 'get', - }) -} - -/** - * 提交色卡订单 - * @returns - */ -export const SubmitColorCardOrder = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/submit', - method: 'post', - }) -} - -/** - * 获取可添加的色卡 - * @returns - */ -export const GetCanAddCardList = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/canAddCard', - method: 'post', - }) -} - -/** - * 取消色卡订单 - * @returns - */ -export const CancelColorCardOrder = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/cancel', - method: 'post', - }) -} - -/** - * 拒绝色卡订单 - * @returns - */ -export const RefuseColorCardOrder = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/auditRefuse', - method: 'put', - }) -} - -/** - * 审核色卡订单 - * @returns - */ -export const AuditPassColorCardOrder = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/auditPass', - method: 'put', - }) -} diff --git a/src/api/colorCard/enum.ts b/src/api/colorCard/enum.ts deleted file mode 100644 index 88c5cd5..0000000 --- a/src/api/colorCard/enum.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { useRequest } from '@/use/useHttp' - -/** - * 获取剪样订单列表 - * @returns - */ -export const EnumColorCardStatus = () => { - return useRequest({ - url: '/v1/mp/colorCardOrder/enum/auditStatus', - method: 'get', - }) -} diff --git a/src/api/colorCard/index.ts b/src/api/colorCard/index.ts deleted file mode 100644 index 11e8183..0000000 --- a/src/api/colorCard/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -export { - GetColorCardOrderList, - GetColorCardOrderDetail, - SubmitColorCardOrder, - GetCanAddCardList, - CancelColorCardOrder, - RefuseColorCardOrder, - AuditPassColorCardOrder, -} from './colorCardOrder' -export { - EnumColorCardStatus, -} from './enum' diff --git a/src/api/customer.ts b/src/api/customer.ts deleted file mode 100644 index 1219c70..0000000 --- a/src/api/customer.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -// 获取客户信息 -export const MpPurchaser = () => { - return useRequest({ - url: '/v2/mp/purchaser', - method: 'get', - }) -} -// 新建客户 -export const MpPurchaserPost = () => { - return useRequest({ - url: '/v2/mp/purchaser', - method: 'post', - }) -} -// 编辑客户 -export const MpPurchaserPut = () => { - return useRequest({ - url: '/v2/mp/purchaser', - method: 'put', - }) -} -// 获取标签列表 -export const MpPurchaserList = () => { - return useRequest({ - url: '/v2/mp/purchaser/label/list', - method: 'get', - }) -} -// 保存标签 -export const MpPurchaserLabelAdd = () => { - return useRequest({ - url: '/v2/mp/purchaser/label/add', - method: 'post', - }) -} - -// [枚举] 平台来源 -export const EnumSourcePlatform = () => { - return useRequest({ - url: '/v1/mp/enum/sourcePlatform', - method: 'get', - }) -} diff --git a/src/api/delivery/index.ts b/src/api/delivery/index.ts deleted file mode 100644 index f9ef853..0000000 --- a/src/api/delivery/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { useRequest } from '@/use/useHttp' -// 列表 -export const DeliverNoticeOrderList = () => { - return useRequest({ - url: '/v2/mp/deliveryNoticeOrder/list', - method: 'get', - }) -} -// 发货详情 -export const DeliverNoticeOrder = () => { - return useRequest({ - url: '/v2/mp/deliveryNoticeOrder', - method: 'get', - }) -} -// 发货附件上传 -export const DeliveryNoticeOrderUpload = () => { - return useRequest({ - url: '/v2/mp/deliveryNoticeOrder/upload', - method: 'put', - }) -} -// 审核发货单 -export const DeliveryNoticeOrderAudit = () => { - return useRequest({ - url: '/v2/mp/deliveryNoticeOrder/audit', - method: 'put', - }) -} -// 采购退货的拒收接口 -export const DeliveryNoticeOrderRejection = () => { - return useRequest({ - url: '/v2/mp/deliveryNoticeOrder/rejection', - method: 'put', - }) -} - -// 类型枚举 -export const EnumDeliveryNoticeTypeList = () => { - return useRequest({ - url: '/v2/mp/enum/deliveryNoticeType/list', - method: 'get', - }) -} -// tabs枚举 -export const EnumSaleorderStatus = () => { - return useRequest({ - url: '/v2/mp/enum/sale/order/status', - method: 'get', - }) -} - -// 扫描出仓码类型 -export const TakeOutOfStorage = () => { - return useRequest({ - url: '/v1/mp/deliveryNoticeOrder/outbound', - method: 'put', - }) -} diff --git a/src/api/index.ts b/src/api/index.ts deleted file mode 100644 index 2e7293c..0000000 --- a/src/api/index.ts +++ /dev/null @@ -1,97 +0,0 @@ -// 关于登录 -import { useRequest } from '@/use/useHttp' - -export { LoginApi } from './login/index' - -export { - ProductAbsorbContrast, - SelectProductListApi, - ColorListApi, - ColorDetailedApi, - ColorSamplingSaveApi, - TextureSaveApi, - FindColorListApi, -} from './product/index' - -// 关于购物页面 -export { ShoppingCartDeleteApi, ShoppingCartListApi } from './shopping/index' - -// 关于发货列表 -export { - DeliverNoticeOrderList, - DeliverNoticeOrder, - DeliveryNoticeOrderUpload, - DeliveryNoticeOrderAudit, - DeliveryNoticeOrderRejection, - EnumDeliveryNoticeTypeList, - EnumSaleorderStatus, -} from './delivery/index' - -// 关于提货列表 -export { - EnumTakeGoodsOrderStatus, - EnumTakeGoodsOrderTypeList, - TakeGoodsOrderList, - TakeGoodsOrderRefuse, - TakeGoodsOrderAudit, - TakeGoodsOrder, -} from './takeDelivery/index' - -// 关于销售统计 -export { - EnumMarketingDepartmentApi, - EnumSalesTypeApi, - SalesmanRankApi, - ProductRankApi, - PurchaserRankApi, - SupplierRankApi, - SaleOrderDataFormdataFormStatus, - SaleOrderDataFormApi, -} from './statistic/index' -// 邀请码 -export { - GetInvitationInfo, - GenBarCodeOrQrCode, - GetInvitationList, -} from './inviteCode/index' -/** - * 系列列表 - * @returns - */ -export const KindListApi = () => { - return useRequest({ - url: '/v2/mp/product/kind/list', - method: 'get', - }) -} - -/** - * 面料列表 - * @returns - */ -export const ProductListApi = () => { - return useRequest({ - url: '/v2/mp/product/list', - method: 'get', - }) -} - -/** - * 获取面料种类子分类 - */ -export const GetClassList = () => { - return useRequest({ - url: '/v2/mp/product/kind/sub/list', - method: 'get', - }) -} - -/** - * 订阅模板id - */ -export const SubscriptionMessageApi = () => { - return useRequest({ - url: '/v1/mp/subscriptionMessage', - method: 'get', - }) -} diff --git a/src/api/inviteCode/index.ts b/src/api/inviteCode/index.ts deleted file mode 100644 index 9d5de6a..0000000 --- a/src/api/inviteCode/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CAP_HTML_TO_IMAGE_BASE_URL } from '@/common/constant' -import { useRequest } from '@/use/useHttp' - -// 邀请码 -export const GetInvitationInfo = () => { - return useRequest({ - url: '/v1/mp/user/invitationInfoRecord', - method: 'get', - }) -} -// 获取邀请进度 -export const GetInvitationList = () => { - return useRequest({ - url: '/v2/mp/user/inviterList', - method: 'get', - pagination: true, - }) -} -// 生成二维码 -export const GenBarCodeOrQrCode = () => { - return useRequest({ - url: '/xima-caphtml/genBarcodeOrQrCode', - base_url: CAP_HTML_TO_IMAGE_BASE_URL, - method: 'post', - }) -} diff --git a/src/api/login/index.ts b/src/api/login/index.ts deleted file mode 100644 index 01471f4..0000000 --- a/src/api/login/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { LoginApi } from './login' diff --git a/src/api/login/login.ts b/src/api/login/login.ts deleted file mode 100644 index 179d662..0000000 --- a/src/api/login/login.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 登录 - * @returns - */ -export const LoginApi = () => { - return useRequest({ - url: '/v2/mp/login', - method: 'post', - }) -} - -/** - * 登录 - * @returns - */ -export const MpuserwechatBinding = () => { - return useRequest({ - url: '/v1/mp/user/wechatBinding', - method: 'post', - }) -} diff --git a/src/api/newCollection.ts b/src/api/newCollection.ts deleted file mode 100644 index 3f7f30f..0000000 --- a/src/api/newCollection.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -// 收款单列表 -export const MpCashManagementOrderList = () => { - return useRequest({ - url: '/v2/mp/cashManagementOrder/list', - method: 'get', - }) -} -// 收款单详情 -export const MpCashManagementOrder = () => { - return useRequest({ - url: '/v2/mp/cashManagementOrder', - method: 'get', - }) -} -// 收款账号 -export const MpCashManagementOrderAccount = () => { - return useRequest({ - url: '/v2/mp/cashManagementOrder/account', - method: 'get', - }) -} -// 新建收款单 -export const MpCashManagementOrderPost = () => { - return useRequest({ - url: '/v2/mp/cashManagementOrder', - method: 'post', - }) -} -// 扫描获取应收单的客户信息 -export const MpShouldCollectOrderPurchaser = () => { - return useRequest({ - url: '/v2/mp/shouldCollectOrder/purchaser', - method: 'get', - }) -} diff --git a/src/api/order.ts b/src/api/order.ts deleted file mode 100644 index dd7de15..0000000 --- a/src/api/order.ts +++ /dev/null @@ -1,266 +0,0 @@ -import { useRequest } from '@/use/useHttp' -import { CAP_HTML_TO_IMAGE_BASE_URL } from '@/common/constant' - -export const MpEnumSaleOrderStatus = () => { - return useRequest({ - url: '/v2/mp/enum/filterMPSaleOrderStatus', - method: 'get', - }) -} - -/** - * 获取订单列表 - * @returns - */ -export const OrderListApi = () => { - return useRequest({ - url: '/v2/mp/saleOrder/list', - method: 'get', - }) -} - -/** - * 客户列表 - * @returns - */ -export const ClientListApi = () => { - return useRequest({ - url: '/v2/mp/purchaser/list', - method: 'get', - }) -} -// 面料种类列表 -export const MpProductColorList = () => { - return useRequest({ - url: '/v2/mp/product/color/list', - method: 'get', - }) -} -// 购物车提交 -export const MpSaleOrderPreview = () => { - return useRequest({ - url: '/v2/mp/saleOrder/preView', - method: 'put', - }) -} -// 业务员枚举 -export const MpEnumSaleUserList = () => { - return useRequest({ - url: '/v2/mp/enum/saleUser/list', - method: 'get', - }) -} -// 订单详情 -export const MpSaleOrder = () => { - return useRequest({ - url: '/v2/mp/saleOrder', - method: 'get', - }) -} -// 取消订单 -export const MpSaleOrderCancel = () => { - return useRequest({ - url: '/v2/mp/saleOrder/cancel', - method: 'put', - }) -} -// 再次购买 -export const MpShoppingCartProductColorList = () => { - return useRequest({ - url: '/v2/mp/shoppingCart/productColor/list', - method: 'post', - }) -} -// 获取账期付款 -export const OrderPaymentOrderPaymentMethodInfo = () => { - return useRequest({ - url: '/v2/mp/orderPayment/orderPaymentMethodInfo', - method: 'get', - }) -} -// 预收单获取接口信息 -export const OrderPaymentPreCollectOrderOrderPaymentMethodInfo = () => { - return useRequest({ - url: '/v2/mp/orderPayment/preCollectOrder/orderPaymentMethodInfo', - method: 'get', - }) -} -// 确认交易 -export const OrderPaymentOrderPaymentSubmission = () => { - return useRequest({ - url: '/v2/mp/orderPayment/orderPaymentSubmission', - method: 'put', - }) -} -// 订单预支付提交 -export const OrderPaymentPreCollectOrderOrderPaymentSubmission = () => { - return useRequest({ - url: '/v2/mp/orderPayment/preCollectOrder/orderPaymentSubmission', - method: 'put', - }) -} -/** - * 获取在线支付二维码 - */ -export const GetPayCode = () => { - return useRequest({ - url: '/xima-caphtml/caphtml', - base_url: CAP_HTML_TO_IMAGE_BASE_URL, - method: 'post', - }) -} -/** - * 获取退款码单 - */ -export const GetReturnPayCode = () => { - return useRequest({ - url: '/xima-caphtml/caphtml-return', - base_url: CAP_HTML_TO_IMAGE_BASE_URL, - method: 'post', - }) -} -// 编辑备注信息 -export const MpSaleOrderPut = () => { - return useRequest({ - url: '/v2/mp/saleOrder', - method: 'put', - }) -} -// 修改销售单的收货地址 -export const MpSaleOrderAddress = () => { - return useRequest({ - url: '/v2/mp/saleOrder/address', - method: 'put', - }) -} -// 关键字搜索历史 -export const MpSearchHistoryList = () => { - return useRequest({ - url: '/v2/mp/searchHistory/list', - method: 'get', - }) -} -// 关键字搜索历史 -export const DeleteSearchHistoryList = () => { - return useRequest({ - url: '/v1/mp/searchHistory/delete', - method: 'delete', - }) -} -// 添加关键字搜索 -export const MpSearchHistory = () => { - return useRequest({ - url: '/v2/mp/searchHistory', - method: 'post', - }) -} -// 确认收货 -export const MpSaleOrderReceive = () => { - return useRequest({ - url: '/v2/mp/saleOrder/receive', - method: 'put', - }) -} -// 退货原因 -export const MpEnumReturnOrderReturnReason = () => { - return useRequest({ - url: '/v2/mp/enum/returnOrder/returnReason', - method: 'get', - }) -} -// 二次选择退货原因 -export const MpEnumReturnExplain = () => { - return useRequest({ - url: '/v2/mp/enum/returnExplain', - method: 'get', - }) -} -// 货物状况 -export const MpEnumReturnGoodsStatus = () => { - return useRequest({ - url: '/v2/mp/enum/return/goodsStatus', - method: 'get', - }) -} -// 申请退货 -export const MpReturnApplyOrder = () => { - return useRequest({ - url: '/v2/mp/returnApplyOrder', - method: 'put', - }) -} -// 退款说明 -export const MpEnumRefundExplainOne = () => { - return useRequest({ - url: '/v2/mp/enum/refundExplain', - method: 'get', - }) -} - -// 提交订单 -export const MpSaleOrderPost = () => { - return useRequest({ - url: '/v2/mp/saleOrder', - method: 'post', - }) -} -// 修改销售单物流方式 -export const MpSaleOrderShipmentMode = () => { - return useRequest({ - url: '/v2/mp/saleOrder/shipmentMode', - method: 'put', - }) -} -// 修改销售单物流方式 -export const EnumPurchaserType = () => { - return useRequest({ - url: '/v2/mp/enum/purchaserType', - method: 'get', - }) -} -// 订单修改添加面料 -export const MpsaleOrderaddProductList = () => { - return useRequest({ - url: '/v2/mp/saleOrder/addProductList', - method: 'post', - }) -} -// 提交修改订单 -export const MpsaleOrdersubmit = () => { - return useRequest({ - url: '/v2/mp/saleOrder/submit', - method: 'put', - }) -} - -// 通过调价销售单审核 -export const PassAdjustPriceAudit = () => { - return useRequest({ - url: '/v2/mp/saleOrder/passAdjustPriceAudit', - method: 'put', - }) -} - -// 拒绝调价销售单审核 -export const RefuseAdjustPriceAudit = () => { - return useRequest({ - url: '/v2/mp/saleOrder/refuseAdjustPriceAudit', - method: 'put', - }) -} - -// 立即下单(预览) -export const SaleOrderPreViewBuyNow = () => { - return useRequest({ - url: '/v2/mp/saleOrder/preView/atOnce', - method: 'put', - }) -} - -// 立即下单(提交订单) -export const SaleOrderSubmitBuyNow = () => { - return useRequest({ - url: '/v2/mp/saleOrder/atOnce', - method: 'post', - }) -} diff --git a/src/api/orderWarning/index.ts b/src/api/orderWarning/index.ts deleted file mode 100644 index 3ee1f38..0000000 --- a/src/api/orderWarning/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 获取订单预警列表 - * @returns - */ -export const GetOrderEarlyWarningListApi = () => { - return useRequest({ - url: '/v1/mp/orderEarlyWarning/list', - method: 'get', - }) -} diff --git a/src/api/product/findColor.ts b/src/api/product/findColor.ts deleted file mode 100644 index 512ed9c..0000000 --- a/src/api/product/findColor.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useRequest } from '@/use/useHttp' -/** - * 颜色列表 - * @returns - */ -export const FindColorListApi = () => { - return useRequest({ - url: '/v2/mp/product/color/absorb/match', - method: 'get', - pagination: true, - }) -} diff --git a/src/api/product/index.ts b/src/api/product/index.ts deleted file mode 100644 index 2421ad7..0000000 --- a/src/api/product/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { ProductAbsorbContrast, SelectProductListApi } from './product' -export { ColorListApi, ColorDetailedApi, ColorSamplingSaveApi, TextureSaveApi } from './takeColor' -export { FindColorListApi } from './findColor' diff --git a/src/api/product/product.ts b/src/api/product/product.ts deleted file mode 100644 index 72e1f37..0000000 --- a/src/api/product/product.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -// 取色对比 -export const ProductAbsorbContrast = () => { - return useRequest({ - url: '/v2/mp/product/color/absorb/contrast', - method: 'get', - }) -} - -/** - * 面料列表(下拉选择) - * @returns - */ -export const SelectProductListApi = () => { - return useRequest({ - url: '/v2/mp/enum/product/list', - method: 'get', - }) -} diff --git a/src/api/product/takeColor.ts b/src/api/product/takeColor.ts deleted file mode 100644 index 6979c39..0000000 --- a/src/api/product/takeColor.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 颜色列表 - * @returns - */ -export const ColorListApi = () => { - return useRequest({ - url: '/v2/mp/product/color/absorb/list', - method: 'get', - }) -} - -/** - * 颜色详细 - * @returns - */ -export const ColorDetailedApi = () => { - return useRequest({ - url: '/v2/mp/product/texture', - method: 'get', - }) -} - -/** - * 取色存储 - * @returns - */ -export const ColorSamplingSaveApi = () => { - return useRequest({ - url: '/v2/mp/product/color/absorb', - method: 'put', - }) -} - -/** - * 保存纹理 - * @returns - */ -export const TextureSaveApi = () => { - return useRequest({ - url: '/v2/mp/product/texture', - method: 'put', - }) -} diff --git a/src/api/refound.ts b/src/api/refound.ts deleted file mode 100644 index c0c1eca..0000000 --- a/src/api/refound.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -// 售后订单列表 -export const MpReturnApplyOrderList = () => { - return useRequest({ - url: '/v2/mp/returnApplyOrder/list', - method: 'get', - }) -} -// 售后状态枚举 -export const MpEnumReturnStage = () => { - return useRequest({ - url: '/v2/mp/enum/returnStage', - method: 'get', - }) -} -// 退款类型枚举 -export const MpEnumReturnType = () => { - return useRequest({ - url: '/v2/mp/enum/returnType', - method: 'get', - }) -} -// 售后详情 -export const MpReturnApplyOrder = () => { - return useRequest({ - url: '/v2/mp/returnApplyOrder', - method: 'get', - }) -} -// 取消退货 -export const ReturnApplyOrderCancel = () => { - return useRequest({ - url: '/v2/mp/returnApplyOrder/cancel', - method: 'post', - }) -} -// 售后确认上传附件 -export const ReturnApplyOrderUploadAccessory = () => { - return useRequest({ - url: '/v2/mp/returnApplyOrder/uploadAccessory', - method: 'put', - }) -} -// 售后审批 -export const AuditReturnApplyOrder = () => { - return useRequest({ - url: '/v1/mp/returnApplyOrder/audit', - method: 'put', - }) -} -// 售后拒绝 -export const RefuseReturnApplyOrder = () => { - return useRequest({ - url: '/v1/mp/returnApplyOrder/refuse', - method: 'put', - }) -} -// 获取仓库列表 -export const GetWarehouseList = () => { - return useRequest({ - url: '/v1/mp/enum/warehouse/return/list', - method: 'get', - }) -} diff --git a/src/api/sampleCutting/enum.ts b/src/api/sampleCutting/enum.ts deleted file mode 100644 index e408357..0000000 --- a/src/api/sampleCutting/enum.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { useRequest } from '@/use/useHttp' - -/** - * 获取剪样订单列表 - * @returns - */ -export const EnumCutSampleOrderStatus = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/audit_status', - method: 'get', - }) -} diff --git a/src/api/sampleCutting/index.ts b/src/api/sampleCutting/index.ts deleted file mode 100644 index 07467be..0000000 --- a/src/api/sampleCutting/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { - GetCutSampleOrderList, - GetCutSampleOrderProducts, - SubmitCutSampleOrder, - GetCutSampleOrderDetail, - CancelCutSampleOrder, - GetCutSampleOrderColorList, - AuditPassCutSampleOrder, - RefuseCutSampleOOrder, -} from './sampleCutting' -export { - EnumCutSampleOrderStatus, -} from './enum' diff --git a/src/api/sampleCutting/sampleCutting.ts b/src/api/sampleCutting/sampleCutting.ts deleted file mode 100644 index bb7b6d8..0000000 --- a/src/api/sampleCutting/sampleCutting.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 获取剪样订单列表 - * @returns - */ -export const GetCutSampleOrderList = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/list', - method: 'get', - }) -} - -/** - * 搜索剪样面料 - * @returns - */ -export const GetCutSampleOrderProducts = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/products', - method: 'get', - }) -} - -/** - * 剪样提交订单 - * @returns - */ -export const SubmitCutSampleOrder = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/submit', - method: 'post', - }) -} - -/** - * 获取剪样订单详情 - * @returns - */ -export const GetCutSampleOrderDetail = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/detail', - method: 'get', - }) -} - -/** - * 取消剪样订单 - * @returns - */ -export const CancelCutSampleOrder = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/cancel', - method: 'put', - }) -} - -/** - * 取消剪样订单 - * @returns - */ -export const GetCutSampleOrderColorList = () => { - return useRequest({ - url: '/v1/mp/product/color/absorb/list', - method: 'get', - }) -} - -/** - * 审核剪样订单 - * @returns - */ -export const AuditPassCutSampleOrder = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/audit', - method: 'put', - }) -} - -/** - * 拒绝剪样订单 - * @returns - */ -export const RefuseCutSampleOOrder = () => { - return useRequest({ - url: '/v1/mp/cutSampleOrder/refuse', - method: 'put', - }) -} diff --git a/src/api/search.ts b/src/api/search.ts deleted file mode 100644 index a4848a2..0000000 --- a/src/api/search.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { useRequest } from '@/use/useHttp' -// 搜索商品 -export const MpProductList = () => { - return useRequest({ - url: '/v2/mp/product/list', - method: 'get', - }) -} diff --git a/src/api/shopping/index.ts b/src/api/shopping/index.ts deleted file mode 100644 index f4da1ad..0000000 --- a/src/api/shopping/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { useRequest } from '@/use/useHttp' -/** - * 修改购物车 - * @returns - */ -// export const ShoppingCartUpdateApi = () => { -// return useRequest({ -// url: `/v2/mp/shoppingCart/productColor`, -// method: 'put', -// }) -// } -/** - * 删除购物车商品 - * @returns - */ -export const ShoppingCartDeleteApi = () => { - return useRequest({ - url: '/v2/mp/shoppingCart/productColor', - method: 'delete', - }) -} -/** - * 获取购物车商品列表 - * @returns - */ -export const ShoppingCartListApi = () => { - return useRequest({ - url: '/v2/mp/shoppingCart/productColor', - method: 'get', - }) -} -/** - * 调整购物车商品数量 - * @returns - */ -export const AdjestShoppingCartApi = () => { - return useRequest({ - url: '/v2/mp/shoppingCart/productColor', - method: 'put', - }) -} diff --git a/src/api/statistic/enum.ts b/src/api/statistic/enum.ts deleted file mode 100644 index a0e3183..0000000 --- a/src/api/statistic/enum.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 销售类型下拉列表 - * @returns - */ -export const EnumSalesTypeApi = () => { - return useRequest({ - url: '/v2/mp/enum/saleType', - method: 'get', - }) -} - -/** - * 营销部门下拉列表 - * @returns - */ -export const EnumMarketingDepartmentApi = () => { - return useRequest({ - url: '/v2/mp/enum/saleDepartment/list', - method: 'get', - }) -} diff --git a/src/api/statistic/index.ts b/src/api/statistic/index.ts deleted file mode 100644 index af5f463..0000000 --- a/src/api/statistic/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { EnumSalesTypeApi, EnumMarketingDepartmentApi } from './enum' -export { SaleOrderDataFormdataFormStatus, SaleOrderDataFormApi, ProductRankApi, PurchaserRankApi, SupplierRankApi, SalesmanRankApi } from './saleStatistic' diff --git a/src/api/statistic/saleStatistic.ts b/src/api/statistic/saleStatistic.ts deleted file mode 100644 index ae99465..0000000 --- a/src/api/statistic/saleStatistic.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { useRequest } from '@/use/useHttp' - -/** - * 销售统计数据 - * @returns - */ -export const SaleOrderDataFormApi = () => { - return useRequest({ - url: '/v2/mp/saleOrderDataForm', - method: 'get', - }) -} - -/** - * 面料销售排行 - * @returns - */ -export const ProductRankApi = () => { - return useRequest({ - url: '/v2/mp/saleOrderDataForm/product/list', - method: 'get', - }) -} - -/** - * 客户销售排行 - * @returns - */ -export const PurchaserRankApi = () => { - return useRequest({ - url: '/v2/mp/saleOrderDataForm/purchaser/list', - method: 'get', - }) -} - -/** - * 经销商销售排行 - * @returns - */ -export const SupplierRankApi = () => { - return useRequest({ - url: '/v2/mp/saleOrderDataForm/supplier/list', - method: 'get', - }) -} - -/** - * 业务员销售排行 - * @returns - */ -export const SalesmanRankApi = () => { - return useRequest({ - url: '/v2/mp/saleOrderDataForm/saleUser/list', - method: 'get', - }) -} - -// 获取排行指标枚举 -export const SaleOrderDataFormdataFormStatus = () => { - return useRequest({ - url: '/v2/mp/saleOrderDataForm/dataFormStatus', - method: 'get', - }) -} diff --git a/src/api/takeDelivery/enum.ts b/src/api/takeDelivery/enum.ts deleted file mode 100644 index e884595..0000000 --- a/src/api/takeDelivery/enum.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { useRequest } from '@/use/useHttp' -// 提货类型 -export const EnumTakeGoodsOrderTypeList = () => { - return useRequest({ - url: '/v2/mp/enum/takeGoodsOrderType/list', - method: 'get', - }) -} -// tabs枚举 -export const EnumTakeGoodsOrderStatus = () => { - return useRequest({ - url: '/v2/mp/enum/takeGoodsOrderStatus/list', - method: 'get', - }) -} diff --git a/src/api/takeDelivery/index.ts b/src/api/takeDelivery/index.ts deleted file mode 100644 index f5d1041..0000000 --- a/src/api/takeDelivery/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { EnumTakeGoodsOrderStatus, EnumTakeGoodsOrderTypeList } from './enum' -export { TakeGoodsOrderList, TakeGoodsOrderRefuse, TakeGoodsOrderAudit, TakeGoodsOrder } from './takeDelivery' diff --git a/src/api/takeDelivery/takeDelivery.ts b/src/api/takeDelivery/takeDelivery.ts deleted file mode 100644 index 371ba31..0000000 --- a/src/api/takeDelivery/takeDelivery.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useRequest } from '@/use/useHttp' -import { CAP_HTML_TO_IMAGE_BASE_URL } from '@/common/constant' -// 列表 -export const TakeGoodsOrderList = () => { - return useRequest({ - url: '/v2/mp/takeGoodsOrder/list', - method: 'get', - }) -} -// 拒收提货 -export const TakeGoodsOrderRefuse = () => { - return useRequest({ - url: '/v2/mp/takeGoodsOrder/refuse', - method: 'put', - }) -} -// 审核提货单 -export const TakeGoodsOrderAudit = () => { - return useRequest({ - url: '/v2/mp/takeGoodsOrder/audit', - method: 'put', - }) -} -// 详情 -export const TakeGoodsOrder = () => { - return useRequest({ - url: '/v2/mp/takeGoodsOrder', - method: 'get', - }) -} diff --git a/src/app.config.ts b/src/app.config.ts deleted file mode 100644 index 5a3a7e2..0000000 --- a/src/app.config.ts +++ /dev/null @@ -1,172 +0,0 @@ -export default defineAppConfig({ - pages: ['pages/index/index', 'pages/order/index', 'pages/shopping/index', 'pages/user/index', 'pages/login/index'], - window: { - backgroundTextStyle: 'light', - navigationBarBackgroundColor: '#fff', - navigationBarTitleText: 'WeChat', - navigationBarTextStyle: 'black', - backgroundColor: '#ffffff', - }, - tabBar: { - custom: true, - list: [ - { - pagePath: 'pages/index/index', - text: '首页', - }, - { - pagePath: 'pages/shopping/index', - text: '购物', - }, - { - pagePath: 'pages/order/index', - text: '订单', - }, - { - pagePath: 'pages/user/index', - text: '我的', - }, - ], - color: '#707070', - selectedColor: '#2680EB', - backgroundColor: '#fff', - borderStyle: 'white', - }, - usingComponents: { - 'custom-wrapper': '/custom-wrapper', - }, - subPackages: [ - { - root: 'pages/orderWarningAnalysis', - pages: ['index', 'orderWarningAnalysisDetail/index'], - }, - { - root: 'pages/wareHousePage', - pages: ['index'], - }, - { - root: 'pages/clauseDetail', - pages: ['index'], - }, - { - root: 'pages/sampleCutting', - pages: ['index', 'addSampleCutting/index', 'sampleCuttingList/index', 'sampleCuttingDetail/index'], - }, - { - root: 'pages/getColorCard', - pages: ['index', 'addColorCard/index', 'colorCardList/index', 'colorCardDetail/index'], - }, - { - root: 'pages/inviteCode', - pages: ['index'], - }, - { - root: 'pages/saleStatistic', - pages: ['index'], - }, - { - root: 'pages/takeDelivery', - pages: ['index'], - }, - { - root: 'pages/takeDeliveryDetail', - pages: ['index'], - }, - { - root: 'pages/delivery', - pages: ['index'], - }, - { - root: 'pages/deliveryDetail', - pages: ['index'], - }, - { - root: 'pages/colorRelated', - pages: ['sampleComparison/index', 'takeColor/index', 'findColor/index'], - }, - { - root: 'pages/addAddress', - pages: ['index'], - }, - { - root: 'pages/addressManager', - pages: ['index'], - }, - { - root: 'pages/customerPage', - pages: ['index'], - }, - { - root: 'pages/orderDetails', - pages: ['index'], - }, - { - root: 'pages/saleuserPage', - pages: ['index'], - }, - { - root: 'pages/searchPage', - pages: ['index'], - }, - { - root: 'pages/submitOrder', - pages: ['index'], - }, - { - root: 'pages/refundPage', - pages: ['index'], - }, - { - root: 'pages/refundDetail', - pages: ['index'], - }, - { - root: 'pages/refundMoneyDetail', - pages: ['index'], - }, - { - root: 'pages/applyGoods', - pages: ['index'], - }, - { - root: 'pages/applyMoney', - pages: ['index'], - }, - { - root: 'pages/newCollection', - pages: ['index'], - }, - { - root: 'pages/addCollection', - pages: ['index'], - }, - { - root: 'pages/accountPage', - pages: ['index'], - }, - { - root: 'pages/collectionDetail', - pages: ['index'], - }, - { - root: 'pages/customerManagement', - pages: ['index'], - }, - { - root: 'pages/customerDetails', - pages: ['index'], - }, - { - root: 'pages/customerEditor', - pages: ['index'], - }, - { - root: 'pages/orderEdit', - pages: ['index'], - }, - { - root: 'pages/addFabric', - pages: ['index'], - }, - ], -}) diff --git a/src/app.scss b/src/app.scss deleted file mode 100644 index 91291fa..0000000 --- a/src/app.scss +++ /dev/null @@ -1,16 +0,0 @@ -@import './styles/common.scss'; -@import './styles/iconfont.scss'; - -/** - 由于Cover-view标签并不支持iconfont 所以需要把 .ttf 转成 base64 之后得到的 stylesheet.css 文件覆盖掉 iconfont.css 里的 @font-face 即可 - [转换工具](https://transfonter.org/) - [教程](https://blog.csdn.net/VoidLuffy/article/details/123530341) - [相关说明](https://developers.weixin.qq.com/community/develop/doc/000a60f7d58a982f08d7ddfc456000) -*/ - -// 总高度 - 自定义tabbar高度 - apple小黑条高度 -page { - height: calc(100% - #{$customTabBarHeight} - constant(safe-area-inset-bottom)); - height: calc(100% - #{$customTabBarHeight} - env(safe-area-inset-bottom)); - background-color: #f7f7f7; -} diff --git a/src/app.tsx b/src/app.tsx deleted file mode 100644 index 57276e3..0000000 --- a/src/app.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import Taro, { onAppShow } from '@tarojs/taro' -import type { FC } from 'react' -import { Provider } from 'react-redux' -import configStore from './store' -import { shareShop } from './common/util' -import ContextBlueTooth from '@/use/contextBlueTooth' -import './app.scss' - -interface ParamsType { - children?: React.ReactNode -} - -const store = configStore() -const App: FC = (params) => { - const { children } = params - if (process.env.TARO_ENV === 'weapp') { - Taro.showShareMenu({ - withShareTicket: true, - }) - - // 分享 - shareShop() - - // 检查版本更新 - onAppShow(() => { - const updateManager = Taro.getUpdateManager() - updateManager.onCheckForUpdate((res) => { - // 请求完新版本信息的回调 - console.log('版本信息:', res.hasUpdate) - }) - updateManager.onUpdateReady(() => { - Taro.showModal({ - title: '更新提示', - content: '新版本已经准备好,是否重启应用?', - success(res) { - if (res.confirm) { - // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 - updateManager.applyUpdate() - } - }, - }) - }) - updateManager.onUpdateFailed(() => { - console.log('新版本更新失败') - }) - }) - } - - return ( - - {children} - - ) -} - -export default App diff --git a/src/common/Enumerate/BaseEnum/index.ts b/src/common/Enumerate/BaseEnum/index.ts deleted file mode 100644 index 4618ddf..0000000 --- a/src/common/Enumerate/BaseEnum/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -// 订单类型 -// 0 大货 1 剪板 2 散剪 - -export const enum EnumSaleMode { - Bulk = 0, - Plate = 1, - BulkCut = 2, -} -// 订单类型 - -export const selectList = { - 0: { value: 0, title: '大货', unit: '条', eunit: 'kg', step: 1, digits: 0, minNum: 1, maxNum: 100000, defaultNum: 1 }, - 1: { - value: 1, - title: '剪板', - unit: '米', - eunit: 'm', - step: 1, - digits: 2, - minNum: 0.3, - maxNum: 100000, - defaultNum: 0.3, - }, - 2: { - value: 2, - title: '散剪', - unit: '米', - eunit: 'kg', - step: 1, - digits: 2, - minNum: 6, - maxNum: 100000, - defaultNum: 6, - }, -} diff --git a/src/common/Enumerate/index.ts b/src/common/Enumerate/index.ts deleted file mode 100644 index a5d1f93..0000000 --- a/src/common/Enumerate/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { EnumSaleMode } from './BaseEnum/index' diff --git a/src/common/bluetooth/color/colorDiff.js b/src/common/bluetooth/color/colorDiff.js deleted file mode 100644 index 651e78f..0000000 --- a/src/common/bluetooth/color/colorDiff.js +++ /dev/null @@ -1,76 +0,0 @@ -module.exports = function(lab1, lab2) { - const rgb2labArray1 = lab1 - const rgb2labArray2 = lab2 - - const l1 = rgb2labArray1[0] - const a1 = rgb2labArray1[1] - const b1 = rgb2labArray1[2] - - const l2 = rgb2labArray2[0] - const a2 = rgb2labArray2[1] - const b2 = rgb2labArray2[2] - - const avg_lp = (l1 + l2) / 2 - const c1 = Math.sqrt(Math.pow(a1, 2) + Math.pow(b1, 2)) - const c2 = Math.sqrt(Math.pow(a2, 2) + Math.pow(b2, 2)) - const avg_c = (c1 + c2) / 2 - const g = (1 - Math.sqrt(Math.pow(avg_c, 7) / (Math.pow(avg_c, 7) + Math.pow(25, 7)))) / 2 - - const a1p = a1 * (1 + g) - const a2p = a2 * (1 + g) - - const c1p = Math.sqrt(Math.pow(a1p, 2) + Math.pow(b1, 2)) - const c2p = Math.sqrt(Math.pow(a2p, 2) + Math.pow(b2, 2)) - - const avg_cp = (c1p + c2p) / 2 - - let h1p = rad2deg(Math.atan2(b1, a1p)) - if (h1p < 0) { - h1p = h1p + 360 - } - - let h2p = rad2deg(Math.atan2(b2, a2p)) - if (h2p < 0) { - h2p = h2p + 360 - } - - const avg_hp = Math.abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h1p) / 2 - - const t = 1 - 0.17 * Math.cos(deg2rad(avg_hp - 30)) + 0.24 * Math.cos(deg2rad(2 * avg_hp)) + 0.32 * Math.cos(deg2rad(3 * avg_hp + 6)) - 0.2 * Math.cos(deg2rad(4 * avg_hp - 63)) - - let delta_hp = h2p - h1p - if (Math.abs(delta_hp) > 180) { - if (h2p <= h1p) { - delta_hp += 360 - } - else { - delta_hp -= 360 - } - } - - const delta_lp = l2 - l1 - const delta_cp = c2p - c1p - - delta_hp = 2 * Math.sqrt(c1p * c2p) * Math.sin(deg2rad(delta_hp) / 2) - - const s_l = 1 + ((0.015 * Math.pow(avg_lp - 50, 2)) / Math.sqrt(20 + Math.pow(avg_lp - 50, 2))) - const s_c = 1 + 0.045 * avg_cp - const s_h = 1 + 0.015 * avg_cp * t - - const delta_ro = 30 * Math.exp(-(Math.pow((avg_hp - 275) / 25, 2))) - const r_c = 2 * Math.sqrt(Math.pow(avg_cp, 7) / (Math.pow(avg_cp, 7) + Math.pow(25, 7))) - const r_t = -r_c * Math.sin(2 * deg2rad(delta_ro)) - - const kl = 1; const kc = 1; const kh = 1 - - const delta_e = Math.sqrt(Math.pow(delta_lp / (kl * s_l), 2) + Math.pow(delta_cp / (kc * s_c), 2) + Math.pow(delta_hp / (kh * s_h), 2) + r_t * (delta_cp / (kc * s_c)) * (delta_hp / (kh * s_h))) - - return delta_e - - function rad2deg(rad) { - return 360 * rad / (2 * Math.PI) - } - function deg2rad(deg) { - return (2 * Math.PI * deg) / 360 - } -} diff --git a/src/common/bluetooth/color/colorSpace.js b/src/common/bluetooth/color/colorSpace.js deleted file mode 100644 index 8f00402..0000000 --- a/src/common/bluetooth/color/colorSpace.js +++ /dev/null @@ -1,13 +0,0 @@ - -import LabCom from './lab' -import XyzCom from './xyz' -import ColorDiff from './colorDiff' - -export const toRgb = (lab) => { - const xyz = LabCom.xyz(lab) - return XyzCom.rgb(xyz) -} - -export const Ediff = (lab1, lab2) => { - return ColorDiff(lab1, lab2) -} diff --git a/src/common/bluetooth/color/lab.js b/src/common/bluetooth/color/lab.js deleted file mode 100644 index a36fea5..0000000 --- a/src/common/bluetooth/color/lab.js +++ /dev/null @@ -1,55 +0,0 @@ - -/* eslint-disable import/no-commonjs */ - -const xyz = require('./xyz') - -module.exports = { - name: 'lab', - min: [0, -100, -100], - max: [100, 100, 100], - channel: ['lightness', 'a', 'b'], - alias: ['LAB', 'cielab'], - - xyz(lab) { - const l = lab[0] - const a = lab[1] - const b = lab[2] - let x; let y; let z; let y2 - - if (l <= 8) { - y = (l * 100) / 903.3 - y2 = (7.787 * (y / 100)) + (16 / 116) - } - else { - y = 100 * Math.pow((l + 16) / 116, 3) - y2 = Math.pow(y / 100, 1 / 3) - } - - x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3) - - z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3) - - return [x, y, z] - }, -} - -// extend xyz -xyz.lab = function(xyz1) { - let x = xyz1[0] - let y = xyz1[1] - let z = xyz1[2] - - x /= 95.047 - y /= 100 - z /= 108.883 - - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116) - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116) - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116) - - const l = (116 * y) - 16 - const a = 500 * (x - y) - const b = 200 * (y - z) - - return [l, a, b] -} diff --git a/src/common/bluetooth/color/rgb.js b/src/common/bluetooth/color/rgb.js deleted file mode 100644 index 4c2601e..0000000 --- a/src/common/bluetooth/color/rgb.js +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable import/no-commonjs */ - -module.exports = { - name: 'rgb', - min: [0, 0, 0], - max: [255, 255, 255], - channel: ['red', 'green', 'blue'], - alias: ['RGB'], -} diff --git a/src/common/bluetooth/color/xyz.js b/src/common/bluetooth/color/xyz.js deleted file mode 100644 index a8923f4..0000000 --- a/src/common/bluetooth/color/xyz.js +++ /dev/null @@ -1,136 +0,0 @@ - -/* eslint-disable import/no-commonjs */ - -const rgb = require('./rgb') - -const xyz = { - name: 'xyz', - min: [0, 0, 0], - channel: ['X', 'Y', 'Z'], - alias: ['XYZ', 'ciexyz', 'cie1931'], -} - -/** - * Whitepoint reference values with observer/illuminant - * - * http://en.wikipedia.org/wiki/Standard_illuminant - */ -xyz.whitepoint = { - // 1931 2° - 2: { - // incadescent - A: [109.85, 100, 35.585], - // B:[], - C: [98.074, 100, 118.232], - D50: [96.422, 100, 82.521], - D55: [95.682, 100, 92.149], - // daylight - D65: [95.045592705167, 100, 108.9057750759878], - D75: [94.972, 100, 122.638], - // flourescent - // F1: [], - F2: [99.187, 100, 67.395], - // F3: [], - // F4: [], - // F5: [], - // F6:[], - F7: [95.044, 100, 108.755], - // F8: [], - // F9: [], - // F10: [], - F11: [100.966, 100, 64.370], - // F12: [], - E: [100, 100, 100], - }, - - // 1964 10° - 10: { - // incadescent - A: [111.144, 100, 35.200], - C: [97.285, 100, 116.145], - D50: [96.720, 100, 81.427], - D55: [95.799, 100, 90.926], - // daylight - D65: [94.811, 100, 107.304], - D75: [94.416, 100, 120.641], - // flourescent - F2: [103.280, 100, 69.026], - F7: [95.792, 100, 107.687], - F11: [103.866, 100, 65.627], - E: [100, 100, 100], - }, -} - -/** - * Top values are the whitepoint’s top values, default are D65 - */ -xyz.max = xyz.whitepoint[2].D65 - -/** - * Transform xyz to rgb - * - * @param {Array} xyz Array of xyz values - * - * @return {Array} RGB values - */ -xyz.rgb = function(_xyz, white) { - // FIXME: make sure we have to divide like this. Probably we have to replace matrix as well then - white = white || xyz.whitepoint[2].E - - const x = _xyz[0] / white[0] - const y = _xyz[1] / white[1] - const z = _xyz[2] / white[2] - let r; let g; let b - - // assume sRGB - // http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html - r = (x * 3.240969941904521) + (y * -1.537383177570093) + (z * -0.498610760293) - g = (x * -0.96924363628087) + (y * 1.87596750150772) + (z * 0.041555057407175) - b = (x * 0.055630079696993) + (y * -0.20397695888897) + (z * 1.056971514242878) - - r = r > 0.0031308 - ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r = (r * 12.92) - - g = g > 0.0031308 - ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g = (g * 12.92) - - b = b > 0.0031308 - ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b = (b * 12.92) - - r = Math.min(Math.max(0, r), 1) - g = Math.min(Math.max(0, g), 1) - b = Math.min(Math.max(0, b), 1) - - return [r * 255, g * 255, b * 255] -} - -/** - * RGB to XYZ - * - * @param {Array} rgb RGB channels - * - * @return {Array} XYZ channels - */ -rgb.xyz = function(rgb1, white) { - let r = rgb1[0] / 255 - let g = rgb1[1] / 255 - let b = rgb1[2] / 255 - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92) - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92) - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92) - - const x = (r * 0.41239079926595) + (g * 0.35758433938387) + (b * 0.18048078840183) - const y = (r * 0.21263900587151) + (g * 0.71516867876775) + (b * 0.072192315360733) - const z = (r * 0.019330818715591) + (g * 0.11919477979462) + (b * 0.95053215224966) - - white = white || xyz.whitepoint[2].E - - return [x * white[0], y * white[1], z * white[2]] -} - -module.exports = xyz diff --git a/src/common/bluetooth/command.js b/src/common/bluetooth/command.js deleted file mode 100644 index e5a7d46..0000000 --- a/src/common/bluetooth/command.js +++ /dev/null @@ -1,141 +0,0 @@ -import { uint32ToUint8Array, uint8ArrayToHex } from './utils' - -export class Command { - // 测量序号 - static measureId = 1 - - // 命令完整响应的长度 - responseSize = 0 - // 命令发送的数据 - content = new Uint8Array(0) - // 命令响应的数据 - response = new Uint8Array(0) - // 等待响应的超时时间 - timeout = 3000 - // 发送的数据是否需要生成和校验值 - needSign = true - - /** - * @param {Uint8Array|ArrayBuffer|number[]} content - * @param {number} responseSize - * @param {number} timeout - * @param {boolean} needSign - */ - constructor(content, responseSize, timeout = 3000, needSign = true) { - if (content instanceof Uint8Array) { - this.content = content - } - else { - this.content = new Uint8Array(content) - } - this.responseSize = responseSize - if (typeof timeout === 'number' && timeout >= 0) { - this.timeout = timeout - } - this.needSign = needSign - } - - /** - * 返回一个 ArrayBuffer 数组, 用于发送 - * @returns {ArrayBuffer[]} - */ - get data() { - if (this.content.length === 0) { throw new Error('正文内容不能为空') } - const data = [] - const b = new Uint8Array(this.content.buffer) - if (this.needSign) { - b[b.length - 1] = Command.getSign(b) - } - for (let i = 0; i < b.length; i += 20) { - data.push(b.slice(i, i + 20).buffer) - } - return data - } - - /** 是否接收完成 */ - get isComplete() { - return this.response.length >= this.responseSize - } - - /** 是否有效 */ - get isValid() { - return Command.getSign(this.response) === this.response[this.response.length - 1] - } - - /** - * 填充响应数组 - * @param {ArrayBuffer} buffer - */ - fillResponse(buffer) { - this.response = new Uint8Array([...this.response, ...(new Uint8Array(buffer))]) - } - - /** - * 获取和校验值 - * @param {ArrayBuffer|Uint8Array} buffer - */ - static getSign(buffer) { - const _b = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer) - let sum = 0 - _b.slice(0, _b.length - 1).forEach(i => sum += i) - return new Uint8Array([sum])[0] - } - - // 唤醒命令 - static WakeUp = new Command([0xF0], 0, 0, false) - - /** - * 获取测量命令 - * @param {number} mode - */ - static measure(mode = 0) { - Command.measureId += 1 - const measureId = uint32ToUint8Array(Command.measureId) - return new Command([0xBB, 1, mode, ...measureId, 0, 0xFF, 0], 10, 1500) - } - - /** - * 获取测量数据 (Lab) - * @param {number} mode - */ - static getLab(mode = 0) { - return new Command([0xBB, 3, mode, 0, 0, 0, 0, 0, 0xFF, 0], 20, 1500) - } - - /** - * 获取测量数据 (RGB) - * @param {number} mode - */ - static getRGB(mode = 0) { - return new Command([0xBB, 4, mode, 0, 0, 0, 0, 0, 0xFF, 0], 20, 1500) - } - - /** - * 获取测量的光谱数据 - * @param {number} mode - */ - static getSpectral(mode = 0) { - return new Command([0xBB, 2, 0x10 + mode, 0, 0, 0, 0, 0, 0xFF, 0], 200, 5000) - } - - /** - * 白校准 - * @param {number} check 是否判断校准成功 1 判断 0 不判断 - */ - static whiteCalibrate(check = 1) { - return new Command([0xBB, 0x11, check, 0, 0, 0, 0, 0, 0xFF, 0], 10, 1500) - } - - /** - * 黑校准 - * @param {number} check 是否判断校准成功 - */ - static blackCalibrate(check = 1) { - return new Command([0xBB, 0x10, check, 0, 0, 0, 0, 0, 0xFF, 0], 10, 1500) - } - - /** 获取校准状态 */ - static GetCalibrationInf = new Command([0xBB, 0x1E, 0, 0, 0, 0, 0, 0, 0xFF, 0], 20, 1500) - - static GetDeviceInf = new Command([0xBB, 0x12, 0x01, 0, 0, 0, 0, 0, 0xFF, 0], 200, 5000) -} diff --git a/src/common/bluetooth/utils.js b/src/common/bluetooth/utils.js deleted file mode 100644 index 221ec2a..0000000 --- a/src/common/bluetooth/utils.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Uint32 转 Uint8 数组 - * @param {number} n - */ -export function uint32ToUint8Array(n) { - return new Uint8Array(new Uint32Array([n]).buffer) -} - -/** - * Uint8 数组 转 Float32 - * @param {Uint8Array} raw - */ -export function uint8ArrayToFloat32(raw) { - return new Float32Array(raw.buffer)[0] -} - -/** - * Uint8 数组 转 Uint16 - * @param {Uint8Array} raw - */ -export function uint8ArrayToUint16(raw) { - return new Uint16Array(raw.buffer)[0] -} - -/** - * Uint8 数组转 Uint32 - * @param {Uint8Array} raw - * @returns - */ -export function uint8ArrayToUnit32(raw) { - return new Uint32Array(raw.buffer)[0] -} - -/** - * 等待指定时长 - * @param {number} duration - */ -export function waitFor(duration) { - return new Promise((resolve) => { - setTimeout(resolve, duration) - }) -} - -/** - * uint8 数组转 hex 字符串 - * @param {Uint8Array} raw - */ -export function uint8ArrayToHex(raw) { - const s = [] - raw.forEach((i) => { - const b = i.toString(16) - s.push(b.length > 1 ? b : `0${b}`) - }) - return s.join(' ') -} - -// 二进制转字符串(ascii) -// export function bufferToString(buffer) { -// let str = '' -// for (const code of buffer) { -// if (code === 0) { break } -// str += utf82string(code) -// } -// return str -// } diff --git a/src/common/common.ts b/src/common/common.ts deleted file mode 100644 index 06dda4c..0000000 --- a/src/common/common.ts +++ /dev/null @@ -1,233 +0,0 @@ -import Taro from '@tarojs/taro' - -const setUrlQuery = (options: { url: string; query: object | null }) => { - let { url } = options - const { query } = options - if (!url) { return '' } - if (query) { - const queryArr: any[] = [] - for (const key in query) { - if (query.hasOwnProperty(key)) { - queryArr.push(`${key}=${query[key]}`) - } - } - if (url.includes('?')) { - url = `${url}&${queryArr.join('&')}` - } - else { - url = `${url}?${queryArr.join('&')}` - } - } - return url -} -/** - * 跳转 - * @param path - * @param params - * @param type false 跳转普通页面,true 跳转tabbar页面 - */ -type ParamLink = 'navigateTo' | 'switchTab' | 'reLaunch' | 'redirectTo' -export const goLink = (path = '', params: object | null = null, way: ParamLink = 'navigateTo') => { - if (path) { - // let params_str = Qs_.stringify(params || {}, { encode: false }) - // path = params_str ? path + '?' + params_str : path - path = setUrlQuery({ url: path, query: params }) - Taro[way]({ url: path }) - } -} -/** - * 判断对象为空 - * @param object - * @returns - */ -export const isEmptyObject = (object: any) => { - if (object == undefined || object == null || Number.isNaN(object)) { - return true - } - else { - if (object.constructor == Object) { - return Reflect.ownKeys(object).length == 0 - } - else if (object.constructor == Array) { - return object.length == 0 - } - else if (object.constructor == String) { - return object == '' - } - } - return false -} - -/** - * 表单检索 - * @param data - * @param rules = { - account: [{ - message: "请输入正确的用户名", - // regex: /\d/, // 正则匹配规则 - // validator: (value:any, rule:any)=>{ // 自定义验证,返回true表示匹配到了(错误) - // return false; - // } - }], - password: [{ - message: "请输入正确的密码", - // regex: /\d/ - }] - }; - * @param message - * @returns - */ -// export const retrieval = (data: any, rules?: Object, message = '请填写完信息') => { -// return new Promise((resolve, reject) => { -// if (rules) { -// const keys = Reflect.ownKeys(rules) -// const result = keys.some((key: any) => { -// for (const item of (rules as any)[key]) { -// let _res = false -// if (item.validator) { -// if (item.validator(data[key], item)) { -// _res = true -// } -// } -// else if (item.regex) { -// if (!item.regex.test(data[key])) { -// _res = true -// } -// } -// else { -// if (isEmptyObject(data[key])) { -// _res = true -// } -// } -// message = item.message -// return _res -// } -// }) -// if (result) { -// reject(message) -// } -// } -// else { -// const keys = Reflect.ownKeys(data) -// if (keys.some((key: any) => isEmptyObject(data[key]))) { -// reject(message) -// } -// } -// resolve(null) -// }) -// } -/** - * toast提示 - */ -export const alert = { - success(title: string) { - Taro.showToast({ - title, - icon: 'success', - }) - }, - error(title: string) { - Taro.showToast({ - title, - icon: 'error', - }) - }, - loading(title: string, mask = false) { - Taro.showToast({ - title, - icon: 'loading', - mask, - }) - }, - none(title: string) { - Taro.showToast({ - title, - icon: 'none', - }) - }, - showLoading(title: string, mask = true) { - Taro.showLoading({ title, mask }) - }, - hideLoading() { - Taro.hideLoading() - }, -} - -// 金额千位分割符 -export const formatKbPrice = (number: string) => { - const ret = Array.from(number) - .reverse() - .reduce((result: string[], next, i, arr) => { - if ((i + 1) % 3 === 0 && i + 1 !== arr.length) { - result.push(next, ',') - return result - } - result.push(next) - return result - }, []) - return ret.reverse().join('') -} - -/** - * 验证权限 - * @param {权限key} key - * @returns - */ -export const checkKey = (key = '') => { - if (key === 'ignore') { return true } - const getUser = JSON.parse(Taro.getStorageSync('userInfo') || '{}') - return getUser.mp_role_access_list?.includes(key) -} - -// 判断是否整数类型 -export function isInteger(obj) { - return (obj | 0) === obj -} - -export const handleTimeout = (minutes: number) => { - const days = Math.floor(minutes / (24 * 60)) // 计算出天数 - const leavel = minutes % (24 * 60) // 计算天数后剩余的时间 - const hours = Math.floor(leavel / 60) - const mins = leavel % 60 - const dayStr = days ? `${days}d` : '' - const hoursStr = hours ? `${hours}h` : '' - const minsStr = mins ? `${mins}m` : '' - return `${dayStr} ${hoursStr} ${minsStr}` -} - -export const paywayList = [ - { - id: 2, - iconfont: 'icon-yufukuan1', - name: '预存款', - fonts: '可用额度 ', - money: '', - isCheck: false, - }, - { - id: 5, - iconfont: 'icon-xianxiahuizong', - name: '货到付款', - fonts: '发货后3天内付款', - isCheck: false, - money: '', - color: '#ffffff', - }, - { - id: 3, - iconfont: 'icon-a-0tianzhangqi', - name: 'x天账期', - fonts: '可用额度 ', - money: '', - isCheck: false, - }, - { - iconfont: 'icon-yue', - name: '线下汇款', - }, - { - iconfont: 'icon-saomiao', - name: '扫码支付', - color: '#ffffff', - }, -] diff --git a/src/common/constant.ts b/src/common/constant.ts deleted file mode 100644 index b04bcab..0000000 --- a/src/common/constant.ts +++ /dev/null @@ -1,53 +0,0 @@ -// export const BASE_URL = CURRENT_BASE_URL -// export const BASE_URL = `http://192.168.0.75:50001/lymarket` -// export const BASE_URL = `http://192.168.0.89:50001/lymarket` -// export const BASE_URL = `http://10.0.0.5:50001/lymarket` -// export const BASE_URL = `http://192.168.0.89:40001/lymarket` -// export const BASE_URL = 'https://test.zzfzyc.com/lymarket' // 测试环境 -export const BASE_URL = 'https://pre.zzfzyc.com/lymarket' // 预发布 -// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境 -// export const BASE_URL = 'https://www.zzfzyc.com/lymarket' // 正式环境 -// export const BASE_URL = 'http://192.168.1.7:50002/lymarket' // 添 -// export const BASE_URL = 'http://192.168.1.163:50002/lymarket' // 杰 - -// CDN -// 生成密钥 -export const GET_UPLOAD_SIGN = '/upyun/getsign' // 请求签名 url -export const UPLOAD_CDN_URL = 'https://v0.api.upyun.com/' - -// cdn -export const IMG_CND_Prefix = CURRENT_IMG_CND_Prefix - -// 在线支付图片baseUrl -export const CAP_HTML_TO_IMAGE_BASE_URL = CURRENT_CAP_HTML_TO_IMAGE_BASE_URL - -// 上传图片视频 -export const CDN_UPLOAD_IMG = `${UPLOAD_CDN_URL || ''}` - -// appid -export const WX_APPID = 'wx64fe67f111d52457' - -export const LIST_EMPTY_IMAGE = `${IMG_CND_Prefix}/list_empty.png` - -export const EMPTY_IMAGE = `${IMG_CND_Prefix}/empty.png` - -export const SEARCH_EMPTY_IMAGE = `${IMG_CND_Prefix}/search_empty.png` -export const COLOR_CARD_LIST_EMPTY_IMAGE = `${IMG_CND_Prefix}/color_card/colorCardList_empty.png` -export const BUSINESS_MANAGER = `${IMG_CND_Prefix}/color_card/businessManager.png` - -export const ORDER_WARNING_FAIL = `${IMG_CND_Prefix}/orderWarningAnalysis/fail.png` -export const ORDER_WARNING_PENDING = `${IMG_CND_Prefix}/orderWarningAnalysis/pending.png` -export const ORDER_WARNING_CANCEL = `${IMG_CND_Prefix}/orderWarningAnalysis/cancel.png` -export const ORDER_WARNING_SUCCESS = `${IMG_CND_Prefix}/orderWarningAnalysis/success.png` -// 客服 -export const BUSINESS_MANAGER_PHONE = '0757-86834274' -// 获取CND资源 -export const getCDNSource = (suffix: string) => { - return IMG_CND_Prefix + suffix -} -// 场景值 -export const SCENE = { - SearchScene: 0, // 商城面料搜索 -} -// 支付码单跳转链接 -export const PAY_H5_CODE_URL = CURRENT_PAY_H5_CODE_URL diff --git a/src/common/enum.ts b/src/common/enum.ts deleted file mode 100644 index 76dadf0..0000000 --- a/src/common/enum.ts +++ /dev/null @@ -1,72 +0,0 @@ - -// 订单状态枚举 -export const ORDER_STATUS = { - SaleorderstatusWaitingPrePayment: { value: 10, label: '预付款' }, // 预付款 - SaleOrderStatusBooking: { value: 0, label: '待接单' }, // 待接单 - SaleOrderStatusArranging: { value: 1, label: '配布中' }, // 配布中 - SaleOrderStatusArranged: { value: 2, label: '已配布' }, // 已配布 - SaleOrderStatusWaitingPayment: { value: 7, label: '待付款' }, // 待付款 - SaleOrderStatusTaking: { value: 11, label: '提货中' }, // 提货中 - SaleOrderStatusWaitingDelivery: { value: 3, label: '待发货' }, // 待发货 - SaleOrderStatusWaitingReceipt: { value: 8, label: '待收货' }, // 待收货 - SaleOrderStatusAlreadyReceipt: { value: 9, label: '已收货' }, // 已收货 - SaleOrderStatusComplete: { value: 4, label: '已完成' }, // 已完成 - SaleOrderStatusRefund: { value: 6, label: '已退款' }, // 已退款 - SaleOrderStatusCancel: { value: 5, label: '已取消' }, // 已取消 -} - -// 售后单状态枚举 -export const AFTER_ORDER_STATUS = { - ReturnStageApplying: { value: 0, label: '申请中' }, // 申请中 - ReturnStageWaitCheck: { value: 1, label: '退货中' }, // 退货中 - ReturnStageChecked: { value: 2, label: '待验布' }, // 待验布 - ReturnStageReturned: { value: 3, label: '已退款' }, // 已退款 - ReturnStageCancel: { value: 4, label: '已取消' }, // 已取消 - ReturnStageQualityCheckPendingRefund: { value: 5, label: '待退款' }, // 已验布 - ReturnStageServiceOrderPendingRefund: { value: 6, label: '待退款' }, // 待退款 - ReturnStageRejected: { value: 7, label: '已拒绝' }, // 已拒绝 -} - -// 支付方式 -export const PAYMENT_METHOD = { - PaymentMethodPreDeposit: { value: 2, label: '预存款' }, - PaymentMethodAccountPeriod: { value: 3, label: '账期' }, - PaymentMethodofflineRemittance: { value: 1, label: '线下汇款' }, - PaymentMethodScanCodeToPay: { value: 4, label: '扫码支付' }, - PaymentMethodCashOnDelivery: { value: 5, label: '货到付款' }, -} - -// 订单类型 -export const SALE_MODE = { - SaLeModeBulk: { value: 0, label: '大货' }, - SaleModeLengthCut: { value: 1, label: '剪版' }, - SaLeModeWeightCut: { value: 2, label: '散剪' }, -} - -// 分享场景枚举 -export const SHARE_SCENE = { - ShareDetail: { value: 1, label: '详情分享' }, - SharePage: { value: 2, label: '页面分享' }, -} - -// 订阅消息 -export const SUBSCRIPTION_MESSAGE_SCENE = { - SubmitOrder: { value: 1, label: '确认下单' }, - ToPay: { value: 2, label: '去付款' }, - ApplyGoods: { value: 3, label: '申请退款' }, -} - -// 应收单退款状态枚举 -export const REFUND_STATUS = { - ShouldCollectOrderRefundTypeUnknown: { value: 0, label: '未知退款' }, - ShouldCollectOrderRefundTypeAdvanceReceiptRefund: { value: 1, label: '预收退款' }, - ShouldCollectOrderRefundTypeReturnForRefund: { value: 2, label: '退货退款' }, - ShouldCollectOrderRefundTypeSalesRefund: { value: 3, label: '销售退款' }, -} - -// 申请单退款状态枚举 -export const REFUND_STATUS_ORDER = { - ReturnApplyOrderTypeAdvanceReceiptRefund: { value: 2, label: '预收退款' }, // 预收退款 - ReturnApplyOrderTypeReturnForRefund: { value: 1, label: '退货退款' }, // 退货退款 - ReturnApplyOrderTypeSalesRefund: { value: 3, label: '销售退款' }, // 销售退款 -} diff --git a/src/common/format.js b/src/common/format.js deleted file mode 100644 index b2bd011..0000000 --- a/src/common/format.js +++ /dev/null @@ -1,302 +0,0 @@ -import { IMG_CND_Prefix } from './constant' -/** - * 精度 - * @param {*} num - * @param {*} precision - * @returns - */ -export const strip = (num, precision = 12) => { - return +parseFloat(num.toPrecision(precision)) -} -/** - * - * @param {千位分割付} number - * @returns - */ -export const numberWithCommas = ({ number = 0, digit = 2 }) => { - if (!Number.isNaN(Number(number))) { - return parseFloat(number).toFixed(digit).replace(/(\d)(?=(\d{3})+\.)/g, '$1,') - // return parseFloat(number).toFixed(digit).replace(/^\B(? { - // console.log('移除标签',val,val.endsWith("#")); - return val.endsWith('#') ? val.replace('#', '') : val -} - -/** - * 格式化编码+名称显示方式 - * @param {String} code 编码 - * @param {String} name 名称 - * @param {*} mode 模式 both:code + 名称 name: 仅显示名称 - * @returns - */ -export const formatHashTag = (code = '', name = '', mode = 'both') => { - if (mode == 'both') { - return `${formatRemoveHashTag(code)}# ${name}` - } - else if (mode == 'name') { - return `${name}` - } -} - -const Digit = 10 * 10 - -/** - * 重量 进退位 单位 - */ -export const weightDigit = 1000 - -/** - * 厘米进退位单位 - */ -export const meterDigit = 100 - -/** - * 除以 - * @param {*} val - * @param {*} digit - * @param {*} priceStatus //是否显示千位分割 - * @returns - */ -export const formatPriceDiv = (val, digit = Digit, priceStatus = false) => { - const res = strip(Number(val / digit)) || 0 - return priceStatus ? numberWithCommas({ number: res }) : res -} -/** - * 乘以 - * @param {*} val - * @param {*} digit - * @returns - */ -export const formatPriceMul = (val, digit = Digit) => { - return strip(Number(val * digit)) || 0 -} - -/** - * 格式化长度 (乘以) - * @param {Number} val - * @returns - */ -export const formatMeterMul = (val, digit = meterDigit) => { - return strip(Number(val * digit)) || 0 -} - -/** - * 格式化长度 (除以) - * @param {*} val - */ -export const formatMeterDiv = (val, digit = meterDigit) => { - return strip(Number(val / digit)) || 0 -} - -/** - * 格式化重量单位 (乘以) - * @param {Number} val - * @returns - */ -export const formatWeightMul = (val, digit = weightDigit) => { - return strip(Number(val * digit)) || 0 -} - -/** - * 格式化重量单位 (除以) - * @param {*} val - */ -export const formatWeightDiv = (val, digit = weightDigit) => { - return strip(Number(val / digit)) || 0 -} - -export const formatDateTime = (val, fmt = 'YYYY-MM-DD HH:mm:ss') => { - if (val) { - const time = new Date(val) - const Y = time.getFullYear() - const M = time.getMonth() + 1 - const d = time.getDate() - const h = time.getHours() - const m = time.getMinutes() - const s = time.getSeconds() - - fmt = fmt - .replace('YYYY', Y) - .replace('MM', M.toString().padStart(2, '0')) - .replace('DD', d.toString().padStart(2, '0')) - .replace('HH', h.toString().padStart(2, '0')) - .replace('mm', m.toString().padStart(2, '0')) - .replace('ss', s.toString().padStart(2, '0')) - return fmt - } - else { - return val - } -} - -/** - * 数值保留两位小数 - * @param {*} x - * @returns - */ -export const toDecimal2 = (x) => { - let f = parseFloat(x) - if (Number.isNaN(f)) { - return 0 - } - f = `${f}` - const index = f.lastIndexOf('.') - if (index >= 0) { - const decimal = f.substring(index + 1) - if (decimal.length == 1) { - f = `${f.substring(0, index + 1) + decimal}0` - } - else { - f = f.substring(0, index + 1) + decimal.substring(0, 2) - } - } - return f -} - -/** - * 转换金额单位 - * @param {*} num 金额 / 数值 - * @param {*} digit 转换单位 - * @returns - */ -export const formatMillionYuan = (num, digit = 10000) => { - return num / digit > 1 ? { num: toDecimal2(num / digit), million: true } : { num, million: false } -} - -// 匹配前缀 例如://xxx.com 或者 http://xxx.com 或者 https://xxx.com -// eslint-disable-next-line no-useless-escape -const URL_REGEXP = /(https?:)?\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&=]*)/gi -/** - * 判断是否有前缀 - * @param {string} url url路径 - */ -export const withBaseUrl = function(url) { - return URL_REGEXP.test(url) -} -/** - * 去除前缀 //xxx.com 或者 http://xxx.com 或者 https://xxx.com - * @param {string} url url路径 - */ -export const breakupUrl = (url) => { - return url?.replace(URL_REGEXP, '') ?? url -} -/** - * 拼接前缀 http://xxx.com + /asdfsafdas/154531asdf465413.png - * @param {string} url url路径 - */ -export const jointUrl = (url) => { - return withBaseUrl(url) ? url : `${IMG_CND_Prefix}${url}` -} - -export const formatUrl = (url, suffix = '!w200') => { - if (url) { - url = url.includes(',') ? url.split(',')[0] : url - return withBaseUrl(url) ? url + suffix : jointUrl(url) + suffix - } - else { - return `${IMG_CND_Prefix}/mall/no_img.png` - } -} - -/** - * 格式化图片路径 - * @param {*} url - * @status true|false - * @returns - */ -export const formatImgUrl = (url, suffix = '!w200') => { - if (url) { - return url.includes('http') ? url + suffix : IMG_CND_Prefix + url + suffix - } - else { - return `${IMG_CND_Prefix}/mall/no_img.png` - } -} - -/** - * - * @param {纹理图} imgurl - * @param {rgb} rgb - * @param {} suffix - * @returns 1 有纹理图,2 有rgb 3默认图 - */ -export const isLabImage = (imgurl, rgb, suffix = '!w200') => { - if (imgurl) { - return { status: 1, value: `${IMG_CND_Prefix}/${imgurl}${suffix}` } - } - else if (rgb.r != 0 || rgb.g != 0 || rgb.b != 0) { - return { status: 2, value: rgb } - } - else { - return { status: 3, value: `${IMG_CND_Prefix}/mall/no_img.png` } - } -} - -// 计算数值大于指定值 -export const setPriceUnit = (num, cls) => { - if (cls) { - const res = formatMillionYuan(num, 1000) - return { - cls: res.million ? cls : '', - num: res.num, - } - } - else if (num > 100000000) { - const res = formatMillionYuan(num, 100000000) - return { - cls: res.million ? 's-e' : '', - num: res.num, - } - } - else { - const res = formatMillionYuan(num) - return { - cls: res.million ? 's-w' : '', - num: res.num, - } - } -} - -// 不四舍五入, val:原数据,num:保留位数 -const noScale = (val, num = 2) => { - val = parseFloat(val) - num = parseInt(num) - const power = Math.pow(10, num) - val = `${val * power}` - val = val.split('.')[0] - val = parseInt(val) / power - return val -} - -// 处理数据单位(自然数) -export const dataUnit = (val) => { - let newVal = '' - val = parseFloat(val) - if (val >= 100000000) { - newVal = `${noScale(val / 100000000)}亿` - } - else if (val >= 10000000) { - newVal = `${noScale(val / 10000000)}kw` - } - else if (val >= 10000) { - newVal = `${noScale(val / 10000)}w` - } - else if (val >= 1000) { - newVal = `${noScale(val / 1000)}k` - } - else { - newVal = val - } - return newVal -} diff --git a/src/common/money.ts b/src/common/money.ts deleted file mode 100644 index 0a7a965..0000000 --- a/src/common/money.ts +++ /dev/null @@ -1,90 +0,0 @@ -const smallToBig = function(money) { - // 将数字金额转换为大写金额 - const cnNums = [ - '零', - '壹', - '贰', - '叁', - '肆', - '伍', - '陆', - '柒', - '捌', - '玖', - ] // 汉字的数字 - const cnIntRadice = ['', '拾', '佰', '仟'] // 基本单位 - const cnIntUnits = ['', '万', '亿', '兆'] // 对应整数部分扩展单位 - const cnDecUnits = ['角', '分', '毫', '厘'] // 对应小数部分单位 - const cnInteger = '整' // 整数金额时后面跟的字符 - const cnIntLast = '元' // 整数完以后的单位 - // 最大处理的数字 - // eslint-disable-next-line @typescript-eslint/no-loss-of-precision - const maxNum = 999999999999999.9999 - - // 输出的中文金额字符串 - let chineseStr = '' - let parts // 分离金额后用的数组,预定义 - if (money == '') { - return '' - } - - money = parseFloat(money) - if (money >= maxNum) { - // 超出最大处理数字 - return '超出最大处理数字' - } - if (money == 0) { - chineseStr = cnNums[0] + cnIntLast + cnInteger - return chineseStr - } - - // 四舍五入保留两位小数,转换为字符串 - money = Math.round(money * 100).toString() - const integerNum = money.substr(0, money.length - 2) // 金额整数部分 - const decimalNum = money.substr(money.length - 2) // 金额小数部分 - - // 获取整型部分转换 - if (parseInt(integerNum, 10) > 0) { - let zeroCount = 0 - const IntLen = integerNum.length - for (let i = 0; i < IntLen; i++) { - const n = integerNum.substr(i, 1) - const p = IntLen - i - 1 - const q = p / 4 - const m = p % 4 - if (n == '0') { - zeroCount++ - } - else { - if (zeroCount > 0) { - chineseStr += cnNums[0] - } - // 归零 - zeroCount = 0 - chineseStr += cnNums[parseInt(n)] + cnIntRadice[m] - } - if (m == 0 && zeroCount < 4) { - chineseStr += cnIntUnits[q] - } - } - chineseStr += cnIntLast - } - // 小数部分 - if (decimalNum != '') { - const decLen = decimalNum.length - for (let i = 0; i < decLen; i++) { - const n = decimalNum.substr(i, 1) - if (n != '0') { - chineseStr += cnNums[Number(n)] + cnDecUnits[i] - } - } - } - if (chineseStr == '') { - chineseStr += cnNums[0] + cnIntLast + cnInteger - } - else if (decimalNum == '' || /^0*$/.test(decimalNum)) { - chineseStr += cnInteger - } - return chineseStr -} -export default smallToBig diff --git a/src/common/shortCode/index.js b/src/common/shortCode/index.js deleted file mode 100644 index edf007d..0000000 --- a/src/common/shortCode/index.js +++ /dev/null @@ -1,32 +0,0 @@ -import Taro from '@tarojs/taro' -import { BASE_URL } from '../constant' - -// 绑定上下级 -const bindParent = (share_user_id) => { - // 绑定上下级 - Taro.request({ - url: `${BASE_URL}/v1/mall/shortCode/bind`, - method: 'POST', - data: { share_user_id }, - success: (res) => { - if (res.data.code == 0) { - // 绑定上下级 - } - }, - }) -} -// 解析短码(主要用于右上角按钮分享) -export const analysisShortCodeApi = (val) => { - // 解析短码 - Taro.request({ - url: `${BASE_URL}/v1/mall/shortCode`, - method: 'GET', - data: { md5_key: val }, - success: (res) => { - if (res.data.code == 0) { - // 绑定上下级 - bindParent(res.data.data.share_user_id) - } - }, - }) -} diff --git a/src/common/system.ts b/src/common/system.ts deleted file mode 100644 index 4c94a98..0000000 --- a/src/common/system.ts +++ /dev/null @@ -1,49 +0,0 @@ -import Taro from '@tarojs/taro' - -/** - * 设置 系统 本地存储 - * @param {Object} systemInfo - */ -export const setSystem = (systemInfo) => { - Taro.setStorageSync('system', JSON.stringify(systemInfo)) -} - -/** - * 返回 系统 本地存储 - */ -export const getSystem = () => { - const result = Taro.getStorageSync('system') - return result ? JSON.parse(result) : null -} - -/** - * 设置 小程序 本地存储 - * @param {Object} systemInfo - */ -export const setAccountInfo = (systemInfo) => { - Taro.setStorageSync('accountInfo', JSON.stringify(systemInfo)) -} - -/** - * 返回 系统 本地存储 - */ -export const getAccountInfo = () => { - const result = Taro.getStorageSync('accountInfo') - return result ? JSON.parse(result) : null -} - -/** - * 设置 参数本地存储 - * @param {Object} info - */ -export const setParam = (info: Object) => { - Taro.setStorageSync('params', JSON.stringify(info)) -} - -/** - * 返回 参数本地存储 - */ -export const getParam = () => { - const res = Taro.getStorageSync('params') || null - return res ? JSON.parse(res) : null -} diff --git a/src/common/util.ts b/src/common/util.ts deleted file mode 100644 index 4e3d491..0000000 --- a/src/common/util.ts +++ /dev/null @@ -1,184 +0,0 @@ -import Taro from '@tarojs/taro' -import type { SelectorQuery } from '@tarojs/taro/types/index' -import { formatImgUrl } from './format' -import { analysisShortCodeApi } from './shortCode' -/** - * 防抖 - * @param {*} fn - * @param {*} delay - * @returns - */ -export const debounce = (fn, delay) => { - let timer: any = null - return (...param) => { - if (timer) { clearTimeout(timer) } - timer = setTimeout(() => { - fn(...param) - }, delay) - } -} - -/** - * 节流 - * @param {*} fn - * @param {*} delay - * @returns - */ -export const throttle = (fn, delay) => { - let pre = 0 - return (...params) => { - const now = new Date().getTime() - if (now - pre > delay) { - fn(...params) - pre = now - } - } -} - -/** - * 批量过滤对象值为空的属性 - * @param {Object} val 需要过滤的对象 - * @param {Array} arr 排除过滤的属性 - * @returns - */ -export const getFilterData = (val = {}, arr: string[] = []) => { - const res = {} - for (const key in val) { - // undefined == null output: true - if (val[key] != null && val[key] !== '' && !arr.includes(key)) { - if (typeof val[key] == 'number') { - if (!Number.isNaN(val[key])) { - res[key] = val[key] - } - } - else { - res[key] = val[key] - } - } - } - return res -} -/** - * 对象深拷贝 - * @param {*} object - * @returns - */ -export const copyObject = (object) => { - if (object.constructor == Object) { - const keys = Object.keys(object) - const newObject = {} - keys.forEach((key) => { - newObject[key] = copyObject(object[key]) - }) - return newObject - } - else if (object.constructor == Array) { - return object.map((item) => { - return copyObject(item) - }) - } - else { - return object - } -} - -/** - * - * @param {*} suffix - * !w80 - !w100 - !w160 - !w200 - !w400 - !w800 - !wh400 - !w600 - */ -export const screenshot = (url, suffix = '!w200') => { - return url + suffix -} -interface DataLoadingStatus { - list: any[] - total: number - status: boolean -} -// 获取数据加载状态 //0:数据从无到有加载数据,1,没有任何数据, 2:下拉加载,3:下拉没有数据 -export const dataLoadingStatus = ({ list = [], total = 0, status = false }: DataLoadingStatus) => { - console.log('list & status', list, status) - // 类型校验 - if (Object.prototype.toString.call(list) !== '[object Array]') { - list = [] - } - if (list.length == 0 && status) { - return 0 - } - else if (list.length == 0 && !status) { - return 1 - } - else if (list.length < total) { - return 2 - } - else { - return 3 - } -} - -function delay(delayTime = 25): Promise { - return new Promise((resolve) => { - setTimeout(() => { - // @ts-expect-error no error - resolve() - }, delayTime) - }) -} - -export function delayQuerySelector(selectorStr: string, delayTime = 500): Promise { - return new Promise((resolve) => { - const selector: SelectorQuery = Taro.createSelectorQuery() - delay(delayTime).then(() => { - selector - .select(selectorStr) - .boundingClientRect() - .exec((res: any[]) => { - resolve(res) - }) - }) - }) -} - -// 全局分享监听 -export const shareShop = () => { - const page = Taro.getCurrentInstance().page - // 当有分享参数时,绑定上下级 - if (page && page.options?.share) { - analysisShortCodeApi(page.options.share) - } - if (page && page.onShareAppMessage) { - page.onShareAppMessage = (res) => { - let path = '' - let title = '' - let imageUrl = '' - const sortCode = Taro.getStorageSync('sort_code') ? JSON.parse(Taro.getStorageSync('sort_code')) : '' - const pageInfo: any = page - // 商品详情分享 - if (pageInfo.route === 'pages/details/index') { - path = `/pages/details/index?share=${sortCode.shareShortDetail.code}` - title = sortCode.shareShortDetail.title - imageUrl = sortCode.shareShortDetail.img - } - else { - path - = pageInfo.route === 'pages/user/index' - ? `/pages/user/index?share=${sortCode.shareShortPage.code}` - : `/pages/index/index?share=${sortCode.shareShortPage.code}` - title = sortCode.shareShortPage.title - imageUrl = pageInfo.route === 'pages/user/index' ? sortCode.shareShortPage.img : formatImgUrl('/mall/share_img_02.png', '!w400') - } - return { - title, - path, - imageUrl, - } - } - } -} diff --git a/src/components/AddressList/index.scss b/src/components/AddressList/index.scss deleted file mode 100644 index 7e7377a..0000000 --- a/src/components/AddressList/index.scss +++ /dev/null @@ -1,134 +0,0 @@ -.address-container { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; -} -.address-scroll-view { - height: 100%; - box-sizing: border-box; - position: relative; - - scroll-view { - height: 100%; - box-sizing: border-box; - } - - .address-scroll-view-content { - padding-bottom: 300px; - } - - .address-list { - background: #ffffff; - border-radius: 20px; - padding: 24px 30px; - box-sizing: border-box; - margin: 18px 24px 0; - } - - .address-active { - border: 1px solid #68b4ff; - } - - .address-list-last { - margin-bottom: 300px; - } - - .address-user { - font-size: 32px; - font-weight: 700; - text-align: left; - color: #000000; - display: flex; - align-items: center; - } - - .address-list-default { - background: #ffffff; - border-radius: 6px; - font-size: 20px; - font-weight: 400; - text-align: center; - color: #007aff; - padding: 4px 10px; - } - - .address-list-phone { - font-size: 28px; - font-weight: 400; - color: #717171; - margin-left: 16px; - margin-right: 16px; - } - - .address-edit { - padding: 10px; - } - - .address-edit .icon-bianji { - font-size: 40px; - } - - .address-list-info { - font-size: 28px; - font-weight: 400; - color: #000000; - display: flex; - width: 557px; - } - - .address-list-info view { - max-width: 557px; - // text-overflow: ellipsis; - // overflow: hidden; - // white-space: nowrap; - } - - .address-list-bottom { - display: flex; - justify-content: space-between; - margin-top: 10px; - } - - .add-address { - width: 668px; - height: 82px; - background: #007aff; - border-radius: 40px; - font-size: 32px; - font-weight: 400; - color: #ffffff; - display: flex; - align-items: center; - justify-content: center; - position: absolute; - bottom: 100px; - left: 50%; - transform: translateX(-50%); - } - - .address-no-data { - font-size: 24px; - font-weight: 400; - text-align: center; - color: #707070; - height: 100%; - padding-top: 40%; - box-sizing: border-box; - } - - .line { - margin-top: 16px; - width: 100%; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .bottom-font { - margin-top: 16px; - font-size: 28px; - font-weight: 400; - color: #676767; - } -} diff --git a/src/components/AddressList/index.tsx b/src/components/AddressList/index.tsx deleted file mode 100644 index 9d6180b..0000000 --- a/src/components/AddressList/index.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import Taro, { showModal, useDidShow, useRouter } from '@tarojs/taro' -import { Button, Navigator, ScrollView, Text, View } from '@tarojs/components' -import { forwardRef, memo, useEffect, useImperativeHandle, useState } from 'react' -import './index.scss' -import Tag from '../tag' -import { MpPurchaserAddressList } from '@/api/addressList' -import { alert } from '@/common/common' -import IconFont from '@/components/iconfont/iconfont' -import { MpSaleOrderAddress } from '@/api/order' - -interface Params { - refresherEnabled?: boolean// 是否开启刷新 - onSelect?: (item: any, index: number) => void// 列表选择 - addButtonEnabled?: boolean // 是否显示添加按钮 - focusBorderEnabled?: boolean // 焦点显示蓝色边框 - id?: number // 默认选择值, - purchaser_id: Number - // handSelect?: (any) => void -} - -// 地址列表 -const AddressList = (props: Params, AddressListRef) => { - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - - // 焦点 - const [focusId, setFocusId] = useState() - const { addButtonEnabled = true, focusBorderEnabled = false } = props - const { fetchData, state } = MpPurchaserAddressList() - // 获取数据 - const getData = async() => { - const result = await fetchData({ purchaser_id: props.purchaser_id }) - if (props.id) { - setFocusId(props.id as any) - } - else { - result.data.list?.every((item) => { - if (item.is_default) { - setFocusId(item.id) - return false - } - return true - }) - } - const itemList: any[] = [] - result?.data?.list?.forEach((item) => { - itemList.push(item?.id) - }) - prevPage.setData({ // 设置上一个页面的值 - ids: itemList, - }) - } - useDidShow(() => { - getData() - // 监听刷新 - Taro.eventCenter.on('addressList:refresh', getData) - return () => { - Taro.eventCenter.off('addressList:refresh', getData) - } - }) - // 处理刷新 - const [refreshState, setRefreshState] = useState(false) - const handleRefresh = async() => { - setRefreshState(true) - await getData() - setRefreshState(false) - } - const router = useRouter() - // 列表选择 - const { fetchData: selectFetch } = MpSaleOrderAddress() - const handleSelect = async(item: any, index: number) => { - if (router.params.orderId && router.params.orderId != '-100') { - console.log(router.params.orderId != '-100', 'ssss') - console.log(typeof (router.params.orderId) != 'undefined', 'router.params.orderId') - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await selectFetch({ address_id: item.id, id: Number(router.params.orderId), shipment_mode: 2 }) - if (res.msg === 'success') { - Taro.hideLoading() - Taro.showToast({ - title: '成功', - icon: 'success', - }) - Taro.navigateBack({ - delta: 1, - }) - } - else { - Taro.hideLoading() - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - else { - prevPage.setData({ // 设置上一个页面的值 - addressObj: item, - // ids: itemList - }) - Taro.navigateBack({ - delta: 1, - }) - } - - props.onSelect && props.onSelect(item, index) - if (focusBorderEnabled) { - setFocusId(item?.id) - } - } - - useImperativeHandle(AddressListRef, () => ({ - getData, - })) - - return ( - - - - { - state?.data?.list?.length > 0 - ? state?.data?.list?.map((item, index) => { - // data.length>0? - // data.map((item,index)=>{ - return ( - handleSelect(item, index)} className={`address-list ${focusId == item.id && 'address-active'}`}> - - - - {item.name} - {item.phone} - { - item.is_default - && - 默认 - - } - - - - {item.province_name + item.city_name + item.district_name + item.address_detail} - - - - - - e.stopPropagation()} url={`/pages/addAddress/index?type=edit&id=${item.id}&&purchaser_id=${Number(props.purchaser_id)}`} hoverClass="none" className="address-edit"> - - - - - { - item.factory !== '' && <> - - 加工厂:{item.factory} - } - - - ) - }) - : 暂未添加地址 - } - - - {addButtonEnabled && 添加收货地址} - - ) -} - -export default memo(forwardRef(AddressList)) diff --git a/src/components/BottomBtns/index.module.scss b/src/components/BottomBtns/index.module.scss deleted file mode 100644 index 1e12292..0000000 --- a/src/components/BottomBtns/index.module.scss +++ /dev/null @@ -1,48 +0,0 @@ -.flexBox { - width: 100%; - display: flex; - align-items: center; - justify-content: flex-end; - - .cancle { - width: 160px; - height: 65px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 65px; - margin-right: 24px; - } - - .nextBuy { - // margin-right: 24px; - width: 160px; - height: 65px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 65px; - margin-right: 24px; - } - - .toBuy { - margin-right: 24px; - width: 160px; - height: 65px; - border-radius: 40px; - border: 1px solid #087eff; - font-size: 28px; - font-weight: 400; - color: #4581ff; - text-align: center; - line-height: 65px; - } -} diff --git a/src/components/BottomBtns/index.tsx b/src/components/BottomBtns/index.tsx deleted file mode 100644 index 67d0fd0..0000000 --- a/src/components/BottomBtns/index.tsx +++ /dev/null @@ -1,332 +0,0 @@ -import { View } from '@tarojs/components' -import { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import style from './index.module.scss' - -interface prosObj { - obj?: { - sale_mode?: Number - collect_status?: Number | string - status?: Number - payment_method?: Number - settle_mode?: Number | string - is_shipper_picks_up?: boolean - } - cancle?: (any) => void - nextBuy?: (any) => void - toPay?: (any) => void - handSureGoods?: () => void - showTuiGoods?: boolean - handApplyGoods?: () => void - handApplyMoney?: () => void - handShowCodeList?: () => void - handEdit?: () => void - showDetail?: boolean - goodsObj?: any -} - -const BottomBtns = (props: prosObj, ref) => { - const { - obj = { - sale_mode: 0, - collect_status: '', - status: '', - payment_method: 0, - settle_mode: '', - is_shipper_picks_up: false, - }, - showTuiGoods = false, - cancle, - nextBuy, - toPay, - handSureGoods, - handApplyGoods, - handApplyMoney, - handShowCodeList, - handEdit, - showDetail = false, - goodsObj = {}, - } = props - // 判断显示取消订单 - - const showCancel = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status === 0) - || (obj.sale_mode === 0 && obj.status === 1) - || (obj.sale_mode === 0 && obj.status === 2 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 7 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 11 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 11 && obj.settle_mode == 3) - || (obj.sale_mode === 0 && obj.status === 3 && obj.settle_mode == 3) - || (obj.sale_mode === 1 && obj.status === 10) - || (obj.sale_mode === 2 && obj.status === 10) - || (obj.sale_mode === 2 && obj.status === 0 && (obj.collect_status == 1 || obj.collect_status == 2)) - || (obj.sale_mode === 2 && obj.status === 0 && obj.collect_status == 0) - || (obj.sale_mode === 1 && obj.status === 10) - || (obj.sale_mode === 2 && obj.status === 10) - || (obj.sale_mode === 0 && obj.status === 13) - ) { - return true - } - else { return false } - }, [obj]) - // 判断显示再次购买 - const showBuy = useMemo(() => { - if ( - obj.sale_mode === 0 - || (obj.sale_mode === 1 && obj.status !== 10) - || (obj.sale_mode === 2 && obj.status !== 10) - ) { - return true - } - else { return false } - }, [obj]) - // 判断显示去付款 - const canBuy = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status === 7 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 7 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 7 && obj.settle_mode == 3) - || (obj.sale_mode === 0 && obj.status === 3 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 3 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 8 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 8 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 9 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 9 && obj.collect_status == 0) - || (obj.sale_mode === 2 && obj.status === 2) - || (obj.sale_mode === 2 && obj.status === 7) - || (obj.sale_mode === 1 && obj.status === 10) - || (obj.sale_mode === 1 && obj.status === 7) - || (obj.sale_mode === 2 && obj.status === 10) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断显示确认收货 - const showTake = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status == 8 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status == 8 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status == 8 && obj.collect_status == 2) - || (obj.sale_mode === 0 && obj.status == 8 && obj.settle_mode == 3) - || (obj.sale_mode === 1 && obj.status == 8) - || (obj.sale_mode === 2 && obj.status == 8) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断显示申请退货 - const showTuihuo = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status == 9 && obj.collect_status == 0 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 9 && obj.collect_status == 1 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 9 && obj.collect_status == 2 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 9 && obj.settle_mode == 3 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 2 && obj.status == 9 && goodsObj?.av_return_product?.length) - ) { - return true - } - else { return false } - }, [obj]) - // 判断显示申请退款 - const showTuikuan = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status == 2 && obj.collect_status == 1 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 7 && obj.collect_status == 2 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 7 && obj.collect_status == 3 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 11 && (obj.collect_status == 1 || obj.collect_status == 2) && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 3 && obj.collect_status == 0 && goodsObj?.av_return_product?.length && !obj.is_shipper_picks_up) - || (obj.sale_mode === 0 && obj.status == 3 && obj.collect_status == 2 && goodsObj?.av_return_product?.length && !obj.is_shipper_picks_up) - || (obj.sale_mode === 0 && obj.status == 3 && obj.collect_status == 1 && goodsObj?.av_return_product?.length && !obj.is_shipper_picks_up) - || (obj.sale_mode === 1 && obj.status == 0 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 1 && obj.status == 9 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 2 && obj.status == 0 && obj.collect_status == 1 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 2 && obj.status == 0 && obj.collect_status == 2 && goodsObj?.av_return_product?.length) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断是否显示码单 - // 订单状态:待付款、待发货、待提货、待收货、已收货、已完成 - const showCodeList = useMemo(() => { - if (obj.status == 3 || obj.status == 8 || obj.status == 11 || obj.status == 9 || obj.status == 4) { - return true - } - else { return false } - }, [obj]) - - // 判断是否显示修改订单 - const showEdit = useMemo(() => { - if (obj.status == 0 || obj.status == 1) { - return true - } - else { - return false - } - }, [obj]) - - // 多的不显示别的按钮 - const [btnList, setbtnList] = useState([]) - const itemNums = useMemo(() => { - const arr: any[] = [] - let nums = 0 - if (showCancel) { - nums = nums + 1 - console.log('222') - arr.push({ - key: 'showCancel', - label: '取消订单', - bgKind: 1, - sort: 1, - }) - } - if (canBuy) { - nums = nums + 1 - console.log('333') - arr.push({ - key: 'canBuy', - label: '去付款', - bgKind: 2, - sort: 20, - }) - } - if (showBuy) { - nums = nums + 1 - console.log('444') - arr.push({ - key: 'showBuy', - label: '再次购买', - bgKind: 3, - sort: 10, - }) - } - if (showTake) { - nums = nums + 1 - console.log('111') - arr.push({ - key: 'showTake', - label: '确认收货', - bgKind: 1, - sort: 9, - }) - } - if (showCodeList) { - nums = nums + 1 - console.log('555') - arr.push({ - key: 'showCodeList', - label: '销售码单', - bgKind: 1, - sort: 12, - }) - } - if (showTuikuan) { - nums = nums + 1 - console.log('666') - arr.push({ - key: 'showTuikuan', - label: '申请退款', - bgKind: 3, - sort: 3, - }) - } - if (showTuihuo) { - nums = nums + 1 - console.log('777') - arr.push({ - key: 'showTuihuo', - label: '申请退货', - bgKind: 3, - sort: 2, - }) - } - if (showEdit) { - nums = nums + 1 - console.log('101010') - arr.push({ - key: 'showEdit', - label: '修改订单', - bgKind: 3, - sort: 9, - }) - } - console.log(arr, 'arr') - const fiterArr = arr.sort((a, b) => a.sort - b.sort) - setbtnList([...fiterArr]) - return nums - }, [obj]) - - useImperativeHandle(ref, () => ({ - itemNums, - btnList, - })) - - const submitBtns = (e, key) => { - if (key === 'showTuihuo') { - handApplyGoods?.() - } - if (key === 'showTuikuan') { - handApplyMoney?.() - } - if (key === 'showCodeList') { - handShowCodeList?.() - } - if (key === 'showTake') { - handSureGoods?.() - } - if (key === 'showCancel') { - cancle?.(e) - } - if (key === 'showBuy') { - nextBuy?.(e) - } - if (key === 'canBuy') { - toPay?.(e) - } - if (key === 'showEdit') { - handEdit?.() - } - } - - return ( - - - { - (showDetail || showTuiGoods) && <> - { - btnList.map((item, index) => - btnList.length - 3 <= index && ( - submitBtns(e, item.key)}> - {item.label} - - ), - ) - } - - } - - { - !showDetail && !showTuiGoods && <> - { - showCancel && cancle?.(e)}>取消订单 - } - { - showBuy && nextBuy?.(e)}>再次购买 - } - { - canBuy && toPay?.(e)}>去付款 - } - - - } - - - ) -} -export default memo(forwardRef(BottomBtns)) diff --git a/src/components/Dialog/index.module.scss b/src/components/Dialog/index.module.scss deleted file mode 100644 index c3468ac..0000000 --- a/src/components/Dialog/index.module.scss +++ /dev/null @@ -1,40 +0,0 @@ -$am-ms: 200ms; - -.dialog { - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - width: 100vw; - height: 100vh; - &_mask { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.8); - z-index: 1; - opacity: 0; - transition: opacity $am-ms ease-in; - &_active { - opacity: 1; - } - &--hidden { - background: transparent; - } - } - &_content { - position: fixed; - z-index: 2; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - opacity: 0; - transition: opacity $am-ms ease-in; - &_active { - opacity: 1; - } - } -} diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx deleted file mode 100644 index ace78e8..0000000 --- a/src/components/Dialog/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { Image, View } from '@tarojs/components' -import classnames from 'classnames' -import { useEffect, useState } from 'react' -import style from './index.module.scss' -import { usePropsValue } from '@/use/useCommon' - -interface PropsType { - showOverLay?: boolean - show: boolean - onClose?: (show: boolean) => void - onChange?: (isShow) => void - children?: React.ReactNode - zIndex?: number -} -// 弹出框 -const Dialog = (props: PropsType) => { - const { showOverLay = true, zIndex = 99, show = false, onClose: _onClose, onChange: _onChange, children } = props - - const [_show, setShow] = usePropsValue({ - value: show, - defaultValue: false, - onChange: (value) => { - _onChange?.(value) - }, - }) - - const [animShow, setAnimShow] = useState(false) - - const handleAnimShow = () => { - setShow(true) - setTimeout(() => { - setAnimShow(true) - }, 200) - } - const handleAnimHide = () => { - setAnimShow(false) - setTimeout(() => { - setShow(false) - }, 200) - } - const onClose = () => { - handleAnimHide() - _onClose?.(_show) - } - useEffect(() => { - if (show) { - handleAnimShow() - } - }, [show]) - return _show - ? - {/* 遮罩层 start */} - - {/* 遮罩层 end */} - - {children} - - - : -} -export default Dialog diff --git a/src/components/Divider/index.module.scss b/src/components/Divider/index.module.scss deleted file mode 100644 index 8cfddd7..0000000 --- a/src/components/Divider/index.module.scss +++ /dev/null @@ -1,47 +0,0 @@ - -.divider { - position: relative; - font-size: 28px; - color: $color_font_one; - // 垂直 - &-vertical { - display: inline-block; - width: 1px; - height: 1em; - margin: 0 8px; - border-left: 1px $borderStyle $borderColor; - vertical-align: middle; - } - // 水平 - &-horizontal { - display: block; - width: 100%; - height: 1px; - margin: 48px 0; - border-top: 1px $borderStyle $borderColor; - } - &-text{ - position: absolute; - text-align: center; - padding: 0 40px; - font-size: inherit; - font-weight: 500; - color: currentColor; - background-color: #fff; - } -} -.is{ - &-center{ - left: 50%; - transform: translateX(-50%) translateY(-50%); - } - &-left{ - left: 20px; - transform:translateY(-50%); - } - &-right{ - right: 20px; - transform:translateY(-50%); - } -} - diff --git a/src/components/Divider/index.tsx b/src/components/Divider/index.tsx deleted file mode 100644 index 4b6053f..0000000 --- a/src/components/Divider/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Usage: - * - * 巴拉巴拉小魔仙 - * 全身变 - * - */ - -import { View } from '@tarojs/components' -import type { FC, ReactNode } from 'react' -import React from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -type BorderStype = 'solid' | 'dashed' | 'dotted' | 'double' - -interface DividerProps { - direction?: 'horizontal' | 'vertical' - borderStyle?: BorderStype - contentPosition?: 'left' | 'center' | 'right' - children?: ReactNode - customClassName?: string - customStyles?: React.CSSProperties -} -const Divider: FC = (props) => { - const { direction = 'horizontal', borderStyle = 'solid', contentPosition = 'center', customClassName = '', customStyles = {} } = props - - const classname = classnames(styles.divider, styles[`divider-${direction}`], customClassName) - const contentClassname = classnames(styles['divider-text'], styles[`is-${contentPosition}`]) - - const borderTopStyle: { borderTopStyle: BorderStype } = { - borderTopStyle: borderStyle, - } - const borderLeftStyle: { borderLeftStyle: BorderStype } = { - borderLeftStyle: borderStyle, - } - - const dividerStyle = direction === 'horizontal' ? borderTopStyle : borderLeftStyle - - return ( - - {props.children && direction !== 'vertical' && {props.children}} - - ) -} -export default Divider diff --git a/src/components/FromList/index.scss b/src/components/FromList/index.scss deleted file mode 100644 index ee2aa9a..0000000 --- a/src/components/FromList/index.scss +++ /dev/null @@ -1,92 +0,0 @@ -.form-list{ - display: flex; - justify-content: space-between; - margin: 30px 30px 0; - - .form-list-label{ - font-size: 28px; - font-weight: 700; - color: #000000; - margin-top: 20px; - } - .form-list-label-required::before{ - content: "*"; - color: #FF0000; - font-size: 28px; - } - .form-list-right{ - width: 506px; - font-size: 26px; - font-weight: 400; - } - .form-list-right-meet{ - background: #f6f6f6; - width: 506px; - min-height: 80px; - border-radius: 20px; - box-sizing: border-box; - padding: 10px 20px; - display: flex;justify-content: space-between; - align-items: center; - } - .form-list-input{ - width: 100%; - display: flex;align-items: center; - } - .form-list-input view{ - height: 100%; - padding: 0 10px; - box-sizing: border-box; - } - .form-list-input text{ - width: 30px; - min-width: 30px; - height: 30px; - background: rgba(0,0,0,0.3); - border-radius: 50%; - font-size: 18px; - display: flex;align-items: center; - justify-content: center; - flex: 1; - color: white; - } - .form-list-right input,.form-list-right textarea{ - // flex: 0 0 auto; - min-height: 100%; - width: 100%; - color: #000000; - } - .form-list-right textarea{ - height: 186px; - border-radius: 10px; - padding: 10px 0; - } - .form-list-right .phcolor{ - color: #ababab; - } - .form-list-right-placeholder{ - color: #ababab; - } - .form-list-right-enter .icon-a-moreback{ - font-size: 28px; - } - .add-address-default{ - display: flex;align-items: center;justify-content: space-between; - margin: 70px 30px 0; - font-size: 26px; - font-weight: 700; - color: #000000; - } - - .add-address-save{ - width: 668px; - height: 82px; - background: #007aff; - border-radius: 40px; - font-size: 32px; - font-weight: 400; - color: #ffffff; - display: flex;align-items: center;justify-content: center; - margin: 620px auto 0; - } -} \ No newline at end of file diff --git a/src/components/FromList/index.tsx b/src/components/FromList/index.tsx deleted file mode 100644 index d47954f..0000000 --- a/src/components/FromList/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ - -import { Input, Text, Textarea, View } from '@tarojs/components' -import { memo } from 'react' -import './index.scss' - -interface ListParams{ - label: string // 左边label - onInput?: (ev: Object) => void // 输入框输入 - onClick?: () => any // 点击列表 - placeholder?: string // 提示文本 - children?: any // 插槽 - type?: string // 类型:1.input,2.textarea,3.select, - primordialType?: 'text'|'number'|'idcard'|'digit' - value?: any - style?: object // 整行样式 - labelStyle?: object // label样式 - contentStyle?: object - required?: boolean -} - -// 表单列表 -const FromList = (props: ListParams) => { - const { type = 'input', value = '', style = {}, labelStyle = {}, contentStyle = {}, required = false } = props - - return ( - - {props.label} - - { - props.children - ?? - { - type == 'input' - ? - - {value - && props.onInput && props.onInput({ detail: { value: '' } })} className="iconfont icon-qingkong" /> - } - - : type == 'textarea' - ? - : toggleShowRealTextarea(true)}>{descData.value || placeholder} - } - {`${descData.number}/${descData.count}`} - - - ) -} -export default memo(TextareaEnhance) diff --git a/src/components/timePicker/index.module.scss b/src/components/timePicker/index.module.scss deleted file mode 100644 index e59600b..0000000 --- a/src/components/timePicker/index.module.scss +++ /dev/null @@ -1,12 +0,0 @@ - - -.time-box { - padding: 40px; -} - -.sure-box { - margin-left: 102px; - margin-right: 102px; - font-size: 28px; - font-weight: 500; -} diff --git a/src/components/timePicker/index.tsx b/src/components/timePicker/index.tsx deleted file mode 100644 index ab2b102..0000000 --- a/src/components/timePicker/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { View } from '@tarojs/components' -import { memo, useRef, useState } from 'react' -import dayjs from 'dayjs' -import NormalButton from '../normalButton' -import styles from './index.module.scss' -import AtCalendar from '@/components/calendar/index' -import Popup from '@/components/popup' - -type DateArg = string | number | Date -interface Props { - end?: DateArg - start?: DateArg - onSelectDate?: (any, isSameDay: boolean) => void -} -const TimePicker = (props: Props) => { - const { start = '', end = '', onSelectDate } = props - const [time, setTime] = useState({}) - const isSameDay = useRef(false) - const handTime = (e) => { - const { start, end } = e.value - isSameDay.current = start === end - // 如果选的是同一天的日期, end 自动加一天 - if (!end) { - // 判断如果没选下一天的时候 - e.value.end = `${dayjs(start).format('YYYY-MM-DD')} 23:59:59` - isSameDay.current = true - } - else { - e.value.start = `${dayjs(start).format('YYYY-MM-DD')} 00:00:00` - e.value.end = `${dayjs(end).format('YYYY-MM-DD')} 23:59:59` - } - console.log('e===>', e) - setTime(e) - } - // 由于小程序的bug,部分ios和安卓显示时间的时候会有问题,原因是格式化时有`-`这个横杠 被dayjs解决了 - return ( - <> - - handTime(e)} - /> - - onSelectDate?.(time, isSameDay.current)} size="normal" round customClassName={styles['sure-box']}>确认 - - ) -} -export default memo(TimePicker) diff --git a/src/components/timePickerPopup/index.scss b/src/components/timePickerPopup/index.scss deleted file mode 100644 index b808aa6..0000000 --- a/src/components/timePickerPopup/index.scss +++ /dev/null @@ -1,19 +0,0 @@ - - -.time-box { - padding: 40px; -} - -.sure-box { - // padding: 16px 102px 30px 102px; - margin-left: 102px; - margin-right: 102px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 28px; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; -} diff --git a/src/components/timePickerPopup/index.tsx b/src/components/timePickerPopup/index.tsx deleted file mode 100644 index b57cc68..0000000 --- a/src/components/timePickerPopup/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { memo } from 'react' -import './index.scss' -import TimePicker from '../timePicker' -import Popup from '@/components/popup' - -type DateArg = string | number | Date -interface Props { - showTime: boolean - closePopup?: () => void - end?: DateArg - start?: DateArg - onSelectDate?: (any, isSameDay: boolean) => void -} -const TimePickerPopup = (props: Props) => { - const { showTime = false, closePopup, start = '', end = '', onSelectDate } = props - - return ( - closePopup?.()}> - - - ) -} -export default memo(TimePickerPopup) diff --git a/src/components/toolTips/index.module.scss b/src/components/toolTips/index.module.scss deleted file mode 100644 index 8916c76..0000000 --- a/src/components/toolTips/index.module.scss +++ /dev/null @@ -1,53 +0,0 @@ -.mark { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: transparent; -} -.tooltip { - &-container{ - position: relative; - } - position: absolute; - left: 0; - top: 0; - user-select: text; - color: white; - &-inner { - position: absolute; - background-color: #333333; - font-size: $font_size; - box-shadow: 0 0 30px 0 rgba(51, 51, 51, 0.2); - border-radius: 8px; - &-content { - font-size: 24px; - font-weight: lighter; - color: white; - padding: 8px 12px; - white-space: nowrap; - } - } - &-hidden { - display: none; - } -} -.arrowIcon { - position: absolute; - display: flex; - justify-content: center; - align-items: center; - &-top { - transform: rotate(0deg); - } - &-left { - transform: rotate(270deg); - } - &-right { - transform: rotate(90deg); - } - &-bottom { - transform: rotate(180deg); - } -} diff --git a/src/components/toolTips/index.tsx b/src/components/toolTips/index.tsx deleted file mode 100644 index 29d4e81..0000000 --- a/src/components/toolTips/index.tsx +++ /dev/null @@ -1,328 +0,0 @@ -import { View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { nextTick } from '@tarojs/runtime' -import classNames from 'classnames' -import { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState, useTransition } from 'react' -import IconFont from '../iconfont/iconfont' -import styles from './index.module.scss' - -const SystemWidth = Taro.getSystemInfoSync().windowWidth - -const arrowSize = 32 - -// 由于taro自动把px编译成rpx,所以这里需要把单位处理一下 转成真正的px -const convertPx = (px: number) => { - const realPx = (px / 750) * SystemWidth - return realPx -} - -type Placement = - | 'top' - | 'top-start' - | 'top-end' - | 'right' - | 'right-start' - | 'right-end' - | 'bottom' - | 'bottom-start' - | 'bottom-end' - | 'left' - | 'left-start' - | 'left-end' - -interface ToolTipEvent { - onVisibleChange?: (visible?: boolean) => void -} - -interface ToolTipPropsType extends ToolTipEvent { - defaultVisible?: boolean - content: React.ReactNode - placement?: Placement - children?: React.ReactNode - customClassName?: string - customStyle?: React.CSSProperties - customContainerStyle?: React.CSSProperties - customContentStyle?: React.CSSProperties -} - -export interface ToolTipRef { - show: () => void - hide: () => void - visible: boolean -} - -const popoverStyle = { - color: '#333333', -} - -const ToolTip = (props: ToolTipPropsType, ref) => { - const id = useId() - const [, setForceUpdate] = useState({}) - const { placement = 'top-start', defaultVisible = false, onVisibleChange, children, content = '请填入提示信息', customClassName, customStyle, customContentStyle, customContainerStyle } = props - - const [visible, setVisible] = useState(defaultVisible) - - const onVisibleChangeRef = useRef(onVisibleChange) - onVisibleChangeRef.current = onVisibleChange - - // 暴露方法给外部 - useImperativeHandle( - ref, - () => { - return { - show: () => setVisible(true), - hide: () => setVisible(false), - visible, - } - }, - [visible], - ) - - const handleClick = useCallback(() => { - setVisible((v) => { - onVisibleChangeRef.current?.(!v) - return !v - }) - }, []) - - const handleClickMark = useCallback(() => { - setVisible(false) - onVisibleChangeRef.current?.(false) - }, []) - - const getArrowSide = useMemo(() => { - const side = placement.split('-')[0] as string // placement = 'top-start' 取 'top' - - const arrowSide = { - top: 'bottom', - right: 'left', - bottom: 'top', - left: 'right', - }[side] as string - return arrowSide - }, [placement]) - - const [childrenRect, setChildrenRect] = useState({}) - const childrenRectRef = useRef(childrenRect) - childrenRectRef.current = childrenRect - - const [viewport, setViewport] = useState({}) - const viewportRef = useRef(viewport) - viewportRef.current = viewport - - const contextRectRef = useRef(null) - - useEffect(() => { - if (visible && !contextRectRef.current) { - nextTick(() => { - const query = Taro.createSelectorQuery() - query.select(`#content-${id}`).boundingClientRect((res) => { - console.log('contextRectRef', res) - contextRectRef.current = res - setForceUpdate({}) - }).exec() - }) - } - }, [visible, contextRectRef.current]) - - useEffect(() => { - console.log('useLayoutEffect') - const query = Taro.createSelectorQuery() - query.select('#children').boundingClientRect() - query.selectViewport().scrollOffset() - query.exec((res) => { - console.log(res[0]) - console.log(res[1]) - setChildrenRect(res[0]) - childrenRectRef.current = res[0] - setViewport(res[1]) - viewportRef.current = res[1] - }) - }, []) - - // 箭头 坐标 - const arrowCoords = useMemo(() => { - const contextRect = contextRectRef.current - // contextRect 没获取到之前 隐藏 - if (!contextRect) { return { top: '9999px' } } - console.log('getArrowSide==>', getArrowSide, childrenRectRef.current) - switch (getArrowSide) { - case 'bottom': // 下箭头 - return { - left: childrenRectRef.current.width / 2 - convertPx(arrowSize) / 2, - top: -convertPx(arrowSize), - right: '', - bottom: '', - } - case 'left': // 左箭头 - return { - left: childrenRectRef.current.width, - right: '', - top: childrenRectRef.current.height / 2 - convertPx(arrowSize) / 2, - bottom: '', - } - case 'top': // 上箭头 - return { - left: childrenRectRef.current.width / 2 - convertPx(arrowSize) / 2, - right: '', - top: childrenRectRef.current.height, - bottom: '', - } - case 'right': // 右箭头 - return { - left: -convertPx(arrowSize), - right: '', - top: childrenRectRef.current.height / 2 - convertPx(arrowSize) / 2, - bottom: '', - } - } - }, [getArrowSide, childrenRectRef.current, contextRectRef.current]) - - // content 坐标 - const contentCoords = useMemo(() => { - const placementSide = placement.split('-')[1] as string // placement = 'top-start' 取 'start' - console.log('placementSide', placementSide) - let coordsStyle = {} - const contextRect = contextRectRef.current - // contextRect 没获取到之前 隐藏 - if (!contextRect) { return { top: '9999px' } } - console.log('contextRect', contextRect) - const childrenRect = childrenRectRef.current - switch (getArrowSide) { - case 'bottom': // 下箭头 - coordsStyle = { - bottom: convertPx(arrowSize) - 5, - top: '', - } - if (placementSide === 'start') { - return { - ...coordsStyle, - left: 0, - right: '', - } - } - else if (placementSide === 'end') { - return { - ...coordsStyle, - left: '', - right: 0, - } - } - else { - return { - ...coordsStyle, - left: `${-(contextRect?.width / 2 - childrenRect.width / 2)}px`, - right: '', - } - } - case 'left': // 左箭头 - coordsStyle = { - left: childrenRect.width + convertPx(arrowSize) - 5, - right: '', - } - if (placementSide === 'start') { - return { - ...coordsStyle, - top: 0, - bottom: '', - } - } - else if (placementSide === 'end') { - return { - ...coordsStyle, - top: '', - bottom: `${-childrenRect.height}px`, - } - } - else { - return { - ...coordsStyle, - top: `${-(contextRect.height / 2 - childrenRect.height / 2)}px`, - bottom: '', - } - } - case 'top': // 上箭头 - coordsStyle = { - top: childrenRect.height + convertPx(arrowSize) - 5, - bottom: '', - } - if (placementSide === 'start') { - return { - ...coordsStyle, - left: 0, - right: '', - } - } - else if (placementSide === 'end') { - return { - ...coordsStyle, - left: '', - right: 0, - } - } - else { - return { - ...coordsStyle, - left: `${-(contextRect?.width / 2 - childrenRect.width / 2)}px`, - right: '', - } - } - case 'right': // 右箭头 - coordsStyle = { - left: '', - right: convertPx(arrowSize) - 5, - } - if (placementSide === 'start') { - return { - ...coordsStyle, - top: 0, - bottom: '', - } - } - else if (placementSide === 'end') { - return { - ...coordsStyle, - top: '', - bottom: `${-childrenRect.height}px`, - } - } - else { - return { - ...coordsStyle, - top: `${-(contextRect.height / 2 - childrenRect.height / 2)}px`, - bottom: '', - } - } - } - }, [getArrowSide, childrenRectRef.current, contextRectRef.current]) - - const ContentComponent = useMemo(() => { - return ( - - {/* 箭头 */} - - - - {/* content */} - - {content} - - - ) - }, [content, getArrowSide, visible, arrowCoords, contentCoords]) - - return ( - <> - {/* 遮罩层 */} - - - - {children} - - {ContentComponent} - - - ) -} - -export default forwardRef(ToolTip) diff --git a/src/components/uploadImage/index.module.scss b/src/components/uploadImage/index.module.scss deleted file mode 100644 index 3f0943d..0000000 --- a/src/components/uploadImage/index.module.scss +++ /dev/null @@ -1,87 +0,0 @@ -.image_main { - display: flex; - align-items: center; - flex-wrap: wrap; - - .uploadImg { - // width: 202px; - // height: 150px; - // background: #f0f0f0; - // border: 2px dashed #cccccc; - // border-radius: 10px; - width: 143px; - height: 143px; - background: #f3f3f3; - border-radius: 8px; - margin-top: 20px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: relative; - position: relative; - - .miconfont { - color: #d8d8d8; - font-size: 100px; - } - - // .uploadText { - // font-size: 26px; - // color: $color_font_three; - // } - } - - .ImgItem { - width: 143px; - height: 143px; - background: #f3f3f3; - border-radius: 8px; - margin-right: 20px; - margin-top: 20px; - position: relative; - border-radius: 10px; - - image { - width: 100%; - height: 100%; - border-radius: 10px; - } - - .miconfont_close { - width: 43px; - height: 43px; - background-color: #7f7f7f; - border-radius: 50%; - position: absolute; - right: -10px; - top: -10px; - text-align: center; - line-height: 43px; - color: #fff; - font-size: 30px; - } - } -} - -.bigBoxThree { - width: 100%; - // position: fixed; - // bottom: 0px; - // z-index: 999; - height: 150px; - - .itemBox { - width: 100%; - height: 88px; - display: flex; - align-items: center; - text-align: center; - justify-content: center; - line-height: 88px; - font-size: 28px; - font-weight: 500; - color: #000000; - border-bottom: 1px solid #f7f7f7; - } -} diff --git a/src/components/uploadImage/index.tsx b/src/components/uploadImage/index.tsx deleted file mode 100644 index fae2ae5..0000000 --- a/src/components/uploadImage/index.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import Taro from '@tarojs/taro' -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import useUploadCDNImg from '@/use/useUploadImage' -import { formatImgUrl } from '@/common/format' -import Popup from '@/components/popup' -import IconFont from '@/components/iconfont/iconfont' -// 图片列表 -interface ImageParam { - onChange?: (val: string[]) => void - defaultList?: string[] - onlyRead?: boolean -} -const PictureItem = ({ onChange, defaultList, onlyRead = false }: ImageParam) => { - const { getWxPhoto, getChatPhoto } = useUploadCDNImg() - - const [imageList, setImageLise] = useState([]) - // 筛选内容展示 - const [showPopup, setshowPopup] = useState(false) - const [List, setList] = useState([{ id: 1, name: '手机相册', check: false }, { id: 2, name: '从微信对话选择', check: false }]) - useEffect(() => { - setImageLise(defaultList || []) - }, [defaultList]) - - // 上传图片 - const uploadImage = async() => { - setshowPopup(true) - } - - // 上传图片逻辑 - const handPic = async(id) => { - let list: any - // let resArr = List.filter(item => { - // return item.check - // }) - if (id == 1) { - list = await getWxPhoto('after-sale', 5) - } - else { - list = await getChatPhoto('after-sale', 5) - } - const images: any[] = [] - list?.forEach((item) => { - images.push(item.url) - }) - setImageLise([...imageList, ...images]) - setshowPopup(false) - } - - // 删除图片 - const delImage = (index) => { - imageList.splice(index, 1) - setImageLise(() => [...imageList]) - } - // 监听上传的图片变化 - useEffect(() => { - onChange?.(imageList) - }, [imageList]) - - // 预览图片 - const showImage = () => { - const list = imageList?.map((item) => { - return formatImgUrl(item, '!w800') - }) - Taro.previewImage({ - current: list[0], // 当前显示 - urls: list, // 需要预览的图片http链接列表 - }) - } - - // 点击选择的方式 - const handItem = (item) => { - List.map((it) => { - if (item.id == it.id) { - it.check = true - } - else { - it.check = false - } - return it - }) - setList([...List]) - handPic(item.id) - } - - return ( - <> - - {imageList?.map((item, index) => ( - - - {!onlyRead && delImage(index)}> - - } - - ))} - {!onlyRead && ( - - - {/* */} - {/* 上传照片 */} - - )} - - - setshowPopup(false)} isFixed> - - { - List.map((item, index) => { - return ( - handItem(item)}>{item.name} - ) - }) - } - - - - - ) -} - -export default memo(PictureItem) diff --git a/src/constants/common.ts b/src/constants/common.ts deleted file mode 100644 index 3389a23..0000000 --- a/src/constants/common.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const SET_SHOPCOUNT = 'set_shopCount' -export const CLEAR_SHOPCOUNT = 'clear_shopCount' -export const STORAGE_SHOPCOUNT = 'storage_shopcount' diff --git a/src/constants/tabbar.ts b/src/constants/tabbar.ts deleted file mode 100644 index b8949c0..0000000 --- a/src/constants/tabbar.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum TabBarType { - SET_SELECTED = 'setSelected', - SET_TAB_ITEM = 'setTabItem', -} diff --git a/src/constants/userInfo.ts b/src/constants/userInfo.ts deleted file mode 100644 index d6103a3..0000000 --- a/src/constants/userInfo.ts +++ /dev/null @@ -1,25 +0,0 @@ -// export const SET_USERINFO = 'setUserInfo' -// export const SET_ADMINUSERINFO = 'setAdminUserInfo' -// export const SET_TOKEN = 'setToken' -// export const SET_SESSIONKEY = 'setSessionkey' -// export const SET_SORTCODE = 'setSortCode' -// export const CLEAR_TOKEN = 'clearToken' -// export const CLEAR_SESSIONKEY = 'clearSessionkey' -// export const CLEAR_USERINFO = 'clearUserInfo' -// export const CLEAR_ADMINUSERINFO = 'clearAdminUserInfo' -// export const CLEAR_SORTCODE = 'clearSortCode' -// export const LOGIN_STATUS = 'loginStatus' - -export const enum UserInfoActionType { - SET_USERINFO = 'setUserInfo', - SET_ADMINUSERINFO = 'setAdminUserInfo', - SET_TOKEN = 'setToken', - SET_SESSIONKEY = 'setSessionkey', - SET_SORTCODE = 'setSortCode', - CLEAR_TOKEN = 'clearToken', - CLEAR_SESSIONKEY = 'clearSessionkey', - CLEAR_USERINFO = 'clearUserInfo', - CLEAR_ADMINUSERINFO = 'clearAdminUserInfo', - CLEAR_SORTCODE = 'clearSortCode', - LOGIN_STATUS = 'loginStatus', -} diff --git a/src/custom-tab-bar/index.config.ts b/src/custom-tab-bar/index.config.ts deleted file mode 100644 index 6d6cc11..0000000 --- a/src/custom-tab-bar/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - component: true, -} diff --git a/src/custom-tab-bar/index.module.scss b/src/custom-tab-bar/index.module.scss deleted file mode 100644 index c569a0d..0000000 --- a/src/custom-tab-bar/index.module.scss +++ /dev/null @@ -1,42 +0,0 @@ -.customTabBar { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - height: $customTabBarHeight; - display: flex; - flex-flow: row nowrap; - padding-bottom: env(safe-area-inset-bottom); - background-color: #fff; - z-index: 98; - box-shadow: 0 11px 7px 8px #c2c2c2; - &-line { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 1px; - transform: scaleY(0.5); - } - &-item { - flex: 1; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-flow: column nowrap; - &-icon { - width: 56px; - height: 56px; - font-size: 60px; - } - &-title { - margin-top: 10px; - font-size: 20px; - } - } -} -.selected { - color: $color_main; - font-weight: bold; -} diff --git a/src/custom-tab-bar/index.tsx b/src/custom-tab-bar/index.tsx deleted file mode 100644 index 33aaaf7..0000000 --- a/src/custom-tab-bar/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { CoverImage, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import type { FC } from 'react' -import { useMemo, useState } from 'react' -import classname from 'classnames' -import { useDispatch } from 'react-redux' -import type { Dispatch } from 'redux' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' -import { useSelector } from '@/reducers/hooks' -import { TabBarType } from '@/constants/tabbar' -import type { TabBarAction } from '@/reducers/tabBar' -import { UseSubscriptionMessage } from '@/use/useCommon' -import { debounce } from '@/common/util' -import { checkKey } from '@/common/common' - -type IconfontName = Parameters['0']['name'] - -type TabBarIndexMap = Record - -const CustomTabBar: FC = () => { - const { openSubscriptionMessage } = UseSubscriptionMessage() - - const { selectedId, tabItem } = useSelector((state) => { - return state.tabBarData - }) - // const tabBarIndexMap = useMemo(() => { - // let map: TabBarIndexMap = {} - // for (let i = 0; i < tabItem.length; i++) { - // map[tabItem[i].id] = tabItem[i] - // } - // return map - // }, [tabItem]) - console.log('selectedId', selectedId) - - const dispatch = useDispatch>() - const setSelected = (id: TabBarIndexMap[number]['id']) => { - dispatch({ type: TabBarType.SET_SELECTED, data: { tabItem, selectedId: id } }) - } - const handleSelectTabItem = async(id: TabBarIndexMap[number]['id']) => { - if (id === 3) { - await openSubscriptionMessage({ scenes: 1 }) - } - if (id === 4) { - await openSubscriptionMessage({ scenes: 2 }) - } - console.log(id, 'item') - jump(id) - } - - const jump = debounce((id) => { - setSelected(id) - Taro.switchTab({ url: tabItem?.find(item => item.id === id)?.pagePath as string }) - }, 300) - - return ( - <> - { - tabItem?.length - ? - - {tabItem?.map((item, index) => { - return ( - handleSelectTabItem(item.id)} - > - - - {item.text} - - ) - })} - - : null - } - - ) -} -export default CustomTabBar diff --git a/src/index.html b/src/index.html deleted file mode 100644 index 5716178..0000000 --- a/src/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - -
- - diff --git a/src/pages/accountPage/index.config.ts b/src/pages/accountPage/index.config.ts deleted file mode 100644 index 0af9665..0000000 --- a/src/pages/accountPage/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '收款账户', -} diff --git a/src/pages/accountPage/index.module.scss b/src/pages/accountPage/index.module.scss deleted file mode 100644 index 231fc43..0000000 --- a/src/pages/accountPage/index.module.scss +++ /dev/null @@ -1,109 +0,0 @@ -page { - background: #f7f7f7; -} - -.cussBox { - - .searchBox { - position: sticky; - top: 0; - width: 750px; - height: 96px; - background: #FFFFFF; - display: flex; - align-items: center; - - .two { - width: 702px; - height: 72px; - margin-left: 24px; - } - } - - .listBox { - height: calc(100vh - 96px); - } - - .itemBox { - margin-left: 24px; - width: 702px; - height: 104px; - background: #FFFFFF; - border-radius: 16px; - display: flex; - align-items: center; - margin-top: 24px; - box-sizing: border-box; - - .cussName { - margin-left: 48px; - height: 34px; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .phone { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .woker { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - - .acticveitemBox { - margin-left: 24px; - width: 702px; - height: 104px; - background: #FFFFFF; - border-radius: 16px; - display: flex; - align-items: center; - margin-top: 24px; - box-sizing: border-box; - - border: 1px solid #337FFF; - - .cussName { - margin-left: 48px; - width: 168px; - height: 34px; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .phone { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .woker { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } -} \ No newline at end of file diff --git a/src/pages/accountPage/index.tsx b/src/pages/accountPage/index.tsx deleted file mode 100644 index 95c33dd..0000000 --- a/src/pages/accountPage/index.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import { Button, Image, Input, ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Search from '@/components/search' -import { MpCashManagementOrderAccount } from '@/api/newCollection' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, getFilterData } from '@/common/util' - -const AccountPage = () => { - const [search, setSearch] = useState({ - search_name: null, - page: 1, - size: 10, - }) - const [clentList, setClientlist] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const { fetchData: clitentFetch, state: orderState } = MpCashManagementOrderAccount() - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: clentList.list, total: clentList.total, status: orderState.loading! }) - }, [clentList, orderState]) - - const [clientObj, setclientObj] = useState({ - bankId: null, - bankName: '', - }) - - const router = useRouter() - - // 上拉加载数据 - const pageNum = useRef({ size: search.size, page: search.page }) - const getScrolltolower = useCallback(() => { - if (clentList.list.length < clentList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearch(e => ({ ...e, size })) - console.log(search, 11111) - } - }, [clentList]) - - // 输入了搜索关键字 - const getSearchData = useCallback((eq) => { - pageNum.current.page = 1 - setClientlist(() => ({ list: [], total: 0 })) - setSearch(e => ({ ...e, search_name: eq, size: 10 })) - }, []) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearch(val => ({ ...val, size: 10 })) - } - const getCuss = async() => { - const res = await clitentFetch({ search_name: search.search_name === null ? '' : search.search_name, page: search.page, size: search.size }) - if (router?.params.bankId) { - res.data.list.map((item) => { - if (item.receiving_account_id == router?.params.bankId) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - } - setClientlist(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(() => false) - } - useEffect(() => { - if (search.search_name === '') { - setSearch(e => ({ ...e, search_name: null })) - } - if (search.search_name !== '') { getCuss() } - }, [search]) - // 选择业务员 - const selectClient = (item) => { - clentList.list.map((it) => { - if (item.receiving_account_id === it.receiving_account_id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - prevPage.setData({ // 设置上一个页面的值 - bankId: item.receiving_account_id, - bankName: item.company_account, - }) - setClientlist(e => ({ ...e, list: clentList?.list, total: clentList?.total })) - setclientObj(item) - Taro.navigateBack({ - delta: 1, - }) - } - useEffect(() => { - if (clientObj?.bankId !== null) { - setclientObj(clientObj) - } - // else { - // let pages = Taro.getCurrentPages(); // 获取当前的页面栈 - // let prevPage = pages[pages.length - 2]; - // prevPage.setData({ //设置上一个页面的值 - // bankId: '', - // bankName: '', - // }); - // } - }, [clientObj]) - return ( - - {/* - - - - - */} - - - { - clentList.list.map((item, index) => { - return ( - { selectClient(item) }}> - {item.company_account} - {/* {item.phone} - {item.company_account} */} - - ) - }) - } - - - - - ) -} - -export default AccountPage diff --git a/src/pages/addAddress/index.config.ts b/src/pages/addAddress/index.config.ts deleted file mode 100644 index c65c0be..0000000 --- a/src/pages/addAddress/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '新增地址', -} diff --git a/src/pages/addAddress/index.module.scss b/src/pages/addAddress/index.module.scss deleted file mode 100644 index d98e2d6..0000000 --- a/src/pages/addAddress/index.module.scss +++ /dev/null @@ -1,210 +0,0 @@ -.main { - background: #ffffff; - border-radius: 16px; - margin: 24px; - padding: 40px 32px 50px 32px; - - .itemBox { - display: flex; - align-items: center; - padding-bottom: 40px; - border-bottom: 1px solid #f7f7f7; - margin-bottom: 40px; - - .leftBox { - width: 176px; - font-size: 28px; - - font-weight: 500; - color: #000000; - display: flex; - align-items: center; - // margin-right: 50px; - } - - .placeholderStyle { - color: #f7f7f7; - font-size: 28px; - font-weight: 400; - } - - .inputClass { - font-size: 28px; - - font-weight: 400; - color: #000000; - } - } -} - -.itemBox:first-child { - display: flex; - align-items: center; - padding-bottom: 40px; - border-bottom: 1px solid #f7f7f7; - margin-bottom: 40px; - - .leftBox { - width: 176px; - font-size: 28px; - - font-weight: 500; - color: #000000; - display: flex; - align-items: center; - // padding-right: 25px; - } - - .placeholderStyle { - color: #f7f7f7; - font-size: 28px; - font-weight: 400; - } - - .inputClass { - font-size: 28px; - - font-weight: 400; - color: #000000; - } -} - -.itemBox:last-child { - display: flex; - align-items: center; - padding-bottom: 40px; - margin-bottom: 40px; - border-bottom: none; - - .leftBox { - font-size: 28px; - - font-weight: 500; - color: #000000; - display: flex; - align-items: center; - // margin-right: 50px; - width: 176px; - } - - .inputClass { - font-size: 28px; - - font-weight: 400; - color: #000000; - } -} - -.checkBox { - margin-left: 24px; - margin-top: 24px; - width: 702px; - height: 120px; - background: #ffffff; - border-radius: 16px; - overflow: hidden; - display: flex; - align-items: center; - justify-content: space-between; - padding-bottom: 15px; - .leftCheck { - margin-left: 32px; - - .topFont { - margin-top: 24px; - font-size: 28px; - - font-weight: 500; - color: #000000; - } - - .bottomFont { - margin-top: 8px; - font-size: 24px; - - font-weight: 400; - color: #777777; - } - } -} - -.bottomBox { - width: 750px; - height: 160px; - background: #ffffff; - bottom: 0; - padding-top: 14px; - position: fixed; - display: flex; - - .btn { - margin-left: 32px; - width: 702px; - height: 80px; - background: #337fff; - border-radius: 44px; - opacity: 0.5; - font-size: 28px; - - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - - .adtiveBtns { - margin-left: 32px; - width: 702px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 28px; - - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - - .delectBox { - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #f4536b; - margin-left: 48px; - font-size: 28px; - - font-weight: 500; - color: #f4536b; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .nobtn { - width: 311px; - height: 80px; - background: #337fff; - border-radius: 44px; - opacity: 0.5; - margin-left: 32px; - text-align: center; - line-height: 80px; - font-size: 28px; - color: #ffffff; - } - - .sureBox { - width: 311px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 28px; - - font-weight: 500; - color: #ffffff; - margin-left: 32px; - text-align: center; - line-height: 80px; - } -} diff --git a/src/pages/addAddress/index.tsx b/src/pages/addAddress/index.tsx deleted file mode 100644 index c5fae47..0000000 --- a/src/pages/addAddress/index.tsx +++ /dev/null @@ -1,335 +0,0 @@ -import { Button, Input, Switch, Text, Textarea, View } from '@tarojs/components' -import Taro, { setNavigationBarTitle, useDidShow, useRouter } from '@tarojs/taro' -import { useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import FromList from '@/components/FromList' -import Address from '@/components/address' -import { alert } from '@/common/common' -import { MpPurchaserAddress, MpPurchaserAddressDelete, MpPurchaserAddressGet, MpPurchaserAddressPut } from '@/api/addressList' -import IconFont from '@/components/iconfont/iconfont' - -const AddAddress = () => { - const [itemList, setItemList] = useState( - [ - { - title: '联系人', - require: true, - placeholderFont: '请输入收货人姓名', - type: 'text', - value: '', - }, - { - title: '加工厂', - require: false, - placeholderFont: '请输入加工厂(选填)', - type: 'text', - value: '', - }, - { - title: '联系方式', - require: true, - placeholderFont: '请输入联系方式', - type: 'number', - value: '', - maxLength: 11, - }, - { - title: '收货地址', - require: true, - placeholderFont: '请选择/省/市/区', - type: 'select', - disabled: true, - value: '', - }, - { - title: '详细地址', - require: true, - placeholderFont: '请输入详细地址(街道、门牌号等)', - type: 'text', - value: '', - }, - ], - ) - - const [ischecked, setIsChecked] = useState(false) - const [formData, setFormData] = useState({ - name: '', - phone: '', - site: '', - siteArray: [], - district_id: '', - address_detail: '', - is_default: false, - id: '', - factory: '', - }) - const onChange = (eq) => { - setIsChecked(eq.detail.value) - setFormData(e => ({ ...e, is_default: eq.detail.value, address_detail: itemList[4].value })) - } - - const router = useRouter() - - // 获取相应id的信息 - const { fetchData: infoFetch } = MpPurchaserAddressGet() - const [infoObj, setinfoObj] = useState() - const getInfo = async() => { - const res = await infoFetch({ - id: router.params.id, - }) - if (res.data) { - let arr: any[] = [] - arr = [ - { id: res.data.province_id, name: res.data.province_name }, - { id: res.data.city_id, name: res.data.city_name }, - { id: res.data.district_id, name: res.data.district_name }, - ] - setFormData({ - name: res.data.name, - phone: res.data.phone, - site: res.data.province_name + res.data.city_name + res.data.district_name, - siteArray: arr as any, - address_detail: res.data.address_detail, - district_id: res.data.district_id, - is_default: res.data.is_default, - id: res.data.id, - factory: res.data.factory, - // purchaser_id: res.data.purchaser_id - }) - setinfoObj(res.data) - itemList.map((item) => { - if (item.title === '联系人') { - item.value = res.data.name - } - if (item.title === '联系方式') { - item.value = res.data.phone - } - if (item.title === '收货地址') { - item.value = `${res.data.province_name}${res.data.city_name}${res.data.district_name}` - } - if (item.title === '详细地址') { - item.value = res.data.address_detail - } - if (item.title === '加工厂') { - item.value = res.data.factory - } - return item - }) - setItemList([...itemList]) - setIsChecked(res.data.is_default) - } - } - // `${res.data.province_name} + ${res.data.city_name} + ${res.data.district_name}` - useDidShow(() => { - if (router.params.type === 'add') { - setNavigationBarTitle({ title: '新增收货地址' }) - } - else { - setFormData(e => ({ ...e, id: router.params.id as any })) - getInfo() - setNavigationBarTitle({ title: '编辑收货地址' }) - } - }) - const btnDisabled = useMemo(() => { - let canShow = false - const obj = itemList.filter((item) => { - return item.require && (item.value !== '') - }) - if (obj.length < 4) { - canShow = true - } - else { - canShow = false - } - return canShow - }, [itemList]) - - const [showSiteModal, setShowSiteModal] = useState(false) - - const handleSetSite = (ev: any) => { - const addressName: any = [] - ev.forEach((v) => { - addressName.push(v.name) - }) - if (ev.length === 3) { - itemList.map((it) => { - if (it.type === 'select') { - it.value = addressName - } - return it - }) - setItemList([...itemList]) - setShowSiteModal(false) - } - setFormData({ - name: itemList[0]?.value, - phone: itemList[2]?.value, - site: addressName.join(' '), - district_id: ev[ev.length - 1]?.id, - is_default: ischecked, - address_detail: itemList[4]?.value, - id: infoObj?.id ? infoObj?.id : '', - siteArray: ev, - factory: itemList[1]?.value, - }) - } - - useEffect(() => { - setFormData(formData) - }, [formData]) - - useEffect(() => { - setItemList(itemList) - }, [itemList]) - const onClose = () => { - setShowSiteModal(false) - } - - const changeInput = (e, item) => { - itemList.map((it) => { - if (it.title === item.title) { - it.value = e.detail.value - } - return it - }) - setItemList([...itemList]) - setFormData(val => ({ - ...val, name: itemList[0].value, phone: itemList[2].value, address_detail: itemList[4].value, factory: itemList[1].value, - })) - } - - const showModal = (item) => { - if (item.type === 'select') { - setShowSiteModal(true) - } - } - - const navBack = () => { - Taro.navigateBack({ - delta: 1, - }) - } - // 新增地址 - const { fetchData: addAddressFetch } = MpPurchaserAddress() - const handAdd = async() => { - // if (!btnDisabled) return false - const res = await addAddressFetch({ ...formData, purchaser_id: Number(router.params.purchaser_id) }) - if (res.data) { - Taro.showToast({ - title: '成功', - icon: 'none', - }) - navBack() - } - else { - Taro.showToast({ - title: res.msg, - }) - } - } - - // 编辑地址 - const { fetchData: putFetch } = MpPurchaserAddressPut() - const handEdit = async() => { - // if (!btnDisabled) return false - const res = await putFetch({ ...formData, purchaser_id: Number(router.params.purchaser_id), id: Number(infoObj?.id) }) - if (res.msg === 'success') { - Taro.showToast({ - title: '成功', - icon: 'none', - }) - navBack() - } - else { - Taro.showToast({ - title: res.msg, - }) - } - } - // 删除地址 - const { fetchData: deleteFetch } = MpPurchaserAddressDelete() - const handleDelete = async() => { - Taro.showModal(({ - title: '提示', - content: '是否删除地址?', - async success(ev) { - if (ev.confirm) { - Taro.showLoading({ - title: '请稍等...', - }) - const result = await deleteFetch({ id: Number(formData.id) }) - if (result.success) { - alert.success('删除成功') - Taro.hideLoading() - Taro.navigateBack({ - delta: 1, - }) - } - else { - alert.error(result.msg) - } - } - }, - })) - } - return ( - <> - - {itemList.map((item, index) => { - return ( - - - {item.title} - { - item.require && * - } - - changeInput(e, item)} - type={item.type} - onClick={() => showModal(item)} - style={{ width: '212px' }} - disabled={item.disabled} - placeholder={item.placeholderFont} - value={item.value} - className={styles.inputClass} - > - { - item.type === 'select' && - } - - ) - })} - - - - - 设置默认地址 - 提醒:下单会优先使用该地址 - - { onChange(e) }} style={{ marginRight: '20rpx' }} /> - - - { - router.params.type === 'add' - && - - - } - { - router.params.type === 'edit' - && - - - - } -
onClose()} show={showSiteModal} /> - - - ) -} - -export default AddAddress diff --git a/src/pages/addCollection/components/form/index.module.scss b/src/pages/addCollection/components/form/index.module.scss deleted file mode 100644 index 1f280e6..0000000 --- a/src/pages/addCollection/components/form/index.module.scss +++ /dev/null @@ -1,104 +0,0 @@ -.itemBox { - width: 100%; - border-bottom: 1px solid #f7f7f7; - display: flex; - // align-items: center; - padding-top: 30px; - padding-bottom: 30px; - - .itemLeft { - - // align-items: center; - .finkFlex { - display: flex; - - .itemTitle { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .xing { - font-size: 28px; - font-weight: 500; - color: #E42945; - margin-right: 48px; - } - } - - .finkFont { - font-size: 20px; - font-weight: 400; - color: grey; - } - - - } - - .bigPic { - width: 70%; - } - - .itemRight { - // display: flex; - // align-items: center; - // justify-content: space-between; - width: 70%; - // position: relative; - - .assginFont { - // position: absolute; - // bottom: 10px; - // left: 0px; - font-size: 24px; - font-weight: 500; - color: #000000; - } - - .rightFlex { - width: 100%; - - // overflow: hidden; - // white-space: nowrap; - // text-overflow: ellipsis; - .placeholderStyle { - color: #f7f7f7; - font-size: 28px; - font-weight: 400; - } - - .inputStyle { - font-size: 28px; - font-weight: 400; - color: #000000; - // width: 100%; - } - } - - .iconFlex { - display: flex; - align-items: center; - - .chakanquanbukehu2 { - font-size: 50px !important; - } - - - .saomiao { - margin-left: 24px; - color: #087EFF; - font-size: 40px !important; - } - } - - } - - .shu { - width: 2px; - height: 36px; - background: #000000; - opacity: 0.2; - margin-left: 24px; - margin-right: 24px; - } -} \ No newline at end of file diff --git a/src/pages/addCollection/components/form/index.tsx b/src/pages/addCollection/components/form/index.tsx deleted file mode 100644 index e0119f9..0000000 --- a/src/pages/addCollection/components/form/index.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { Input, ScrollView, Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -// import BottomBtns from '@/components/BottomBtns' -import { formatDateTime, formatPriceDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import UploadImage from '@/components/uploadImage' - -interface Params { - title?: string // 传入的名称 - require?: boolean // 是否显示必须选填的内容图标 - isInput?: boolean // 是否显示输入框 - inputValue?: string // 输入框的值 - inputType?: any // 输入框类型 - getInput?: (any) => void // 输入框回调 - showScan?: boolean // 是否显示扫描图标 - placeholderFont?: string // 输入框默认文本 - showMore?: boolean // 是否显示更多图标 - disabled?: boolean // 是否输入框禁止 - onlyRead?: boolean // 图片是否只读 - showPic?: boolean // 是否显示图片组件 - getImageList?: (any) => void // 上传图片回调 - PicList?: [] // 默认图片列表 - styleNone?: boolean // 根据不同的栏目调整样式 - getScan?: (any) => void // 扫描 - navTo?: () => void // 跳转选择 - showSizeFont?: boolean // 展示金额的大写 - bigMoney?: any // 展示的大写金额, - isOpen?: boolean // 是否展开状态 -} -const Form = (pros: Params) => { - return ( - <> - { - pros.isOpen && - - - {pros.title} - { - pros.require && * - } - - { - pros.showSizeFont && 展示大小写 - } - - { - pros.showPic - && - - - } - { - !pros.showPic && pros.navTo?.()} - style={{ - justifyContent: `${!pros.showSizeFont ? 'space-between' : ''}`, - alignItems: `${!pros.showSizeFont ? 'center' : ''}`, - display: `${!pros.showSizeFont ? 'flex' : ''}`, - }} - > - - { - pros.isInput && pros.getInput?.(e.detail.value)} - > - } - - - {/* */} - { - pros.showMore && - - } - { - pros.showScan && - } - { - pros.showScan && pros.getScan?.(e)}> - } - { - pros.showSizeFont && {pros.bigMoney} - } - - } - - - } - - ) -} -export default memo(Form) diff --git a/src/pages/addCollection/index.config.ts b/src/pages/addCollection/index.config.ts deleted file mode 100644 index 5188b1d..0000000 --- a/src/pages/addCollection/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '新建收款单', -} diff --git a/src/pages/addCollection/index.module.scss b/src/pages/addCollection/index.module.scss deleted file mode 100644 index 56713f1..0000000 --- a/src/pages/addCollection/index.module.scss +++ /dev/null @@ -1,120 +0,0 @@ -.addBox { - margin: 24px; - padding: 0px 32px 0px 32px; - background: #FFFFFF; - border-radius: 16px; - transition: 0.3s; -} - -.activeBox { - transition: 0.3s; - margin: 24px; - padding: 0px 32px 0px 32px; - background: #FFFFFF; - border-radius: 16px; -} - -.textAreaBox { - margin-top: 40px; - display: flex; - justify-content: space-between; - position: relative; - - .textAreaLeft { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .textAreaRight { - width: 70%; - } - - .numsTotal { - position: absolute; - bottom: 0; - right: 0; - display: flex; - font-size: 28px; - font-weight: 400; - color: grey; - - } - - -} - -.bottomBox { - width: 750px; - height: 160px; - background: #FFFFFF; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087EFF; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #337FFF; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; - } - - .activeButton { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } -} - -.safeBox { - height: 160px; - width: 100%; -} - -.openBox { - // height: 82px; - display: flex; - align-items: center; - justify-content: center; - line-height: 82px; - - .openFont { - font-size: 28px; - font-weight: 400; - color: #337FFF; - margin-right: 10px; - } -} \ No newline at end of file diff --git a/src/pages/addCollection/index.tsx b/src/pages/addCollection/index.tsx deleted file mode 100644 index 28569e1..0000000 --- a/src/pages/addCollection/index.tsx +++ /dev/null @@ -1,288 +0,0 @@ -import { Button, Input, Textarea, View } from '@tarojs/components' -import Taro, { useDidShow } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import Big from 'big.js' -import styles from './index.module.scss' -import Form from './components/form' -import { - MpCashManagementOrderAccount, MpCashManagementOrderPost, - MpShouldCollectOrderPurchaser, -} from '@/api/newCollection' -import { alert } from '@/common/common' -import smallToBig from '@/common/money' -import IconFont from '@/components/iconfont/iconfont' - -const AddCollection = () => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - - const [Query, setQuery] = useState({}) - - // 获取图片列表 - const picUrl = useRef([]) - const getImageList = useCallback((list) => { - picUrl.current = list - setQuery(val => ({ ...val, picList: list })) - }, []) - - // 获取首个银行账号 - const { fetchData: clitentFetch } = MpCashManagementOrderAccount() - const getCuss = async() => { - const res = await clitentFetch({ page: 1, size: 10 }) - // 默认 招商银行 - const target = res.data.list.find((item) => { - console.log(item) - return item.company_account.includes('招商') - }) - console.log('target', target) - if (res.data) { - setQuery(val => ({ ...val, bankId: target ? target.receiving_account_id : res.data.list[0].receiving_account_id, bankName: target ? target.company_account : res.data.list[0].company_account })) - } - } - - const { fetchData: scanFetch } = MpShouldCollectOrderPurchaser() - // 扫描 - const handScan = (e) => { - e.stopPropagation() - Taro.scanCode({ - async success(res) { - const restult = await scanFetch({ order_no: res.result }) - setQuery(val => ({ ...val, purchaser_id: restult.data.purchaser_id, clientName: restult.data.purchaser_name })) - }, - fail(res) { - console.log(res) - }, - }) - } - - // 选择内容跳转 - const navTo = (val) => { - if (val == 1) { - Taro.navigateTo({ - url: `/pages/customerPage/index?clientId=${Query.purchaser_id}`, - }) - } - else { - if (typeof (Query.purchaser_id) == 'undefined') { - return alert.error('请先选择客户') - } - else { - Taro.navigateTo({ - url: `/pages/accountPage/index?bankId?=${Query?.bankId}`, - }) - } - } - } - useDidShow(() => { - setQuery(e => ({ - ...e, - purchaser_id: currPage.data?.clientId ? currPage.data?.clientId : Query.purchaser_id, - clientName: currPage.data?.clientName ? currPage.data?.clientName : Query.clientName, - bankId: currPage.data?.bankId ? currPage.data?.bankId : Query.bankId, - bankName: currPage.data?.bankName ? currPage.data?.bankName : Query.bankName, - })) - }) - useEffect(() => { - getCuss() - }, []) - // 判断是否可以提交 - const isDisabled = useMemo(() => { - if (Query.clientName == '' - || Query.money == '' - || Query.picList?.length == 0 - ) { - return true - } - else { - return false - } - }, [Query]) - - // 收款金额回调 - const getInput = (e) => { - setQuery({ ...Query, money: e }) - } - - useEffect(() => { - setQuery(Query) - }, [Query]) - - // useEffect(() => { - // if (currPage.data?.clientId && (currPage.data?.clientId != Query.purchaser_id)) { - // setQuery({ ...Query, bankId: '', bankName: '' }) - // } - // }, [Query]) - - // 备注信息 - const [TextareaValue, setTextareaValue] = useState('') - const getDesc = (e) => { - setQuery({ ...Query, nums: e.length }) - setTextareaValue(e) - } - - // 取消返回 - const handCancl = () => { - Taro.navigateBack({ - delta: 1, - }) - } - - // 确认新建 - const { fetchData: sureFetch } = MpCashManagementOrderPost() - const handSure = () => { - const query = { - payment_credential_url: picUrl.current, - purchaser_id: Query.purchaser_id, - receipt_amount: parseFloat(new Big(Query.money).times(100)), - receiving_account_id: Query.bankId, - remark: TextareaValue, - } - Taro.showModal({ - content: '确认提交吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await sureFetch(query) - if (res?.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - Taro.hideLoading() - handCancl() - } - else { - Taro.hideLoading() - Taro.showToast({ - title: res?.msg, - icon: 'error', - }) - } - } - }, - }) - } - - const [IsOpen, setIsOpen] = useState(false) - const handOpen = () => { - if (IsOpen) { - setIsOpen(false) - } - else { - setIsOpen(true) - } - } - - const openFont = useMemo(() => { - if (IsOpen) { - return '收起' - } - else { - return '展开' - } - }, [IsOpen]) - return ( - <> - -
handScan(e)} - navTo={() => navTo(1)} - showSizeFont={false} - >
-
getInput(e)} - showSizeFont - bigMoney={smallToBig(typeof (Query.money) == 'undefined' ? 0 : Query.money)} - >
-
getImageList(list)} - showSizeFont={false} - >
-
navTo(2)} - showSizeFont={false} - >
- { - IsOpen && - 备注信息 - - - {`${typeof (Query.nums) == 'undefined' ? 0 : Query.nums}/64`} - - - } - handOpen()}> - {openFont} - { - !IsOpen && - } - { - IsOpen && - } - -
- - - - - - - ) -} - -export default AddCollection diff --git a/src/pages/addFabric/components/goods/index.module.scss b/src/pages/addFabric/components/goods/index.module.scss deleted file mode 100644 index 6fdeb36..0000000 --- a/src/pages/addFabric/components/goods/index.module.scss +++ /dev/null @@ -1,125 +0,0 @@ -.itemBox { - width: 686px; - padding-bottom: 18px; - border-bottom: 1px solid #e7e7e7; - display: flex; - margin-left: 32px; - margin-bottom: 24px; - - .picBox { - margin-right: 24px; - width: 144px; - height: 144px; - border-radius: 8px; - position: relative; - - .pic { - width: 144px; - height: 144px; - border-radius: 8px; - } - - .posBox { - position: absolute; - bottom: 0px; - right: 0px; - width: 69px; - height: 29px; - background: #000000; - border-radius: 15px 0px 8px 0px; - font-size: 18px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #FFFFFF; - text-align: center; - line-height: 29px; - - opacity: 0.55; - } - } - - - .leftBox { - width: 144px; - height: 144px; - border-radius: 8px; - position: relative; - margin-right: 24px; - - .pic { - width: 144px; - height: 144px; - border-radius: 8px; - } - - .posBox { - position: absolute; - bottom: 0px; - right: 0px; - width: 69px; - height: 29px; - background: #000000; - border-radius: 15px 0px 8px 0px; - font-size: 18px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #FFFFFF; - text-align: center; - line-height: 29px; - - opacity: 0.55; - } - } - - .rightBox { - .productName { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - margin-bottom: 6px; - } - - .tips { - font-size: 24px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #a6a6a6; - margin-bottom: 17px; - } - - .flexTag { - display: flex; - - .tagOne { - padding-left: 8px; - padding-right: 8px; - padding-top: 3px; - padding-bottom: 3px; - background: #e3ecff; - border-radius: 8px; - font-size: 22px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #4581FF; - text-align: center; - margin-right: 16px; - } - - .tagTwo { - padding-left: 8px; - padding-right: 8px; - padding-top: 3px; - padding-bottom: 3px; - background: #ffeedb; - border-radius: 8px; - font-size: 22px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #FE8E0F; - text-align: center; - } - } - } - -} \ No newline at end of file diff --git a/src/pages/addFabric/components/goods/index.tsx b/src/pages/addFabric/components/goods/index.tsx deleted file mode 100644 index 7eee85c..0000000 --- a/src/pages/addFabric/components/goods/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Image, View } from '@tarojs/components' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from '../goods/index.module.scss' -import LabAndImg from '@/components/LabAndImg' -import { formatDateTime, formatHashTag, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' - -const Goods = (props: any) => { - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - return ( - props?.clickItem?.()}> - { - props.data?.texture_url === '' && <> - - - - {props.data?.product_color_count}色 - - - } - { - props.data?.texture_url !== '' - && <> - - - {/* */} - {props.data?.product_color_count}色 - - - } - - {formatHashTag(props.data?.code, props.data?.name)} - {props.data?.component} - - {props.data?.width} - {props.data?.weight_density} - - - - ) -} -export default memo(Goods) diff --git a/src/pages/addFabric/components/goodsItem/index.module.scss b/src/pages/addFabric/components/goodsItem/index.module.scss deleted file mode 100644 index 038ed2e..0000000 --- a/src/pages/addFabric/components/goodsItem/index.module.scss +++ /dev/null @@ -1,221 +0,0 @@ -.goodsBox { - display: flex; - margin-bottom: 32px; - - // justify-content: space-between; - .pic { - width: 118px; - height: 118px; - border-radius: 8px; - margin-right: 32px; - } - - .rightGoodbox { - padding-bottom: 31px; - border-bottom: 1px solid #efefef; - display: flex; - justify-content: space-between; - // margin-right: 32px; - width: 538px; - - .leftFontsbox { - .title { - width: 260px; - height: 34px; - font-size: 28px; - font-weight: 400; - color: #000000; - margin-bottom: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - background: 0, 124, 247; - } - - .activeTitle { - width: 260px; - height: 34px; - font-size: 28px; - font-weight: 400; - color: #9c9c9c; - margin-bottom: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - background: 0, 124, 247; - } - .productName { - width: 260px; - height: 30px; - font-size: 24px; - font-weight: 400; - color: #000000; - margin-bottom: 16px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .productNums { - font-size: 24px; - font-weight: 400; - color: #000000; - } - .activeProductNums { - color: #9c9c9c; - font-size: 24px; - font-weight: 400; - } - .productNameone { - font-size: 24px; - font-weight: 400; - color: #000000; - height: 40px; - } - .activepPoductName { - font-size: 24px; - font-weight: 400; - color: #9c9c9c; - height: 40px; - } - } - - .rightFontsbox { - .moneyFlex { - margin-bottom: 14px; - display: flex; - justify-content: flex-end; - .lastBox { - font-size: 28px; - font-weight: 500; - text-decoration: line-through; - color: #7f7f7f; - } - .money { - margin-left: 15px; - font-size: 28px; - font-weight: 500; - color: #f41a39; - } - .activeMoney { - color: #fba4b0; - margin-left: 15px; - font-size: 28px; - font-weight: 500; - } - } - - // .inputBox { - // width: 189px; - // height: 64px; - // border-radius: 8px; - // border: 1px solid #979797; - // display: flex; - - // .reduceBox { - // width: 64px; - // height: 64px; - // display: flex; - // align-items: center; - // justify-content: center; - - // .reduce { - // width: 20px; - // height: 3px; - // background: #000000; - // border-radius: 1px; - // opacity: 0.8; - // } - // } - - // .numsBox { - // width: 61px; - // display: flex; - // align-items: center; - // justify-content: center; - // font-size: 24px; - // font-weight: 400; - // color: #000000; - // text-align: center; - // } - - // .addBox { - // width: 64px; - // height: 64px; - // display: flex; - // line-height: 64px; - // align-items: center; - // justify-content: center; - // flex-direction: column; - // color: #000; - // font-size: 35px; - // } - // } - .inputBox { - display: flex; - align-items: center; - - .reduceBox { - width: 50px; - height: 50px; - display: flex; - align-items: center; - justify-content: center; - border-radius: 18px; - border: 1px solid #337fff; - .reduce { - width: 20px; - height: 3px; - background: #337fff; - border-radius: 16px; - opacity: 0.8; - } - } - - .numsBox { - width: 81px; - display: flex; - align-items: center; - justify-content: center; - font-size: 24px; - font-weight: 400; - color: #000000; - text-align: center; - } - - .addBox { - width: 50px; - height: 50px; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - color: #fff; - font-size: 35px; - border-radius: 18px; - border: 1px solid #337fff; - background-color: #337fff; - } - } - .addtine { - width: 64px; - height: 64px; - display: flex; - align-items: center; - justify-content: center; - color: #000; - font-size: 35px; - border-radius: 8px; - border: 1px solid #979797; - float: right; - } - .isAdd { - margin-top: 30px; - float: right; - color: #999999; - font-size: 28px; - font-weight: 400; - } - } - } -} diff --git a/src/pages/addFabric/components/goodsItem/index.tsx b/src/pages/addFabric/components/goodsItem/index.tsx deleted file mode 100644 index 78da8e6..0000000 --- a/src/pages/addFabric/components/goodsItem/index.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { Image, Input, ScrollView, View } from '@tarojs/components' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import LabAndImg from '@/components/LabAndImg' - -interface props { - clickAdd: (any) => void - // onInputEven?: (a: any, c: any) => void, - clickReduce: (any) => void - handPlus: (any) => void - modeFont?: number - value: { - showInput?: boolean - nums?: string - bulk_price?: Number | 0 - length_cut_price?: Number - weight_cut_price?: Number - code?: string - rgb?: { r: number; g: number; b: number } - lab?: { l: number; a: number; b: number } - texture_url: string - name?: string - roll?: number | string - buyNums?: number | string - id?: number - isChecked?: boolean - weight_error?: number | string - last_bulk_price?: number - last_length_cut_price?: number - last_weight_cut_price?: number - } - goodList?: any[] - onBlur?: (a: any, c: any) => void -} -const GoodsItem = (props: props) => { - const [value, setValue] = useState({ count: props.value.nums }) - - const onInputEven = (e) => { - const res = e.detail.value - if (props.modeFont == 0) { - if (Number(res) < 1) { - setValue({ count: '' }) - } - } - if (props.modeFont == 1) { - if (Number(res) < 0) { - setValue({ count: '' }) - } - } - if (props.modeFont == 2) { - if (Number(res) < 0) { - setValue({ count: '' }) - } - } - } - - const type = useMemo(() => { - if (props.modeFont === 0) { - return 'number' - } - else { - return 'digit' - } - }, [props.modeFont]) - - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - return ( - - - {/* { - props?.value?.rgb?.r == 0 && props?.value?.rgb?.g == 0 && props?.value?.rgb?.b == 0 && - } - { - (props?.value?.rgb?.r != 0 || props?.value?.rgb?.g != 0 || props?.value?.rgb?.b != 0) - && - } */} - - - - - - {props.value?.code} {props.value?.name} - 剩:{props.value?.roll}件 - { - props?.modeFont == 0 && 空差:{props?.value?.weight_error as number / 1000 || 0}Kg - } - - - - { - props?.modeFont == 0 && props.value?.last_bulk_price !== props.value?.bulk_price && ¥{props?.modeFont == 0 ? Number(props.value?.last_bulk_price) / 100 : props.modeFont === 1 ? Number(props.value?.last_length_cut_price) / 100 : Number(props.value?.last_weight_cut_price) / 100} {props.modeFont as any != 1 ? '/Kg' : '/m'} - } - ¥{props?.modeFont == 0 ? Number(props.value?.bulk_price) / 100 : props.modeFont == 1 ? Number(props.value?.length_cut_price) / 100 : Number(props.value?.weight_cut_price) / 100}{props.modeFont != 1 ? '/Kg' : '/m'} - - { - !props.value.isChecked && props.value.showInput && - { props.clickReduce?.(props.value) }}> - - - - - props.onBlur?.(e, props.value.id)}> - - {/* onInputEven($event, props.value)}> */} - - { props.handPlus?.(props.value) }}> - + - - - } - { - !props.value.showInput && !props.value.isChecked && props.clickAdd?.(props.value)}>+ - } - { - props.value.isChecked && 面料已添加 - } - - - - ) -} -export default memo(GoodsItem) -// ($event) => onInputEven($event, props.value) diff --git a/src/pages/addFabric/components/shoppingCart/index.module.scss b/src/pages/addFabric/components/shoppingCart/index.module.scss deleted file mode 100644 index b392c8d..0000000 --- a/src/pages/addFabric/components/shoppingCart/index.module.scss +++ /dev/null @@ -1,163 +0,0 @@ -.shopcartBox { - padding: 0 32px; - - .topTitle { - font-size: 32px; - font-weight: 500; - color: #000000; - margin-top: 24px; - margin-bottom: 8px; - } - - .selectFont { - font-size: 24px; - font-weight: 400; - color: #000000; - margin-bottom: 24px; - } - - .line { - margin-bottom: 24px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .typeFont { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-bottom: 24px; - } - - .flexType { - display: flex; - align-items: center; - margin-bottom: 32px; - - .activemodeFont { - margin-right: 16px; - width: 160px; - height: 68px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - border: 1px solid #337fff; - box-sizing: border-box; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 68px; - } - - .modeFont { - margin-right: 16px; - width: 160px; - height: 68px; - background: #e9e9e9; - border-radius: 8px; - opacity: 0.4; - font-size: 28px; - font-weight: 400; - color: #000000; - box-sizing: border-box; - text-align: center; - line-height: 68px; - } - } - - .flexFonts { - display: flex; - // justify-content: space-between; - margin-bottom: 24px; - align-items: center; - padding-bottom: 10px; - - .kingFont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .danwei { - margin-left: 16px; - width: 148px; - height: 30px; - border-radius: 4px; - border: 1px solid #e42945; - font-size: 22px; - font-weight: 500; - color: #e42945; - text-align: center; - line-height: 30px; - } - } - - .searchBox { - margin-bottom: 32px; - } - - .scrollviewBig { - .scrollview { - // height: 300px; - - .kongBox { - height: 181px; - width: 100%; - } - } - } - - .kongOne { - height: 200px; - } - - .loading_more { - height: 300px; - padding-bottom: 200px; - display: flex; - align-items: center; - width: 100%; - justify-content: center; - } - - .posBox { - width: 100%; - position: fixed; - z-index: 999; - bottom: calc($customTabBarHeight + env(safe-area-inset-bottom)); - } - - .noBottom { - width: 100vw; - position: fixed; - z-index: 999; - bottom: env(safe-area-inset-bottom); - .flexBox { - display: flex; - align-items: center; - justify-content: space-between; - .selectFont { - font-size: 24px; - font-weight: 400; - color: #cfcfcf; - } - .rightBtn { - margin-right: 48px; - width: 256px; - height: 80px; - background: #4581ff; - border-radius: 40px; - font-size: 32px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - } - } -} - -.scrllStyle { - height: 75vh; -} diff --git a/src/pages/addFabric/components/shoppingCart/index.tsx b/src/pages/addFabric/components/shoppingCart/index.tsx deleted file mode 100644 index b4fa730..0000000 --- a/src/pages/addFabric/components/shoppingCart/index.tsx +++ /dev/null @@ -1,215 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow } from '@tarojs/taro' -import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import VirtualList from '@tarojs/components/virtual-list' -import Goods from '../goodsItem' -import styles from './index.module.scss' -import Divider from '@/components/Divider' -import Search from '@/components/search' -import Popup from '@/components/popup' -import DotLoading from '@/components/dotLoading' -import { formatDateTime, formatHashTag, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' - -interface prosObj { - sale_mode?: number - showPopup?: false | true - closePopup?: () => void - goodList?: any[] - // typeList?: any[] - handCheck?: (any) => void - addNums?: (any) => void - reduceNums?: (any) => void - getSearchData: (any) => void - handPlus: (any) => void - handSure: () => void - obj?: { - code?: string - name?: string - - } - modeFont: Number | string - hasBottom?: true | false // 默认不占位底部 - onBlur?: (e: string, res: object) => void -} -const ShoppingCart = (props: prosObj, ref) => { - const { - sale_mode = -1, - showPopup = false, - closePopup, - goodList = [], - handCheck, - addNums, - reduceNums, - getSearchData, - handPlus, - obj = {}, - modeFont = 0, - handSure, - hasBottom = true, - onBlur, - } = props - - const SearchRef = useRef() - - useImperativeHandle(ref, () => ({ - Object: props, - SearchRef, - })) - - // 判断选择的类型 - const showModefont = useMemo(() => { - if (sale_mode == 0) { - return '条' - } - else { - return '米' - } - }, [sale_mode]) - - // 已选的颜色 - const selectTotal = useMemo(() => { - const totalArr = goodList.filter((item) => { - return item.showInput - }) - return totalArr.length - }, [goodList]) - - // 选择的条数或者米数 - const selectNums = useMemo(() => { - const arr: any = [] - goodList.forEach((item) => { - if (item.showInput) { - arr.push(Number(item.nums)) - } - }) - const hate = sum(arr) - return hate - }, [goodList]) - // onInputEven={(e, item) => oninputEvent?.(e, item)} - - function sum(arr) { - let s = 0 - for (let i = arr.length - 1; i >= 0; i--) { - s += arr[i] - } - return s - } - - // 确认添加 - const handTake = () => { - if (selectTotal == 0) { - return Taro.showToast({ - title: '请选择一条添加!', - icon: 'error', - }) - } - else { - handSure() - } - } - - const rows = ({ id, index, style, data }: any) => { - const item = data[index] - return ( - <> - onBlur?.(e, id)} - modeFont={(sale_mode as number)} - handPlus={item => handPlus?.(item)} - value={item || {}} - clickAdd={item => addNums?.(item)} - clickReduce={(item) => { reduceNums?.(item) }} - goodList={goodList} - > - - ) - } - const Rows = memo(rows) - - return ( - closePopup?.()}> - - - - {formatHashTag(obj?.code, obj?.name)} - - {/* */} - {/* 布料类型 - - {typeList.map((item, index) => { - return ( - { - handCheck?.(item) - }} - key={index} - className={classnames(item.checked ? styles.activemodeFont : styles.modeFont)} - > - {item.name} - - ) - })} - */} - - - - 颜色分类({goodList?.length}) - - {sale_mode == 0 ? '大货' : sale_mode == 1 ? '剪版' : '散剪'}单位:{showModefont} - - - - - - - {goodList.length > 0 && ( - <> - - - {Rows} - - - - {/* */} - - )} - {goodList.length === 0 && ( - <> - - 加载中 - - - - )} - {/* {!hasBottom && } */} - {/* */} - - - - 当前已选{selectTotal} 种颜色,共 {selectNums} {showModefont} - - handTake()}>确认添加 - - - - - - ) -} -export default memo(forwardRef(ShoppingCart)) diff --git a/src/pages/addFabric/index.config.ts b/src/pages/addFabric/index.config.ts deleted file mode 100644 index 24ab439..0000000 --- a/src/pages/addFabric/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '添加面料', -} diff --git a/src/pages/addFabric/index.module.scss b/src/pages/addFabric/index.module.scss deleted file mode 100644 index a6c6cf0..0000000 --- a/src/pages/addFabric/index.module.scss +++ /dev/null @@ -1,91 +0,0 @@ -page { - background: #ffff; -} - -.main { - background: #ffff; - - .topBox { - padding-left: 24px; - } - - .cancelFont { - width: 76px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - margin-left: 32px; - margin-right: 32px; - } - - .line { - width: 750px; - height: 1px; - background: #000000; - opacity: 0.05; - margin-top: 16px; - margin-bottom: 32px; - } - - .order_list { - height: calc(100vh - 200px); - } - .topBox { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 32px; - - .histroyLeft { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - overflow: hidden; - - .histroyFonts { - margin-left: 32px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .back { - margin-right: 32px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - - .icon_delect { - margin-right: 45px; - color: #f7f7f7; - } - } - - .bigBox { - display: flex; - flex-wrap: wrap; - padding-left: 32px; - - .itemBox { - background: #f7f7f7; - border-radius: 8px; - text-align: center; - padding-top: 12px; - padding-bottom: 12px; - padding-left: 17px; - padding-right: 17px; - font-size: 24px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - margin-right: 16px; - margin-bottom: 16px; - } - } -} diff --git a/src/pages/addFabric/index.tsx b/src/pages/addFabric/index.tsx deleted file mode 100644 index bcaf6ea..0000000 --- a/src/pages/addFabric/index.tsx +++ /dev/null @@ -1,428 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Goods from './components/goods' -import ShopCart from './components/shoppingCart' -import Search from '@/components/search' -import Empty from '@/components/empty' -import { MpProductList } from '@/api/search' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { - MpProductColorList, -} from '@/api/order' -import { ProductListApi } from '@/api/index' -import InfiniteScroll from '@/components/infiniteScroll' - -const SearchPage = () => { - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - const router: any = useRouter() - const onj = JSON.parse(Taro.getStorageSync('userInfo')) - const [search, setSearchObj] = useState({ - modeId: router.params.sale_mode, - goodsId: null, - code_or_name: '', - physical_warehouse: onj.physical_warehouse, - purchaser_id: -1, - }) - - const [paramGoods, setparamGoods] = useState([]) - - useDidShow(() => { - prevPage.setData({ // 设置上一个页面的值 - selectGoodsList: [], - productId: '', - }) - let arr: any[] = [] - arr = JSON.parse(decodeURIComponent(router.params.goodList)) - setparamGoods(arr) - }) - - const [goodList, setGoodlist] = useState([]) - - const [showShopCart, setShowShopCart] = useState(false) - - // 获取商品 - const { fetchData: colorlistFetch } = MpProductColorList() - const getGoodList = async() => { - const res = await colorlistFetch({ product_id: search.goodsId, code_or_name: search.code_or_name, physical_warehouse: search?.physical_warehouse, purchaser_id: router.params.purchaser_id }) - res.data.list.map((item) => { - item.showInput = false - if (search.modeId == 0) { - item.nums = 1 - item.buyNums = 1 - } - if (search.modeId == 1) { - item.nums = 0.3 - item.buyNums = 0.3 - } - if (search.modeId == 2) { - item.nums = 3 - item.buyNums = 3 - } - return item - }) - paramGoods?.forEach((edg) => { - if (search.goodsId == edg.id) { - edg?.product_colors?.forEach((it) => { - res.data.list?.map((gg) => { - if (it.id == gg.id) { - gg.isChecked = true - } - return gg - }) - }) - } - }) - setGoodlist([...res.data.list]) - } - - // 监听选择的类型 - useEffect(() => { - setSearchObj(search) - if (search.goodsId) { getGoodList() } - }, [search]) - - // 确认添加 - const handSure = () => { - setShowShopCart(false) - let arr: any[] = [] - // 洗数据将面料Id底下的数据再装到自己的颜色列表里面 - arr = orderData?.list?.filter((item) => { - return item.id == search.goodsId - }) - const filterArr = goodList.filter((item) => { - return item.showInput - }) - arr.forEach((item) => { - filterArr.forEach((it) => { - // it.sale_price = search.modeId == 0 ? it.bulk_price : search.modeId == 1 ? it.length_cut_price : it.weight_cut_price - item.product_colors = [...filterArr] - }) - }) - if (filterArr.length > 0) { - prevPage.setData({ // 设置上一个页面的值 - selectGoodsList: arr, - productId: search.goodsId, - }) - } - Taro.navigateBack({ - delta: 1, - }) - } - - // 点击输入框的加 - const handPlus = useCallback((item) => { - goodList.map((it) => { - if (item.id === it.id) { - if (isInteger(item.nums)) { - item.nums++ - } - else { - item.nums++ - item.nums = Math.trunc(item.nums) - } - } - return item - }) - setGoodlist([...goodList]) - }, [goodList]) - - // 输入了搜索关键字 - const getSearchDataInput = useCallback((eq) => { - setSearchObj(e => ({ ...e, code_or_name: eq })) - }, []) - - const [goodObj, setGoodsobj] = useState({}) - const ShopCartRef = useRef() - // 点击对应商品显示购物车 - const showCart = async(item) => { - setSearchObj(e => ({ ...e, goodsId: item.id, purchaser_id: router.params.purchaser_id })) - setShowShopCart(true) - setGoodsobj(item) - ShopCartRef.current.SearchRef.current.clearInput() - } - - // 点击加展示输入框 - const handAdd = useCallback((item) => { - goodList.map((it) => { - if (item.id === it.id) { - it.showInput = true - } - return item - }) - setGoodlist([...goodList]) - }, [goodList]) - - // 点击减 - const reduceNums = useCallback((item) => { - goodList.map((it) => { - if (item.id === it.id) { - if (isInteger(item.nums)) { - item.nums-- - } - else { - item.nums = Math.trunc(item.nums) - } - - if (search.modeId == 0) { - if (item.nums < 1) { - it.showInput = false - it.nums = 1 - } - } - if (search.modeId == 1) { - if (item.nums < 0.3) { - it.showInput = false - it.nums = 0.3 - } - } - if (search.modeId == 2) { - if (item.nums < 3) { - it.showInput = false - it.nums = 3 - } - } - } - return item - }) - setGoodlist([...goodList]) - }, [goodList]) - - // 选择类型 - // const handCheckMode = (item) => { - // typeList.map((it) => { - // if (it.id === item.id) { - // it.checked = true - // setSearchObj(e => ({ ...e, modeId: it.id })) - // } - // else { - // it.checked = false - // } - // return it - // }) - // setTypeList([...typeList]) - // setGoodlist([]) - // } - - // 关闭弹窗 - const closePoup = () => { - setShowShopCart(false) - } - - // 搜索商品的数组 - const [searchList, setSearchList] = useState([]) - // 是否有值输入框 - const [hasFonts, setHasFonts] = useState(false) - // useEffect(() => { - // getHistory() - // }, []) - - // 搜索获取商品数据 - const { fetchData: productFetch } = MpProductList() - const getProduct = debounce(async(e) => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - // await historyputFetch({ key: e, scene: 0 }).then((res) => { - // if (res.data) { - // getHistory() - // } - // }) - productFetch({ code_or_name: e }).then((res) => { - if (res.data) { - Taro.hideLoading() - setSearchList([...res?.data?.list]) - } - }) - }, 300) - - // 输入了搜索关键字 - const getSearchData = useCallback((e) => { - if (e) { - setHasFonts(true) - getProduct(e) - } - else { - setHasFonts(false) - setSearchList([]) - } - }, []) - - // 返回 - const back = () => { - Taro.navigateBack({ - delta: 1, - }) - } - // 判断是否整数类型 - function isInteger(obj) { - return (obj | 0) === obj - } - - // 输入框失焦 - const onBlur = (e, id) => { - goodList.map((item) => { - if (item.id == id) { - if (search.modeId == 0 && (e.detail.value == '' || Number(e.detail.value) == 0)) { - item.showInput = false - item.nums = 1 - } - else if (search.modeId == 0 && (e.detail.value != '' || Number(e.detail.value) > 0)) { - item.nums = e.detail.value - } - if (search.modeId == 1 && Number(e.detail.value) < 0.3) { - item.nums = 0.3 - item.showInput = false - } - else if (search.modeId == 1 && Number(e.detail.value) >= 0.3) { - if (isInteger(Number(e.detail.value))) { - item.nums = Number(e.detail.value) - } - else { - item.nums = Number(e.detail.value).toFixed(2) - } - } - if (search.modeId == 2 && Number(e.detail.value) < 3) { - item.nums = 3 - item.showInput = false - } - else if (search.modeId == 2 && Number(e.detail.value) >= 3) { - if (isInteger(Number(e.detail.value))) { - item.nums = Number(e.detail.value) - } - else { - item.nums = Number(e.detail.value).toFixed(2) - } - } - } - return item - }) - setGoodlist([...goodList]) - } - - // 选择中后的值到输入框 - const [defaultvalue, setdefaultvalue] = useState('') - - const { fetchData: productFetchData, state: orderState } = ProductListApi() - - // 页码和页数 - const [searchField, setSearchField] = useState<{ page: number; size: number }>({ - page: 1, - size: 10, - }) - - // 监听筛选条件变化 - useEffect(() => { - getOrderList() - }, [searchField]) - - const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - - // 数据加载状态 - const statusMore = useMemo(() => { - console.log({ list: orderData.list, total: orderData.total, status: orderState.loading }, '{ list: orderData.list, total: orderData.total, status: orderState.loading }') - return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading! }) - }, [orderData, orderState]) - - const getScrolltolower = useCallback(() => { - if (orderData.list.length < orderData.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [orderData]) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getOrderList = async() => { - const res = await productFetchData({ - ...getFilterData(searchField), - }) - setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(() => false) - } - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - - return ( - - - - back()}>取消 - - - - { - !hasFonts && <> - - - {orderData?.list?.map((item, index) => { - return ( - - showCart(item)} key={index} data={item}> - - ) - })} - - - - } - { - hasFonts && <> - - - 搜索结果 - {/* handBack()}>返回 */} - - - { - !!searchList.length && searchList.map((item, index) => { - return ( - showCart(item)} key={index} data={item}> - ) - }) - } - { - !searchList.length && - } - - } - handSure()} - modeFont={router.params.sale_mode} - handPlus={item => handPlus(item)} - obj={goodObj} - getSearchData={(e) => { getSearchDataInput(e) }} - hasBottom={false} - reduceNums={(item) => { reduceNums(item) }} - addNums={(item) => { handAdd(item) }} - showPopup={showShopCart} - closePopup={() => closePoup()} - goodList={goodList} - onBlur={(e, id) => onBlur(e, id)} - > - - - - ) -} -export default memo(SearchPage) -// oninputEvent={(e, item) => { onInputEven?.(e, item) }} diff --git a/src/pages/addressManager/index.config.ts b/src/pages/addressManager/index.config.ts deleted file mode 100644 index 7f20e70..0000000 --- a/src/pages/addressManager/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '地址管理', - enableShareAppMessage: true, -} diff --git a/src/pages/addressManager/index.scss b/src/pages/addressManager/index.scss deleted file mode 100644 index 97ab863..0000000 --- a/src/pages/addressManager/index.scss +++ /dev/null @@ -1,3 +0,0 @@ -.address-manager{ - height: 100vh; -} \ No newline at end of file diff --git a/src/pages/addressManager/index.tsx b/src/pages/addressManager/index.tsx deleted file mode 100644 index 5cd8cc8..0000000 --- a/src/pages/addressManager/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ - -import { Button, ScrollView, Text, View } from '@tarojs/components' -import { stopPullDownRefresh, useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import { useState } from 'react' -import AddressList from '@/components/AddressList' -import './index.scss' - -const AddressManager = () => { - const router = useRouter() - return ( - - - - ) -} -export default AddressManager diff --git a/src/pages/applyGoods/index.config.ts b/src/pages/applyGoods/index.config.ts deleted file mode 100644 index b5d56d6..0000000 --- a/src/pages/applyGoods/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '申请退货', - enableShareAppMessage: true, -} diff --git a/src/pages/applyGoods/index.module.scss b/src/pages/applyGoods/index.module.scss deleted file mode 100644 index 47f133a..0000000 --- a/src/pages/applyGoods/index.module.scss +++ /dev/null @@ -1,551 +0,0 @@ -.main { -} - -.bgBox { - margin: 24px; - background: #ffffff; - border-radius: 16px; - overflow: hidden; -} - -.goodsBox { - margin-top: 24px; - overflow: hidden; - border-bottom: 8px solid #f7f7f7; - - .goodsProduct { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-left: 32px; - } - - .goodsLine { - width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-left: 32px; - margin-top: 24px; - } - - .itemGoods { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 5px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: 1px solid #f7f7f7; - - .item_right_top { - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: flex-end; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .btn { - width: 120px; - height: 64px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 64px; - } - - .btnOne { - width: 204px; - height: 64px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 64px; - } - - .inputBox { - width: 189px; - height: 64px; - border-radius: 8px; - border: 1px solid #337fff; - display: flex; - - .redceBox { - width: 64px; - height: 64px; - border-radius: 8px 0px 0px 8px; - border-right: 1px solid #337fff; - display: flex; - align-items: center; - justify-content: center; - - .reduce { - width: 20px; - height: 2px; - background: #337fff; - } - } - - .inputBig { - width: 61px; - height: 64px; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - font-size: 24px; - font-weight: 400; - color: #337fff; - } - - .addBox { - width: 64px; - height: 64px; - border-left: 1px solid #337fff; - display: flex; - align-items: center; - justify-content: center; - font-size: 40px; - color: #337fff; - } - } - } - } - } - - .itemGoods:last-child { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: none; - - .item_right_top { - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: flex-end; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .btn { - width: 120px; - height: 64px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 64px; - } - - .btnOne { - width: 204px; - height: 64px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 64px; - } - } - } - } -} - -.goodsBox { - border-bottom: none; -} - -.hasSelect { - margin-left: 32px; - margin-right: 32px; - height: 54px; - background: #fef9f4; - border-radius: 8px; - display: flex; - align-items: center; - font-size: 24px; - font-weight: 600; - color: #f79b31; - padding-left: 20px; - margin-bottom: 24px; -} - -.resonBig { - overflow: hidden; - margin: 0 24px; - background: #ffffff; - border-radius: 16px 16px 0px 0px; - - .reasonItem { - display: flex; - align-items: center; - border-bottom: 1px solid #f7f7f7; - margin: 32px; - padding-bottom: 32px; - justify-content: space-between; - - .reasonLeft { - display: flex; - align-items: center; - - .reasonFont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .xing { - font-size: 28px; - font-weight: 500; - color: #e42945; - } - - .selectFont { - font-size: 28px; - font-weight: 400; - color: #000000; - margin-left: 40px; - } - } - - .chakanquanbukehu { - font-size: 50px; - } - } - - .picBig { - display: flex; - margin-top: 32px; - display: flex; - padding-bottom: 32px; - - .picFont { - width: 130px; - font-size: 28px; - font-weight: 500; - color: #000000; - margin-left: 32px; - } - - // .rightPic { - // margin-right: 32px; - // } - } -} - -.descBox { - padding: 24px 0px 24px 0px; - margin: 32px; - background: #ffffff; - border-radius: 16px 16px 0px 0px; - - .title { - font-size: 28px; - font-weight: 500; - color: #000000; - // margin-top: 24px; - margin-left: 32px; - } - - .textBox { - padding-top: 15px; - padding-left: 24px; - padding-right: 24px; - padding-bottom: 24px; - margin-right: 32px; - margin-top: 24px; - margin-left: 32px; - height: 210px; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-weight: 400; - color: #000000; - // margin-bottom: 32px; - } -} - -.bottomBox { - width: 750px; - height: 160px; - background: #ffffff; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087eff; - font-size: 28px; - font-weight: 500; - color: #337fff; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - - .activeButton { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 32px; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } -} - -.safeBox { - height: 160px; - width: 100%; -} - -.popupBox { - height: 500px; - padding-bottom: env(safe-area-inset-bottom); - - .thirdBox { - margin-top: 20px; - padding-left: 48px; - - .thirdTopfont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .timeBox2 { - margin-top: 24px; - background-color: #f6f6f6; - height: 68px; - background: #e9e9e9; - border-radius: 8px; - margin-right: 48px; - text-align: center; - line-height: 68px; - position: relative; - font-size: 28px; - font-weight: 400; - color: #000000; - - .more { - position: absolute; - right: 30px; - top: 5px; - font-size: 40px; - } - } - - .flexModebox { - margin-top: 24px; - display: flex; - flex-wrap: wrap; - - .activemodeBox { - margin-bottom: 16px; - margin-right: 16px; - // width: 152px; - // height: 68px; - padding: 17px 34px 17px 34px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #337fff; - text-align: center; - // line-height: 68px; - border: 1px solid #337fff; - box-sizing: border-box; - } - - .modeBox { - margin-bottom: 16px; - margin-right: 16px; - padding: 17px 34px 17px 34px; - // width: 152px; - // height: 68px; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - border: 1px solid #f6f6f6; - text-align: center; - // line-height: 68px; - box-sizing: border-box; - // opacity: 0.4; - } - } - } - - .bottomBox1 { - width: 750px; - height: 160px; - background: #ffffff; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - justify-content: space-between; - - .resetBox1 { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087eff; - font-size: 28px; - font-weight: 500; - color: #337fff; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button1 { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - - .activeButton1 { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 32px; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } - } - - .safeBoxs { - height: 160px; - } - - // .areaBox { - // height: calc($customTabBarHeight + env(safe-area-inset-bottom)); - // width: 100%; - // } -} diff --git a/src/pages/applyGoods/index.tsx b/src/pages/applyGoods/index.tsx deleted file mode 100644 index 7737981..0000000 --- a/src/pages/applyGoods/index.tsx +++ /dev/null @@ -1,688 +0,0 @@ -import { Button, CoverView, Image, Input, ScrollView, Text, Textarea, View } from '@tarojs/components' -import Taro, { faceVerifyForPay, useDidShow, useRouter } from '@tarojs/taro' -import { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - MpEnumReturnExplain, - MpEnumReturnGoodsStatus, - MpEnumReturnOrderReturnReason, - MpReturnApplyOrder, - MpSaleOrder, -} from '@/api/order' -import Popup from '@/components/popup' -import UploadImage from '@/components/uploadImage' -import IconFont from '@/components/iconfont/iconfont' -import Divider from '@/components/Divider' -import SaleModeTag from '@/components/saleModeTag' -import LabAndImg from '@/components/LabAndImg' - -// 产品商品元素 -interface PropGoods { - list: any[] - obj: { - sale_mode?: number | string - } - handTui?: (any) => void - handCancel?: (any) => void - onBlur?: (e: any, obj: any) => void - onInputEven?: (e: any, obj: any) => void - handReduce?: (any) => void - handAdd?: (any) => void -} -const GoodsItem = (porps: PropGoods) => { - const { list = [], obj = {}, handTui, handCancel, onBlur, handReduce, handAdd, onInputEven } = porps - // const [value, setValue] = useState({ count: 1 }) - // const onInputEven = (e) => { - // let res = Number(e.detail.value) - // if (res < 1) { - // setValue({ count: 1 }) - // } else { - // setValue({ count: res }) - // } - // } - const labAndImgObj = useCallback( - (item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, - [list], - ) - return ( - <> - { - list.map((item, index) => { - return ( - - - - - {item.product_code}# {item.product_name} - - - - - { - item.av_product_color.map((it, inx) => { - return ( - - - - - {/* */} - {/* */} - - - {it.product_color_code} {it.product_color_name} - - - x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} - { - !it.isTui && handTui?.(it)}>退货 - } - { - (it.sale_mode != 0 && it.isTui) && handCancel?.(it)}>已选择退货 - } - { - (it.sale_mode == 0 && it.isTui) && - handReduce?.(it)}> - - - - onInputEven?.(e, it)} maxlength={it.roll} onBlur={e => onBlur?.(e, it)}> - - handAdd?.(it)}> - + - - - } - - - - ) - }) - } - - ) - }) - } - - - ) -} -const GoodsItemWithMemo = memo(GoodsItem) - -const ApplyGoods = () => { - const router = useRouter() - - const { fetchData: infoFetch } = MpSaleOrder() - const [infoObj, setInfoObj] = useState({}) - const [ListArr, setListArr] = useState([]) - // 获取订单详情 - const getDetail = async() => { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await infoFetch({ id: router.params.orderId }) - if (res.data) { - res.data.av_return_product.forEach((item) => { - item.av_product_color.forEach((it) => { - it.isTui = false - it.nums = 1 - }) - return item - }) - setListArr(res.data.av_return_product) - setInfoObj(res.data) - Taro.hideLoading() - } - } - - // 点击退货 - const handTui = (val) => { - const res = ListArr - res.forEach((item) => { - item.av_product_color?.map((it) => { - if (it.sale_order_detail_id == val.sale_order_detail_id) { - it.isTui = true - } - return it - }) - }) - setListArr([...res]) - } - // 点击取消退货 - const handCancel = (val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - it.isTui = false - } - return it - }) - }) - setListArr([...ListArr]) - } - - // 点击减 - const handReduce = (val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (val.nums == 1) { - it.isTui = false - it.nums = 1 - } - else { - it.nums-- - } - } - return it - }) - }) - setListArr([...ListArr]) - } - - const onInputEven = (e, val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (Number(e.detail.value) < 1) { - it.nums = '' - } - else { - it.nums = Number(e.detail.value) - } - if (Number(e.detail.value) > it.roll) { - it.nums = 1 - } - } - return it - }) - }) - setListArr([...ListArr]) - } - - const onBlur = (e, val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (Number(e.detail.value) < 1 || e.detail.value == '') { - it.isTui = false - it.nums = 1 - } - else { - it.nums = Number(e.detail.value) - } - if (Number(e.detail.value) > it.roll) { - it.nums = 1 - } - } - return it - }) - }) - setListArr([...ListArr]) - } - - // 点击加 - const handAdd = (val) => { - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (it.nums < it.roll) { - it.nums++ - } - } - }) - }) - setListArr([...ListArr]) - } - - const totalNums = useMemo(() => { - const arr: any[] = [] - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.isTui) { - arr.push(it) - } - }) - }) - return arr.length - }, [ListArr]) - - useEffect(() => { - getDetail() - }, []) - - // 获取图片列表 - const picUrl = useRef([]) - const getImageList = useCallback((list) => { - picUrl.current = list - }, []) - - // 筛选内容展示 - const [showPopup, setshowPopup] = useState(false) - - const queryRef = useRef( - { - return_reason: 1, // 退货原因 - return_explain: '', // 退货理由 - reasonName: '请选择', - reasonNameTwo: '请选择', - GoodStatus: '', - GoodStatusName: '请选择', - }, - ) - const [Query, setQuery] = useState({ - // reason_describe: '',//描述说明 - return_reason: 1, // 退货原因 - reasonName: '请选择', - reasonNameTwo: '请选择', - return_explain: '', // 退货理由 - GoodStatus: '', - GoodStatusName: '请选择', - // goods_status: '',//货物状况 - // fabric_piece_accessory_url:[],//退货图片 - // sale_order_id:infoObj.id,//详情id - }) - - // 判断是否允许提交 - const isDisabled = useMemo(() => { - if (Query.GoodStatus !== '' - && Query.return_explain !== '' - && totalNums > 0 - ) { - return false - } - else { - return true - } - }, [Query, totalNums]) - - /// 获取退货原因 - const { fetchData: resonFetch } = MpEnumReturnOrderReturnReason() - const [ReasonList, setReasonList] = useState([]) - const getReason = async() => { - const res = await resonFetch() - if (res.data) { - setReasonList(res.data.list) - } - } - - // 获取退货原因2 - const { fetchData: resonTwoFetch } = MpEnumReturnExplain() - const [ReasonListTwo, setReasonListTwo] = useState([]) - const getReasonTwo = async() => { - const res = await resonTwoFetch({ return_reason: queryRef.current.return_reason }) - if (res.data) { - setReasonListTwo(res.data.list) - } - } - - // 选择退货原因 - const handReasonOne = (item) => { - ReasonList.map((it) => { - if (it.id === item.id) { - it.default = true - } - else { - it.default = false - } - return it - }) - setQuery(val => ({ ...val, return_reason: item.id, return_explain: '' })) - queryRef.current.return_reason = item.id - queryRef.current.reasonName = item.name - setReasonList([...ReasonList]) - getReasonTwo() - } - - // 选择退货理由 - const handReasonTwo = (item) => { - ReasonListTwo.map((it) => { - if (it.id === item.id) { - it.default = true - } - else { - it.default = false - } - return it - }) - setReasonListTwo([...ReasonListTwo]) - // queryRef.current.reasonNameTwo = item.name - setQuery(val => ({ ...val, return_explain: item.id })) - - // queryRef.current.return_explain = item.id - } - useEffect(() => { - getReason() - getReasonTwo() - }, []) - // 数组重置 - const resetArr = (arr) => { - arr.map((it) => { - it.default = false - return it - }) - return arr - } - // 重置 - const handReset = () => { - queryRef.current.return_reason = 1 - queryRef.current.return_explain = '' - queryRef.current.reasonName = '请选择' - queryRef.current.reasonNameTwo = '请选择' - setQuery(val => ({ ...val, return_reason: 1, return_explain: '', reasonName: '请选择', reasonNameTwo: '请选择' })) - getReasonTwo() - const arrOne = resetArr(ReasonList) - setReasonList([...arrOne]) - const arrTwo = resetArr(ReasonListTwo) - setReasonListTwo([...arrTwo]) - } - - // 判断选择原因 - const selectIsDisabled = useMemo(() => { - if (Query.return_explain !== '') { - return false - } - else { - return true - } - }, [Query]) - - // 确认选择退货原因 - const handSlect = () => { - if (queryRef.current?.reasonName == '请选择') { - Taro.showToast({ - title: '请选择完整', - icon: 'error', - }) - return false - } - const resOne = ReasonList.filter((item) => { - return item.default - }) - queryRef.current.return_reason = resOne[0]?.id - queryRef.current.reasonName = resOne[0]?.name - const resTwo = ReasonListTwo.filter((item) => { - return item.default - }) - queryRef.current.return_explain = resTwo[0]?.id - queryRef.current.reasonNameTwo = resTwo[0]?.name - setQuery(val => ({ - ...val, - reasonName: queryRef.current.reasonName, - reasonNameTwo: queryRef.current.reasonNameTwo, - })) - setshowPopup(false) - } - - // 货物情况 - const [DescPopup, setDescPopup] = useState(false) - const { fetchData: statusFetch } = MpEnumReturnGoodsStatus() - const [GoodStatusList, setGoodStatusList] = useState([]) - - const getGoodStatus = async() => { - const res = await statusFetch() - if (res.data) { - setGoodStatusList(res.data.list) - } - } - useEffect(() => { - getGoodStatus() - }, []) - const handStatus = (item) => { - GoodStatusList.map((it) => { - if (it.id === item.id) { - it.default = true - } - else { - it.default = false - } - return it - }) - setQuery(val => ({ ...val, GoodStatus: item.id })) - setGoodStatusList([...GoodStatusList]) - } - - // 判断状态是否有选 - const StatusIsDisabled = useMemo(() => { - if (Query.GoodStatus !== '') { - return false - } - else { - return true - } - }, [Query]) - - // 重置货物状态 - const handResetStatus = () => { - const arr = resetArr(GoodStatusList) - setGoodStatusList([...arr]) - queryRef.current.GoodStatus = '' - queryRef.current.GoodStatusName = '请选择' - setQuery(val => ({ ...val, GoodStatus: '', GoodStatusName: '请选择' })) - } - - // 确认选择货物状况 - const handSlectStatus = () => { - const res = GoodStatusList.filter((item) => { - return item.default - }) - queryRef.current.GoodStatus = res[0].id - queryRef.current.GoodStatusName = res[0].name - setQuery(val => ({ ...val, GoodStatus: queryRef.current.GoodStatus, GoodStatusName: queryRef.current.GoodStatusName })) - setDescPopup(false) - } - - // 取消返回 - const handCancl = () => { - Taro.navigateBack({ - delta: 1, - }) - } - // 备注信息 - const [TextareaValue, setTextareaValue] = useState('') - // 确认退货 - const { fetchData: sureFetch } = MpReturnApplyOrder() - const handSure = () => { - if (Query.reasonNameTwo == '其他问题' && TextareaValue == '') { - Taro.showToast({ - title: '请填写其他说明', - icon: 'error', - duration: 3000, - }) - return false - } - const arr: any = [] - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.isTui) { - arr.push({ - product_color_id: it.sale_mode == 0 ? it.product_color_id : '', - product_id: it.sale_mode == 0 ? it.product_id : '', - product_roll: it.sale_mode == 0 ? it.nums : 0, - sale_order_detail_id: it.sale_order_detail_id, - }) - } - }) - }) - const query = { - reason_describe: TextareaValue, - fabric_piece_accessory_url: picUrl.current, - goods_status: Query.GoodStatus, - return_reason: Query.return_reason, - return_explain: Query.return_explain, - roll: 0, - roll_list: arr, - sale_order_id: Number(infoObj.id), - } - - Taro.showModal({ - content: '确认退货吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await sureFetch(query) - if (res?.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - Taro.hideLoading() - handCancl() - } - else { - Taro.hideLoading() - Taro.showToast({ - title: res?.msg, - icon: 'error', - }) - } - } - }, - }) - } - useEffect(() => { - setQuery(Query) - }, [Query]) - - const getDesc = (e) => { - setTextareaValue(e) - } - return ( - - - handTui(item)} - handCancel={item => handCancel(item)} - onBlur={(e, item) => onBlur(e, item)} - handReduce={item => handReduce(item)} - handAdd={item => handAdd(item)} - onInputEven={(e, item) => onInputEven(e, item)} - > - 汇总:已选{totalNums}种商品 - - - { setshowPopup(true) }}> - - 退货原因 - * - { - queryRef.current.reasonName === '请选择' && 请选择 - } - { - queryRef.current.reasonName !== '请选择' && {Query.reasonName}/{Query.reasonNameTwo} - } - - - {/* */} - - { setDescPopup?.(true) }}> - - 货物情况 - * - { - queryRef.current.GoodStatusName === '请选择' && 请选择 - } - { - queryRef.current.GoodStatusName !== '请选择' && {Query.GoodStatusName} - } - - - {/* */} - - - 拍照上传 - - - - - 其他说明 - - {/* 解决textarea的placeholder层级穿透的问题(偶现问题) */} - {/* https://developers.weixin.qq.com/community/develop/article/doc/0004eea3024e7075653a30bb05ac13?highline=Textarea%20 */} - - - - - - - - - - { setshowPopup?.(false) }}> - - - - 退货原因 - - { - ReasonList.map((item, index) => { - return ( - { handReasonOne(item) }} className={classnames(item.default ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} - ) - }) - } - - - - 退货理由 - - { - ReasonListTwo.map((item, index) => { - return ( - { handReasonTwo(item) }} className={classnames(item.default ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} - ) - }) - } - - - - - - - - - - - { setDescPopup?.(false) }}> - - - - 货物情况 - - { - GoodStatusList.map((item, index) => { - return ( - { handStatus(item) }} className={classnames(item.default ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} - ) - }) - } - - - - - - - - - - - - ) -} -export default ApplyGoods diff --git a/src/pages/applyMoney/index.config.ts b/src/pages/applyMoney/index.config.ts deleted file mode 100644 index 6098173..0000000 --- a/src/pages/applyMoney/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '申请退款', - enableShareAppMessage: true, -} diff --git a/src/pages/applyMoney/index.module.scss b/src/pages/applyMoney/index.module.scss deleted file mode 100644 index c865f4b..0000000 --- a/src/pages/applyMoney/index.module.scss +++ /dev/null @@ -1,563 +0,0 @@ -.main {} - -.bgBox { - margin: 24px; - background: #FFFFFF; - border-radius: 16px; - overflow: hidden; -} - - - -.goodsBox { - margin-top: 24px; - overflow: hidden; - border-bottom: 8px solid #F7F7F7; - - .goodsProduct { - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - margin-left: 32px; - } - - .goodsLine { - width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-left: 32px; - margin-top: 24px; - } - - .itemGoods { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: 1px solid #f7f7f7; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - } - - .btn { - width: 120px; - height: 64px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 28px; - font-weight: 400; - color: #337FFF; - text-align: center; - line-height: 64px; - } - - .btnOne { - width: 204px; - height: 64px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 28px; - font-weight: 400; - color: #337FFF; - text-align: center; - line-height: 64px; - } - - .inputBox { - width: 189px; - height: 64px; - border-radius: 8px; - border: 1px solid #337FFF; - display: flex; - - .redceBox { - width: 64px; - height: 64px; - border-radius: 8px 0px 0px 8px; - border-right: 1px solid #337FFF; - display: flex; - align-items: center; - justify-content: center; - - .reduce { - width: 20px; - height: 2px; - background: #337FFF; - } - } - - .inputBig { - width: 61px; - height: 64px; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - font-size: 24px; - font-weight: 400; - color: #337FFF; - } - - .addBox { - width: 64px; - height: 64px; - border-left: 1px solid #337FFF; - display: flex; - align-items: center; - justify-content: center; - font-size: 40px; - color: #337FFF; - } - } - } - } - - - } - - .itemGoods:last-child { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: none; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - } - - .btn { - width: 120px; - height: 64px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 28px; - font-weight: 400; - color: #337FFF; - text-align: center; - line-height: 64px; - } - - .btnOne { - width: 204px; - height: 64px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 28px; - font-weight: 400; - color: #337FFF; - text-align: center; - line-height: 64px; - } - } - } - - - } -} - -.goodsBox { - border-bottom: none; -} - -.hasSelect { - margin-left: 32px; - margin-right: 32px; - height: 54px; - background: #FEF9F4; - border-radius: 8px; - display: flex; - align-items: center; - font-size: 24px; - font-weight: 600; - color: #F79B31; - padding-left: 20px; - margin-bottom: 24px; -} - -.resonBig { - overflow: hidden; - margin: 24px; - background: #FFFFFF; - - border-radius: 16px; - - - .reasonItem { - display: flex; - align-items: center; - margin: 32px; - padding-bottom: 32px; - justify-content: space-between; - - .reasonLeft { - display: flex; - align-items: center; - - .reasonFont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .xing { - font-size: 28px; - font-weight: 500; - color: #E42945; - } - - .selectFont { - font-size: 28px; - font-weight: 400; - color: #000000; - margin-left: 40px; - } - } - - .chakanquanbukehu { - font-size: 50px; - } - } -} - - -.descBox { - padding: 24px 0px 24px 0px; - margin: 32px; - background: #FFFFFF; - border-radius: 16px 16px 0px 0px; - // overflow: hidden; - - .title { - font-size: 28px; - font-weight: 500; - color: #000000; - // margin-top: 24px; - margin-left: 32px; - } - - .textBox { - padding-top: 15px; - padding-left: 24px; - padding-right: 24px; - padding-bottom: 24px; - margin-right: 32px; - margin-top: 24px; - margin-left: 32px; - height: 210px; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-weight: 400; - color: #000000; - // margin-bottom: 32px; - } - - -} - - -.bottomBox { - width: 750px; - height: 160px; - background: #FFFFFF; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087EFF; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #337FFF; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; - } - - .activeButton { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } -} - -.safeBox { - height: 160px; - width: 100%; -} - -.popupBox { - height: 500px; - padding-bottom: env(safe-area-inset-bottom); - - - - - .thirdBox { - margin-top: 20px; - padding-left: 48px; - - .thirdTopfont { - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - } - - .timeBox2 { - margin-top: 24px; - background-color: #f6f6f6; - height: 68px; - background: #E9E9E9; - border-radius: 8px; - margin-right: 48px; - text-align: center; - line-height: 68px; - position: relative; - font-size: 28px; - font-weight: 400; - color: #000000; - - .more { - position: absolute; - right: 30px; - top: 5px; - font-size: 40px; - } - } - - .flexModebox { - margin-top: 24px; - display: flex; - flex-wrap: wrap; - - .activemodeBox { - margin-bottom: 16px; - margin-right: 16px; - // width: 152px; - // height: 68px; - padding: 17px 34px 17px 34px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #337FFF; - text-align: center; - // line-height: 68px; - border: 1px solid #337FFF; - box-sizing: border-box; - } - - .modeBox { - margin-bottom: 16px; - margin-right: 16px; - padding: 17px 34px 17px 34px; - // width: 152px; - // height: 68px; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - border: 1px solid #f6f6f6; - text-align: center; - // line-height: 68px; - box-sizing: border-box; - // opacity: 0.4; - } - } - } - - .bottomBox1 { - width: 750px; - height: 160px; - background: #FFFFFF; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - justify-content: space-between; - - .resetBox1 { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087EFF; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #337FFF; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button1 { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; - } - - .activeButton1 { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } - } - - // .areaBox { - // height: calc($customTabBarHeight + env(safe-area-inset-bottom)); - // width: 100%; - // } - .safeBoxs { - height: 100px; - } -} \ No newline at end of file diff --git a/src/pages/applyMoney/index.tsx b/src/pages/applyMoney/index.tsx deleted file mode 100644 index c2179d3..0000000 --- a/src/pages/applyMoney/index.tsx +++ /dev/null @@ -1,512 +0,0 @@ -import { Button, Image, Input, ScrollView, Text, Textarea, View } from '@tarojs/components' -import Taro, { faceVerifyForPay, useDidShow, useRouter } from '@tarojs/taro' -import { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - MpEnumRefundExplainOne, - MpReturnApplyOrder, - MpSaleOrder, -} from '@/api/order' -import Popup from '@/components/popup' - -// 产品商品元素 -interface PropGoods { - list: any[] - obj: { - sale_mode?: number | string - } - handTui?: (any) => void - handCancel?: (any) => void - onBlur?: (e: any, obj: any) => void - onInputEven?: (e: any, obj: any) => void - handReduce?: (any) => void - handAdd?: (any) => void -} - -const GoodsItem = (porps: PropGoods) => { - const { list = [], obj = {}, handTui, handCancel, onBlur, handReduce, handAdd, onInputEven } = porps - // const [value, setValue] = useState({ count: 1 }) - // const onInputEven = (e) => { - // let res = Number(e.detail.value) - // if (res < 1) { - // setValue({ count: 1 }) - // } else { - // setValue({ count: res }) - // } - // } - - return ( - <> - { - list.map((item, index) => { - return ( - - {item.product_code}# {item.product_name} - - { - item.av_product_color.map((it, inx) => { - return ( - - - {/* */} - - - {it.product_color_code} {it.product_color_name} - - - x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} - { - !it.isTui && handTui?.(it)}>退货 - } - { - (it.sale_mode != 0 && it.isTui) && handCancel?.(it)}>已选择退货 - } - { - (it.sale_mode == 0 && it.isTui) && - handReduce?.(it)}> - - - - onInputEven?.(e, it)} maxlength={it.roll} onBlur={e => onBlur?.(e, it)}> - - handAdd?.(it)}> - + - - - } - - - - ) - }) - } - - ) - }) - } - - - ) -} -const GoodsItemWithMemo = memo(GoodsItem) - -const ApplyMoney = () => { - const Router = useRouter() - const { fetchData: infoFetch } = MpSaleOrder() - const [ListArr, setListArr] = useState([]) - const [infoObj, setInfoObj] = useState({}) - - // 获取订单详情 - const getDetail = async() => { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await infoFetch({ id: Router.params.orderId }) - if (res.data) { - res.data.av_return_product.forEach((item) => { - item.av_product_color.forEach((it) => { - it.isTui = false - it.nums = 1 - }) - return item - }) - setInfoObj(res.data) - setListArr(res.data.av_return_product) - Taro.hideLoading() - } - } - - // 点击退货 - const handTui = (val) => { - const res = ListArr - res.forEach((item) => { - item.av_product_color?.map((it) => { - if (it.sale_order_detail_id == val.sale_order_detail_id) { - it.isTui = true - } - return it - }) - }) - setListArr([...res]) - } - // 点击取消退货 - const handCancel = (val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - it.isTui = false - } - return it - }) - }) - setListArr([...ListArr]) - } - - // 点击减 - const handReduce = (val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (val.nums === 1) { - it.isTui = false - it.nums = 1 - } - else { - it.nums-- - } - } - return it - }) - }) - setListArr([...ListArr]) - } - - const onInputEven = (e, val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (Number(e.detail.value) < 1 || e.detail.value == '') { - it.isTui = false - it.nums = 1 - } - else { - it.nums = Number(e.detail.value) - } - if (Number(e.detail.value) > it.roll) { - it.nums = 1 - } - } - return it - }) - }) - setListArr([...ListArr]) - } - - const onBlur = (e, val) => { - ListArr.forEach((item) => { - item.av_product_color.map((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (Number(e.detail.value) < 1 || e.detail.value == '') { - it.isTui = false - it.nums = 1 - } - else { - it.nums = Number(e.detail.value) - } - if (Number(e.detail.value) > it.roll) { - it.nums = 1 - } - } - return it - }) - }) - setListArr([...ListArr]) - } - - // 点击加 - const handAdd = (val) => { - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.sale_order_detail_id === val.sale_order_detail_id) { - if (it.nums < it.roll) { - it.nums++ - } - } - }) - }) - setListArr([...ListArr]) - } - - // 获取枚举 - const [List, setList] = useState([]) - const { fetchData: explanFetch } = MpEnumRefundExplainOne() - const getEnum = async() => { - const res = await explanFetch() - if (res.data) { - setList(res.data.list) - } - } - const queryRef = useRef({ - reasonName: '请选择', - }) - const [Query, setQuery] = useState({ - reasonId: '', - reasonName: '请选择', - }) - // 选择退货原因 - const handReasonOne = (item) => { - List.map((it) => { - if (it.id === item.id) { - it.default = true - } - else { - it.default = false - } - return it - }) - setList([...List]) - setQuery(val => ({ ...val, reasonId: item.id })) - queryRef.current.reasonName = item.name - } - - // 筛选内容展示 - const [showPopup, setshowPopup] = useState(false) - - // 备注信息 - const [TextareaValue, setTextareaValue] = useState('') - const getDesc = (e) => { - setTextareaValue(e) - } - - // 取消返回 - const handCancl = () => { - Taro.navigateBack({ - delta: 1, - }) - } - - // 确认选择 - const handSlect = () => { - setQuery(val => ({ ...val, reasonName: queryRef.current.reasonName })) - setshowPopup(false) - } - - const totalNums = useMemo(() => { - const arr: any[] = [] - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.isTui) { - arr.push(it) - } - }) - }) - return arr.length - }, [ListArr]) - // 数组重置 - const resetArr = (arr) => { - arr.map((it) => { - it.default = false - return it - }) - return arr - } - // 重置 - const handReset = () => { - setQuery(({ reasonId: '', reasonName: '请选择' })) - queryRef.current.reasonName = '请选择' - const arrOne = resetArr(List) - setList([...arrOne]) - } - - // 判断是否允许提交 - const isDisabled = useMemo(() => { - if (Query.reasonId !== '') { - return false - } - else { - return true - } - }, [Query]) - - // 判断是否允许提交 - const canTui = useMemo(() => { - if (totalNums > 0 && Query.reasonId !== '') { - return false - } - else { - return true - } - }, [Query, totalNums]) - - const noGoods = useMemo(() => { - if (Query.reasonId !== '') { - return false - } - else { - return true - } - }, [Query]) - useEffect(() => { - getDetail() - getEnum() - }, []) - - // 确认退款 - const { fetchData: sureFetch } = MpReturnApplyOrder() - const handSure = () => { - if (queryRef.current.reasonName == '其他问题' && TextareaValue == '') { - Taro.showToast({ - title: '请填写其他说明', - icon: 'error', - duration: 3000, - }) - return false - } - const arr: any = [] - if (infoObj.sale_mode == 0 && infoObj.status == 9) { - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.isTui) { - arr.push({ - product_color_id: it.sale_mode == 0 ? it.product_color_id : '', - product_id: it.sale_mode == 0 ? it.product_id : '', - product_roll: it.sale_mode == 0 ? it.nums : 0, - sale_order_detail_id: it.sale_order_detail_id, - }) - } - }) - }) - } - if ((infoObj.sale_mode == 1 && infoObj.status == 9) || (infoObj.sale_mode == 2 && infoObj.status == 9)) { - ListArr.forEach((item) => { - item.av_product_color.forEach((it) => { - if (it.isTui) { - arr.push({ - product_color_id: it.product_color_id, - product_id: it.product_id, - product_roll: 0, - sale_order_detail_id: it.sale_order_detail_id, - }) - } - }) - }) - } - const query = { - reason_describe: TextareaValue, - fabric_piece_accessory_url: [], - goods_status: 0, - return_reason: 1, - return_explain: Query.reasonId, - roll: 0, - roll_list: arr, - sale_order_id: Number(Router.params.orderId), - } - console.log(query, 888) - Taro.showModal({ - content: '确认退款吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await sureFetch(query) - if (res?.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - Taro.hideLoading() - handCancl() - } - else { - Taro.hideLoading() - Taro.showToast({ - title: res?.msg, - icon: 'error', - }) - } - } - }, - }) - } - - const showItem = useMemo(() => { - if ((infoObj.sale_mode == 0 && infoObj.status == 9) || (infoObj.sale_mode == 1 && infoObj.status == 9) || (infoObj.sale_mode == 2 && infoObj.status == 9)) { - return true - } - else { - return false - } - }, [infoObj]) - - return ( - - { - showItem && - handTui(item)} - handCancel={item => handCancel(item)} - onBlur={(e, item) => onBlur(e, item)} - handReduce={item => handReduce(item)} - handAdd={item => handAdd(item)} - onInputEven={(e, item) => onInputEven(e, item)} - > - 汇总:已选{totalNums}种商品 - - } - - { setshowPopup(true) }}> - - 退款原因 - * - { - Query.reasonName === '请选择' && 请选择 - } - { - Query.reasonName !== '请选择' && {Query.reasonName} - } - - - - - - 其他说明 - - - - - - - - - { - showItem && - - } - { - !showItem && - - } - - - { setshowPopup?.(false) }}> - - - - 退款原因 - - { - List.map((item, index) => { - return ( - { handReasonOne(item) }} className={classnames(item.default ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} - ) - }) - } - - - - - - - - - - - - - ) -} -export default ApplyMoney diff --git a/src/pages/clauseDetail/index.config.ts b/src/pages/clauseDetail/index.config.ts deleted file mode 100644 index 0d2f9ce..0000000 --- a/src/pages/clauseDetail/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '服务条款', -} diff --git a/src/pages/clauseDetail/index.module.scss b/src/pages/clauseDetail/index.module.scss deleted file mode 100644 index 4f56732..0000000 --- a/src/pages/clauseDetail/index.module.scss +++ /dev/null @@ -1,3 +0,0 @@ -.main { - padding: 0 20px 50px 20px; -} diff --git a/src/pages/clauseDetail/index.tsx b/src/pages/clauseDetail/index.tsx deleted file mode 100644 index aa4f5c0..0000000 --- a/src/pages/clauseDetail/index.tsx +++ /dev/null @@ -1,399 +0,0 @@ -import { RichText, View } from '@tarojs/components' -import Taro, { useRouter } from '@tarojs/taro' -import { useEffect } from 'react' -import styles from './index.module.scss' - -const ClauseDetail = () => { - const clause = ` -

版本更新日期:2022 年 2 月 10 日

-

版本生效日期:2023 年 2 月 11 日

-

本协议签订地:佛山市禅城区

-

重要须知:蜘蛛管家小程序及 APP 客户端(以下统称“蜘蛛管家平台”或“本平台”)所有权人及其关联方(下称“蜘蛛管家”)在此特别提醒您仔细阅读(未成年人应在其法定监护人的陪同下阅读)本《蜘蛛管家服务条款》(下称“本协议”)中的各个条款,尤其是以粗体并下划线标示的条款,包括但不限于免除或者限制蜘蛛管家责任的条款、对用户权利进行限制的条款以及约定争议解决方式、司法管辖的条款。您有权 选择同意或者不同意本协议。

-

您与蜘蛛管家均应当严格履行本协议及其补充协议所约定的各项义务,如发生争议或者纠纷,双方可以友好协商解决;协商不成的,任何一方均可向佛山互联网法院提起诉讼。本协议签订地为佛山市禅城区。

-

您如果通过登录蜘蛛管家平台用户注册页面或者蜘蛛管家提供的其他用户注册渠道注册用户账号,完成我们的注册流程并通过点击同意的形式在线签署以下协议即视为您完全同意本协议,愿意接受本协议所有及任何条款的约束。

-

1. 名词解释

-

    除您与蜘蛛管家另有约定外,本协议及其补充协议当中的下列名词均采用如下解释:

-

1.1 蜘蛛管家服务条款:即本协议,指您与蜘蛛管家当下订立的旨在约定您登录、使用本平台,以及通过本平台下达订单、购买商品、支付货款、收取商品等整个网购过程中,您与蜘蛛管家之间的权利、义务的书面合同。

-

1.2 蜘蛛管家平台:指蜘蛛管家享有全部知识产权、提供给您及其他用户登录和使用的蜘蛛管家网站及 小程序客户端。

-

1.3 商品:是销售商通过本平台向您推荐并进行销售的具体商品的统称。

-

1.4 销售商:通过本平台销售商品和提供服务的公司,根据销售主体的不同,区分为自营销售商及第三方销售商,自营销售商为蜘蛛管家公司,第三方销售商为入驻本平台的除蜘蛛管家外的第三方商家。

-

1.5 购物车:是模拟线下实体商店提供给顾客放置商品的“购物车”的一个概念,指本平台向您展示您已经下达订单、准备购买但尚未支付相应的购买价款的商品信息的网页区域, 又称“虚拟购物车”。

-

1.6 订单:指由本平台结帐程序生成的记录您通过本平台所购买的商品的名称、品牌、价款、折扣等交易信息的表格。这份文件将被用作所有可能发生的与您购买有关的询问、请求和争议的参考。

-

1.7 送货单:指销售商附录在您所订购的商品的包裹上的、供会员签收的商品销售凭证,送货单一般会简要地说明了对应包裹的每一件商品的名称和数量。

-

1.8 送货地址:指您或者其他用户通过本平台购买商品所要求的送货地址,如果没有特别说明,即为您填写的订单上所记载的送货地址。

-

1.9 用户账号:指您通过登录本平台或者蜘蛛管家提供其他的用户账号注册渠道,注册获得并可据以登录本平台的账号。

-

1.10 恶意评论:是指个人或组织对本平台、蜘蛛管家和/或销售商对外销售的商品没有兴趣,却组织人力或者采用计算机程序模拟正常用户在本平台上大规模发表用户评论,特别发表对本平台、蜘蛛管家或销售商对外销售的商品负面的评论乃至违反国家有关法律法规的评论。

-

1.11 蜘蛛管家平台规则:本平台在论坛、帮助中心内已经发布及后续发布的各类规则、实施细则、解读、产品流程说明、公告等。

-

2. 合同目的

-

本协议旨在约定您在登录、使用本平台,通过本平台购买商品的过程中,您与蜘蛛管家双方分别作为本协议的一方合同当事人所享有的权利和所负有的义务。

-

3. 用户账号

-

3.1 您确认,在您开始注册程序使用蜘蛛管家平台服务前,您应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力。 若您不具备前述与您行为相适应的民事行为能力,则您及您的监护人应依照法律 规定承担因此而造成的一切后果。

-

3.2 您可以通过登录本平台的用户账号注册页面注册用户账号并设置相应的登录密码,一经注册成功,您即可以凭借用户账号及登录密码登录及使用本平台。就目前而言,上述用户账号既可能是您的移动电话号码,也可能是您的个人邮箱账号。

-

3.3 您成功注册用户账号后,如果需要使用该用户账号从本平台购买商品的,至少还应当填写一个收货人、收货地址和手机号码。

-

3.4 蜘蛛管家平台只允许每位用户使用一个蜘蛛管家平台账户。如有证据证明或蜘蛛管家根据蜘蛛管家平台规则判断您存在不当注册或不当使用多个蜘蛛管家平台账户的情形,蜘蛛管家平台可以采取冻结或关闭账户、取消订单、拒绝提供服务等措施,如给蜘蛛管家平台及相关方造成损失的,您还应承担赔偿责任。

-

3.5 您务必妥善保管您的用户账号、登录密码、支付密码(如有)及您在其项下填写的所有个人信息。 账户因您主动泄露或因您遭受他人攻击、诈骗等行为导致的损失及后果,本平台并不承担责任,您应通过司 法、行政等救济途径向侵权行为人追偿。除本平台存在过错外, 您应对您账户项下的所有行为结果(包括但不限于在线签署各类协议、发布信息、购买商品及服务及披露信息等)负责。

-

3.6 为了防止您及其他用户的用户账号及其项下的个人信息泄露或者被他人窃取,蜘蛛管家可能会随时采取计算机病毒查杀技术、计算机加密技术等措施进行保护。对此,您完全同意并接受,但这并不能免除本协议第 3.5 条所述的、您对用户账号及其项下的个人信息所负有的妥善保管义务。

-

3.7 由于蜘蛛管家平台账户关联您的个人信息及平台商业信息,您的蜘蛛管家平台账户仅限您本人使用。仅当有法律明文规定、司法裁定或经本平台同意,您方能进行账户的转让。您的账户一经转让,该账户项下的权利义务一并转移。除此外,您的账户不得以任何方式转让,否则本平台有权追究您的违约责任,由此产生的一切责任由您承担。

-

3.8 您如果遗忘了密码或者密码被他人修改,您可以按照蜘蛛管家公布的账号及密码找回规则,通过蜘蛛管家提供的账号及密码找回系统程序进行找回,或者在第一时间联系蜘蛛管家的客服人员协助找回,但蜘蛛管家不保证一定可以找回。

-

3.9 您充分理解并完全同意:根据您的用户账号下的商品购买记录及其他相关信息,销售商如果发现或者合理怀疑您此前或者当次通过本平台或者蜘蛛管家提供的其他网购渠道购买的商品有出现并非用于个人消 费或者使用用途等在《违规订单处理规则》中列明情形的,对于您的这个用户账号的商品购买需求,销售商有权依据《违规订单处理规则》规定采取不予接受或取消交易并不予发货等措施,具体以《违规订单处理规则》公示内容为准。而且,蜘蛛管家视情况还有权冻结您的这个用户账号,使之无法通过本平台以及蜘蛛管家提供的其他网购渠道下达订单、购买商品。

-

3.10 作为一个蜘蛛管家的用户,您可以邀请任何一个您的亲情、同事加入本站。这样您就成为他们的邀请人。然而,假如您希望扩大邀请至您家庭成员、朋友、 同事等直系圈子以外的人,或者您希望把您的网站链接到本平台,您必须获取蜘蛛管家的预先许可。 在未取得蜘蛛管家事先的书面许可情况下,任何会员通过任何方式组织任何类型的大规模邀请计划,导致不符合前述条款的,将被禁止使用本平台,并且他的个人帐户将被取消。为了防止任何发动直系圈子以外的人自己成为会员的企图,最多两个不同的会员可以使用同一个住所地址。

-

3.11 商品描述与营销信息商品描述:除非销售商或者本平台另有说明,销售商出售的商品均为正宗的商品。蜘蛛管家直接与销售商合作开展各项营销活动,相关商品信息 均由销售商提供,蜘蛛管家尽可能根据所接收到的商品信息准确、详尽地描述每一件商品。然而,由于销售商所提供的商品不一定是准确、完整、可靠、有效和没有错误的,因此蜘蛛管家不能保证本平台所有商品的描述和其他相关内容是准确、完整、可靠、有效和没有错误的。 

-

4.2 营销信息:您一经注册用户账号,即视为您同意蜘蛛管家及/或其关联公司通过短信或者电子邮件的方式向您注册时填写的手机号码或者电子邮箱发送相应的商品广告信息、促销优惠等营销信息;您如果不同意发送,您可以通过相应的退订功能进行退订。

-

4. 商品价格

-

本平台上显示的所有价格都是以人民币为计价单位,包括所有的税费,但不包括运费。结帐之前运费不会自动计算包含在订单总价之内。在商品详情页面里您可以找到所有的相关信息,支付价格为下订单时的有效价格。

-

5. 订单

-

5.1 蜘蛛管家保留对单个商品的总出售数量进行限制、对单个订单的商品购买数量及同一 IP 地址对同类商品购买数量进行限制的权利。

-

5.2 根据您填写的订单信息,系统将会生成一份包含您的订单的所有必要信息的电子订单表格。在结帐的过程中,您将被邀请复查订购商品的信息、付款方式以及这些商 品的运输方式和费用。依据这些信息生成的最终订单表格被认为是该次交易的有效证据,这份文件被认为是所有的发货、问题、退货和争议事项的参考,所以您必须 非常仔细地复查这些信息并纠正一切可能的错误。点击“完成”意味着您认可订单表格中包含的所有信息都是正确和完整的。

-

5.3 如果您填写的收货人与用户本人不一致的,收货人的行为和意思表示视为您的行为和意思表示,您应对收货人的行为及意思表示的法律后果承担连带责任。

-

6. 取消订单

-

6.1 如您需修改订单请在下单后24小时内自助网上修改,如订单显示“订单已审核”将不能再进行修改。

-

6.2 您也可以选择取消订单,对反复的取消行为,我们可能会调查其原因,也可能会成为我们可能拒绝向您提供服务、冻结或关闭您的个人帐户的原因。

-

7. 合同成立

-

当您作为消费者为生活消费需要下单并支付货款的情况下,您货款支付成功后即视为您与销售商之间就已支付货款部分的订单成立合同关系。

-

8. 商品缺货

-

尽管销售商做出最大的努力,但由于市场变化及各种以合理商业努力难以控制因素的影响,无法避免的会出现您提交的订单信息中的商品出现缺货、价格标示错误等情况;如您下单所购买的商品出现以上情况,造成了重大误解,您有权取消订单,销售商亦有权自行取消订单,若您已经付款,则将为您办理退款。

-

 10.配送服务

-

您所订购的商品有两种配送方式:(1)由蜘蛛管家选择具有运输服务资质的公司为您提供运输代理服务;(2)由用户选择具有提供运输服务资质的公司为您提供运输代理服务。

-

11. 交付

-

11.1 您所订购的商品将被送至订单表格上注明的送货地址。无论什么原因商品不能送达到送货地址的,销售商将会尽快跟您取得联系。假如从销售商第一次试图跟您联系之日 7 天内您没有提供答复,我们将取消该订单。

-

11.2 在您收到订购商品时,您书面签收或以其他合法方式与配送公司确认签收的则证明您收到了完好状态的商品。如果包装出现破损,请您拒收。

-

11.3 您在本平台购买的商品由配送公司(包括顺丰物流等)为您完成订单交付的,系统或者单据记录的签收时间为交付时间;您购买的商品采用在线传输方式交付的,销售商向您指定系统发送的时间为交付时间;您购买服务的,生成的电子或者实物凭证中载明的时间为交付时间。

-

11.4 如果送货单中的商品列表与您的订单表格中所记录的不同,或者您收到的商品与送货单中的商品列表不符,您可以按照本平台对外公布且正在实施的退货政策及退货程序,将相应的商品退回销售商。

-

12. 退回订单

-

12.1 如果您对您通过本平台所订购的商品不符合特殊要求,您可以退回所有或部分商品。已经收取到的被退回的商品的价款,销售商将扣除退部分费后之后将相应的余额返还给您(不含运费)。您在下达的订单如果使用了代金券的,蜘蛛管家亦将会按照相应的活动规则进行返还。

-

12.2 您如果需要退货的,请务必于收到商品之日起14 天内,按照不影响商品正常使用及再次销售的原则,将您需要退货的商品及其包装、赠品、送货单、税务发票(如有)等送货时一并交付给您的物品和资料,全部完好无损地退回销售商。否则,我们有权不予退货。除有相反的证据外,退货的日期以销售商收到的包裹上显示的寄出邮戳所显示的日期为准。对于某些商品,如在商品详情页面及有关退货政策中已提示该类商品不予以退货的,您的下达订单行为将被视为您已同意接受平台对此类商品不予退货的安排。

-

12.3 销售商有权拒绝不符合蜘蛛管家对外公布实施的退货政策所规定的条件的所有退货。仅当销售商确认以上规定的这些条款得到了适时的遵从后,才会启动返还货款金额的程序。收到退货后14天内,所有的退款均遵循退换货政策操作。一旦实现退款,您将收到一封确认和终止程序的站内信息。

-

12.4 如果您的退货与上述退货规定不符,您将没有资格得到任何退款。不过,您仍有资格自行支付费用(包括运费)以便接收已经退回到销售商的商品。如果您不想接收已经退回到销售商的商品,销售商有权保有这些商品并保留已经收到的金额。

-

13. 商品保证

-

本平台所展示的商品完全符合中华人民共和国的相关法律法规的规定。蜘蛛管家为了保障消费者合法权益,特在中国人民财产保险股份有限公司为蜘蛛管家售卖的商品进行了投保。如果您对在本平台所购买的商品品牌存在疑问,请及时联系蜘蛛管家在线客服,并提供订单信息,蜘蛛管家将帮助您进行全面调查。

-

14. 知识产权

-

14.1 蜘蛛管家对本平台的内容享有全部知识产权,包括但不限于:编码、商标、服务标志、商号、图形、美术品、照片、肖像、文字内容、音频片断、按钮图标、购买评价以及计算机软件、标识、数码下载、数据汇编都是蜘蛛管家或其内容提供者的财产,受到中华人民共和国知识产权相关法律法规的保护。您对其仅享有本协议约定范围内的临时的、可撤销的非专有使用权。

-

14.2 您仅在符合本平台使用目的的前提下被许可浏览和使用本平台,即以个人名义浏览信息和购买供个人使用商品的目的。其他方式的使用都是被严格禁止的,包括但不限于以下方式:复制、修改、销售、传送、再版、删除、添加、展览、记入或演示本平台的内容或以其他方式部分地或整体地非法使用本平台的内容,但经蜘蛛管家允许将本平台当中的资讯转发至微信朋友圈等第三方媒体的除外。

-

15. 用户守则

-

15.1 本平台与其他在线使用的互联网网站一样,您如果需要进行下载、安装、运行、登录或者使用,您至少必须自备一部可供上网的智能移动终端,并确保其能够通过互联网与本平台服务器软件进行实时的信息(即电子数据)交互,相应的上网流量费等相关费用由您自行承担。除非另有说明,蜘蛛管家存储在其服务器上的数据是蜘蛛管家和其会员之间交易的唯一有效证据。

-

15.2 本平台目前免费使用,蜘蛛管家有权对本平台进行升级及更新,自行设置收费的软件功能、费率标准、收费对象及/或收费时段。您如果不同意蜘蛛管家设置的软件功能、费率标准、收费对象及/或收费时段的,则应当立即停止使用本平台;您如果继续使用的,则视为您接受蜘蛛管家的上述设置,您应当遵照履行并向蜘蛛管家支付相应的费用。您不得进行任何侵犯本平台知识产权的行为,或者进行其他的有损于蜘蛛管家或其他用户合法权益的行为,包括但不限于:

-

(1) 删除或修改本平台上的版权信息;

-

(2) 修改、复制和/或发行本平台;

-

(3) 在本平台当中内置各种插件程序或者其他的第三方程序;

-

(4) 进行编译、反编译、反向工程或者以其他方式破解本平台的行为;

-

(5) 使用本平台外挂和/或利用本平台当中的 BUG 来获得不正当的利益;

-

(6) 利用劫持域名服务器等技术非法侵入、破坏本平台的服务器软件系统,或者修改、增加、删除、窃取、截留、替换、抓取本平台的客户端和/或服务器软件系统中的数据,或者非法挤占本平台的服务器空间,或者实施其他的使之超负荷运行的行为;

-

(7) 假冒蜘蛛管家或签约商家在本平台当中发布任何诈骗或虚假信息;

-

(8) 利用本平台故意传播恶意程序或计算机病毒。

-

15.3 您充分理解到:蜘蛛管家可能会不定期地通过发布软件升级包或软件补丁、在线升级等方式对本平台进行更新。更新的过程中,蜘蛛管家可能通过互联网调取、收集您的 PC 端终端上的关于本平台的客户端软件版本信息、数据及其他有关资料,并自动进行替换、修改、删除和/或补充。此种行为是平台更新所必须的一种操作或步 骤,您如果不同意蜘蛛管家进行此种操作,请您不要进行更新;您更新的行为即视为您同意蜘蛛管家进行此种操作。

-

15.4 您有权在本平台当中发表评论,转发或者回复其他用户的评论,但您应确保评论真实、客观且不会侵犯任何第三方的著作权、肖像权、名誉权、隐私权等合法权利。而且,您不得借助本平台用户评论功能发布任何广告。

-

15.5 您应当遵守国家有关法律法规,不得在本平台当中发表、转发或者传播含有下列内容的信息:

-

(1) 反对宪法所确定的基本原则的;

-

(2) 危害国家安全、泄露国家秘密、颠覆国家政权、破坏国家统一的;

-

(3) 损害国家荣誉和利益的;

-

(4) 煽动民族仇恨、民族歧视,破坏民族团结的;

-

(5) 破坏国家宗教政策,宣扬邪教和封建迷信的;

-

(6) 散布谣言,扰乱社会秩序,破坏社会稳定的;

-

(7) 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;

-

(8) 侮辱或者诽谤他人,侵害他人合法权益的;

-

(9) 含有法律、行政法规禁止的其他内容的。

-

15.6 您充分理解并完全同意:对您在本平台当中发表、转发或者传播的评论及其内容,包括但不限于视频、照片、文字内容,不论是否属于著作权法意义上的作品,蜘蛛管家均享有永久的、无期限及地域限制的、完全免费的使用权。而且,对于上述评论和/或内容,蜘蛛管家还享有下列各项权利,且实际行使时无须另行征得您的同意:

-

(1) 有权对其进行修改、编辑、汇编、改编、分发或者以其他的方式进行使用;

-

(2) 既有权使用其全部内容,也有权使用其中的某一部分或某几部分内容;

-

(3) 有权将其许可给任何第三方使用,被许可的第三方征得蜘蛛管家同意后,既可以将其使用于蜘蛛管家网站和/或其 App 等蜘蛛管家自有网络平台,也可以将其使用于被许可的第三方自有的网络平台。

-

(4) 有权单独以自己的名义,对未经蜘蛛管家许可而擅自使用上述评论和/或内容的第三方进行取证、证据保全、公证、提起诉讼和/或依法采取其他合法措施,以追究其法律责任。

-

15.7 个人账户是蜘蛛管家授权您使用蜘蛛管家平台用户管理系统的唯一凭证。蜘蛛管家所提供的代金券、积分、折扣、推送等服务和优惠均通过用户管理系统发放,并且仅提供给获得授权的用户个人使用。您同意在符合法律法规及本条款规定的情况下使用个人帐户,蜘蛛管家有可能在某些情况(包括但不限于您违反有关法律法规规定或本协议和/或其它公开规则,或者您严重违背社会公德、提供虚假注册身份信息、经蜘蛛管家判定认为存在恶意退货或不合常理的高退拒率等情形、或其他损害或经本平台判定认为可能损害蜘蛛管家利益的不正当行为等)下暂时冻结、永久冻结、修改、 删除您的个人账户或者采取其他处理措施。特别地,您了解并同意,蜘蛛管家用户管理系统中个人帐户、积分、代金券等互联网产品及服务所有权归属蜘蛛管家,会员在满足蜘蛛管家公布的规则的前提下有权使用上述产品及服务。非经蜘蛛管家同意,您不得将蜘蛛管家各项产品及服务用于商业用途(例如:销售蜘蛛管家个人帐 户、销售个人帐户下积分、代金券等)。在使用蜘蛛管家服务过程中,如果您或您的个人帐户刻意规避蜘蛛管家管理措施,或存在涉嫌欺诈、商业牟利、不恰当 或不诚实地使用服务或者其他违反本协议和/或其他公开规则的行为(包括但不限于使用作弊软件获取积分或代金券及、贩卖个人帐号、积分或 代金券及、盗号、协助盗号、非用于个人或家庭的合理消费等),蜘蛛管家有权拒绝为您继续提供服务,永久冻结您的个人帐户,并根据具体情况并有权对该等个人帐号中因上述手段而产生、获得的一切虚拟产品予以清零。

-

15.8 如您的行为使蜘蛛管家及/或其关联公司遭受损失(包括自身的直接经济损失、商誉损失及对外支付的赔偿金、和解款、律师费、诉讼费等间接经济损失),您应赔偿蜘蛛管家及/或其关联公司的上述全部损失。 如您的行为使蜘蛛管家及/或其关联公司遭受第三人主张权利,蜘蛛管家及/或其关联公司可在对第三人承担金钱给付等义务后就全部损失向您追偿。如因您的行为使得第三人遭受损失,蜘蛛管家及/或其关联公司出于社会公共利益保护或消费者权益保护的,可自您的任何蜘蛛管家账户中划扣相应款项进行支付。

-

15.9 您充分理解并完全同意,本平台提供的均为数量有限且面向不特定用户的商品或服务,作为完全民 事行为能力人,您在使用本平台进行订购商品或服务时,应尽基本的审慎注意义务,并合理使用您的合法权益,若您存在滥用自身权利、违反诚实信用原则等不当行为,可能会使其他用户的合理订购需求得不到满足,并不合理地增加本平台与其他用户的缔约和履约成本。则蜘蛛管家有权根据《违规订单处理规则》等公示的平台规则对您的不当行为进行处理。

-

16. 免责声明

-

16.1 关于本平台的免责声明

-

16.1.1 本平台与其他的在线使用的互联网网站一样,也会受到各种不良信息、网络安全和网络故障问题的困扰,包括但不限于:

-

(1) 其他用户可能会发布诈骗或虚假信息,或者发表有谩骂、诅咒、诋毁、攻击内容的,或者含有淫秽、色情、下流、反动、煽动民族仇恨等让人反感、厌恶的内容的非法言论;

-

(2) 其他用户可能会发布一些侵犯您或者其他第三方知识产权、肖像权、姓名权、名誉权、隐私权和/或其他合法权益的图片、照片、文字等资料;

-

(3) 面临着诸如黑客攻击、计算机病毒困扰、系统崩溃、网络掉线、网速缓慢、程序漏洞等问题的困扰和威胁。

-

16.1.2 您充分理解到:本协议第 16.1.1 条所述的各种不良信息、网络安全和网络故障问题,并不是蜘蛛管家或者本平台所导致的问题,给您造成的任何损失,概由您自行承担,蜘蛛管家无须向您承担任何责任。

-

16.1.3 您完全同意:除法律法规规定或者您与蜘蛛管家约定须提前通知的以外,蜘蛛管家有权单方面地中止或者终止本平台所提供的服务而无须提前通知您。该等中止、终止,可能是因为国家法律、法规、政策及国家机关的命令或者 其他的诸如地震、火灾、海啸、台风、罢工、战争等不可抗力事件,还可能是因为您违反本协议第 15.3 条、第 15.5 条和/或第 15.6 条所约定的用户守则。

-

16.2 关于商品销售的免责声明

-

16.2.1 由于用不同手机终端设备观看时页面显示的差异,蜘蛛管家上促销的商品在图像和颜色方面可能跟真实的物品不尽一致。因此,所有显示的图片、视频和其他商品显示方法仅限于图示目的,在任何情况下不认为是合同的组成部分。假如供出售的商品跟网站上的描述不同,对您唯一的补救措施是根据本协议在没有使用的情况下退回该商品。

-

16.2.2 销售商保留根据市场价格波动随时修改上线商品价格的权利而无须事先通知您。在由于排版错误或销售商提供价格信息错误的情况下以不正确的价格列出来的商品,如果造成了重大误解,销售商有拒绝或取消任何对以不正确的价格列出来的商品所下订单的权利。

-

16.2.3 由于合理的或不可避免的送货延迟对您或第三方带来的任何损失,蜘蛛管家不负任何责任。在这种情况下,蜘蛛管家将尽快地把任何可预知的延迟情况通知您,并在此时请您选择是否取消订单。

-

16.2.4 蜘蛛管家上面陈列的货物完全符合中华人民共和国的相关法律法规的规定。蜘蛛管家直接与销售商合作,他们保证其商品是正宗的。您在本平台上找到的所有商品及商品描述均由销售商提供,仅由他们对其真实 性负责。您应该系统性地参照货物描述找出他们的特征,对于任何种类的直接或 间接的、实质或非实质的 由于商品的使用造成的损失,蜘蛛管家概不负责。

-

17. 个人信息保护

-

17.1 蜘蛛管家可能通过本平台 在您自愿选择服务或提供信息的情况下收集您的个人信息(简称“个人信息”),例如您的姓名、邮件地址、电话号码及其他身份信息等。我们有可能会保留一些用 户的使用习惯信息,用于更好地了解和服务于用户。这些数据将有利于我们开发出更符合用户需求的功能、信息和服务。

-

17.2 蜘蛛管家通过本平台可能会收集一些特定的关于您所使用的机器的技术信息,可能会包括:IP 地址、操作系统版本、浏览器版本、显示器分辨率、推荐网站等。这些信息将用于提供更好的用户使用体验,提供更方便的服务。

-

蜘蛛管家希望通过隐私权政策向您清楚地介绍蜘蛛管家对您个人信息的处理方式,因此建议您完整地阅读隐私权政策(点击此处),以帮助您更好地保护您的隐私权。

-

17.3 蜘蛛管家非常重视保护您的蜘蛛管家账号及密码、电话号码、地理位置、智能移动终端品牌及型号等个人信息,未经您同意,蜘蛛管家不会将其披露给无关的第三方,更不会将其公之于众,但因下列原因而披露给第三方的除外:

-

(1) 基于国家法律法规的规定而对外披露;

-

(2) 应国家司法机关、行政监管机关及其他有关机关基于法定程序的要求而披露;

-

(3) 为保护蜘蛛管家或您的合法权益而披露;

-

(4) 在紧急情况,为保护其他用户及第三方人身安全而披露;

-

(5) 经您本人同意或应您的要求而披露。

-

17.4 蜘蛛管家将使用各种安全技术和程序防止您及其他用户个人信息的丢失、不当使用、未经授权阅览或披露。但您充分理解到:由于技术的限制以及可能存在的各种恶意手段,在互联网行业,即便竭尽所能加强安全措施,也不可能始终保证信息百分之百的安全。

-

18. 通知与送达

-

18.1 联系方式

-

您在注册成为蜘蛛管家平台用户,并接受蜘蛛管家平台服务时,您应该向蜘蛛管家提供真实有效的联系方式(包括您的电子邮件地址、联系电话、联系地址等),对于联系方式发生变更的,您有义务及时更新有关信息,并保持可被联系的状态。

-

您在注册蜘蛛管家平台用户时生成的用于登陆蜘蛛管家平台接收站内信、系统消息的会员账号(包括子账号),也作为您的有效联系方式。

-

蜘蛛管家将向您的上述联系方式的其中之一或其中若干向您送达各类通知,而此类通知的内容可能对您的权利义务产生重大的有利或不利影响,请您务必及时关注。

-

18.2 送达

-

蜘蛛管家通过上述联系方式向您发出通知,其中以电子的方式发出的书面通知,包括但不限于在蜘蛛管家平台公告,向您提供的联系电话发送手机短信,向您提供的电子邮件地址发送电子邮件,向您的账号发送系统消息以及站内信信息,在发送成功后即视为送达;以纸质载体发出的书面通知,按照提供联系地址交邮后的第五个自然日即视为送达。

-

对于在蜘蛛管家平台上因交易活动引起的任何纠纷,您同意司法机关(包括但不限于人民法院)可以通过手机短信、电子邮件等现代通讯方式或邮寄方式向您送达法律文书(包括但不限于诉讼文书)。您指定接收法律文书的手机号码、电子邮箱等联系方式为您在蜘蛛管家平台注册、更新时提供的手机号码、电子邮箱联系方式,司法机关向上述联系方式发出法律文书即视为送达。您指定的邮寄地址为您的法定联系地址或您提供的有效联系地址。

-

您同意司法机关可采取以上一种或多种送达方式向您达法律文书,司法机关采取多种方式向您送达法律文书,送达时间以上述送达方式中最先送达的为准。

-

您同意上述送达方式适用于各个司法程序阶段。如进入诉讼程序的,包括但不限于一审、二审、再审、执行以及督促程序等。

-

你应当保证所提供的联系方式是准确、有效的,并进行实时更新。如果因提供的联系方式不确切,或不及时告知变更后的联系方式,使法律文书无法送达或未及时送达,由您自行承担由此可能产生的法律后果。

-

19. 其他约定

-

19.1 蜘蛛管家保留随时地不需要任何理由地、单方面地修订本协议的权利。本协议一经修订即完全替代修订前的协议版本,并通过适当的方式向所有用户公开征求意见,您可以通过本平台或本平台指定的方式反馈您的意见。您应当及时关注和了解本协议的修订情况,如果您不同意修订后协议版本,请您立即停止使用本平台,否则即视同您同意并完全接受修订后的协议版本。

-

19.2 蜘蛛管家有可能以消费者告知书、买家须知、温馨提示等形式,向您说明您在使用本平台购买商品时应

-

当履行的本协议所约定的义务之外的其他义务,您亦应当仔细阅 读并全面履行。上述说明如果与本协议相互冲突或者矛盾的,以上述约定为准;上述约定未涉及的内容,仍适用本协议。

-

19.3 本协议各条款是可分的,所约定的任何条款如果部分或者全部无效,不影响该条款其他部分及本协议其他条款的法律效力。

-

19.4 本协议各条款的标题只是为了方便用户阅读而起到提示、醒目的作用,对本协议的解释及适用没有任何指引作用。

-

19.5 蜘蛛管家基于本协议及其补充协议的有效弃权必须是书面的,并且该弃权不能产生连带的相同或者类似的弃权。

-

19.6 由于互联网高速发展,您与蜘蛛管家签署的本协议列明的条款并不能完整罗列并覆盖您与蜘蛛管家所有权利与义务,现有的约定也不能保证完全符合未来发展的需求。因此,蜘蛛管家平台隐私权政策、蜘蛛管家平台 规则均为本协议的补充协议,与本协议不可分割且具有同等法律效力。如您使用蜘蛛管家平台服务,视为您同意上述补充协议。

-

19.7 您与蜘蛛管家均应当严格履行本协议及其补充协议所约定的各项义务,如发生争议或者纠纷,双方可以友好协商解决;协商不成的,任何一方均可向佛山互联网法院提起诉讼。

-

19.8 本协议及其补充协议签订地为广东省佛山市禅城区,均受中华人民共和国法律、法规管辖。

-

 

` - - const policy = ` -

蜘蛛管家基本功能隐私政策

-

简介及提示

-

【特别提示条款】

-

您的信任对佛山市浩川长盛科技有限公司(“我们”)开发运营的蜘蛛管家非常重要,我们深知个人信息对您的重要性,我们将按照法律法规要求,采取相应安全保护措施,尽力保护您的个人信息。您在使用我们的产品与/或服务前,请您务必先仔细阅读和理解《蜘蛛管家基本功能隐私政策》(“本隐私政策”),特别应重点阅读我们以粗体标识的条款,确保您充分理解和同意后再开始使用。我们希望通过本隐私政策向您说明我们在您使用我们的产品与/或服务时如何收集、使用、保存、共享和转让这些信息,以及我们为您提供的访问、更新、删除和保护这些信息的方式。如您阅读过程中有任何疑问,可通过本隐私政策中的联系方式咨询我们。

-

您同意基本功能隐私政策表示您已了解应用提供的基本功能及其运行所需的必要个人信息,并同意

-

相应的收集使用,但并不代表您已单独同意开启拓展功能、处理非必要个人信息,相关拓展功能的开启、处理非必要个人信息以及处理敏感个人信息,我们会根据您的实际使用情况单独征求您的同意。

- -

【版本更新日期】:2023  年【02】月【10】日

-

【版本生效日期】:2023  年【02】月【11】日

-

《蜘蛛管家基本功能隐私政策》

-

【定义及适用范围】

-

一、本隐私政策与您所使用的蜘蛛管家网站、客户端、小程序以及随技术发展出现的新形态向您提供的各项产品和服务(以下统称“我们的产品与/或服务”)息息相关,希望您在使用我们的产品与/或服务前仔细阅读并确认您已经充分理解本政策所写明的内容,据此您可以按照本隐私政策的指引做出您认为

-

适当的选择。本隐私政策适用于我们的产品与/或服务的最新版本。如我们关联公司的产品或服务中使用了蜘蛛管家提供的产品或服务但未设置独立隐私政策的,则本隐私政策同样适用于该部分产品或服务。

-

二、本隐私政策所称的关联公司是指:一方直接或间接控制、共同控制另一方,以及两方或两方以上受同一主体控制、共同控制的公司。前述“控制”是指,直接或间接拥有的权力,从而通过行使表决权、合同或其他方式决定或影响某一方的管理或决策方向。

-

三、本隐私政策中涉及的相关术语,我们尽量以简明扼要的表述,并提供进一步说明的链接,以便您更好地理解。您使用或在我们更新本隐私政策后(我们会及时提示您更新的情况)继续使用我们的产品与/或服务,即意味着您同意本隐私政策(含更新版本)内容,并且同意我们按照本隐私政策收集、使用、保存和共享您的相关信息。

- -

本隐私政策将帮助您了解以下内容:

- -

一、我们如何收集和使用您的个人信息二、我们如何使用 Cookie 和同类技术

-

三、我们如何共享、委托处理、转让、公开披露您的个人信息四、我们如何保护和保存您的个人信息

-

五、您如何管理您的个人信息

-

六、我们如何处理未成年人的个人信息七、您的个人信息如何在全球范围转移

- -

八、通知和修订 九、如何联系我们

- -

一、我们如何收集和使用您的个人信息

- -

我们将遵循合法、正当、必要和诚信原则,在本政策范围内收集和使用您的个人信息:

- -

(一)为实现基本功能所收集和使用您个人信息的情形

-

我们的产品与/或服务类型为“网上购物”,基本功能为“购买商品或服务”, 为实现向您提供我们的产品与/或服务的基本功能,我们会收集、使用和保存与您相关的必要个人信息。如果您拒绝提供相应信息,您将无法正常使用我们的产品与/或服务。实现网上购物基本功能的各项场景如下:

- -

1、注册用户

-

为成为我们的用户,以便我们为您提供会员服务,您需要提供手机号码,并创建用户名和密码。您使用第三方账号注册成为我们的会员或者登录会员的,仍需要您提供手机号码,用于创建蜘蛛管家账户或绑定您已有的蜘蛛管家账户。我们将通过发送短信验证码的方式来验证您的身份是否有效,通过 SIM 卡信息识别并显示对应的运营商。如果您仅需使用展示商品或服务基本功能,您不需要注册成为我们的会员及提供上述信息。

- -

2、展示商品或服务

-

基于确保在联网状态下向您提供适配的页面展示,保障商品或服务页面正常展示以及兼容性的需要,我们会根据您在软件安装及使用中主动授予的具体权限,收集并记录您所使用的设备信息【设备名称、设备型号、操作系统和应用程序版本、语言设置、分辨率、唯一设备识别码(IDFA/ OAID/Android ID 信息,以您所使用的设备及操作系统所支持的识别码为准)、运营商网络类型、设备状态、网络状态】。

-

(1) 浏览

-

当您浏览商品或服务时,您可以选择对感兴趣的面料、色卡等内容进行点击/收藏/添加/分享/购买等操作,我们会收集您的操作记录用于实现前述功能及其他我们明确告知的目的。

-

(2) 搜索

-

当您使用搜索功能时,我们会收集您的搜索记录,包括搜索内容(搜索词)、浏览记录/时间、搜索时间/次数,并向您展示搜索历史记录。

-

(3) 个性化推荐

-

为帮助您快速找到您所需要的商品和服务,将您感兴趣的商品或服务信息展示给您,或在您搜索时向您展示您可能希望找到的商品,我们会收集和使用您的设备信息和日志信息(包括您的搜索记录、浏览记 录、订单信息、关注收藏及分享信息、IP 地址、浏览器类型、访问日期和时间及您访问的网页记录),结合您的个人资料以及其他您已授权的信息预测您的偏好特征,向您推送您可能感兴趣的商品/服务、商业广

-

告、商业性短信及其他营销信息。上述做法可能会对您的商品浏览页面展示、商品搜索页面排序、商品推荐页面展示产生影响。

-

如果您不希望受个性化内容以及商业广告的影响,您可以通过如下方式保障您的体验:

-

①如果您不想接受我们给您发送的商业短信/智能语音外呼服务,您可随时根据短信提示或我们提供的其他方式进行退订;

-

②您可以通过长按被推荐的商品或服务图片,根据提示弹窗选择屏蔽相关商品或服务类目;

-

③您可以在商品展示页选择按照分类进行浏览和查找商品和服务,我们还在搜索结果中向您提供了按照价格、销量排序等不针对个人特征的选项;

- -

3、下单及交付

-

当您准备对您购物车/购物袋内的商品进行结算时,蜘蛛管家系统会生成您购买该商品的订单。您需要在订单中至少填写您的收货人姓名、收货地址以及手机号码,同时该订单中会载明订单号、您所购买的商品或服务信息、您应支付的货款金额和支付方式及时间。

-

上述所有信息构成您的“订单信息”,我们将使用您的订单信息来进行您的身份核验、确定交易、支付结算、完成配送、为您查询订单以及提供客服咨询与售后服务。

-

如果我们委托第三方向您交付,您知晓并同意相应第三方获知及使用您的上述信息,用于完成交付目

-

的。如果您在订单生成后修改了上述信息,您同意蜘蛛管家和第三方均能获知及使用上述信息。如果您拒绝提供或者不同意共享此类信息,我们将无法完成相关交付服务。如果您在订单生成后更改了“订单信息”,包括入线物流承运商更改等,您同意第三方将您修改后的“订单信息”完整的共享给我们。

-

您可以通过蜘蛛管家为其他人订购商品或服务,您需要提供该实际订购人的前述个人信息。向蜘蛛管家提供该实际订购人的前述个人信息之前,您需确保您已经取得其授权同意。

- -

4、支付

-

在您下单后,您可以选择与蜘蛛管家的关联方(招商支付)或合作的第三方支付机构(包括支付宝、微信支付, 以下统称“支付机构”)所提供的支付服务。我们需要将您的订单号与交易金额信息与这些支付机构共享以实现其确认您的支付指令并完成支付。在您使用支付功能时,支付机构会通过其页面收集或验证您的银行卡(含储蓄卡、信用卡)及其他支付必要信息,以实现其确认您的支付指令并完成支付,具体适用各支付机构相应的隐私政策及相关用户服务协议。在您完成订单支付后,支付机构将向我们共享您的支付时间、支付金额、支付渠道、支付号、支付方式,以帮助我们确认您是否已经付款。

- -

5、客服与售后功能

-

我们的电话客服和售后功能会使用您的账号信息和订单信息。为保证您的账号安全,我们的呼叫中心客服和在线客服会使用您的账号信息与您核验您的身份。当您需要我们提供与您订单信息相关的客服与售后服务时,我们将会查询您的订单信息。您有可能会在与我们的客服人员沟通时,提供给出上述信息外的

-

其他信息,如当您要求我们变更配送地址、联系人或联系电话。您也可以通过我们提供自助方式进行操作

-

退换货申请、上门取货等服务,届时可能需要您提供寄件人信息(包括收货人姓名、联系方式、地址) 。

- -

6、为您提供安全保障

-

为履行保障网络安全与电子商务交易安全的法定义务,提高我们产品或服务的安全性,识别违反法律法规或蜘蛛管家相关协议规则的情况,我们可能收集您的设备信息(设备型号、运行中的进程信息、Android ID/OAID、操作系统及软件版本、设备状态、网络状况、电池使用情况)、设备网络环境信息【IP 地址、WiFi 信息(bssid、ssid)、蓝牙信息、设备传感器、基站信息】,并使用或整合您的会员信息、日志信息以及我们关联公司、合作伙伴取得您授权或依据法律共享的信息,来识别是否为真实自然人用户、是否为异常地点登录、综合判断您账户及交易风险、进行身份验证、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施。

- -

(二)您个人信息使用的规则

- -

1、我们会根据本隐私政策的约定并为实现我们的产品与/或服务功能对所收集的个人信息进行使用。

- -

2、在收集您的个人信息后,我们会通过技术手段对您的个人信息进行去标识化处理。

- -

3、请您注意,您在使用我们的产品与/或服务时所提供的所有个人信息,除非您删除或通过系统设置拒绝我们收集,否则将在您使用我们的产品与/或服务期间持续授权我们使用。

- -

4、我们会对我们的产品与/或服务使用情况进行统计,并可能会与公众或第三方共享这些统计信息,以展示我们的产品与/或服务的整体使用趋势,但这些统计信息不包含您的任何身份识别信息。

- -

5、当我们展示您的个人信息时,我们会采用包括内容替换、匿名处理方式对您的信息进行脱敏,以保护您的信息安全。

- -

6、当我们要将您的个人信息用于本政策未载明的其它用途时,或基于特定目的收集而来的信息用于其他目的时,会通过您主动做出勾选的形式事先征求您的同意。请您理解,我们向您提供的产品与/或服务将不断更新变化。如果您选择使用本隐私政策中尚未列明的其他产品与/或服务时,我们会在收集您的个人信息前通过协议、页面提示等方式向您详细说明信息收集的目的、方式、范围并征求您的同意。若您不同意提供前述信息,您可能无法使用该项产品与/或服务,但不影响您使用现有产品与/或服务。

- -

二、我们如何使用 Cookie 和同类技术

- -

(一)Cookie

- -

1、为确保网站正常运转,为您获得更轻松的访问体验,向您推荐您可能感兴趣的内容,我们会在您的计算机或移动设备上储存名为 Cookie 的小数据文件,Cookie 通常包含标识符、站点名称以及一些号码和字符。借助于 Cookie,网站能够储存您的偏好或购物车/购物袋内的商品等数据。

-

2、您可根据自己的偏好管理或删除 Cookie。您可以清除计算机上保存的所有 Cookie,大部分网络浏览器都设有阻止 Cookie 的功能。但如果您这么做,则需要在每一次访问我们的网站时更改用户设置,也可能导致部分功能无法正常使用。如需了解如何更改浏览器设置,请访问您使用的浏览器的相关设置页面。

- -

(二)网站信标和像素标签

- -

除 Cookie 外,我们还会在网站上使用网站信标和像素标签等其他同类技术。例如,我们向您发送的电子邮件可能含有链接至我们网站内容的地址链接,如果您点击该链接,我们则会跟踪此次点击,帮助我们了解您的产品或服务偏好以便于我们主动改善客户服务体验。网站信标通常是一种嵌入到网站或电子邮件中的透明图像。借助于电子邮件中的像素标签,我们能够获知电子邮件是否被打开。如果您不希望自己的活动以这种方式被追踪,可以随时从我们的寄信名单中退订。

- -

(三)第三方 SDK、插件

-

为保障我们的产品与/或服务稳定运行以及您能够充分享受和使用我们的产品与/或服务的必需、附加功能,我们的应用中会嵌入授权合作伙伴的 SDK 或其他类似的应用程序。我们会对授权合作伙伴获取有关信息的应用程序接口(API)、软件工具开发包(SDK)进行严格的安全检测,并对关键的第三方执行信息安全审计,以验证第三方的个人信息安全保护措施是否满足蜘蛛管家的相关要求。我们接入的授权合作伙伴所使用的 SDK 请参见此处《第三方 SDK 收集个人信息清单》。对于微信小程序所使用的插件,您可以通过进入小程序,依次点击右上角“...”符号--左下角的小程序名称--“更多资料”,来查看服务商信息。

- -

三、我们如何共享、委托处理、转让、公开披露您的个人信息

- -

(一)共享

- -

1、我们不会与蜘蛛管家以外的任何公司、组织和个人共享您的个人信息,但以下情况除外:

-

(1) 在获取单独同意的情况下共享:获得您的单独同意后,我们会与其他方共享您的个人信息。

-

(2) 根据适用的法律法规、法律程序的要求、强制性的行政或司法要求所必须的情况下进行共享。

- -

2、基于向您完整提供我们的产品和服务的需要,我们可能会将您的个人信息与我们的关联方或关联产品共享,但我们只会共享必要的个人信息,且受本隐私政策中所声明范围和目的的约束。我们的关联方或关联产品如要改变个人信息的处理目的、范围,将再次征求您的授权同意。

- -

3、与授权合作伙伴共享:仅为实现本隐私政策中声明的目的,我们的某些服务将由我们和授权合作伙伴共同提供。我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们的合作伙伴无权将共享的个人信息用于与产品或服务无关的其他用途。对于我们与合作伙伴的共享,我们会与其签署严格的数据处理协议,要求其履行信息安全保障义务。我们将您的个人信息所共享的第三方主体、内容及目的请参见此处《与第三方共享个人信息基本情况》。

- -

4、为了遵守法律、执行或适用我们的使用条件和其他协议,或者为了保护蜘蛛管家、您或其他蜘蛛管家用户的权利及其财产或安全,比如为防止欺诈等违法活动和减少信用风险,而与其他公司和组织交换信息。不过,这并不包括违反本隐私政策中所作的承诺而为获利目的出售、出租、共享或以其它方式披露的个人信息。

- -

5、对我们与之共享个人信息的公司、组织和个人,我们会与其签署严格的保密协定,要求他们按照我们的说明、本隐私政策以及其他任何相关的保密和安全措施来处理个人信息。在敏感个人信息使用上,我们要求第三方采用数据脱敏和加密技术,从而更好地保护用户个人信息。

- -

(二)委托处理

- -

我们可能委托授权合作伙伴处理您的个人信息,以便向您提供相应的产品或服务。但我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会委托处理提供产品或服务所必要的个人信息。我们的合作伙伴无权将委托处理的个人信息用于任何其他用途,如果其将您的个人信息用于我们未

-

委托的用途,将单独征得您的同意。对于我们委托处理合作伙伴,我们会与其签署严格的数据处理协议,要求其履行信息安全保障义务。我们的合作伙伴包括以下类型:

- -

1、商品或技术服务的供应商。我们可能会将您的个人信息委托处理给支持我们功能的第三方。这些支持包括为我们的供货或提供基础设施技术服务、物流配送服务、支付服务、数据处理等。我们委托处理这些信息的目的是可以实现我们产品与/或服务的功能,比如我们必须与物流服务提供商委托处理您的订单信息才能安排送货(您可以通过“我的订单”—“订单详情”实时查阅具体服务方信息);或者我们需要将您的订单号和订单金额委托给第三方支付机构处理以实现其确认您的支付指令并完成支付等。

- -

2、广告与推广的合作伙伴。当合作伙伴向使用我们产品与/或服务的用户群提供促销推广的服务时,我们会向这些合作伙伴委托处理不能识别你个人身份的间接画像标签及去标识化的设备信息或匿名化后的设备、网络、渠道信息,并委托处理去标识化的统计分析信息,以提供程序化广告服务。这些信息仅为提高推广的覆盖面以及有效触达率,不会识别您的真实身份或与您的真实身份相关联。我们也会与第三方的平台或媒体合作基于您的个人信息向您推荐个性化的商品或服务。这些个人信息来源于您在使用我们产品与/或服务过程中的行为数据及其间接画像,该过程中我们不会向平台或媒体提供可用于识别你个人身份的信息。

- -

(三)转让

- -

我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:

- -

1、在获取单独同意的情况下转让:获得您的单独同意后,我们会向其他方转让您的个人信息;

-

2、根据适用的法律法规、法律程序的要求、强制性的行政或司法要求所必须的情况进行提供;

- -

3、符合与您签署的相关协议(包括在线签署的电子协议以及相应的平台规则)或其他的法律文件约定所提供;

-

4、在涉及合并、收购、资产转让或类似的交易时,如涉及到个人信息转让,我们会要求新的持有您个人信息的公司、组织继续受本隐私政策的约束,否则,我们将要求该公司、组织重新向您征求授权同意。

- -

(四)公开披露

- -

我们仅会在以下情况下,才会公开披露您的个人信息:

- -

1、获得您单独同意或基于您的主动选择,我们可能会公开披露您的个人信息;

-

2、根据法律、法规的要求、强制性的行政执法或司法要求所必须提供您个人信息的情况下,我们可能会依据所要求的个人信息类型和披露方式公开披露您的个人信息。在符合法律法规的前提下,当我们收到上述披露信息的请求时,我们会要求必须出具与之相应的法律文件,如传票或调查函。我们坚信,对于要求我们提供的信息,应该在法律允许的范围内尽可能保持透明。我们对所有的请求都进行了慎重的审查,以确保其具备合法依据,且仅限于执法部门因特定调查目的且有合法权利获取的数据。在法律法规许可的前提下,我们披露的文件均在加密密钥的保护之下。

- -

四、我们如何保护和保存您的个人信息

- -

(一)个人信息保护的技术与措施

- -

1、数据安全技术措施

-

我们已采取符合业界标准、合理可行的安全防护措施保护您提供的个人信息安全,防止个人信息遭到未经授权访问、公开披露、使用、修改、损坏或丢失。我们会使用加密技术(如 TLS、AES 等)、脱敏技术和匿名化技术提高个人信息的安全性;我们会使用受信赖的保护机制防止个人信息遭到恶意攻击;我们会部署访问控制机制,尽力确保只有授权人员才可访问个人信息;部署数据安全监控机制,尽力确保数据在数据生命周期(数据采集、存储、传输、使用、共享和销毁)中得到安全保障。

- -

2、其他安全措施

-

我们通过建立专门的管理制度、流程和组织以保障个人信息的存储和使用安全;我们通过信息接触者保密协议、监控和审计机制来对数据进行全面安全控制;我们建立信息安全委员会并下设信息保护专职部门、数据安全应急响应组织来推进和保障个人信息安全。;我们建立了信息安全培训体系,通过多种手段对全体员工进行信息安全意识培训,提高员工的信息安全意识以及隐私安全意识,保障会员个人信息安全。 

- -

3、我们仅允许有必要知晓这些信息的蜘蛛管家及蜘蛛管家关联方的员工、合作伙伴访问个人信息,并为此设置了严格的访问权限控制和监控机制。我们同时要求可能接触到您个人信息的所有人员履行相应的保密义务。如果未能履行这些义务,可能会被追究法律责任或被中止与蜘蛛管家的合作关系。

- -

4、我们会采取一切合理可行的措施,确保未收集无关的个人信息。我们只会在达成本政策所述目的所需的期限内保留您的个人信息,除非需要延长保留期或受到法律的允许。例如《中华人民共和国电子商务法》要求商品和服务信息、交易信息保存时间自交易完成之日起不少于三年。在您的个人信息超出保留期间后,我们会根据适用法律的要求删除您的个人信息,或使其匿名化处理。

- -

5、互联网并非绝对安全的环境,而且电子邮件、即时通讯、社交软件等与其他用户的交流方式无法确定是否完全加密,我们建议您使用此类工具时请使用复杂密码,并注意保护您的个人信息安全。当您在蜘蛛管家网站与第三方进行网上商品或服务的交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址等。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。

- -

6、安全应急响应。在不幸发生个人信息安全事件后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们同时将及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。同时,我们还将按照监管部门要求,主动向监管部门上报个人信息安全事件的处置情况。

-

针对个人信息泄露、毁损、丢失等安全风险,我们建立了安全应急响应机制和应急响应团队,从制度层面规范安全事件处置的要求和流程。对安全事件实施分类分级,针对不同事件启动有针对性的安全应急预案,进行事件检测、抑制、根除、恢复、制定补救措施,联合相关部门进行溯源和打击。

- -

7、如果您对我们的个人信息保护有任何疑问,可通过本政策最下方约定的联系方式联系我们。如您发现自己的个人信息泄露,尤其是您的账户及密码发生泄露,请您立即通过本政策最下方【如何联系我们】约定的联系方式联络我们,以便我们采取相应措施。

- -

(二)个人信息的保存

-

1、您的个人信息将被存储于中华人民共和国境内。如您使用跨境交易服务,且需要向境外传输您的个人信息完成交易的,我们会要求接收方按照我们的说明、本隐私政策以及其他任何相关的保密和安全措施来处理这些个人信息。

- -

2、请您注意,当您成功申请注销蜘蛛管家账户后,我们将对您的个人信息进行删除或匿名化处理。

- -

3、如果我们终止服务或运营,我们会至少提前三十日向您通知,并在终止服务或运营后对您的个人信息进行删除或匿名化处理。

- -

4、我们只会在实现本隐私政策所述目的所需的期限内保留您的个人信息,法律有强制的留存要求的除外,例如《电子商务法》规定商品和服务信息、交易信息保存时间自交易完成之日起不少于三年。

- -

五、您如何管理您的个人信息

- -

您可以通过以下方式访问及管理您的个人信息:

- - -

1、查阅和更正您的个人信息

-

您有权随时查阅和更正您的个人信息,法律法规规定的例外情况除外,您可以通过以下方式查阅和更正您的个人信息:

-

(1) 账户信息: 

-

在移动端,您可以在“我的—个人中心—个人信息查看与导出”界面查阅您的个人信息,您可以通过“个人中心—点击蜘蛛管家会员头像”设置您的个人资料(包括头像、昵称、公司名称等);若要修改您的公司信息,可能需要您联系我们客服处理才能更改。

-

(2) 在移动端,您可以通过“个人中心”的“商品收藏” “我的足迹”管理您的收藏、浏览足迹信息。

-

(3) 您在使用我们的产品与/或服务过程中产生的其他个人信息需要访问或更正,请随时联系我们。我们会根据本隐私政策所列明的方式和期限响应您的请求。

-

(4) 无法查阅和更正的个人信息:除上述列明的信息外,您的部分个人信息我们还无法为您提供查阅和更正的服务,这些信息主要是为了提升您的用户体验和保证交易安全所收集的您的设备信息、您使用附加功能时产生的非您主动提交的个人信息。上述信息我们会在您的授权范围内进行使用,您无法查阅和更正,但您可联系我们进行删除或做匿名化处理。

-

2、删除您的个人信息

-

您可以在购物车、个人中心的“商品收藏” “我的足迹”“我的订单”管理或删除您的加购、收藏、浏览足迹、订单信息。您可以在搜索框下方删除或管理您此前输入的搜索关键字信息。

-

在以下情形中,您可以向我们提出删除个人信息的请求:

-

(1) 如果我们处理个人信息的行为违反法律法规;

-

(2) 如果我们收集、使用您的个人信息,却未征得您的同意;

-

(3) 如果我们处理个人信息的行为违反了与您的约定;

-

(4) 如果您注销了蜘蛛管家账户;

-

(5) 如果我们终止服务及运营;

-

(6) 如果我们保存您个人信息的期限已届满。

-

若我们决定响应您的删除请求,我们还将同时通知从我们获得您的个人信息的实体,要求其及时删除,除非法律法规另有规定,或这些实体获得您的独立授权。当您从我们的服务中删除信息后,我们可能不会立即备份系统中删除相应的信息,但会在备份更新时删除这些信息。

- -

3、改变您授权同意的范围或撤回您的授权

-

您可以通过以下方式改变或者撤回您的授权:

-

(1) 您可以通过删除信息、关闭设备功能、在蜘蛛管家网站或软件中通过“隐私设置-系统权限设置”等方式改变您授权我们继续收集个人信息的范围或撤回您的授权。

-

(2) 根据您所使用的具体服务,可以通过发送邮件到 huangbin@zzfzyc.com 进行相关请求及操作。我们将会在您做出请求后的合理时间内处理您的请求,并且会根据您的请求,在此后不再收集、使用和/或披露您的个人信息。

-

(3) 您也可以通过注销账户的方式,撤回我们继续收集您个人信息的全部授权。

-

请您理解,每个业务功能需要一些基本的个人信息才能得以完成,当您撤回同意或授权后,我们无法继续为您提供撤回同意或授权所对应的服务,也不再处理您相应的个人信息。但您撤回同意或授权的决定,不会影响此前基于您的授权而开展的个人信息处理。

-

为确保您的信息安全,您向我们提出请求时应向我们提供必要的基础信息用于初步核验您的真实身份,并核验请求人和注册用户之间的同一性。

- -

4、响应您的上述请求

-

如果您无法通过上述方式查阅、更正或删除您的个人信息,或您需要查阅、更正或删除您在使用我们产品与/或服务时所产生的其他个人信息,或您认为蜘蛛管家存在任何违反法律法规或与您关于个人信息的收集或使用的约定,您均可以通过本协议下方的方式与我们联系。为了保障安全,我们可能需要您提供书面请求,或以其他方式证明您的身份,我们将在收到您反馈并验证您的身份后的 15 天内答复您的请求。对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情况收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际(例如,涉及备份磁带上存放的信息)的请求,我们可能会予以拒绝。

-

在以下情形中,按照法律法规要求,我们将无法响应您的请求:

-

(1) 与国家安全、国防安全有关的;

-

(2) 与公共安全、公共卫生、重大公共利益有关的;

-

(3) 与犯罪侦查、起诉和审判等有关的;

-

(4) 有充分证据表明您存在主观恶意或滥用权利的;

-

(5) 响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的。

- -

六、我们如何处理未成年人的个人信息

- -

1、在电子商务活动中我们推定您具有相应的民事行为能力。若您是 18 周岁以下的未成年人,在使用我们的产品与/或服务前,应事先取得您监护人的同意。

- -

2、如果有事实证明未成年人在未取得监护人同意的情况下注册使用了我们的产品与/或服务,我们会与相关监护人协商,并设法尽快删除相关个人信息。

-

七、您的个人信息如何在全球范围转移

-

原则上,我们在中华人民共和国境内运营中收集和产生的个人信息,将存储在中华人民共和国境内,以下情形除外:

-

1、适用的法律有明确规定;

-

2、获得您的单独同意;

-

3、您通过互联网进行跨境交易等个人主动行为。

-

针对以上情形,我们会确保依据本隐私政策对您的个人信息提供足够的保护。

-

八、通知和修订

-

1、为给您提供更好的服务以及随着蜘蛛管家业务的发展,本隐私政策也会随之更新。但未经您明确同意,我们不会削减您依据本隐私政策所应享有的权利。我们会通过在蜘蛛管家网站、蜘蛛管家移动端上发出更新版本并在生效前通过网站公告或以其他适当方式提醒您相关内容的更新,也请您访问蜘蛛管家以便及时了解最新的隐私政策。

-

2、对于重大变更,我们还会提供更为显著的通知(我们会通过包括但不限于邮件、短信或在浏览页面做特别提示等方式,说明隐私政策的具体变更内容)。

-

本政策所指的重大变更包括但不限于:

-

(1) 我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;

-

(2) 我们在所有权结构、组织架构等方面发生重大变化。如业务调整、破产并购等引起的所有者变更等;

-

(3) 个人信息共享、转让或公开披露的主要对象发生变化;

-

(4) 您参与个人信息处理方面的权利及其行使方式发生重大变化;

-

(5) 我们负责处理个人信息安全的责任部门、联络方式及投诉渠道发生变化时;

-

(6) 个人信息安全影响评估报告表明存在高风险时。

-

3、我们还会将本策略的旧版本存档,供您查阅。

-

4、为了您能及时接收到通知,建议您在联系方式更新时及时通知我们。如您在本政策更新生效后继续使用我们的服务,即代表您已充分阅读、理解并接受更新后的政策并愿意受更新后的政策约束。我们鼓励您在每次使用我们服务时都查阅本政策。您可以在我们的产品和服务中通过“我的--设置--隐私--隐私政策”中查看本政策。

-

九、如何联系我们

-

1、如您对本隐私政策或您个人信息的相关事宜有任何问题、意见或建议,请线上联系蜘蛛管家客服进行进行咨询。如您需要获取具体个人信息副本,您可以通过发送邮件至我们专门的个人信息保护邮箱 huangbin@zzfzyc.com 的方式与我们联系。

-

2、蜘蛛管家平台运营者为佛山市浩川长盛科技有限公司,注册地址为佛山市禅城区华宝南路13号佛山国家火炬创新创业园E座4楼408室。

-

3、一般情况下,我们将在十五天内回复。如果您对我们的回复不满意,特别是我们的个人信息处理行为损害了您的合法权益,您还可以向网信、电信、公安及工商等监管部门进行投诉或举报,或通过向被告住所地有管辖权的法院提起诉讼来寻求解决方案。

-

` - - const titles = { clause: { title: '服务条款', value: clause }, policy: { title: '隐私政策', value: policy } } - const router = useRouter() - useEffect(() => { - Taro.setNavigationBarTitle({ - title: titles[router.params.type || 'clause'].title, - }) - }, [router]) - return - - -} - -export default ClauseDetail diff --git a/src/pages/collectionDetail/components/form/index.module.scss b/src/pages/collectionDetail/components/form/index.module.scss deleted file mode 100644 index 722e19d..0000000 --- a/src/pages/collectionDetail/components/form/index.module.scss +++ /dev/null @@ -1,97 +0,0 @@ -.itemBox { - width: 100%; - border-bottom: 1px solid #f7f7f7; - display: flex; - // align-items: center; - padding-top: 30px; - padding-bottom: 30px; - - .itemLeft { - - // align-items: center; - .finkFlex { - display: flex; - - .itemTitle { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .xing { - font-size: 28px; - font-weight: 500; - color: #E42945; - margin-right: 48px; - } - } - - .finkFont { - font-size: 20px; - font-weight: 400; - color: grey; - } - - - } - - .bigPic { - width: 70%; - } - - .itemRight { - // display: flex; - // align-items: center; - // justify-content: space-between; - width: 70%; - // position: relative; - - .assginFont { - // position: absolute; - // bottom: 10px; - // left: 0px; - font-size: 24px; - font-weight: 500; - color: #000000; - } - - .rightFlex { - .placeholderStyle { - color: #f7f7f7; - font-size: 28px; - font-weight: 400; - } - - .inputStyle { - font-size: 28px; - font-weight: 400; - color: #000000; - width: 100%; - } - } - - .iconFlex { - display: flex; - align-items: center; - - .chakanquanbukehu2 { - font-size: 50px !important; - } - - .shu { - width: 2px; - height: 36px; - background: #000000; - opacity: 0.2; - margin-left: 24px; - } - - .saomiao { - margin-left: 24px; - color: #087EFF; - font-size: 40px !important; - } - } - - } -} diff --git a/src/pages/collectionDetail/components/form/index.tsx b/src/pages/collectionDetail/components/form/index.tsx deleted file mode 100644 index 8744cb0..0000000 --- a/src/pages/collectionDetail/components/form/index.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { Input, ScrollView, Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -// import BottomBtns from '@/components/BottomBtns' -import { formatDateTime, formatPriceDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import UploadImage from '@/components/uploadImage' - -interface Params { - title?: string // 传入的名称 - require?: boolean // 是否显示必须选填的内容图标 - isInput?: boolean // 是否显示输入框 - inputValue?: string // 输入框的值 - inputType?: any // 输入框类型 - getInput?: (any) => void // 输入框回调 - showScan?: boolean // 是否显示扫描图标 - placeholderFont?: string // 输入框默认文本 - showMore?: boolean // 是否显示更多图标 - disabled?: boolean // 是否输入框禁止 - onlyRead?: boolean // 图片是否只读 - showPic?: boolean // 是否显示图片组件 - getImageList?: (any) => void // 上传图片回调 - PicList?: any[] // 默认图片列表 - styleNone?: boolean // 根据不同的栏目调整样式 - getScan?: (any) => void // 扫描 - navTo?: () => void // 跳转选择 - showSizeFont?: boolean // 展示金额的大写 - bigMoney?: any // 展示的大写金额 -} -const Form = (pros: Params) => { - return ( - - - - {pros.title} - { - pros.require && * - } - - { - pros.showSizeFont && 展示大小写 - } - - { - pros.showPic - && - - - } - { - !pros.showPic && pros.navTo?.()} - style={{ - justifyContent: `${!pros.showSizeFont ? 'space-between' : ''}`, - alignItems: `${!pros.showSizeFont ? 'center' : ''}`, - display: `${!pros.showSizeFont ? 'flex' : ''}`, - }} - > - - { - pros.isInput && pros.getInput?.(e.detail.value)} - > - } - { - !pros.isInput && {pros.inputValue} - } - - - - { - pros.showMore && - - } - { - pros.showScan && - - } - { - pros.showScan && pros.getScan?.(e)}> - - } - { - pros.showSizeFont && {pros.bigMoney} - } - - } - - - ) -} -export default memo(Form) diff --git a/src/pages/collectionDetail/index.config.ts b/src/pages/collectionDetail/index.config.ts deleted file mode 100644 index 1c66055..0000000 --- a/src/pages/collectionDetail/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '收款单详情', -} diff --git a/src/pages/collectionDetail/index.module.scss b/src/pages/collectionDetail/index.module.scss deleted file mode 100644 index 31b999e..0000000 --- a/src/pages/collectionDetail/index.module.scss +++ /dev/null @@ -1,105 +0,0 @@ -.addBox { - margin: 24px; - padding: 0px 32px 40px 32px; - background: #ffffff; - border-radius: 16px 16px 0px 0px; - transition: 0.3s; -} - -.textAreaBox { - margin-top: 40px; - display: flex; - justify-content: space-between; - position: relative; - border-bottom: 1px solid #f7f7f7; - padding-bottom: 47px; - - .textAreaLeft { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .textAreaRight { - width: 70%; - font-size: 28px; - } - - .numsTotal { - position: absolute; - bottom: 0; - right: 0; - display: flex; - font-size: 28px; - font-weight: 400; - color: #000000; - } -} - -.msgBox { - width: 100%; - border-bottom: 1px solid #f7f7f7; - display: flex; - align-items: center; - padding-top: 40px; - padding-bottom: 40px; - justify-content: space-between; - - .msgLeft { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .msgFlex { - width: 70%; - display: flex; - justify-content: space-between; - - .msgName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .msgTime { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } -} - -.topBox { - background: #ffffff; - margin: 24px; - justify-content: center; - display: flex; - align-items: center; - flex-direction: column; - overflow: hidden; - - .topFont { - margin-top: 32px; - font-size: 28px; - font-weight: 500; - color: #000000; - margin-bottom: 16px; - } - - .topMon { - font-size: 64px; - font-weight: 500; - color: #333333; - letter-spacing: 4px; - margin-bottom: 8px; - } - - .topBigMon { - font-size: 24px; - font-weight: 400; - color: #000000; - letter-spacing: 11px; - margin-bottom: 38px; - } -} diff --git a/src/pages/collectionDetail/index.tsx b/src/pages/collectionDetail/index.tsx deleted file mode 100644 index f1fbd76..0000000 --- a/src/pages/collectionDetail/index.tsx +++ /dev/null @@ -1,140 +0,0 @@ -import { Button, Input, Textarea, View } from '@tarojs/components' -import Taro, { faceVerifyForPay, useDidShow, useRouter } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import Form from './components/form' -import Search from '@/components/search' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import Popup from '@/components/popup' -import InfiniteScroll from '@/components/infiniteScroll' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - MpCashManagementOrder, -} from '@/api/newCollection' -import smallToBig from '@/common/money' - -const CollectionDetail = () => { - const router = useRouter() - const [Query, setQuery] = useState({}) - const { fetchData: getFetch } = MpCashManagementOrder() - - const getDetail = async() => { - Taro.showLoading({ - title: '请稍等', - mask: true, - }) - const res = await getFetch({ id: Number(router.params.id) }) - if (res.data) { - // res.data?.payment_credential_url?.map(it => { - // it = IMG_CND_Prefix + it - // return it - // }) - Taro.hideLoading() - setQuery(res.data) - } - } - - useEffect(() => { - setQuery(Query) - }, [Query]) - - const money = useMemo(() => { - let res = 0 - res = Query.receipt_amount / 100 - return res - }, [Query]) - useEffect(() => { - getDetail() - }, []) - return ( - <> - - 收款金额(元) - {money} - {smallToBig(typeof (money) == 'undefined' ? 0 : money)} - - - - 订单编号 - - {Query.order_no} - {Query.auditor_status_name} - - -
- {/*
*/} -
-
- - 备注信息 - { Query.remark } - - - 创建信息 - - {Query.creator_name} - {formatDateTime(Query.create_time)} - - - - 审核信息 - - {Query.auditor_name} - {formatDateTime(Query.audit_time)} - - -
- - - ) -} - -export default CollectionDetail diff --git a/src/pages/colorRelated/components/bluetooth/LinkBlueTooth.tsx b/src/pages/colorRelated/components/bluetooth/LinkBlueTooth.tsx deleted file mode 100644 index 78d935d..0000000 --- a/src/pages/colorRelated/components/bluetooth/LinkBlueTooth.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from '../css/linkBlueTooth.module.scss' -import Popup from './Popup' -import { useBluetooth } from '@/use/contextBlueTooth' -import SearchInput from '@/components/searchInput' - -const LinkBlueTooth = () => { - const { state, init, startScan, connect, disconnect } = useBluetooth() - - useEffect(() => { - init() - }, []) - - const [linkStatus, setLinkStatus] = useState(1) - useEffect(() => { - if (!state.available) { - setLinkStatus(1) - } - else if (state.available && state.connected?.name) { - setLinkStatus(3) - } - else { - setLinkStatus(2) - } - }, [state.available, state.connected]) - - const linkName = useMemo(() => { - console.log('state linkName', state) - return state.connected?.localName || '' - }, [state.connected]) - - // 链接设备 - const onLinkListen = (item) => { - if (!state.connected && !state.connecting) { connect(item) } - } - const onFindEven = () => { - if (!state.discovering && !state.connected && !state.connecting) { startScan() } - } - const [popupShow, setPopupShow] = useState(false) - // 显示设备列表 - const onFindDevice = () => { - console.log('linkStatus==>', linkStatus) - if (linkStatus == 1) { - Taro.showToast({ - title: '请打开蓝牙', - icon: 'none', - }) - } - else { - setPopupShow(true) - onFindEven() - } - } - - // 断开链接 - const onDisconnect = () => { - disconnect() - setPopupShow(false) - } - - return ( - <> - - - - - {(linkStatus == 1 && 请开启蓝牙) - || (linkStatus == 2 && 未连接设备) - || (linkStatus == 3 && {linkName})} - - - setPopupShow(false)} - onLink={item => onLinkListen(item)} - onOff={onDisconnect} - onFind={onFindEven} - /> - - - ) -} -export default memo(LinkBlueTooth) diff --git a/src/pages/colorRelated/components/bluetooth/Popup.tsx b/src/pages/colorRelated/components/bluetooth/Popup.tsx deleted file mode 100644 index 8eb06a7..0000000 --- a/src/pages/colorRelated/components/bluetooth/Popup.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import { memo, useEffect, useState } from 'react' -import style from '../css/popup.module.scss' -import Loading from '@/components/loading' - -interface params { - state: any - show: Boolean - onClose: (Boolean) => void - onLink: (any) => void - children?: React.ReactNode - onOff: () => void - onFind: () => void -} -const Popup = ({ state, show = false, onClose, onLink, onOff, onFind }: params) => { - const [popupShow, setPopupShow] = useState(show) - useEffect(() => { - setPopupShow(show) - }, [show]) - const onCloseListener = () => { - onClose(false) - } - - return ( - <> - {popupShow && ( - - - 搜索设备 - - - {(state.devices - && state.devices.length > 0 - && state?.devices.map((item, key) => { - return ( - onLink(item)}> - {item.name} - {(!state.connecting && !state.connected && 链接) - || (state.connecting && item.deviceId == state.connecting.deviceId && 正在链接...) - || (state.connected && item.deviceId == state.connected.deviceId && 链接成功)} - - ) - })) || ( - - {(!state.discovering && ( - <> - 暂无设备,请按以下条件检查 - 1.请确保取色仪处于激活状态 - 2.请确保取色仪没有链接其他设备 - 3.请打开手机定位 - - )) || 设备搜索中} - - )} - - - {(state.connected && ( - - 断开链接 - - )) - || (!state.connected && state.discovering && ( - - 搜索中 - - - )) || ( - - 重新搜索 - - )} - - - - )} - - ) -} -export default memo(Popup) diff --git a/src/pages/colorRelated/components/css/linkBlueTooth.module.scss b/src/pages/colorRelated/components/css/linkBlueTooth.module.scss deleted file mode 100644 index ef9d9c2..0000000 --- a/src/pages/colorRelated/components/css/linkBlueTooth.module.scss +++ /dev/null @@ -1,40 +0,0 @@ -.main { - width: 100%; - background: #ffffff; - border-radius: 10px; - - .bluetooth_link { - width: 100%; - display: flex; - align-items: center; - - .link_status { - width: 12px; - height: 12px; - background: #f02409; - border-radius: 50%; - } - - .link_statused { - background: #07C160; - } - - .link_statused_no { - background: #f0ec09; - } - - .link_name { - font-size: $font_size; - margin-left: 20px; - - } - - .link_name_no { - color: #f02409; - } - - .link_name_no_link { - color: #f0ec09; - } - } -} diff --git a/src/pages/colorRelated/components/css/popup.module.scss b/src/pages/colorRelated/components/css/popup.module.scss deleted file mode 100644 index d6c273f..0000000 --- a/src/pages/colorRelated/components/css/popup.module.scss +++ /dev/null @@ -1,90 +0,0 @@ -.popup{ - width: 100vw; - height: 100vh; - position: absolute; - top: 0; - left: 0; - .mask{ - width: 100%; - height: 100%; - background-color: rgba(0,0,0,0.5); - position: fixed; - top:0; - left:0; - z-index: 9; - } - .content{ - z-index: 99; - background-color: #fff; - width: 75vw; - height: 600px; - position: fixed; - top: 50%; - left: 50%; - border-radius: 20px; - transform: translateX(-50%) translateY(-50%); - display: flex; - flex-direction: column; - font-size: 28px; - .title{ - text-align: center; - margin: 20px; - } - .list{ - height: 480px; - padding: 0 20px; - .scroll{ - height: 100%; - } - .item{ - margin-bottom: 20px; - display: flex; - justify-content: space-between; - border-bottom: 1px dashed #ccc; - padding: 15px 0; - color: #3b3b3b; - @mixin link{ - font-size: 25px; - } - .link_success{ - @include link; - color: green; - } - .link_ing { - color: orange; - } - } - .noDevice{ - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - color: #a8a8a8; - .n_item{ - width: 100%; - text-align: left; - margin-top: 20px; - padding: 0 30px; - box-sizing: border-box; - } - } - - } - .footer{ - text-align: center; - padding: 20px 0; - background-color: #f1f1f1; - border-radius: 0 0 10px 10px; - display: flex; - justify-content: center; - align-items: center; - } - .finding{ - color: orange; - } - .footer_off{ - color: red; - } - } -} diff --git a/src/pages/colorRelated/findColor/components/DrawerCenter/index.module.scss b/src/pages/colorRelated/findColor/components/DrawerCenter/index.module.scss deleted file mode 100644 index 2fe9efc..0000000 --- a/src/pages/colorRelated/findColor/components/DrawerCenter/index.module.scss +++ /dev/null @@ -1,46 +0,0 @@ -.popups { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100vh; - .cover { - position: fixed; - height: 100vh; - width: 100vw; - top: 0; - left: 0; - background: rgba(0, 0, 0, 0.5); - z-index: 10; - } - .popcoms { - z-index: 100; - position: fixed; - top: 50%; - left: 50%; - border-radius: 20px; - transform: translateX(-50%) translateY(-50%); - .con { - width: 500px; - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - } - .showRgb { - width: 100%; - height: 550px; - background-color: #fff; - border-radius: 20px; - } - .name { - width: 100%; - text-align: center; - color: #fff; - padding: 20px 0; - font-size: 26px; - background: rgba(0, 0, 0, 0.5); - border-radius: 20px; - } - } -} diff --git a/src/pages/colorRelated/findColor/components/DrawerCenter/index.tsx b/src/pages/colorRelated/findColor/components/DrawerCenter/index.tsx deleted file mode 100644 index 6592ada..0000000 --- a/src/pages/colorRelated/findColor/components/DrawerCenter/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { View } from '@tarojs/components' -import type { FC } from 'react' -import React, { memo, useEffect, useState } from 'react' -import styles from './index.module.scss' - -interface PropsType { - showModal: boolean - children?: React.ReactNode -} - -const DrawerCenter: FC = (props) => { - const { children, showModal } = props - - const [show, setShow] = useState(false) - - useEffect(() => { - setShow(showModal) - }, [showModal]) - // 关闭 - const close = () => { - setShow(false) - } - - return show - ? ( - - {children} - - - ) - : null -} -export default memo(DrawerCenter) diff --git a/src/pages/colorRelated/findColor/components/HistoryColor/index.module.scss b/src/pages/colorRelated/findColor/components/HistoryColor/index.module.scss deleted file mode 100644 index 753d211..0000000 --- a/src/pages/colorRelated/findColor/components/HistoryColor/index.module.scss +++ /dev/null @@ -1,113 +0,0 @@ - -.history_color { - .selectCon { - display: flex; - flex-direction: column; - align-items: center; - height: 100%; - .selectList { - width: 692px; - height: 230px; - background: #ffffff; - border-radius: 30px; - margin-bottom: 20px; - display: flex; - align-items: center; - padding: 20px 0; - box-sizing: border-box; - .rgbColor { - width: 161px; - height: 161px; - background: red; - border-radius: 50%; - margin-left: 30px; - box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.6); - } - .product_con { - display: flex; - flex-direction: column; - justify-content: center; - margin-left: 32px; - font-size: 26px; - height: 100%; - width: 300px; - color: #505050; - .product_name { - @include common_ellipsis(); - font-size: 28px; - color: #5f5f5f; - font-weight: 700; - margin-bottom: 46px; - } - .product_color { - @include common_ellipsis(); - margin-bottom: 15px; - } - .contrast { - display: flex; - margin-bottom: 20px; - .g_num { - @include common_ellipsis(); - } - .num { - color: #00499f; - background: #c9e4ff; - padding: 3px 10px; - border-radius: 7px; - margin-left: 18px; - } - } - .date { - background: rgba(0, 0, 0, 0.3); - color: #fff; - padding: 3px 10px; - border-radius: 10px; - width: 258px; - } - } - .labColor { - flex: 1; - // height: 100%; - display: flex; - flex-direction: column; - align-items: center; - font-size: 27px; - color: #707070; - .labColor_btn { - width: 47px; - height: 47px; - background: #007aff; - color: #fff; - text-align: center; - line-height: 47px; - border-radius: 50%; - font-size: 39px; - margin-bottom: 20px; - } - .labColor_con { - flex: 1; - .L, - .a { - margin-bottom: 10px; - } - } - } - } - .noData { - display: flex; - justify-content: center; - align-items: center; - color: #707070; - height: 100%; - width: 100%; - font-size: 26px; - } - } - .selectList-scroll-color { - height: 70vh; - width: 100%; - } - .drawer-container { - background: #f0f0f0; - } -} diff --git a/src/pages/colorRelated/findColor/components/HistoryColor/index.tsx b/src/pages/colorRelated/findColor/components/HistoryColor/index.tsx deleted file mode 100644 index 9b20e9d..0000000 --- a/src/pages/colorRelated/findColor/components/HistoryColor/index.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { FC } from 'react' -import { forwardRef, useEffect, useImperativeHandle, useState } from 'react' -import styles from './index.module.scss' -import Popup from '@/components/popup' -import { formatDateTime, formatHashTag } from '@/common/format' -import { toRgb } from '@/common/bluetooth/color/colorSpace' -import { usePropsValue } from '@/use/useCommon' - -interface PropsType { - showModal: boolean - onVisibleChange?: (visible: boolean) => void - onColor?: Function -} -interface HistoryListItem { - p_time: number - lab: number[] - code: string - name: string -} -const HistoryColor = (props: PropsType, ref) => { - const { onColor, showModal, onVisibleChange } = props - - const [visible, setVisible] = usePropsValue({ - value: showModal, - defaultValue: showModal, - onChange: onVisibleChange, - }) - - useImperativeHandle( - ref, - () => { - return { - show: () => setVisible(true), - hide: () => setVisible(false), - visible, - } - }, - [visible], - ) - - const closeEven = () => { - console.log('closeEven') - setVisible(false) - } - const [list, setList] = useState([]) - - // 获取本地列表(无差别存储版本) - const getList = () => { - const historyColorList = Taro.getStorageSync('historyColor') - console.log('historyColorList==>', historyColorList) - setList(historyColorList || []) - } - useEffect(() => { - if (visible) { - getList() - } - }, [visible]) - - // 保留1位小数 - const noScale = (val, num = 1) => { - return val?.toFixed(num) - } - // rgb转换字符串 - const labRoRgb = (val) => { - const rgb = toRgb(val) - return `rgb(${rgb[0]},${rgb[1]},${rgb[2]})` - } - - const getInfo = (val) => { - const index = list.findIndex(item => item.p_time == val.p_time) - const tempList = JSON.parse(JSON.stringify(list)) - tempList.splice(index, 1) - tempList.unshift(val) - setList(tempList) - Taro.setStorageSync('historyColor', tempList) - onColor && onColor(val) - setVisible(false) - } - - return ( - - - - - {list?.length - ? ( - list.map((item, index) => { - return ( - getInfo(item)}> - - - {formatHashTag(item.code, item.name)} - {formatDateTime(item.p_time)} - - - + - - L*:{noScale(item.lab[0])} - a*:{noScale(item.lab[1])} - b*:{noScale(item.lab[2])} - - - - ) - }) - ) - : ( - 暂无数据 - )} - - - - - ) -} -export default forwardRef(HistoryColor) diff --git a/src/pages/colorRelated/findColor/components/LabColor/index.module.scss b/src/pages/colorRelated/findColor/components/LabColor/index.module.scss deleted file mode 100644 index 22da60f..0000000 --- a/src/pages/colorRelated/findColor/components/LabColor/index.module.scss +++ /dev/null @@ -1,46 +0,0 @@ -.lab_color_main { - display: flex; - justify-content: space-between; - padding: 20px 0; - font-size: 28px; - .btnColor { - width: 264px; - height: 264px; - background: #dddddd; - border-radius: 50%; - text-align: center; - line-height: 264px; - color: #707070; - box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.6); - } - .labCon { - display: flex; - flex-direction: column; - justify-content: center; - padding: 20px 0 20px 20px; - color: #707070; - .lab { - color: #707070; - display: flex; - margin-bottom: 20px; - text { - display: flex; - &:nth-child(1) { - font-weight: 700; - } - &:nth-child(n + 2) { - background-color: #fff; - margin-left: 17px; - padding: 3px 15px; - border-radius: 10px; - width: 73px; - display: flex; - justify-content: center; - } - } - } - .date { - font-size: 26px; - } - } -} diff --git a/src/pages/colorRelated/findColor/components/LabColor/index.tsx b/src/pages/colorRelated/findColor/components/LabColor/index.tsx deleted file mode 100644 index f0cd325..0000000 --- a/src/pages/colorRelated/findColor/components/LabColor/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { Text, View } from '@tarojs/components' -import type { FC } from 'react' -import { useMemo } from 'react' -import styles from './index.module.scss' -import { toRgb } from '@/common/bluetooth/color/colorSpace' -import { formatDateTime } from '@/common/format' - -interface PropsType { - lab?: Array - time?: any - onLab?: Function -} - -const LabColor: FC = (props) => { - const { lab = [], time, onLab } = props - const noScale = (val, num = 1) => { - return val.toFixed(num) - } - - const labObj = useMemo(() => { - if (lab.length <= 0) { return { lab: [], rgb: '' } } - const rgb = toRgb(lab) - return { - lab: [noScale(lab[0]), noScale(lab[1]), noScale(lab[2])], - rgb: `rgb(${rgb[0]},${rgb[1]},${rgb[2]})`, - } - }, [lab]) - - const labTime = useMemo(() => { - if (time.length <= 0) { return '' } - return formatDateTime(time) - }, [time]) - - const onLabEven = () => { - onLab && onLab() - } - - return ( - - - {labObj.lab.length ? '' : '点击取色'} - - - - L*a*b*: - {labObj.lab[0]} - {labObj.lab[1]} - {labObj.lab[2]} - - {labTime && 取样时间: {labTime}} - - - ) -} -export default LabColor diff --git a/src/pages/colorRelated/findColor/components/RecommendColor/index.module.scss b/src/pages/colorRelated/findColor/components/RecommendColor/index.module.scss deleted file mode 100644 index a994187..0000000 --- a/src/pages/colorRelated/findColor/components/RecommendColor/index.module.scss +++ /dev/null @@ -1,125 +0,0 @@ -.RecommendColor_main { - width: 100%; - .RecommendColor_list { - display: flex; - flex-wrap: wrap; - .RecommendColor_item { - background: #fff; - width: 48.5%; - height: 356px; - border-radius: 30px; - margin-bottom: 20px; - &:nth-child(2n) { - margin-left: 3%; - } - .rgbColor { - width: 100%; - height: 188px; - background: rgb(0, 195, 255); - border-radius: 30px 30px 0 0; - position: relative; - .lab { - width: 90px; - height: 100%; - background: rgba(0, 0, 0, 0.3); - position: absolute; - right: 0; - top: 0; - border-radius: 0 30px 0 0; - color: #fff; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: 26px; - text { - &:nth-child(1) { - font-weight: 700; - margin-bottom: 10px; - } - } - } - } - .product_con { - display: flex; - flex-direction: column; - font-size: 26px; - padding: 10px 15px 15px 15px; - box-sizing: border-box; - .product_color { - color: #505050; - @include common_ellipsis(); - } - .product_title { - display: flex; - justify-content: space-between; - align-items: center; - .product_name { - @include common_ellipsis(2); - color: #0c68c5; - font-weight: 700; - font-size: 28px; - flex: 1; - margin-right: 10px; - } - .product_num { - display: flex; - justify-content: center; - align-items: center; - background: #c9e4ff; - color: #00499f; - padding: 3px 6px; - font-size: 26px; - border-radius: 5px; - margin-bottom: 13px; - } - } - .date { - margin-top: 15px; - color: #808080; - display: flex; - align-items: center; - justify-content: space-between; - .labColor_btn { - width: 47px; - height: 47px; - background: #007aff; - color: #fff; - text-align: center; - line-height: 47px; - border-radius: 50%; - font-size: 39px; - margin-right: 10px; - } - .g_num { - flex: 1; - margin-right: 10px; - @include common_ellipsis(); - } - } - } - } - } - .con { - width: 500px; - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - .showRgb { - width: 100%; - height: 550px; - background-color: #fff; - border-radius: 20px; - } - .name { - width: 100%; - text-align: center; - color: #fff; - padding: 20px 0; - font-size: 26px; - background: rgba(0, 0, 0, 0.5); - border-radius: 20px; - } - } -} diff --git a/src/pages/colorRelated/findColor/components/RecommendColor/index.tsx b/src/pages/colorRelated/findColor/components/RecommendColor/index.tsx deleted file mode 100644 index 34606b5..0000000 --- a/src/pages/colorRelated/findColor/components/RecommendColor/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { Text, View } from '@tarojs/components' -import type { FC } from 'react' -import { useState } from 'react' -import classnames from 'classnames' -import DrawerCenter from '../DrawerCenter' -import styles from './index.module.scss' -import { toRgb } from '@/common/bluetooth/color/colorSpace' -import { formatDateTime } from '@/common/format' - -interface PropsType { - list?: Array - customStyle?: React.CSSProperties -} - -const RecommendColor: FC = (props) => { - const { list, customStyle = {} } = props - - // rgb转换字符串 - const labRoRgb = (val) => { - const lab = val ? [val.l, val.a, val.b] : [] - const rgb = toRgb(lab) - return `rgb(${rgb[0]},${rgb[1]},${rgb[2]})` - } - - // 保留1位小数 - const noScale = (val, num = 1) => { - return val.toFixed(num) - } - - const [show, setShow] = useState(false) - const [selectObj, setSelectObj] = useState({ - rgb: '', - product_color_code: '', - product_color_name: '', - }) - - const openShow = (val) => { - setShow(true) - setSelectObj(val) - setSelectObj({ ...val, rgb: labRoRgb(val.lab) }) - } - - return ( - - - {list?.map((item) => { - return ( - openShow(item)}> - - - L*a*b* - {noScale(item.lab.l)} - {noScale(item.lab.a)} - {noScale(item.lab.b)} - - - - - {`${item.product_code}# ${item.product_name}`} - {noScale(item.match_rate_percent, 1)}% - - {`${item.product_color_code} ${item.product_color_name}`} - - {item.dyelot_number} - + - - - - ) - })} - - - - - - {`${selectObj.product_color_code} ${selectObj.product_color_name}`} - - - - ) -} -export default RecommendColor diff --git a/src/pages/colorRelated/findColor/index.config.ts b/src/pages/colorRelated/findColor/index.config.ts deleted file mode 100644 index f3418f1..0000000 --- a/src/pages/colorRelated/findColor/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '取色查找', - enableShareAppMessage: false, -} diff --git a/src/pages/colorRelated/findColor/index.module.scss b/src/pages/colorRelated/findColor/index.module.scss deleted file mode 100644 index a9abbf6..0000000 --- a/src/pages/colorRelated/findColor/index.module.scss +++ /dev/null @@ -1,94 +0,0 @@ -page { - height: 100vh; -} -.findColor_main { - display: flex; - flex-direction: column; - align-items: center; - padding: 20px; - min-height: 100%; - background: #f3f3f3; - box-sizing: border-box; - .findColor_main_search { - background: #fff; - width: 100%; - padding: 0 20rpx; - border-radius: 20rpx; - box-sizing: border-box; - } - .findColor_main_title { - width: 100%; - .RecommendColor_title { - display: flex; - justify-content: space-between; - font-size: 28px; - margin-bottom: 20px; - padding: 10px 20px; - box-sizing: border-box; - color: #707070; - font-weight: bold; - border-bottom: 1px dashed #e4e4e4; - width: 100%; - text { - &:nth-child(2) { - color: #007aff; - } - } - } - } - .noList { - flex: 1; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - color: #707070; - font-size: 26px; - } - .list { - display: flex; - padding: 20px; - box-sizing: border-box; - border: 1px solid #ccc; - width: 100%; - justify-content: space-between; - border-radius: 10px; - font-size: 25px; - margin-top: 20px; - } - .measure { - width: 100%; - .list { - justify-content: center; - } - .content { - width: 100%; - } - .diff { - text-align: center; - } - } - .color { - margin-top: 20px; - } - .labAndRgb { - display: flex; - width: 100%; - justify-content: center; - margin-top: 30px; - .item { - margin-top: 20px; - font-size: 28px; - } - } - .color_list { - margin-top: 30px; - margin-bottom: 30px; - display: flex; - justify-content: center; - .color_item { - width: 250px; - height: 250px; - } - } -} diff --git a/src/pages/colorRelated/findColor/index.tsx b/src/pages/colorRelated/findColor/index.tsx deleted file mode 100644 index bed71cf..0000000 --- a/src/pages/colorRelated/findColor/index.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { FC } from 'react' -import { useEffect, useMemo, useState } from 'react' -import LineBluetooth from '../components/bluetooth/LinkBlueTooth' -import styles from './index.module.scss' -import HistoryColor from './components/HistoryColor' -import LabColor from './components/LabColor' -import RecommendColor from './components/RecommendColor' -import SelectProduct from '@/components/selectProduct' -import { useBluetooth } from '@/use/contextBlueTooth' -import { FindColorListApi } from '@/api/index' -import Loading from '@/components/loading' -import { throttle } from '@/common/util' - -const FindColor: FC = () => { - const { measureAndGetLab, disconnect, state: bluetoothState } = useBluetooth() - const { state: colorState, fetchData: ApiFindColorList } = FindColorListApi() - - const [list, setList] = useState([]) - const [product, setProduct] = useState>({}) - - // 获取数据 - const getData = async(lab) => { - const res = await ApiFindColorList({ - product_id: product.id, - l: lab[0], - a: lab[1], - b: lab[2], - }) - if (res.success) { - setList(res.data.list) - } - } - - const [labArray, setlabArray] = useState>([]) - const [labtime, setLabtime] = useState(+new Date()) - // 点击获取lab按钮 - const labEven = throttle(async() => { - if (!bluetoothState.connected) { - Taro.showToast({ title: '请先链接设备', icon: 'none' }) - return - } - if (!product) { - Taro.showToast({ title: '请选择面料', icon: 'none' }) - return - } - await measureAndGetLab() - }, 500) - - const selectInput = (val) => { - setProduct(val) - setLabtime('') - setlabArray([]) - setList([]) - } - - const getColor = (val) => { - console.log('val===>', val) - setList([]) - setlabArray(val.lab) - setLabtime(val.p_time) - setProduct({ - code: val.code, - default: val.default, - id: val.id, - name: val.name, - }) - getData(val.lab) - } - const [showHistory, setShowHistory] = useState(false) - - const handleVisibleChange = (visible) => { - setShowHistory(visible) - } - - const ResultContainer = useMemo(() => { - if (!colorState.loading && list?.length > 0) { - return - } - else if (!colorState.loading && labArray.length == 0) { - return -请取色- - } - else if (!colorState.loading && labArray.length > 0 && list?.length == 0) { - return -暂无数据- - } - else if (colorState.loading) { - return - } - }, [colorState, list]) - - // 历史取样 - const historyShowEven = () => { - setShowHistory(true) - } - // 本地存储取色记录(无差别存储版本) - const localSave = (lab) => { - const historyColorList = Taro.getStorageSync('historyColor') || [] - const obj = { - ...product, - p_time: +new Date(), - lab, - } - historyColorList.unshift(obj) - if (historyColorList.length > 30) { historyColorList.pop() } - Taro.setStorageSync('historyColor', historyColorList) - } - useEffect(() => { - if (!product) { - Taro.showToast({ title: '请选择面料', icon: 'none' }) - return - } - if (bluetoothState.deviceLab) { - setLabtime(+new Date()) - setlabArray([bluetoothState.deviceLab.L, bluetoothState.deviceLab.a, bluetoothState.deviceLab.b]) - // console.log('state.labArray::',state.labArray) - localSave([bluetoothState.deviceLab.L, bluetoothState.deviceLab.a, bluetoothState.deviceLab.b]) - getData([bluetoothState.deviceLab.L, bluetoothState.deviceLab.a, bluetoothState.deviceLab.b]) - } - }, [bluetoothState.deviceLab]) - - return ( - - - - - - - - - 推荐数 ({list?.length}) - 历史取样 - - - - {ResultContainer} - - - ) -} - -export default FindColor diff --git a/src/pages/colorRelated/sampleComparison/index.config.ts b/src/pages/colorRelated/sampleComparison/index.config.ts deleted file mode 100644 index cfc4a8a..0000000 --- a/src/pages/colorRelated/sampleComparison/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '样品对比', - enableShareAppMessage: false, -} diff --git a/src/pages/colorRelated/sampleComparison/index.module.scss b/src/pages/colorRelated/sampleComparison/index.module.scss deleted file mode 100644 index 52207f9..0000000 --- a/src/pages/colorRelated/sampleComparison/index.module.scss +++ /dev/null @@ -1,251 +0,0 @@ -page { - background: #f3f3f3; - overflow: hidden; -} - -.body { - overflow: hidden; - - .topBox { - margin-top: 24px; - margin-left: 30px; - width: 690px; - height: 86px; - background: #ffffff; - border-radius: 10px; - display: flex; - align-items: center; - justify-content: space-between; - - .leftBox { - display: flex; - align-items: center; - padding-left: 19px; - - .leftFont { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - text-align: left; - color: #707070; - margin-right: 14px; - } - - .borderBox { - width: 0px; - height: 62px; - border: 2px solid #f3f3f3; - margin-right: 39px; - } - - .cricleBox { - width: 12px; - height: 12px; - background: #cccccc; - border-radius: 50%; - margin-right: 12px; - } - - .notNet { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #aaaaaa; - } - } - - .iconMore { - margin-right: 30px; - font-size: 30px; - } - } - - .contBox { - margin-top: 53px; - display: flex; - padding-left: 56px; - - .firstBox { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - - .firstLeftName { - font-size: 26px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #707070; - } - - .firstLeftbox { - width: 290px; - height: 290px; - background: #dddddd; - margin-top: 13px; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - border-radius: 50%; - - .clickFont { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #707070; - } - } - - .color_bock { - width: 290px; - height: 290px; - border-radius: 50%; - } - - .color_bocktwo { - width: 290px; - height: 290px; - border-radius: 50%; - } - - .nameColor { - font-size: 24px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #707070; - margin-top: 30px; - } - } - } - - .reslutBox { - width: 692px; - height: 180px; - background: #ffffff; - margin-top: 30px; - margin-left: 29px; - border-radius: 20px; - overflow: hidden; - } - - .reslutTitle { - overflow: hidden; - width: 100%; - margin-top: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .titleLeft { - margin-left: 48px; - font-size: 26px; - font-family: Microsoft YaHei, Microsoft YaHei-Bold; - font-weight: 700; - color: #707070; - } - - .titleRiht { - margin-right: 37px; - width: 136px; - height: 46px; - background: #ffd9d9; - border-radius: 10px; - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - text-align: center; - color: #ff4a4a; - line-height: 46px; - } - - .titleRiht1 { - background: #cdf3df; - margin-right: 37px; - width: 136px; - height: 46px; - border-radius: 10px; - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - text-align: center; - line-height: 46px; - color: #07c160; - } - } - - .notResult { - width: 100%; - text-align: center; - font-size: 26px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #ababab; - margin-top: 14px; - } - - .notBox { - margin-top: 32px; - display: flex; - align-items: center; - justify-content: space-between; - overflow: hidden; - - .notLeft { - font-size: 26px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #707070; - margin-left: 40px; - } - - .notright { - font-size: 26px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - color: #707070; - margin-right: 37px; - } - } - - .bottomBox { - position: fixed; - bottom: 0; - width: 750px; - height: 182px; - background: #f3f3f3; - box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.16); - overflow: hidden; - display: flex; - - .leftBtn { - width: 264px; - height: 82px; - background: #ffffff; - border-radius: 42px; - font-size: 32px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - text-align: center; - color: #007aff; - line-height: 82px; - margin-top: 34px; - margin-left: 67px; - } - - .rightBtn { - width: 264px; - height: 82px; - background: #007aff; - border-radius: 42px; - font-size: 32px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 400; - text-align: center; - color: #ffffff; - line-height: 82px; - margin-top: 34px; - margin-left: 88px; - } - } -} diff --git a/src/pages/colorRelated/sampleComparison/index.tsx b/src/pages/colorRelated/sampleComparison/index.tsx deleted file mode 100644 index a39d7c9..0000000 --- a/src/pages/colorRelated/sampleComparison/index.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import { Image, Text, Textarea, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import { isObject } from '@tarojs/shared' -import LinkBlueTooth from '../components/bluetooth/LinkBlueTooth' -import styles from './index.module.scss' -import { useBluetooth } from '@/use/contextBlueTooth' -import { toRgb } from '@/common/bluetooth/color/colorSpace' -import { ProductAbsorbContrast } from '@/api/index' -import { alert } from '@/common/common' - -const SampleComparison = () => { - // 搜索参数 - const [searchField, setSearchField] = useState({ - l1: '', - a1: '', - b1: '', - l2: '', - a2: '', - b2: '', - }) - interface ColorList { - one?: Record | null - two?: Record | null - } - const [colorList, setColorList] = useState({ - one: null, - two: null, - }) - const { state: colorState, measureAndGetLab } = useBluetooth() - - const getLab = async(val) => { - if (colorState.connected) { - const res = await measureAndGetLab() - if (val === 1) { - setColorList({ ...colorList, one: res }) - } - else { - setColorList({ ...colorList, two: res }) - } - } - else { - Taro.showToast({ - title: '请链接设备', - icon: 'none', - }) - } - } - const getNowTime = () => { - const yy = new Date().getFullYear() - const MM = new Date().getMonth() + 1 < 10 ? `0${new Date().getMonth() + 1}` : new Date().getMonth() + 1 - const dd = new Date().getDate() < 10 ? `0${new Date().getDate()}` : new Date().getDate() - const HH = new Date().getHours() < 10 ? `0${new Date().getHours()}` : new Date().getHours() - const mm = new Date().getMinutes() < 10 ? `0${new Date().getMinutes()}` : new Date().getMinutes() - const ss = new Date().getSeconds() < 10 ? `0${new Date().getSeconds()}` : new Date().getSeconds() - return `${yy}-${MM}-${dd} ${HH}:${mm}:${ss}` - } - // 监听lab数据变化 - const [blueToothColor, setBlueToothColor] = useState('') - const [blueToothColorTwo, setBlueToothColorTwo] = useState('') - const [time, setTime] = useState('') - const [timeTwo, setTimeTwo] = useState('') - useEffect(() => { - if (colorState.deviceLab) { - const one = colorList.one - const two = colorList.two - if (isObject(one)) { - const rgb = toRgb([one?.L, one?.a, one?.b]) - setBlueToothColor(`rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`) - setTime(getNowTime()) - setSearchField({ ...searchField, l1: rgb[0], a1: rgb[1], b1: rgb[2] }) - } - if (isObject(two)) { - const rgb = toRgb([two?.L, two?.a, two?.b]) - setBlueToothColorTwo(`rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`) - setTimeTwo(getNowTime()) - setSearchField({ ...searchField, l2: rgb[0], a2: rgb[1], b2: rgb[2] }) - } - } - }, [colorList]) - - const [data, setData] = useState('') - const [result, setResult] = useState('') - const { fetchData } = ProductAbsorbContrast() - const handTake = async() => { - if (searchField.l1 === '') { - Taro.showToast({ - title: '请填充基础样品', - icon: 'none', - }) - return - } - if (searchField.l2 === '') { - Taro.showToast({ - title: '请填充对比样品', - icon: 'none', - }) - return - } - alert.showLoading('分析中') - const query = { - ...searchField, - } - const res = await fetchData(query) - if (res.success) { - setData(res.data) - const diffarray = [ - res.data.reddish && '偏红', - res.data.yellowish && '偏黄', - res.data.greenish && '偏绿', - res.data.bluish && '偏蓝', - res.data.whitish && '偏亮', - res.data.darker && '偏暗', - ] - const resCont = diffarray.filter(item => item).join(',') - setResult(resCont) - } - alert.hideLoading() - } - const reset = () => { - setColorList({}) - setBlueToothColor('') - setBlueToothColorTwo('') - setTime('') - setTimeTwo('') - setData('') - setResult('') - } - return ( - - - - - - - 基础样品 - {blueToothColor === '' && ( - getLab(1)}> - 点击取色 - - )} - {blueToothColor && getLab(1)} style={{ background: blueToothColor }}>} - {time === '' && --} - {time && {time}} - - - 对比样品 - {blueToothColorTwo === '' && ( - getLab(2)}> - 点击取色 - - )} - {blueToothColorTwo && getLab(2)} style={{ background: blueToothColorTwo }}>} - {timeTwo === '' && --} - {timeTwo && {timeTwo}} - - - - - 测量结果 - {(data as any).ciede_2000 >= 1 && 不合格} - {(data as any).ciede_2000 <= 1 && 合格} - - {data === '' && 暂无数据} - {data && ( - - 色差值: {(data as any).ciede_2000} - {!(data as any).reddish - && !(data as any).yellowish - && !(data as any).greenish - && !(data as any).bluish - && !(data as any).whitish - && !(data as any).darker && 无明显色差} - {result && {result}} - - )} - - - reset()}> - 重置 - - handTake()}> - 提交 - - - - ) -} -export default SampleComparison diff --git a/src/pages/colorRelated/takeColor/components/ColorCard/index.module.scss b/src/pages/colorRelated/takeColor/components/ColorCard/index.module.scss deleted file mode 100644 index df46437..0000000 --- a/src/pages/colorRelated/takeColor/components/ColorCard/index.module.scss +++ /dev/null @@ -1,184 +0,0 @@ - -@mixin flex-center { - display: flex; - justify-content: center; - align-items: center; -} -@mixin flex-vertical-center { - display: flex; - align-items: center; -} -@mixin ellipsis { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - display: inline-block; -} -.color-list { - @include flex-vertical-center; - justify-content: space-between; - width: 690px; - background: #ffffff; - opacity: 1; - padding: 30px; - box-sizing: border-box; - margin: 20px auto 0; - border-radius: 35px; - z-index: 0; - position: relative; - border: 4px solid transparent; -} -.vertical { - position: absolute; - width: 0; - height: 105%; - z-index: -1; - overflow: hidden; - top: 50%; - left: 50%; - border-radius: 35px; - transform: translate(-50%, -50%); -} -.vertical view { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 690px; - height: 95%; - border-radius: 35px; - border: 4px solid #007aff; - // border-bottom: 3px solid #007AFF; -} -.move-vertical { - width: 700px; - animation: moveVertical 0.3s ease; -} -@keyframes moveVertical { - from { - width: 0; - } - to { - width: 700px; - } -} -.horizontal { - position: absolute; - width: 100%; - height: 100%; - z-index: -1; - overflow: hidden; - top: 50%; - left: 50%; - border-radius: 35px; - transform: translate(-50%, -50%); -} -.move-horizontal { - height: 0; - animation: moveHorizontal 0.3s ease 0.3s; -} -@keyframes moveHorizontal { - from { - height: 100%; - } - to { - height: 0; - } -} -.flash { - animation-name: KFlash; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-direction: alternate; - animation-iteration-count: infinite; -} -@keyframes KFlash { - to { - border: 4px solid #999; - } -} -.c-image { - width: 161px; - height: 161px; - background: rgba(0, 0, 0, 0); - overflow: hidden; - border-radius: 50%; - position: relative; -} -.c-image text { - font-size: 25px; - color: white; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); -} -.c-image image { - width: 100%; - height: 100%; -} -.c-info { - width: 296px; - margin-left: 25px; - margin-right: 25px; - overflow: hidden; - line-height: 34px; -} -.c-info text { - @include ellipsis; - width: 100%; - font-size: 26px; - font-weight: 400; - line-height: 34px; - color: #707070; -} -.c-i-title { - @include ellipsis; - width: 100%; - font-size: 28px; - font-weight: bold; - line-height: 38px; - color: #707070; - margin: 5px 0; -} -.c-i-date { - @include flex-center; - width: 268px; - height: 38px; - background: rgba(0, 0, 0, 0.3); - border-radius: 6px; - font-size: 24px; - font-weight: 400; - color: #ffffff; - margin-top: 17px; -} -.c-lab { - height: 100%; - justify-self: flex-end; - @include flex-vertical-center; - flex-direction: column; -} -.c-lab .c-lab-button { - @include flex-center; - height: 48px; - min-width: 96px; - background: #007aff; - border-radius: 50px; - font-size: 24px; - font-weight: 400; - line-height: 32px; - color: #ffffff; - margin-bottom: 12px; - padding: 0 15px; -} -.c-lab .c-lab-button.again { - background: #f0f0f0; - color: #007aff; -} -.c-lab .c-lab-text { - font-size: 24px; - font-weight: 400; - line-height: 36px; - color: #707070; - margin-top: 25px; -} diff --git a/src/pages/colorRelated/takeColor/components/ColorCard/index.tsx b/src/pages/colorRelated/takeColor/components/ColorCard/index.tsx deleted file mode 100644 index 2b98845..0000000 --- a/src/pages/colorRelated/takeColor/components/ColorCard/index.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { Text, View } from '@tarojs/components' -import type { FC } from 'react' -import React, { memo, useEffect, useRef, useState, useTransition } from 'react' -import classnames from 'classnames' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import { formatHashTag } from '@/common/format' -import { alert } from '@/common/common' -import type { BluetoothStateType } from '@/use/contextBlueTooth' -import { toRgb } from '@/common/bluetooth/color/colorSpace' - -interface PropsType { - currentTakeColorIndex?: number | null - item?: Record - index?: number - onPreviewRgb?: Function - onTakeColor?: Function - measureAndGetLab: Function - bluetoothState: BluetoothStateType -} - -const ColorCard: FC = (params) => { - const { item = {}, index, onTakeColor, onPreviewRgb, currentTakeColorIndex, measureAndGetLab, bluetoothState } = params - console.log('item===>', item) - const truncation = (ev) => { - if (ev) { - ev += '' - const index = ev.lastIndexOf('.') - let suffix = ev.substr(index + 1) - if (suffix.length > 2) { - suffix = suffix.substr(0, 1) - ev = `${ev.substr(0, index)}.${suffix}` - } - return ev - } - else { - return 0 - } - } - const [moveBorder, setMoveBorder] = useState(0) - const [color, setColor] = useState({ - currnetRgb: item.rgb, - currentLab: item.lab, - }) - - useEffect(() => { - console.log('lastTakeColorIndex,index', currentTakeColorIndex, index) - if (currentTakeColorIndex != null && currentTakeColorIndex !== index) { - setMoveBorder(0) - } - }, [currentTakeColorIndex, index]) - - const handleTakeColor = async() => { - if (bluetoothState.connected) { - onTakeColor?.(index) - - setMoveBorder(1) - console.log('moveBorder==> start measure', moveBorder) - const lab = await measureAndGetLab() - // 转rgb - const rgb = toRgb([lab.L, lab.a, lab.b]) - setColor({ - currnetRgb: { - r: rgb[0], - g: rgb[1], - b: rgb[2], - }, - currentLab: { - l: lab.L, - a: lab.a, - b: lab.b, - }, - }) - setMoveBorder(2) - console.log('moveBorder==> end measure', moveBorder) - } - else { - alert.none('请连接蓝牙') - } - } - - const handlePreviewRgb = () => { - onPreviewRgb && onPreviewRgb() - } - - return ( - - - - - - - {color.currentLab?.l == 0 && color.currentLab?.a == 0 && color.currentLab?.b == 0 && 末取样} - - - {formatHashTag(item.product_code, item.product_name)} - - {formatHashTag(item.product_color_code, item.product_color_name)}({moveBorder}) - - {item.absorb_lab_time && dayjs(item.absorb_lab_time).format('YYYY-MM-DD HH:mm:ss')} - - - - {item.sampling ? '重新取样' : '取样'} - - - L*: {truncation(color?.currentLab?.l)} - a*: {truncation(color?.currentLab?.a)} - b*: {truncation(color?.currentLab?.b)} - - - - ) -} -export default ColorCard diff --git a/src/pages/colorRelated/takeColor/components/Texture/index.module.scss b/src/pages/colorRelated/takeColor/components/Texture/index.module.scss deleted file mode 100644 index 1052c3c..0000000 --- a/src/pages/colorRelated/takeColor/components/Texture/index.module.scss +++ /dev/null @@ -1,68 +0,0 @@ - - @mixin flex-center{ - display: flex; - justify-content: center; - align-items: center; - } - @mixin flex-vertical-center{ - display: flex; - align-items: center; - } - .tc-info{ - @include flex-vertical-center; - justify-content: space-between; - margin: 15px 30px; - } - .tc-i-upload{ - width: 264px; - height: 264px; - background: #DDDDDD; - border-radius: 264px; - position: relative; - z-index: 1; - overflow: hidden; - } - .tc-i-upload image{ - width: 100%; - height: 100%; - } - .tc-i-u-box{ - @include flex-center; - flex-direction: column; - position: absolute; - z-index: -1; - width: 100%; - height: 100%; - color: #707070; - font-size: 26px; - } - .tc-i-u-box text{ - margin-bottom: 15px; - font-size: 50px; - } - .tc-i-num{ - @include flex-vertical-center; - font-size: 44px; - font-weight: 400; - line-height: 58px; - } - .tc-i-num>view{ - padding: 0 48px; - position: relative; - text-align: center; - } - .tc-i-num>view:first-child::after{ - content: " "; - width: 0px; - height: 64px; - border: 2px solid #DDDDDD; - position: absolute; - right: 0;top: 50%; - transform: translateY(-50%); - } - .tc-i-num text{ - font-size: 26px; - font-weight: 400; - line-height: 34px; - color: #707070; - } diff --git a/src/pages/colorRelated/takeColor/components/Texture/index.tsx b/src/pages/colorRelated/takeColor/components/Texture/index.tsx deleted file mode 100644 index 7cfd510..0000000 --- a/src/pages/colorRelated/takeColor/components/Texture/index.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import classnames from 'classnames' -import type { FC } from 'react' -import { memo, useMemo, useRef, useState } from 'react' -import Upload from '../Upload' -import styles from './index.module.scss' -import { screenshot } from '@/common/util' -import { formatImgUrl, formatUrl } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' - -interface TextureEvent { - onUploadConfirm?: (file: string) => void -} -interface PropsType extends TextureEvent { - list: any[] - detail: any - uploadConfirmState: boolean -} - -const Texture: FC = (params) => { - const { onUploadConfirm, list, detail, uploadConfirmState } = params - console.log('detail==>', detail) - - const handleUploadConfirm = (url) => { - onUploadConfirm && onUploadConfirm(url) - } - - const uploadEl = useRef(null) - - const handleOpenModal = () => { - uploadEl.current.handleTriggerUploadModal(true) - } - - const calcNoSampling = useMemo(() => { - const len = list?.filter((item) => { - return item.currentLab?.l == 0 && item.currentLab?.a == 0 && item.currentLab?.b == 0 - }) - return len?.length ?? 0 - }, [list]) - - return ( - - - - {detail.texture_url && } - - - 上传纹理 - - - - - {(list?.length ?? 0) - calcNoSampling} - 已取样 - - - {calcNoSampling} - 未取样 - - - - - - ) -} -export default Texture diff --git a/src/pages/colorRelated/takeColor/components/Upload/index.module.scss b/src/pages/colorRelated/takeColor/components/Upload/index.module.scss deleted file mode 100644 index 67f90fc..0000000 --- a/src/pages/colorRelated/takeColor/components/Upload/index.module.scss +++ /dev/null @@ -1,68 +0,0 @@ - - @mixin flex-center{ - display: flex; - justify-content: center; - align-items: center; - } - @mixin flex-vertical-center{ - display: flex; - align-items: center; - } - .upload-container .drawer{ - position: fixed; - top: 0; - z-index: 10; - } - .u-content{ - @include flex-center; - flex-direction: column; - width: 100%; - padding: 65px 0; - } - .u-image{ - width: 422px; - height: 422px; - background: #F0F0F0; - border-radius: 50%; - overflow: hidden; - position: relative; - z-index: 0; - } - .u-image view{ - width: 100%; - height: 100%; - @include flex-center; - font-size: 28px; - font-weight: 400; - color: #707070; - position: absolute; - top: 0;left: 0; - z-index: 1; - } - .u-image .update-statu{ - color: white; - background-color: rgba(0, 0, 0, 0.5); - } - .u-image image{ - width: 100%; - height: 100%; - } - .u-button{ - display: flex; - margin-top: 76px; - } - .u-button view{ - width: 264px; - height: 82px; - background: #F0F0F0; - border-radius: 82px; - @include flex-center; - font-size: 32px; - font-weight: 400; - color: #007AFF; - margin: 0 15px; - } - .u-button .confirm{ - background: #007AFF; - color: white; - } diff --git a/src/pages/colorRelated/takeColor/components/Upload/index.tsx b/src/pages/colorRelated/takeColor/components/Upload/index.tsx deleted file mode 100644 index 8831ce3..0000000 --- a/src/pages/colorRelated/takeColor/components/Upload/index.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { Image, RootPortal, Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { FC, forwardRef, useEffect, useImperativeHandle, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Popup from '@/components/popup' - -interface UploadColorEvent { - onUploadConfirm?: Function -} - -interface PropsType extends UploadColorEvent { - uploadConfirmState: boolean -} - -const UploadColor = (params: PropsType, ref) => { - const { onUploadConfirm, uploadConfirmState } = params - const [showModal, setShowModal] = useState(false) - const [filePath, setFilePath] = useState('') - const [file, setFile] = useState({}) - - const handleUpload = async() => { - Taro.chooseMedia({ - count: 1, - mediaType: ['image'], - sourceType: ['album'], - success(ev) { - setFilePath(ev.tempFiles[0].tempFilePath) - setFile(ev.tempFiles[0]) - }, - }) - } - - const handleTriggerUploadModal = (bool: boolean) => { - setShowModal(bool) - } - useImperativeHandle( - ref, - () => ({ - handleTriggerUploadModal, - }), - [handleTriggerUploadModal], - ) - - const handleClear = () => { - setFilePath('') - } - const handleUploadConfirm = () => { - onUploadConfirm && onUploadConfirm(file) - } - useEffect(() => { - if (uploadConfirmState) { - setFilePath('') - handleTriggerUploadModal(false) - } - }, [uploadConfirmState]) - return ( - - handleTriggerUploadModal(false)}> - - - {filePath && } - - {filePath ? '点击修改' : '点击上传'} - - - 清除 - - 确定 - - - - - - ) -} -export default forwardRef(UploadColor) diff --git a/src/pages/colorRelated/takeColor/index.config.ts b/src/pages/colorRelated/takeColor/index.config.ts deleted file mode 100644 index 6168a81..0000000 --- a/src/pages/colorRelated/takeColor/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '颜色取样', - enableShareAppMessage: false, -} diff --git a/src/pages/colorRelated/takeColor/index.module.scss b/src/pages/colorRelated/takeColor/index.module.scss deleted file mode 100644 index d843e6c..0000000 --- a/src/pages/colorRelated/takeColor/index.module.scss +++ /dev/null @@ -1,143 +0,0 @@ -@mixin flex-center { - display: flex; - justify-content: center; - align-items: center; -} -@mixin flex-vertical-center { - display: flex; - align-items: center; -} -page { - background: #f3f3f3; -} -.card { - background: #fff; - padding: 0 20px; - border-radius: 20px; - box-sizing: border-box; - margin: 26px 30px; -} -.list-box { - padding-bottom: 220px; -} -.lb-title { - position: sticky; - top: 0; - z-index: 1; - font-size: 28px; - font-weight: 400; - background-color: #f3f3f3; - color: #707070; - border-top: 1px dashed #e4e4e4; - padding: 26px 46px; - box-sizing: border-box; - display: flex; - justify-content: space-between; - align-items: center; -} -.lb-t-serach { - flex: 0 1 60%; - @include flex-vertical-center; - .lb-t-search-content { - position: relative; - width: 100%; - display: flex; - .input-bar { - width: 100%; - box-sizing: border-box; - padding-left: 36px; - border-radius: 100px; - padding-right: 100px; - } - .lb-t-sc-clear { - position: absolute; - right: 36px; - top: 50%; - transform: translateY(-50%); - display: flex; - justify-content: center; - align-items: center; - @include flex-vertical-center; - height: 66px; - width: 66px; - border-radius: 50%; - background-color: #e7e7e7; - font-size: 28px; - } - } -} -.lb-t-serach .lb-t-search-content > text { - padding: 10px 0; - color: #707070; - font-size: 24px; -} -.lb-title input { - height: 66px; - background-color: #e7e7e7; - font-size: 26px; -} -.lb-t-search-content text { - color: #fff; - font-size: 30px; -} - -.not-list { - font-size: 28px; - font-weight: 400; - line-height: 38px; - color: #707070; - margin-top: 180px; - text-align: center; -} - -.lab-view { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 100; - background-color: rgba(0, 0, 0, 1); -} -.lab-view view { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 100%; - height: 0; - padding-bottom: 100%; -} - -.fixedBottom-container { - position: fixed; - bottom: 0; - left: 0; - right: 0; - display: flex; - justify-content: space-between; - width: 750px; - height: 182px; - background: #f3f3f3; - box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.16); - padding: 35px 68px; - box-sizing: border-box; -} -.fixedBottom-container view { - width: 264px; - height: 82px; - background: #ffffff; - opacity: 1; - border-radius: 50px; - display: flex; - justify-content: center; - align-items: center; - font-size: 32px; - font-weight: 400; - line-height: 42px; - color: #007aff; -} -.fixedBottom-container .fb-confirm { - background-color: #007aff; - color: white; -} diff --git a/src/pages/colorRelated/takeColor/index.tsx b/src/pages/colorRelated/takeColor/index.tsx deleted file mode 100644 index 19b7d07..0000000 --- a/src/pages/colorRelated/takeColor/index.tsx +++ /dev/null @@ -1,251 +0,0 @@ -import { Input, Text, View } from '@tarojs/components' -import type { FC } from 'react' -import { useCallback, useMemo, useRef, useState } from 'react' -import LinkBlueTooth from '../components/bluetooth/LinkBlueTooth' -import styles from './index.module.scss' -import ColorCard from './components/ColorCard' -import Texture from './components/Texture' -import SelectProduct from '@/components/selectProduct/index' -import IconFont from '@/components/iconfont/iconfont' -import { ColorDetailedApi, ColorListApi, ColorSamplingSaveApi, TextureSaveApi } from '@/api/index' -import { breakupUrl, formatHashTag, formatImgUrl, formatUrl } from '@/common/format' -import { alert } from '@/common/common' -import useUploadCDNImg from '@/use/useUploadImage' -import { useBluetooth } from '@/use/contextBlueTooth' -import { toRgb } from '@/common/bluetooth/color/colorSpace' -// 颜色取样 -const TakeColor: FC = () => { - const { state, fetchData } = ColorListApi() - const { uploadCDNImg } = useUploadCDNImg() - const { state: detail, fetchData: detailFetchData } = ColorDetailedApi() - const { state: textureSaveData, fetchData: textureSaveFetchData } = TextureSaveApi() - const { state: saveData, fetchData: saveFetchData } = ColorSamplingSaveApi() - const { measureAndGetLab, state: bluetoothState } = useBluetooth() - const [searchValue, setSearchValue] = useState('') - const [selectedProduct, setSelectedProduct] = useState>({}) - const [listData, setListData] = useState[]>([]) - - const selectInput = async(event) => { - if (event) { - alert.showLoading('正在加载颜色') - setSelectedProduct(event) - const res = await fetchData({ id: event.id }) - if (res.success) { - res.data?.list.forEach((item, index) => { - item.currnetRgb = item.rgb - item.currentLab = item.lab - item.sampling = !(item.currentLab?.l == 0 && item.currentLab?.a == 0 && item.currentLab?.b == 0) - item.moveBorder = 0 - item.key = index - }) - setListData(res.data?.list) - await detailFetchData({ id: event.id }) - } - alert.hideLoading() - } - else { - setListData([]) - alert.hideLoading() - } - } - - const clearSearchValue = () => { - console.log('asdfasdf') - setSearchValue('') - } - - const [currentTakeColorIndex, setCurrentTakeColorIndex] = useState(null) - - const handleTakeColor = (index: number) => { - setCurrentTakeColorIndex(index) - } - - // const listData = useMemo(() => { - // return state.data?.list?.filter(item => { - // if (searchValue) { - // return formatHashTag(item.product_color_name, item.product_color_code)!.includes(searchValue) - // } - // return true - // }) - // }, [state.data?.list, state]) - const productSelectEl = useRef(null) - - const onSearchInput = (event) => { - const current = event.detail.value - if (current === '') { - setListData(state.data.list) - } - else { - setListData( - state.data?.list?.filter((item) => { - return formatHashTag(item.product_color_name, item.product_color_code)!.includes(current) - }), - ) - } - } - // 底部提交 - const handleSubmit = async() => { - if (selectedProduct.id) { - const params = { - id: selectedProduct.id, - product_color_absorb: state.data.list.map((item) => { - return { - product_color_id: item.product_color_id, - l: item.currentLab.l, - a: item.currentLab.a, - b: item.currentLab.b, - // absorb_lab_time: `${dayjs(new Date()) - // .add(0, "day") - // .format("YYYY-MM-DD")} 00:00:00` - absorb_lab_time: new Date(), - } - }), - } - alert.showLoading('保存中') - const res = await saveFetchData(params) - if (res.success) { - alert.success('保存成功') - } - else { - alert.error('保存失败') - } - } - else { - productSelectEl.current.clickEvent() - alert.none('请选择面料') - } - } - // 重置 - const handleReset = () => { - console.log('handleReset') - if (selectedProduct.id) { - setListData( - state.data.list.map((item) => { - item.moveBorder = 0 - item.currnetRgb = item.rgb - item.currentLab = item.lab - item.sampling = !(item.currentLab?.l == 0 && item.currentLab?.a == 0 && item.currentLab?.b == 0) - return item - }), - ) - } - else { - productSelectEl.current.clickEvent() - alert.none('请选择面料') - } - } - - const [labPreview, setLabPreview] = useState({ - currnetRgb: { - r: 0, - g: 0, - b: 0, - }, - }) - - const [showLabPreview, setShowLabPreview] = useState(false) - - const [uploadConfirmState, setUploadConfirmState] = useState(false) - - const handleUploadConfirm = async(file) => { - setUploadConfirmState(false) - if (file) { - if (selectedProduct.id) { - alert.showLoading('上传中') - const res = await uploadCDNImg({ path: file.tempFilePath }, 'product', 'product') - if (res && res?.code == 200) { - // console.log('图片地址真实',`${IMG_CND_Prefix}${res.url}`); - - // TODO: 回填到存储的地方 - await textureSaveFetchData({ - id: selectedProduct.id, - texture_url: breakupUrl(res.url), - upload_texture_time: new Date(), - }) - await detailFetchData({ id: selectedProduct.id }) - alert.none('上传成功') - setUploadConfirmState(true) - } - else { - res && alert.none(`${res.message}`) - } - } - else { - productSelectEl.current.clickEvent() - alert.none('请选择面料') - } - } - else { - alert.none('请选择图片') - } - } - const handlePrViewRgb = useCallback((event) => { - setLabPreview(event) - setShowLabPreview(true) - }, []) - return ( - <> - - - - - - - - 颜色列表({listData?.length ?? 0}) - - - - - {searchValue.length > 0 && } - - - - - {listData.length - ? ( - listData.map((item, index) => { - return ( - - ) - }) - ) - : ( - -请取色- - )} - - - - 重置 - - - 提交 - - - {showLabPreview && ( - setShowLabPreview(false)} className={styles['lab-view']}> - - - )} - - ) -} - -export default TakeColor diff --git a/src/pages/customerDetails/components/form/index.module.scss b/src/pages/customerDetails/components/form/index.module.scss deleted file mode 100644 index 091a63d..0000000 --- a/src/pages/customerDetails/components/form/index.module.scss +++ /dev/null @@ -1,80 +0,0 @@ -.mainItem { - display: flex; - align-items: center; - border-bottom: 1px solid #e5e5e5; - padding-bottom: 40px; - margin-bottom: 40px; - - .mainItem_left { - width: 176px; - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .mainItem_right { - font-size: 28px; - font-weight: 400; - color: #6c6c6c; - margin-right: 16px; - } - - .mainItem_active_right { - font-size: 28px; - font-weight: 400; - color: #337FFF; - margin-right: 16px; - } - - .call { - width: 65px; - height: 34px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 24px; - font-weight: 400; - color: #337FFF; - line-height: 34px; - text-align: center; - } -} - -.mainItem_active { - display: flex; - align-items: center; - border-bottom: none; - margin-bottom: 40px; - - .mainItem_left { - width: 176px; - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .mainItem_right { - font-size: 28px; - font-weight: 400; - color: #6c6c6c; - margin-right: 16px; - } - - .mainItem_active_right { - font-size: 28px; - font-weight: 400; - color: #337FFF; - margin-right: 16px; - } - - .call { - width: 65px; - height: 34px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 24px; - font-weight: 400; - color: #337FFF; - line-height: 34px; - text-align: center; - } -} \ No newline at end of file diff --git a/src/pages/customerDetails/components/form/index.tsx b/src/pages/customerDetails/components/form/index.tsx deleted file mode 100644 index 92223d0..0000000 --- a/src/pages/customerDetails/components/form/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { alert } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' - -interface Props { - title: string - des: string | number - isPhone?: boolean - isBorder?: boolean -} -const Form = (props: Props) => { - const { - isPhone = false, - isBorder = true, - } = props - - const handPhone = () => { - Taro.makePhoneCall({ - phoneNumber: props.des as string, - }) - } - - return ( - - {props.title} - {props.des} - { - isPhone && handPhone()}>拨打 - } - - ) -} -export default memo(Form) diff --git a/src/pages/customerDetails/components/tabs/index.module.scss b/src/pages/customerDetails/components/tabs/index.module.scss deleted file mode 100644 index aeaad92..0000000 --- a/src/pages/customerDetails/components/tabs/index.module.scss +++ /dev/null @@ -1,42 +0,0 @@ -.flexBox { - width: 100%; - height: 102px; - background: #ffffff; - display: flex; - position: sticky; - top: 80px; - .itemBox { - position: relative; - flex: 1; - min-width: 138px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - height: 102px; - - .itemFont { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Bold; - font-weight: 400; - color: #000000; - } - - .activeItems { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 700; - color: #337FFF; - } - - .borderBox { - position: absolute; - bottom: 0; - width: 138px; - height: 6px; - background: #337FFF; - border-radius: 4px; - } - } -} \ No newline at end of file diff --git a/src/pages/customerDetails/components/tabs/index.tsx b/src/pages/customerDetails/components/tabs/index.tsx deleted file mode 100644 index 4bf6cf6..0000000 --- a/src/pages/customerDetails/components/tabs/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Button, Input, View } from '@tarojs/components' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -interface Props { - list: any[] - handChose?: (any) => void -} -const Tabs = (props: Props) => { - const { list = [], handChose } = props - - return ( - - { - list.map((item, index) => { - return ( - handChose?.(item)}> - {item?.name} - { - item.showBorder && - } - - ) - }) - } - - ) -} -export default memo(Tabs) diff --git a/src/pages/customerDetails/components/tagPopup/index.module.scss b/src/pages/customerDetails/components/tagPopup/index.module.scss deleted file mode 100644 index 63767ca..0000000 --- a/src/pages/customerDetails/components/tagPopup/index.module.scss +++ /dev/null @@ -1,96 +0,0 @@ -.scrollView { - max-height: 75vh; - .thirdBox { - padding-left: 48px; - - .thirdTopfont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .flexModebox { - margin-top: 24px; - display: flex; - flex-wrap: wrap; - flex-shrink: 0; - - .activemodeBox { - background: rgba(51, 127, 255, 0.1) !important; - color: #337fff !important; - border: 1px solid #337fff !important; - } - - .modeBox { - min-width: 200px; - margin-bottom: 10px; - margin-right: 16px; - padding: 10px 20px; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-weight: 400; - color: #777777; - border: 1px solid #f6f6f6; - text-align: center; - box-sizing: border-box; - } - } - } -} - -.bottomBox { - width: 100%; - // width: 750px; - height: 160px; - background: #ffffff; - // position: fixed; - // bottom: calc($customTabBarHeight + env(safe-area-inset-bottom)); - z-index: 99; - display: flex; - padding-top: 16px; - align-items: center; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087eff; - font-size: 28px; - font-weight: 500; - color: #337fff; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 28px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - letter-spacing: 4px; - } - - .activeButton { - background: #337fff; - border-radius: 44px; - } -} - -.goLink { - position: absolute; - right: 32px; - top: 37px; - font-size: 28px; - font-weight: 400; - color: #337fff; -} diff --git a/src/pages/customerDetails/components/tagPopup/index.tsx b/src/pages/customerDetails/components/tagPopup/index.tsx deleted file mode 100644 index 92ebf10..0000000 --- a/src/pages/customerDetails/components/tagPopup/index.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { Button, ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { alert, goLink } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import Popup from '@/components/popup' -import { MpPurchaserLabelAdd, MpPurchaserList } from '@/api/customer' -import NormalButton from '@/components/normalButton' - -interface Props { - showPopup: boolean - handClose: () => void - purchaser_id?: string | number - diseShow?: () => void -} -const TagPopup = (props: Props, ref) => { - const router = useRouter() - - const { fetchData } = MpPurchaserList() - // 标签 - const [modeList, setModeList] = useState([]) - const getList = async() => { - const res = await fetchData() - if (res.data) { - setModeList([...res.data.list]) - } - } - - // 选择标签 - const handCheckMode = (item) => { - modeList.map((it) => { - if (it.id === item.id) { - it.checked = !it.checked - } - return it - }) - setModeList([...modeList]) - } - - const handReset = () => { - modeList.map((it) => { - it.checked = false - return it - }) - setModeList([...modeList]) - } - const { fetchData: addFetch } = MpPurchaserLabelAdd() - const handSure = async() => { - const arr: any[] = [] - const fltArr = modeList.filter((item) => { return item.checked }) - fltArr.forEach((item) => { - arr.push({ - label_id: item.id, - }) - }) - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await addFetch({ binding_label: arr, purchaser_id: Number(router.params.purchaser_id) }) - if (res.msg == 'success') { - Taro.showToast({ - icon: 'success', - title: '成功', - }) - Taro.hideLoading() - } - else { - Taro.showToast({ - icon: 'error', - title: res.msg, - }) - Taro.hideLoading() - } - props?.diseShow?.() - } - - const isDisabled = useMemo(() => { - const arr = modeList.filter((item) => { return item.checked }) - if (arr.length) { - return false - } - else { - return true - } - }, [modeList]) - - const choseNums = useMemo(() => { - const arr = modeList.filter((item) => { return item.checked }) - return arr.length - }, [modeList]) - - useImperativeHandle(ref, () => ({ - modeList, - setModeList, - })) - useEffect(() => { - getList() - }, []) - return ( - { props.handClose() }}> - - - 自定义标签分组 - - {modeList.map((item, index) => { - return ( - { - handCheckMode(item) - }} - className={classnames(styles.modeBox, item.checked && styles.activemodeBox)} - key={index} - > - {item.name} - - ) - })} - - - - - 重置 - 保存({choseNums}) - - - ) -} -export default memo(forwardRef(TagPopup)) diff --git a/src/pages/customerDetails/index.config.ts b/src/pages/customerDetails/index.config.ts deleted file mode 100644 index f07472b..0000000 --- a/src/pages/customerDetails/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '客户详情', -} diff --git a/src/pages/customerDetails/index.module.scss b/src/pages/customerDetails/index.module.scss deleted file mode 100644 index 49200f9..0000000 --- a/src/pages/customerDetails/index.module.scss +++ /dev/null @@ -1,125 +0,0 @@ -.mainTop { - padding-top: 24px; - background: #fff; - overflow: hidden; - - .mainUser { - padding-top: 36px; - margin-left: 24px; - margin-right: 24px; - display: flex; - position: relative; - background: #f6f7fb; - border-radius: 16px; - padding-bottom: 20px; - - // margin-bottom: 16px; - .leftSafe { - width: 142px; - display: flex; - align-items: center; - justify-content: center; - .itemCile { - width: 78px; - height: 78px; - background: linear-gradient(337deg, #7bb7ff 0%, #4581ff 100%); - font-size: 32px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 78px; - border-radius: 50%; - margin-right: 32px; - margin-left: 32px; - } - } - - .item_top_one { - .item_top_one_flex { - display: flex; - align-items: center; - - .itemName { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-right: 24px; - } - - .itemPhone { - font-size: 28px; - font-weight: 400; - color: #646466; - } - } - - .item_tag_box { - margin-top: 16px; - display: flex; - align-items: center; - flex-wrap: wrap; - - .item_tagItem { - margin-bottom: 5px; - margin-right: 16px; - padding: 4px 10px 4px 10px; - font-size: 24px; - font-weight: 500; - color: #4581ff; - background: #e3eafb; - border-radius: 8px; - border: none; - } - - .item_tagAdd { - color: #4581ff; - background: #ecf2ff; - width: 114px; - height: 45px; - border-radius: 8px; - display: flex; - align-items: center; - - justify-content: space-between; - - .item_add { - margin-left: 20px; - line-height: 45px; - // font-size: 40px; - // margin-left: 8px; - } - - .item_add_font { - font-size: 24px; - font-weight: 500; - color: #4581ff; - margin-right: 15px; - } - } - } - } - - .pos { - position: absolute; - top: 35px; - right: 24px; - font-size: 28px; - font-weight: 400; - color: #337fff; - } - } -} - -.formBox { - margin-top: 24px; - margin-left: 24px; - margin-right: 24px; - background: #ffffff; - border-radius: 16px; - padding: 40px 32px 40px 32px; -} - -.order_list { - height: calc(100vh - 250px); - margin-top: 24px; -} diff --git a/src/pages/customerDetails/index.tsx b/src/pages/customerDetails/index.tsx deleted file mode 100644 index 97b605f..0000000 --- a/src/pages/customerDetails/index.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Tabs from './components/tabs' -import Form from './components/form' -import TagPopup from './components/tagPopup' -import Popup from '@/components/popup' -import { debounce } from '@/common/util' -import { alert, goLink } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import AddressList from '@/components/AddressList' -import { MpPurchaser } from '@/api/customer' -import Tag from '@/components/tag' - -const CustomerDetails = () => { - const router = useRouter() - - const [status, setstatus] = useState(1) - - const [infoObj, setinfoObj] = useState() - const { fetchData: getDesc } = MpPurchaser() - - // 顶部栏 - const AddressListRef = useRef() - const [TarBarList, setTarBarList] = useState([{ id: 1, name: '基础信息', showBorder: true }, { id: 2, name: '收货地址', showBorder: false }]) - const handChose = (item) => { - TarBarList.forEach((it) => { - if (it.id === item.id) { - it.showBorder = true - } - else { - it.showBorder = false - } - setTarBarList([...TarBarList]) - setstatus(item.id) - // pageNum.current.page = 1 - // setOrderData(() => ({ list: [], total: 0 })) - // setSearchField((val) => ({ ...val, size: 10, status: item.id })) - }) - if (item.id == 2) { - Taro.nextTick(() => { - AddressListRef.current?.getData() - }) - } - } - - const [showPopup, setshowPopup] = useState(false) - const TagPopupRef = useRef() - const handShow = () => { - TagPopupRef?.current?.modeList.map((it) => { - infoObj?.label_list?.forEach((item) => { - if (it.id == item.label_id) { - it.checked = true - } - }) - return it - }) - TagPopupRef.current.setModeList([...TagPopupRef.current.modeList]) - setshowPopup(true) - } - const getInfo = async() => { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await getDesc({ id: router.params.purchaser_id }) - setinfoObj(res.data) - Taro.hideLoading() - setshowPopup(false) - } - useDidShow(() => { - getInfo() - }) - return ( - - - - - {infoObj?.name?.[0]} - - - - {infoObj?.name} - {infoObj?.phone} - - - { - infoObj?.platform_source !== 1 && - {infoObj?.platform_source_name || '暂无'} - - } - - {infoObj?.purchaser_type_name || '暂无'} - - - {infoObj?.sale_user_name || '暂无'} - - {/* {infoObj?.purchaser_type_name || '暂无'} - {infoObj?.sale_user_name || '暂无'} */} - { - infoObj?.label_list?.map((item, key) => { - return ( - - {item.label_name} - - // {item.label_name} - ) - }) - } - handShow()}> - + - 标签 - - - - goLink(`/pages/customerEditor/index?id=${router.params.purchaser_id}&type=edit`)}>{'编辑 >'} - - handChose?.(item)}> - - { - status === 1 && -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- } - { - status === 2 - && - - - } - setshowPopup(false)} diseShow={() => getInfo()}> -
- ) -} -export default CustomerDetails diff --git a/src/pages/customerEditor/components/Form/index.module.scss b/src/pages/customerEditor/components/Form/index.module.scss deleted file mode 100644 index 351bcac..0000000 --- a/src/pages/customerEditor/components/Form/index.module.scss +++ /dev/null @@ -1,83 +0,0 @@ -.mainItem { - margin-bottom: 40px; - display: flex; - align-items: center; - padding-bottom: 20px; - border-bottom: 1px solid #e8e8e8; - - .leftItem { - width: 176px; - display: flex; - align-items: center; - font-size: 28px; - font-weight: 500; - color: #333333; - - .xing { - font-size: 28px; - font-weight: 500; - color: #E42945; - } - } - - .rightItem { - display: flex; - align-items: center; - width: 100%; - padding-left: 48px; - - .placeholderStyle { - color: #f7f7f7; - font-size: 28px; - font-weight: 400; - } - - .inputStyle { - width: 100%; - font-size: 28px; - font-weight: 400; - color: #000000; - } - } -} - -.mainItemactive { - display: flex; - align-items: center; - border-bottom: none; - - .leftItem { - width: 176px; - display: flex; - align-items: center; - font-size: 28px; - font-weight: 500; - color: #000000; - - .xing { - font-size: 28px; - font-weight: 500; - color: #E42945; - } - } - - .rightItem { - display: flex; - align-items: center; - width: 100%; - padding-left: 48px; - - .placeholderStyle { - color: #f7f7f7; - font-size: 28px; - font-weight: 400; - } - - .inputStyle { - width: 100%; - font-size: 28px; - font-weight: 400; - color: #000000; - } - } -} \ No newline at end of file diff --git a/src/pages/customerEditor/components/Form/index.tsx b/src/pages/customerEditor/components/Form/index.tsx deleted file mode 100644 index eb9fc9d..0000000 --- a/src/pages/customerEditor/components/Form/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { Button, Input, ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { ReactNode } from 'react' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { alert, goLink } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import Popup from '@/components/popup' - -interface Props { - title: string - isQuire?: boolean - placeholderFont?: string - handBlur?: (any) => void - inputValue?: string - isDisabled?: boolean - inputType?: any - maxlength?: number - children?: ReactNode - showInput?: boolean - showMore?: boolean - showBorder?: boolean - handNav?: () => void -} -const Form = (props: Props) => { - const { - title = '标题', - isQuire = true, - placeholderFont = '请输入', - handBlur, - handNav, - inputValue, - isDisabled, - inputType = 'text', - maxlength = 999, - children, - showInput = true, - showMore = false, - showBorder = true, - } = props - - return ( - - {title} - { - isQuire && * - } - - { - !children && handNav?.()}> - { - showInput && handBlur?.(e.detail.value)} - value={inputValue} - > - } - { - showMore && - } - - } - {children} - - ) -} -export default memo(Form) diff --git a/src/pages/customerEditor/index.config.ts b/src/pages/customerEditor/index.config.ts deleted file mode 100644 index f7405a2..0000000 --- a/src/pages/customerEditor/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '客户编辑', -} diff --git a/src/pages/customerEditor/index.module.scss b/src/pages/customerEditor/index.module.scss deleted file mode 100644 index 2f78e68..0000000 --- a/src/pages/customerEditor/index.module.scss +++ /dev/null @@ -1,155 +0,0 @@ -.mainBox { - margin: 24px; - background: #fff; - padding: 40px 32px 40px 32px; - border-radius: 16px; - - .flexBox { - display: flex; - align-items: center; - - .itemBox { - background: #f6f6f6; - border: 1px solid #f6f6f6; - box-sizing: border-box; - width: 132px; - height: 56px; - opacity: 0.4; - background: #E9E9E9; - border-radius: 8px; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 56px; - margin-right: 24px; - } - - .activeBox { - width: 132px; - height: 56px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 28px; - font-weight: 500; - color: #337FFF; - box-sizing: border-box; - text-align: center; - line-height: 56px; - margin-right: 24px; - } - } -} - -.defaltBox { - margin: 24px; - padding: 24px 32px 24px 24px; - background: #FFFFFF; - border-radius: 16px; - - .titleBox { - width: 638px; - display: flex; - justify-content: space-between; - align-items: center; - - .title { - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - } - - .modeName { - font-size: 28px; - font-weight: 500; - color: #337FFF; - } - } - - .modeLine { - margin-top: 24px; - width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - } - -} - -.remarkFont { - margin-top: 24px; - font-size: 28px; - font-weight: 400; - color: #000000; -} - -.remarkFontactive { - margin-top: 24px; - font-size: 28px; - font-weight: 400; - color: #aeaeae; -} - -.safeBox { - width: 100%; - height: 160px; -} - -.bottomBox { - width: 100%; - // width: 750px; - height: 160px; - background: #FFFFFF; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - align-items: center; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087EFF; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #337FFF; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button2 { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; - } - - .activeButton { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } -} \ No newline at end of file diff --git a/src/pages/customerEditor/index.tsx b/src/pages/customerEditor/index.tsx deleted file mode 100644 index 749f118..0000000 --- a/src/pages/customerEditor/index.tsx +++ /dev/null @@ -1,386 +0,0 @@ -import { Button, View } from '@tarojs/components' -import Taro, { setNavigationBarTitle, useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { ReactNode } from 'react' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import Remark from '../orderDetails/components/remark' -import styles from './index.module.scss' -import Form from './components/Form' -import Popup from '@/components/popup' -import { debounce } from '@/common/util' -import { alert, goLink } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import Address from '@/components/address' -import { MpPurchaser, MpPurchaserPost, MpPurchaserPut } from '@/api/customer' -// 卡片盒子元素 -interface Obs { - title?: string - modeName?: string - showMode?: boolean - children?: ReactNode - clickNode?: () => void -} - -const DefaultBox = (props: Obs) => { - const { - title = '标题', - modeName = '大货', - showMode = false, - children, - clickNode, - } = props - - return ( - - - {title} - { - showMode && clickNode?.()}>{modeName} - } - - - {children} - - ) -} -const DefaultBoxWithMemo = memo(DefaultBox) - -interface AddressParms { - id: number - name: string -} -const CustomerEditor = () => { - const router = useRouter() - - const [infoObj, setinfoObj] = useState() - - const [formData, setformData] = useState() - - const [addressArr, setaddressArr] = useState([]) - - // 默认业务员 - useDidShow(() => { - if (router.params.type === 'add') { - setNavigationBarTitle({ title: '新增客户' }) - } - else { - setNavigationBarTitle({ title: '客户编辑' }) - } - const userInfo = JSON.parse(Taro.getStorageSync('userInfo')) - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - // 判断是否有跳转选择业务员 - if (currPage.data?.saleuserId && currPage.data?.saleuserId !== '') { - setformData(val => ({ - ...val, - sale_user_id: currPage.data?.saleuserId, - sale_user_name: currPage.data?.saleuserName, - })) - } - // 默认业务员 - if (currPage.data?.saleuserId == null) { - setformData(e => ({ - ...e, - sale_user_id: userInfo?.user_id, - sale_user_name: userInfo?.user_name, - })) - } - }) - - const { fetchData: getDesc } = MpPurchaser() - - const handTitle = useCallback((e) => { - setformData(val => ({ ...val, name: e })) - }, []) - - const handName = useCallback((e) => { - setformData(val => ({ ...val, short_name: e })) - }, []) - - const handUsername = useCallback((e) => { - setformData(val => ({ ...val, director: e })) - }, []) - - const handUserPhone = useCallback((e) => { - setformData(val => ({ ...val, phone: e })) - }, []) - - const handAddress = useCallback((e) => { - setformData(val => ({ ...val, address_detail: e })) - }, []) - - // 客户类型数组 - const [list, setlist] = useState([ - { - id: 1, - name: '布行', - check: false, - }, - { - id: 2, - name: '二批', - check: false, - }, - { - id: 3, - name: '制衣厂', - check: false, - }, - ]) - - // 选择客户类型 - const handItem = (item) => { - list.map((it) => { - if (it.id === item.id) { - it.check = true - } - else { - it.check = false - } - return it - }) - setlist([...list]) - setformData(val => ({ ...val, purchaser_type: item.id })) - } - // 备注操作 - const [remarkDesc, setremarkDesc] = useState('') - const getInfo = async() => { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await getDesc({ id: router.params.id }) - setinfoObj(res.data) - list.map((item) => { - if (item.id == res.data.purchaser_type) { - item.check = true - } - else { - item.check = false - } - return item - }) - setlist([...list]) - setformData({ - sale_user_id: res.data?.sale_user_id, - sale_user_name: res.data?.sale_user_name, - name: res.data?.name, - short_name: res.data?.short_name, - director: res.data?.director, - phone: res.data?.phone, - addressName: res.data?.province_name + res.data?.city_name + res.data?.district_name, - address_detail: res.data?.address_detail, - purchaser_type: res.data?.purchaser_type, - district_id: res.data?.district_id, - }) - setremarkDesc(res.data?.remark) - let arr: any[] = [] - arr = [ - { id: res.data.province_id, name: res.data.province_name }, - { id: res.data.city_id, name: res.data.city_name }, - { id: res.data.district_id, name: res.data.district_name }, - ] - setaddressArr([...arr]) - Taro.hideLoading() - } - - const [showDesc, setShowDesc] = useState(false) - const getRemark = useCallback(async(e) => { - setShowDesc(false) - setremarkDesc(e) - // setformData((val) => ({ ...val, remark: e })) - }, []) - - // 地址选择 - const [showSiteModal, setShowSiteModal] = useState(false) - - const handleSetSite = (ev) => { - const addressName: any = [] - ev.forEach((v) => { - addressName.push(v?.name) - }) - if (ev.length === 3) { - setShowSiteModal(false) - setformData(val => ({ ...val, addressName: ev[0]?.name + ev[1]?.name + ev[2]?.name || '', district_id: ev[2]?.id })) - } - } - - const onClose = () => { - setShowSiteModal(false) - } - useEffect(() => { - if (router.params.type === 'edit') { - getInfo() - } - }, []) - const isDisabled = useMemo(() => { - let count = 0 - for (const i in formData) { - count++ - } - console.log(formData, '5555') - console.log(count, '6666') - let empty: any = null - if (typeof (formData) == 'undefined') { return } - for (const key in formData) { - if (key in formData) { - if (formData[key] !== '' && typeof (formData[key]) !== 'undefined' && count === 10) { - empty = false - } - else { - empty = true - break - } - } - } - return empty - }, [formData]) - - // 重置 - const handReset = () => { - setformData({ - sale_user_id: '', - sale_user_name: '', - name: '', - short_name: '', - director: '', - phone: '', - addressName: '', - address_detail: '', - purchaser_type: '', - remark: '', - district_id: '', - }) - } - - const { fetchData: postFetch } = MpPurchaserPost() - const { fetchData: putFetch } = MpPurchaserPut() - // 提交 - const handSure = async() => { - // if (!isDisabled) return false - const query = { - ...formData, - remark: remarkDesc, - id: infoObj?.id, - } - if (router.params.type == 'add') { - delete query.id - } - Taro.showModal({ - content: '确定要提交吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - const res = await (router.params.type == 'add' ? postFetch(query) : putFetch(query)) - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - if (res.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - Taro.hideLoading() - Taro.navigateBack({ - delta: 1, - }) - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - }, - }) - } - - return ( - <> - - -
-
-
- - { - list.map((item, key) => { - return ( - handItem(item)}>{item.name} - ) - }) - } - -
-
-
-
setShowSiteModal(true)} - >
-
-
goLink('/pages/saleuserPage/index')} - showBorder={false} - inputValue={formData?.sale_user_name} - >
-
- `} clickNode={() => setShowDesc(true)}> - {remarkDesc === '' ? '尚未备注信息' : remarkDesc} - - setShowDesc(false)}> - { - showDesc && getRemark(e)} defaultValue={infoObj?.remark} /> - } - -
handleSetSite(val)} defaultValue={addressArr} addressOnClose={() => onClose()} show={showSiteModal} /> - - - - - - - ) -} -export default CustomerEditor diff --git a/src/pages/customerManagement/components/ChoseCity/index.module.scss b/src/pages/customerManagement/components/ChoseCity/index.module.scss deleted file mode 100644 index 0a429fd..0000000 --- a/src/pages/customerManagement/components/ChoseCity/index.module.scss +++ /dev/null @@ -1,30 +0,0 @@ -.mainBox { - - .scrollView { - height: 500px; - - - .itemBox { - margin-left: 53px; - margin-right: 27px; - display: flex; - align-items: center; - justify-content: space-between; - height: 82px; - border-bottom: 1px solid #f9f9f9; - - .itemProvince { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .activeitemProvince { - font-size: 28px; - font-weight: 400; - color: #337FFF; - } - - } - } -} \ No newline at end of file diff --git a/src/pages/customerManagement/components/ChoseCity/index.tsx b/src/pages/customerManagement/components/ChoseCity/index.tsx deleted file mode 100644 index 1dd6f31..0000000 --- a/src/pages/customerManagement/components/ChoseCity/index.tsx +++ /dev/null @@ -1,224 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import Tabs from '../tabs' -import styles from './index.module.scss' -import { alert } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import DropDownItem from '@/components/dropDown-item' -import { GetAddressListApi } from '@/api/addressList' -import IconFont from '@/components/iconfont/iconfont' - -interface Props { - handCity?: (province: any, city: any) => void - value?: any - onCloseOverlay?: () => void -} -const ChoseCity = (props: Props, ref) => { - const DropDownItemRef = useRef() - const close = () => { - DropDownItemRef.current.closePopup() - } - useImperativeHandle( - ref, - () => { - return { - show: DropDownItemRef?.current?.show, - showPopup: DropDownItemRef?.current.showPopup, - closePopup: DropDownItemRef?.current?.closePopup, - } - }, - [DropDownItemRef?.current], - ) - - // 获取地址 - const { fetchData } = GetAddressListApi() - - // 已选的集合市 - // const [choseCityArr, setchoseCityArr] = useState([]) - const choseCityArr = useRef({ list: [] }) - - // 省数组 - const [list, setlist] = useState([]) - // 区数组 - const [cityList, setcityList] = useState([]) - // 获取省 - const getProvince = async() => { - const res = await fetchData({ parent_id: 1 }) - if (res.data) { - setlist([...res.data.list]) - } - } - useEffect(() => { - getProvince() - }, []) - // 区分在哪一栏 - const [currentValue, setCurrentValue] = useState(1) - - // 顶部栏 - const [TarBarList, setTarBarList] = useState([{ id: 1, name: '选择省', showBorder: true }, { id: 2, name: '选择市', showBorder: false }]) - const handChose = (item) => { - TarBarList.forEach((it) => { - if (it.id === item.id) { - it.showBorder = true - } - else { - it.showBorder = false - } - setTarBarList([...TarBarList]) - setCurrentValue(item.id) - }) - } - - // 获取市 - const getCity = async(id) => { - const res = await fetchData({ parent_id: id }) - if (res.data) { - res.data.list.map((item) => { - choseCityArr.current.list.forEach((it) => { - if (item.id == it.id) { - item.check = true - } - }) - return item - }) - setcityList([...res.data.list]) - } - const provinceArr = list.filter((next) => { return next.check }) - props.handCity?.(provinceArr, choseCityArr.current.list) - } - // 选择省 - const handProvince = (item) => { - list.map((it) => { - if (item.id == it.id) { - it.check = true - } - return it - }) - setlist([...list]) - getCity(item.id) - setCurrentValue(2) - TarBarList.map((it) => { - if (it.id == currentValue) { - it.name = item.name - it.showBorder = false - } - else { - it.showBorder = true - } - - return it - }) - setTarBarList([...TarBarList]) - } - // 选择市 - const handCity = (item) => { - cityList.map((it) => { - if (item.id == it.id) { - it.check = !it.check - } - return it - }) - setcityList([...cityList]) - const cityArr = cityList.filter((next) => { return next.check }) - if (item.check) { - choseCityArr.current.list.push(item) - } - else { - deleteById(item.id, choseCityArr.current.list) - } - // 将市区的全部不选后,该省的颜色不高亮 - if (cityArr.length == 0) { - list.map((item) => { - if (cityList[0]?.parent_id == item.id) { - item.check = false - } - return item - }) - setlist([...list]) - } - const provinceArr = list.filter((next) => { return next.check }) - props.handCity?.(provinceArr, choseCityArr.current.list) - } - - /** - * 根据id删除数组项 - * @param {Number} id 需要删除的id - * @param {Array} list 目标数组 - * - * @return {Array} - */ - function deleteById(id, list) { - for (let index = list.length - 1; index >= 0; index--) { - if (list[index] && list[index].id === id) { - list.splice(index, 1) - } - } - return list - } - - // 重置 - const handReset = () => { - TarBarList.map((item, index) => { - if (index == 0) { - item.name = '选择省' - item.showBorder = true - } - else { - item.showBorder = false - } - return item - }) - setTarBarList([...TarBarList]) - setCurrentValue(1) - choseCityArr.current.list = [] - list.map((item) => { - item.check = false - return item - }) - setlist([...list]) - cityList.map((item) => { - item.check = false - return item - }) - setcityList([...cityList]) - props.handCity?.('', '') - } - return ( - - - handChose?.(item)} handReset={() => handReset()}> - { - currentValue == 1 && - { - list.map((item, key) => { - return ( - handProvince(item)}> - {item.name} - - - ) - }) - } - - } - { - currentValue == 2 && - { - cityList.map((item, key) => { - return ( - handCity(item)}> - {item.name} - {/* */} - - ) - }) - } - - } - - - ) -} -export default memo(forwardRef(ChoseCity)) diff --git a/src/pages/customerManagement/components/ItemList/index.module.scss b/src/pages/customerManagement/components/ItemList/index.module.scss deleted file mode 100644 index 5989157..0000000 --- a/src/pages/customerManagement/components/ItemList/index.module.scss +++ /dev/null @@ -1,122 +0,0 @@ -.mainItem { - margin-left: 24px; - margin-right: 24px; - margin-bottom: 24px; - background: #fff; - overflow: hidden; - padding-bottom: 16px; - border-radius: 16px; - - .itemTop { - margin-top: 36px; - display: flex; - justify-content: space-between; - - .itemLeft { - margin-left: 24px; - display: flex; - align-items: center; - .itemCile { - width: 78px; - height: 78px; - background: linear-gradient(337deg, #7bb7ff 0%, #4581ff 100%); - font-size: 32px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 78px; - border-radius: 50%; - margin-right: 32px; - } - - .item_top_one { - .item_top_one_flex { - display: flex; - align-items: center; - - .itemName { - font-size: 28px; - font-weight: 550; - color: #000000; - margin-right: 24px; - } - - .itemPhone { - font-size: 28px; - font-weight: 400; - color: #6e6e6e; - } - } - - .item_tag_box { - margin-top: 16px; - display: flex; - align-items: center; - flex-wrap: wrap; - - .item_tagItem { - margin-bottom: 5px; - margin-right: 16px; - padding: 4px 10px 4px 10px; - font-size: 24px; - font-weight: 500; - color: #4581ff; - background: #ecf2ff; - border-radius: 8px; - border: none; - } - } - } - } - - .itemRight { - display: flex; - - .phoneFont { - // margin-right: 40px; - margin-left: 16px; - font-size: 24px; - font-weight: 400; - color: #4581ff; - width: 100rpx; - } - } - } - - .line { - height: 1px; - background: #000000; - opacity: 0.1; - margin-right: 24px; - margin-left: 24px; - margin-top: 20px; - margin-bottom: 16px; - } - - .flex_bottom { - display: flex; - justify-content: space-between; - align-items: center; - padding-left: 24px; - padding-right: 24px; - font-size: 24px; - font-weight: 400; - color: #000000; - - .flex_left { - width: 50%; - color: #999999; - font-weight: 400; - font-size: 24px; - @include common_ellipsis(); - } - - .flex_right { - width: 50%; - text-align: left; - color: #999999; - font-weight: 400; - font-size: 24px; - } - } -} diff --git a/src/pages/customerManagement/components/ItemList/index.tsx b/src/pages/customerManagement/components/ItemList/index.tsx deleted file mode 100644 index 8b9bd3c..0000000 --- a/src/pages/customerManagement/components/ItemList/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { alert } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import Tag from '@/components/tag' - -interface Props { - obj: any - sortId: number | string -} -const ItemList = (props: Props) => { - const handPhone = (e) => { - e.stopPropagation() - Taro.makePhoneCall({ - phoneNumber: props.obj?.real_phone, - }) - } - - const handNav = () => { - Taro.navigateTo({ - url: `/pages/customerDetails/index?purchaser_id=${props.obj?.id}`, - }) - } - - const time = useMemo(() => { - if (props?.sortId == '' || !props?.sortId) { - return props?.obj?.recent_order_time - } - if (props?.sortId == 1 || props?.sortId == -1) { - return props?.obj?.recent_order_time - } - if (props?.sortId == 2 || props?.sortId == -2) { - return props?.obj?.create_time - } - if (props?.sortId == 3 || props?.sortId == -3) { - return props?.obj?.update_time - } - }, [props?.sortId]) - - const timeFont = useMemo(() => { - if (props?.sortId == '' || !props?.sortId) { - return '下单时间' - } - if (props?.sortId == 1 || props?.sortId == -1) { - return '下单时间' - } - if (props?.sortId == 2 || props?.sortId == -2) { - return '创建时间' - } - if (props?.sortId == 3 || props?.sortId == -3) { - return '更新时间' - } - }, [props?.sortId]) - - return ( - handNav()}> - - - - {props.obj.name[0]} - - - - {props.obj.name} - {props.obj.phone} - - - - {props.obj.purchaser_type_name || '暂无'} - - - {props.obj.sale_user_name || '暂无'} - - { - props.obj?.label_list?.map((item, key) => { - return ( - - {item.label_name} - - ) - }) - } - - {props.obj.platform_source_name} - - - - - handPhone(e)}> - - - 联系TA - - - - - {props.obj.default_address.province_name + props.obj.default_address.city_name + props.obj.default_address.district_name || '暂无'} - {timeFont}:{formatDateTime(time, 'YYYY-MM-DD HH:mm') || '暂无'} - - - ) -} -export default memo(ItemList) diff --git a/src/pages/customerManagement/components/Sort/index.module.scss b/src/pages/customerManagement/components/Sort/index.module.scss deleted file mode 100644 index 8d10c1f..0000000 --- a/src/pages/customerManagement/components/Sort/index.module.scss +++ /dev/null @@ -1,24 +0,0 @@ -.mainBox { - display: flex; - flex-wrap: wrap; - padding-left: 40px; - - .itemFlex { - padding: 20px 18px 20px 18px; - background: #f6f6f6; - border: 1px solid #f6f6f6; - font-size: 28px; - font-weight: 400; - color: #9a9a9a; - margin-right: 24px; - margin-bottom: 24px; - border-radius: 16px; - } - - .active { - background: rgba(51, 127, 255, 0.1); - border: 1px solid #337fff; - color: #337fff; - font-weight: 550; - } -} diff --git a/src/pages/customerManagement/components/Sort/index.tsx b/src/pages/customerManagement/components/Sort/index.tsx deleted file mode 100644 index 7d9262f..0000000 --- a/src/pages/customerManagement/components/Sort/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { alert } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import DropDownItem from '@/components/dropDown-item' - -interface Props { - handSort?: (any) => void - value?: any - onCloseOverlay?: () => void -} - -interface ListType { - name: string - id: string - checked: boolean -} -const Sort = (props: Props, ref) => { - const DropDownItemRef = useRef() - useImperativeHandle( - ref, - () => { - return { - show: DropDownItemRef?.current?.show, - showPopup: DropDownItemRef?.current.showPopup, - closePopup: DropDownItemRef?.current?.closePopup, - } - }, - [DropDownItemRef?.current], - ) - - const [list, setlist] = useState([ - { - name: '下单时间正序', - id: '1', - checked: false, - }, - { - name: '创建时间正序', - id: '2', - checked: false, - }, - { - name: '更新时间正序', - id: '3', - checked: false, - }, - { - name: '下单时间倒序', - id: '-1', - checked: false, - }, - { - name: '创建时间倒序', - id: '-2', - checked: false, - }, - { - name: '更新时间倒序', - id: '-3', - checked: false, - }, - ]) - - const [currentValue, setCurrentValue] = useState(-1) - - const handItem = (it) => { - list.map((item) => { - if (item.id == it.id) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - setlist([...list]) - props.handSort?.(it.id) - } - - const title = useMemo(() => { - const arr = list.filter((item) => { return item.checked }) - if (!arr.length) { - return '默认排序' - } - else { - return arr[0]?.name - } - }, [list]) - - return ( - - - { - list.map((item, index) => { - return ( - handItem?.(item)}>{item.name} - ) - }) - } - - - ) -} -export default memo(forwardRef(Sort)) diff --git a/src/pages/customerManagement/components/Tag/index.module.scss b/src/pages/customerManagement/components/Tag/index.module.scss deleted file mode 100644 index 2977995..0000000 --- a/src/pages/customerManagement/components/Tag/index.module.scss +++ /dev/null @@ -1,44 +0,0 @@ -.mainBox { - .pussTitle { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-bottom: 24px; - margin-left: 40px; - margin-top: 15px; - } - - .pussBox { - display: flex; - flex-wrap: wrap; - padding-left: 40px; - - .itemFlex { - min-width: 80px; - padding: 20px 60px 20px 60px; - background: #f6f6f6; - border: 1px solid #f6f6f6; - font-size: 28px; - font-weight: 400; - color: #777777; - margin-right: 24px; - margin-bottom: 24px; - border-radius: 16px; - text-align: center; - } - - .active { - background: rgba(51, 127, 255, 0.1); - border: 1px solid #337fff; - font-weight: 500; - color: #337fff; - min-width: 80px; - font-size: 28px; - padding: 20px 60px 20px 60px; - margin-right: 24px; - margin-bottom: 24px; - border-radius: 16px; - text-align: center; - } - } -} diff --git a/src/pages/customerManagement/components/Tag/index.tsx b/src/pages/customerManagement/components/Tag/index.tsx deleted file mode 100644 index 9b5edec..0000000 --- a/src/pages/customerManagement/components/Tag/index.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import { alert } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { EnumPurchaserType } from '@/api/order' -import DropDownItem from '@/components/dropDown-item' -import { EnumSourcePlatform, MpPurchaserList } from '@/api/customer' - -interface Props { - handType: (any) => void - handTags: (any) => void - handPlatform: (any) => void - value?: any - onCloseOverlay?: () => void -} -const Tag = (props: Props, ref) => { - const DropDownItemRef = useRef() - useImperativeHandle( - ref, - () => { - return { - show: DropDownItemRef?.current?.show, - showPopup: DropDownItemRef?.current.showPopup, - closePopup: DropDownItemRef?.current?.closePopup, - } - }, - [DropDownItemRef?.current], - ) - const [currentValue, setCurrentValue] = useState(-1) - - const [list, setlist] = useState([ - { - name: '二批', - id: 0, - checked: false, - }, - { - name: '制衣厂', - id: 1, - checked: false, - }, - { - name: '布行', - id: 2, - checked: false, - }, - ]) - - const { fetchData: fetchPurchaserType } = EnumPurchaserType() - - const { fetchData: fetchSourcePlatform } = EnumSourcePlatform() - - const { fetchData } = MpPurchaserList() - const [taglist, settaglist] = useState([]) - const [platformList, setPlatformList] = useState([]) - const getList = async() => { - const res = await fetchData() - const purchaserType = await fetchPurchaserType() - const sourcePlatform = await fetchSourcePlatform() - if (res.data) { - settaglist([...res.data.list]) - setlist([...purchaserType.data.list]) - setPlatformList([...sourcePlatform.data.list]) - } - } - useEffect(() => { - getList() - }, []) - - const handItem = (it) => { - list.map((item) => { - if (item.id == it.id) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - setlist([...list]) - props.handType(list) - } - - const handTag = (it) => { - taglist.map((item) => { - if (item.id == it.id) { - item.checked = !item.checked - } - return item - }) - settaglist([...taglist]) - props.handTags(taglist) - } - - const handlePlatformSource = (it) => { - platformList.map((item) => { - if (item.id == it.id) { - item.checked = !item.checked - } - return item - }) - setPlatformList([...platformList]) - props?.handPlatform(platformList) - } - - return ( - - - 客户类型 - - { - list.map((item, index) => { - return ( - handItem(item)}>{item.name} - ) - }) - } - - 自定义标签 - - { - taglist.map((item, index) => { - return ( - handTag(item)}>{item.name} - ) - }) - } - - 平台来源 - - { - platformList.map((item, index) => { - // 过滤 未知 - if (item.id !== 0) { - return ( - handlePlatformSource(item)}>{item.name} - ) - } - else { - return null - } - }) - } - - - - ) -} -export default memo(forwardRef(Tag)) diff --git a/src/pages/customerManagement/components/tabs/index.module.scss b/src/pages/customerManagement/components/tabs/index.module.scss deleted file mode 100644 index 5a9bf05..0000000 --- a/src/pages/customerManagement/components/tabs/index.module.scss +++ /dev/null @@ -1,55 +0,0 @@ -.main { - display: flex; - justify-content: space-between; - align-items: center; - - .resetBox { - font-size: 28px; - font-weight: 500; - color: #337FFF; - margin-right: 48px; - } -} - -.flexBox { - // width: 100%; - height: 102px; - background: #ffffff; - display: flex; - padding-left: 53px; - - .itemBox { - position: relative; - min-width: 88px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - height: 102px; - margin-right: 40px; - - .itemFont { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Bold; - font-weight: 400; - color: #000000; - } - - .activeItems { - font-size: 28px; - font-family: Microsoft YaHei, Microsoft YaHei-Regular; - font-weight: 700; - color: #337FFF; - } - - .borderBox { - position: absolute; - bottom: 0; - width: 88px; - height: 6px; - background: #337FFF; - border-radius: 4px; - } - } -} \ No newline at end of file diff --git a/src/pages/customerManagement/components/tabs/index.tsx b/src/pages/customerManagement/components/tabs/index.tsx deleted file mode 100644 index a745b5b..0000000 --- a/src/pages/customerManagement/components/tabs/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Button, Input, View } from '@tarojs/components' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -interface Props { - list: any[] - handChose?: (any) => void - handReset?: () => void -} -const Tabs = (props: Props) => { - const { list = [], handChose } = props - - return ( - - - { - list.map((item, index) => { - return ( - handChose?.(item)}> - {item?.name} - { - item.showBorder && - } - - ) - }) - } - - - props?.handReset?.()}>重置 - - ) -} -export default memo(Tabs) diff --git a/src/pages/customerManagement/index.config.ts b/src/pages/customerManagement/index.config.ts deleted file mode 100644 index c87840b..0000000 --- a/src/pages/customerManagement/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '客户列表', -} diff --git a/src/pages/customerManagement/index.module.scss b/src/pages/customerManagement/index.module.scss deleted file mode 100644 index 4517213..0000000 --- a/src/pages/customerManagement/index.module.scss +++ /dev/null @@ -1,61 +0,0 @@ -.mainBox { - .topBox { - width: 100%; - position: sticky; - top: 0; - z-index: 999; - // padding-bottom: 24px; - background: #fff; - // overflow: hidden; - - .search_input { - padding-top: 8px; - margin-left: 24px; - margin-right: 24px; - margin-bottom: 10px; - } - - .menuBox { - width: 100%; - display: flex; - flex: 1; - } - } - - .totalFont { - margin-top: 24px; - margin-left: 24px; - font-size: 26px; - font-weight: 400; - color: #aeaeae; - margin-bottom: 15px; - } - - .order_list { - height: calc(100vh - env(safe-area-inset-bottom) - 200px); - background: #f7f7f7; - } - - .bottom_box { - height: 160px; - background: #ffffff; - position: fixed; - bottom: 0; - z-index: 1; - - .bottom_btn { - margin-top: 16px; - margin-left: 24px; - margin-right: 24px; - width: 702px; - height: 80px; - background: #337fff; - border-radius: 44px; - line-height: 80px; - text-align: center; - font-size: 28px; - font-weight: 500; - color: #ffffff; - } - } -} diff --git a/src/pages/customerManagement/index.tsx b/src/pages/customerManagement/index.tsx deleted file mode 100644 index 77d4517..0000000 --- a/src/pages/customerManagement/index.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Tag from './components/Tag' -import Sort from './components/Sort' -import ChoseCity from './components/ChoseCity' -import ItemList from './components/ItemList' -import Popup from '@/components/popup' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { alert, goLink } from '@/common/common' -import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' -import Search from '@/components/search' -import InfiniteScroll from '@/components/infiniteScroll' -import { ClientListApi } from '@/api/order' -import SelectGroup from '@/components/SelectGroup' - -const CustomerManagement = () => { - const [searchField, setSearchField] = useState< - { - page: number - size: number - label_ids: string - purchaser_type: number | string - name_phone_or_sale_user: string - province_id: any[] | string - city_id: any[] | string - abstract_sort_key: string - platform_source: string - } - >({ - page: 1, - size: 10, - label_ids: '', - purchaser_type: '', - name_phone_or_sale_user: '', - province_id: '', - city_id: '', - abstract_sort_key: '', - platform_source: '', - }) - - const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - const { fetchData: listFetchData, state: orderState } = ClientListApi() - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getOrderList = async() => { - const res = await listFetchData({ - ...getFilterData(searchField), - }) - setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(() => false) - } - - // 监听筛选条件变化 - useEffect(() => { - getOrderList() - }, [searchField]) - - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading! }) - }, [orderData, orderState]) - - // 上拉加载数据 - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - // 输入了搜索关键字 - const getSearchData = useCallback((e) => { - pageNum.current.page = 1 - setOrderData(() => ({ list: [], total: 0 })) - setSearchField(val => ({ ...val, name_phone_or_sale_user: e, size: 10 })) - }, []) - const getScrollToLower = useCallback(() => { - if (orderData.list.length < orderData.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [orderData]) - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - - // 选择排序 - const sortRefRef = useRef() - const handSort = useCallback((e: string) => { - pageNum.current.page = 1 - setSearchField(val => ({ ...val, size: 10, abstract_sort_key: e })) - sortRefRef.current = e - }, []) - - const SortRef = useRef() - const TagRef = useRef() - - // 筛选城市 - const ChoseCityRef = useRef() - const handCity = useCallback((provinceVal, cityVal) => { - const provinceArr: number[] = [] - const cityArr: number[] = [] - provinceVal.length && provinceVal.forEach((item) => { - provinceArr.push(item.id) - }) - cityVal.length && cityVal.forEach((item) => { - cityArr.push(item.id) - }) - pageNum.current.page = 1 - const provinceRes = provinceArr?.toString() - const cityRes = cityArr?.toString() - console.log(provinceRes, cityRes) - setSearchField(val => ({ ...val, province_id: provinceArr.length > 0 ? provinceRes : '', city_id: cityArr.length > 0 ? cityRes : '', size: 10 })) - // ChoseCityRef.current.close() - }, []) - - // 选择客户类型 - const handType = useCallback((val) => { - const arr = val.filter((item) => { return item.checked }) - pageNum.current.page = 1 - setSearchField(val => ({ ...val, size: 10, purchaser_type: arr[0]?.id })) - }, []) - - // 选择标签 - const handTags = useCallback((val) => { - const arr: any[] = [] - const arrOne = val.filter((item) => { return item.checked }) - arrOne.forEach((item) => { - arr.push(item.id) - }) - pageNum.current.page = 1 - const res = arr.toString() - setSearchField(val => ({ ...val, size: 10, label_ids: arr.length === 0 ? '' : res })) - }, []) - - // 选择标签 - const handPlatform = useCallback((val) => { - const arr: any[] = [] - const arrOne = val.filter((item) => { return item.checked }) - arrOne.forEach((item) => { - arr.push(item.id) - }) - pageNum.current.page = 1 - const res = arr.toString() - setSearchField(val => ({ ...val, size: 10, platform_source: arr.length === 0 ? '' : res })) - }, []) - - return ( - - - - - - - - true}> - true}> - true}> - - - - 共 {orderData?.total || 0} 个客户 - - - {orderData?.list?.map((item, index) => { - return ( - - ) - })} - - - - goLink('/pages/customerEditor/index?type=add')}>新增客户 - - - ) -} - -export default CustomerManagement diff --git a/src/pages/customerPage/index.config.ts b/src/pages/customerPage/index.config.ts deleted file mode 100644 index 4dc41dc..0000000 --- a/src/pages/customerPage/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '选择客户', -} diff --git a/src/pages/customerPage/index.module.scss b/src/pages/customerPage/index.module.scss deleted file mode 100644 index 1a0a1ee..0000000 --- a/src/pages/customerPage/index.module.scss +++ /dev/null @@ -1,80 +0,0 @@ -page { - background: #f7f7f7; -} - -.cussBox { - .searchBox { - position: sticky; - top: 0; - width: 100%; - height: 96px; - background: #ffffff; - display: flex; - align-items: center; - - .two { - width: 702px; - height: 72px; - margin-left: 24px; - } - } - - .listBox { - height: calc(100vh - 170px); - } - - .itemBox { - margin-left: 24px; - margin-right: 24px; - padding: 0 36px; - height: 104px; - background: #ffffff; - border-radius: 16px; - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 24px; - box-sizing: border-box; - - .cussName { - flex: 1; - height: 34px; - font-size: 28px; - font-weight: 500; - color: #000000; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - .platform_source_name { - flex: 1; - } - - .phone { - flex: 1; - font-size: 28px; - color: #000000; - } - - .woker { - flex: 1; - font-size: 28px; - color: #000000; - text-align: right; - } - } - - .acticveitemBox { - border: 1px solid #337fff; - } -} -.platform_name { - background: #ecf2ff; - border-radius: 6px; - margin-left: 10px; - font-size: 20px; - border: none !important; - text-align: center; - color: #007aff; - padding: 4px 10px; -} diff --git a/src/pages/customerPage/index.tsx b/src/pages/customerPage/index.tsx deleted file mode 100644 index 886bde7..0000000 --- a/src/pages/customerPage/index.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import { Button, Image, Input, ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Search from '@/components/search' -import { ClientListApi } from '@/api/order' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import Tag from '@/components/tag' - -const CustomerPage = () => { - const [search, setSearch] = useState({ - name_phone_or_sale_user: null, - page: 1, - size: 10, - }) - const [clentList, setClientlist] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const { fetchData: clitentFetch, state: orderState } = ClientListApi() - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: clentList.list, total: clentList.total, status: orderState.loading! }) - }, [clentList, orderState]) - - const [clientObj, setclientObj] = useState({ - clientId: null, - clientName: '', - }) - // 上拉加载数据 - const pageNum = useRef({ size: search.size, page: search.page }) - // 输入了搜索关键字 - const getSearchData = useCallback((eq) => { - pageNum.current.page = 1 - setClientlist(() => ({ list: [], total: 0 })) - setSearch(e => ({ ...e, name_phone_or_sale_user: eq, size: 10 })) - }, []) - - const router = useRouter() - - const getScrolltolower = useCallback(() => { - if (clentList.list.length < clentList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearch(e => ({ ...e, size })) - console.log(search, 11111) - } - }, [clentList]) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearch(val => ({ ...val, size: 10 })) - } - const getCuss = async() => { - const res = await clitentFetch({ name_phone_or_sale_user: search.name_phone_or_sale_user === null ? '' : search.name_phone_or_sale_user, page: search.page, size: search.size }) - if (router?.params.clientId) { - res.data.list.map((item) => { - if (item.id == router?.params.clientId) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - } - setClientlist(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(() => false) - } - useEffect(() => { - if (search.name_phone_or_sale_user === '') { - setSearch(e => ({ ...e, name_phone_or_sale_user: null })) - } - if (search.name_phone_or_sale_user !== '') { getCuss() } - }, [search]) - // 选择客户 - const selectClient = (item) => { - clentList.list.map((it) => { - if (item.id === it.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setclientObj(item) - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - console.log('prevPage', prevPage) - prevPage.setData({ // 设置上一个页面的值 - clientId: item.id, - clientName: item.name, - clientPhone: item.phone, - }) - setClientlist(e => ({ ...e, list: clentList?.list, total: clentList?.total })) - Taro.navigateBack({ - delta: 1, - }) - } - useEffect(() => { - if (clientObj?.clientId !== null) { - setclientObj(clientObj) - } - // else { - // let pages = Taro.getCurrentPages(); // 获取当前的页面栈 - // let prevPage = pages[pages.length - 2]; - // prevPage.setData({ //设置上一个页面的值 - // clientId: '', - // clientName: '', - // }); - // } - }, [clientObj]) - return ( - - - - - - - - - - { - clentList.list.map((item, index) => { - return ( - { selectClient(item) }}> - - { item.name } - - { - (item?.platform_source_name && item.platform_source !== 1) - && - { item?.platform_source_name } - - } - {item.phone} - {item.sale_user_name} - - ) - }) - } - - - - - ) -} - -export default CustomerPage diff --git a/src/pages/delivery/components/DeliveryStatusList/index.module.scss b/src/pages/delivery/components/DeliveryStatusList/index.module.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/delivery/components/DeliveryStatusList/index.tsx b/src/pages/delivery/components/DeliveryStatusList/index.tsx deleted file mode 100644 index a5a1e17..0000000 --- a/src/pages/delivery/components/DeliveryStatusList/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { FC, memo, useCallback, useEffect, useState } from 'react' -import SegmentedControl from '@/components/SegmentedControl' -import { EnumSaleorderStatus } from '@/api/index' - -interface PropsType { - onChangeStatus?: (data: { id: number; name: string }) => void -} - -const DeliveryStatusList = (props: PropsType) => { - const { onChangeStatus } = props - const { fetchData } = EnumSaleorderStatus() - const [statusList, setStatusList] = useState([ - // { - // id: -1, - // name: '全部', - // }, - ]) - const [defaultId, setDefaultId] = useState(0) - // 请求 - const getDeliveryStatusList = async() => { - const res = await fetchData() - console.log(res.data.list) - const list = res.data.list.filter((item) => { - return item.id === 3 || item.id === 4 // 待发货 已完成 - }) - setStatusList(list) - setDefaultId(list[0].id) - } - - useEffect(() => { - getDeliveryStatusList() - }, []) - - // //状态改变 - const changeStatus = useCallback( - (data: { id: number; name: string }) => { - onChangeStatus && onChangeStatus({ id: data.id, name: data.name }) - }, - [onChangeStatus], - ) - return -} -export default memo(DeliveryStatusList) diff --git a/src/pages/delivery/components/Filter/index.module.scss b/src/pages/delivery/components/Filter/index.module.scss deleted file mode 100644 index fc96a9e..0000000 --- a/src/pages/delivery/components/Filter/index.module.scss +++ /dev/null @@ -1,92 +0,0 @@ -.filterItem { - margin: 24px 48px; - &--title { - font-size: 28px; - font-weight: 550; - line-height: 1.5; - } - &--wrapper { - margin-top: 24px; - display: grid; - grid-gap: 16px 16px; - } -} -.filter { - &--time { - grid-template-columns: 1fr 1fr 1fr 1fr; - } - &--inputBar { - } - &--type { - grid-template-columns: 1fr 1fr; - } -} -.filterTypeButton { - padding: 0 24px; - font-size: 28px; -} -.filterTypeText { - color: #6e6e6e !important; -} -.filterTimeButton { - grid-column-start: span 2; -} -.selected { - background-color: #eaf2ff; -} - -.filterButton { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: center; - padding: 0 20px; - box-sizing: border-box; - border: 0 solid transparent; - background-color: #f6f6f6; - border-radius: 8px; - font-size: 28px; - height: 72px; - &--text { - color: #696969; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - font-weight: lighter; - } - &:hover { - opacity: 0.7; - } - &--active { - border: 1px solid $color_main; - background-color: #eaf2ff; - .filterButton--text { - color: $color_main; - font-weight: 550; - } - } -} -.filterController { - margin-top: 60px; - width: 100%; - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-around; - padding-bottom: constant(safe-area-inset-bottom); - padding-bottom: env(safe-area-inset-bottom); - .btn { - width: 40%; - &:hover{ - filter: blur(.7); - } - - } - .rest_btn { - font-size: 28px; - } - .verify_btn { - font-size: 28px; - } -} diff --git a/src/pages/delivery/components/Filter/index.tsx b/src/pages/delivery/components/Filter/index.tsx deleted file mode 100644 index e998011..0000000 --- a/src/pages/delivery/components/Filter/index.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import { View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import classnames from 'classnames' -import type { FC } from 'react' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import NormalButton from '@/components/normalButton' -import Popup from '@/components/popup' -import Search from '@/components/search' -import IconFont from '@/components/iconfont/iconfont' -import { EnumDeliveryNoticeTypeList } from '@/api/index' -import { getFilterData } from '@/common/util' -import { formatDateTime } from '@/common/format' - -interface ButtonPropsType { - isActive: boolean - onClick?: Function - children?: React.ReactNode - customClassName?: string -} -const FilterButton: FC = (props) => { - const { onClick, children, isActive = false, customClassName } = props - const handleClick = () => { - onClick?.() - } - return ( - - {children} - - ) -} -interface SearchFilter { - type?: number - timeKey?: string -} - -export interface SearchField extends Omit { - date_min?: string - date_max?: string -} - -interface DeliveryPropsType { - onSearchTime?: () => void - onConfirm?: (searchField: SearchField, timeKey?: Pick['timeKey']) => void - onCancal?: () => void - onReset?: () => void -} - -const DeliveryFilter = (props: DeliveryPropsType) => { - const filterTimeOptions = { - 0: { - name: '不限', - date_min: undefined, - date_max: undefined, - }, - 1: { - name: '今天', - date_min: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(1, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 2: { - name: '昨日', - date_min: `${dayjs(new Date()).add(-1, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 3: { - name: '近7日', - date_min: `${dayjs(new Date()).add(-7, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 4: { - name: '近30日', - date_min: `${dayjs(new Date()).add(-30, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 5: { - name: '近90日', - date_min: `${dayjs(new Date()).add(-90, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - } as const - - const { onSearchTime, onConfirm, onCancal, onReset } = props - - const { fetchData, state } = EnumDeliveryNoticeTypeList() - - const [searchFilter, setSearchFilter] = useState({ - type: undefined, - timeKey: '0', - }) - const handleSelectedType = (type: string | number) => { - console.log('type==>', type) - if (typeof type === 'string' && type === 'default') { - setSearchFilter(e => ({ ...e, type: undefined })) - } - else { - setSearchFilter(e => ({ ...e, type: type as number })) - } - } - - const typeList = useMemo<{ id: number; name: string }[]>(() => { - return state.data.list - }, [state]) - - const getEnumData = async() => { - await fetchData() - } - useEffect(() => { - if (!typeList?.length) { - getEnumData() - console.log('getEnumData') - } - }, [typeList]) - const [customTime, setCustomTime] = useState({ - date_min: undefined, - date_max: undefined, - }) - - const handleSelectedTime = (timeOptionId) => { - setSearchFilter(e => ({ ...e, timeKey: timeOptionId })) - // 不是设置了自定义时间 - if (timeOptionId !== '6') { - setCustomTime({ - date_min: filterTimeOptions[timeOptionId].date_min, - date_max: filterTimeOptions[timeOptionId].date_max, - }) - return - } - onSearchTime?.() - } - - const handleReset = () => { - setSearchFilter({ type: undefined, timeKey: '0' }) - onReset?.() - } - const handleConfirm = () => { - const changedField = { - type: searchFilter.type, - date_min: customTime.date_min, - date_max: customTime.date_max, - } - console.log('changedField==>', changedField) - onConfirm?.(changedField, searchFilter.timeKey) - } - - return ( - <> - - 发货类型 - - handleSelectedType('default')}> - 不限 - - {!!typeList?.length - && typeList?.map((item, key) => { - return ( - handleSelectedType(item?.id)}> - {item.name} - - ) - })} - - - - - 查询日期 - - {Object.entries(filterTimeOptions).map(([key, value], index) => { - return ( - handleSelectedTime(key)}> - {value.name} - - ) - })} - handleSelectedTime('6')}> - 自定义时间 - - - - - - 重置 - - - 确认 - - - - ) -} - -export default memo(DeliveryFilter) diff --git a/src/pages/delivery/components/ItemList1/index.module.scss b/src/pages/delivery/components/ItemList1/index.module.scss deleted file mode 100644 index 500720c..0000000 --- a/src/pages/delivery/components/ItemList1/index.module.scss +++ /dev/null @@ -1,66 +0,0 @@ -.layoutBlock{ - margin: 20px; - padding: 24px; -} -.topBar { - font-size: 28px; - &__orderNo { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - color: $color_font_one; - .orderNo{ - font-weight: bold; - } - } - &__orderType { - color: #6e6e6e; - font-weight: bold; - } - &__orderStatus { - font-weight: bold; - &--toBeAudited{ - color: #e42945; - } - &--finish{ - color: $color_main; - } - } -} -.content { - &__row { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - margin: 16px 0; - font-size: 28px; - color: rgba($color: #000000, $alpha: 0.4); - &__left { - min-width: 140px; - } - &__right { - @include common_ellipsis(2); - } - } -} -.bottomBar { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-items: center; - margin-top: 10px; - &__button { - margin: 0 24px; - font-size: 28px; - padding: 0 26px; - } - &__button:last-child { - margin: 0; - } -} -.bord { - color: $color_font_one; -} -.tag{ - margin: 0 16px; -} diff --git a/src/pages/delivery/components/ItemList1/index.tsx b/src/pages/delivery/components/ItemList1/index.tsx deleted file mode 100644 index 31fc1ea..0000000 --- a/src/pages/delivery/components/ItemList1/index.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { FC } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import Divider from '@/components/Divider' -import NormalButton from '@/components/normalButton' -import { EnumSaleMode } from '@/common/Enumerate' -import { formatDateTime, formatMeterDiv } from '@/common/format' -import { goLink } from '@/common/common' -// import { DeliveryNoticeOrderAudit } from '@/api/index' -// import Taro from '@tarojs/taro' -import SaleModeTag from '@/components/saleModeTag' -import { TakeOutOfStorage } from '@/api/delivery' -// import { alert } from '@/common/common' - -interface PropsType { - itemData: Record - onSuccess?: Function -} - -const ItemList: FC = (props) => { - const { itemData, onSuccess } = props - // 查看详情 - const handleDetail = (e) => { - e?.stopPropagation() - goLink('/pages/deliveryDetail/index', { - id: itemData.id, - // order_no: itemData.order_no, - }) - } - - // const {fetchData} = DeliveryNoticeOrderAudit() - - // // 确认审核 - // const handleAudit = (id: number) => { - // if (itemData.delivery_appendix_url.length === 0 ) { - // alert.error('请先上传附件') - // return - // } - // Taro.showModal({ - // content: '确认要审核吗?', - // confirmColor: '#337FFF', - // success: async (res) => { - // if (res.confirm) { - // const res = await fetchData({ id }) - // if (res.success) { - // Taro.showToast({ title: '审核成功', icon: 'success' }) - // onSuccess?.() - // }else{ - // Taro.showToast({ title: '审核失败', icon: 'error' }) - // } - // } - // }, - // }) - // } - - const { fetchData } = TakeOutOfStorage() - - const handleTakeOutOfStorage = async(e) => { - e.stopPropagation() - const res = await fetchData({ - sale_order_id: itemData.sale_order_id, - }) - if (res.success) { - Taro.showToast({ title: '出仓成功', icon: 'success' }) - onSuccess?.() - } - else { - Taro.showToast({ title: '出仓失败', icon: 'error' }) - } - } - - return ( - - - - 单号:{itemData?.order_no} - {itemData?.status === 1 && 已审核} - {itemData?.status === 0 && 待审核} - - {itemData?.type_name} - - - - - 货品信息: - - - {itemData.delivery_product_nums}种面料,{itemData.delivery_product_color_nums}种颜色,共 - {itemData?.sale_mode === EnumSaleMode.Bulk ? `${itemData?.delivery_roll}条` : `${formatMeterDiv(itemData?.delivery_length)}米`} - - - - 发货地址: - {itemData?.delivery_address || '空'} - - - 创建时间: - {formatDateTime(itemData?.create_time) || '空'} - - - - { - !itemData?.is_outbound && - 确认出仓 - - } - {/* 已完成不需要显示 */} - { - itemData?.status !== 1 && - 确认送达 - - } - {/* {itemData?.status === 0 && ( - handleAudit(itemData?.id)}> - 确认审核 - - )} */} - - - ) -} -export default ItemList diff --git a/src/pages/delivery/index.config.ts b/src/pages/delivery/index.config.ts deleted file mode 100644 index 0bb51cc..0000000 --- a/src/pages/delivery/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '发货列表', -} diff --git a/src/pages/delivery/index.module.scss b/src/pages/delivery/index.module.scss deleted file mode 100644 index 66eaf73..0000000 --- a/src/pages/delivery/index.module.scss +++ /dev/null @@ -1,47 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} - -.delivery { - position: relative; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - padding-bottom: env(safe-area-inset-bottom); - .searchBox { - display: flex; - align-items: center; - background: #ffffff; - padding: 8px 24px; - flex: none; - } - - .listBox { - flex: 1 1 auto; - background-color: #f7f7f7; - overflow: hidden; - height: 100%; - &--total { - display: block; - margin-top: 20px; - padding: 0 24px; - font-size: 24px; - color: #9d9d9d; - } - } -} -.scanHandler { - width: 40px; - height: 40px; -} - -.icon__filter { - padding: 0 20px; - padding-right: 10px; -} -.active { - color: #337fff; -} diff --git a/src/pages/delivery/index.tsx b/src/pages/delivery/index.tsx deleted file mode 100644 index 40782fb..0000000 --- a/src/pages/delivery/index.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import type { FC } from 'react' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classNames from 'classnames' -import styles from './index.module.scss' -import ItemList from './components/ItemList1' -import DeliveryStatusList from './components/DeliveryStatusList' -import type { SearchField } from './components/Filter' -import DeliveryFilter from './components/Filter' -import Search from '@/components/search' -import { DeliverNoticeOrderList, EnumSaleorderStatus } from '@/api/index' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import IconText from '@/components/iconText' -import IconFont from '@/components/iconfont/iconfont' -import Popup from '@/components/popup' -import TimePickerPopup from '@/components/timePickerPopup' -import { goLink } from '@/common/common' - -interface SearchData { - delivery_notice_order_no?: string // 发货单号 - delivery_notice_order_status?: number | string // 发货状态 - date_min?: string // 开始时间 - date_max?: string // 结束时间 - type?: number // 发货类型 - page: number - size: number -} - -const defaultSearchFields = { - delivery_notice_order_status: 0, // 待发货 - page: 1, - size: 10, -} - -// 发货列表 -const Delivery: FC = () => { - const [search, setSearch] = useState(defaultSearchFields) - const [deliveryOrderList, setDeliveryOrderList] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const isActive = useMemo(() => { - console.log('search', search) - if (search.type != null || search.date_max != null || search.date_min != null) { - return true - } - else { - return false - } - }, [search]) - - const { fetchData: FetchDeliveryOrderList, state: orderState } = DeliverNoticeOrderList() - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: deliveryOrderList.list, total: deliveryOrderList.total, status: orderState.loading! }) - }, [deliveryOrderList, orderState]) - - // 输入搜索关键字 - const getSearchData = useCallback(debounce((searchValue: string) => { - setSearch(prevProps => ({ ...prevProps, delivery_notice_order_no: searchValue })) - console.log('searchValue==>', searchValue) - }, 300), []) - - // 上拉加载数据 - const pageNum = useRef({ size: search.size, page: search.page }) - - const getScrollToLower = useCallback(() => { - if (deliveryOrderList.list.length < deliveryOrderList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearch(e => ({ ...e, size })) - console.log(search, 11111) - } - }, [deliveryOrderList]) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearch(val => ({ ...val, size: 10 })) - } - const getData = async() => { - const res = await FetchDeliveryOrderList({ ...getFilterData(search) }) - - setDeliveryOrderList(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - if (isScan.current) { - if (res.data?.list?.length === 1) { - goLink('/pages/deliveryDetail/index', { - id: res.data?.list[0].id, - order_no: res.data?.list[0].order_no, - }) - } - isScan.current = false - } - setRefresherTriggeredStatus(() => false) - } - - const [currentStatus, setCurrentStatus] = useState('待发货') - - const handleChangeStatus = ({ id: statusId, name: statusName }) => { - let fuckingBadCodeId: string | number = 0 - if (statusId === 3) { - fuckingBadCodeId = 0 - } - else if (statusId === 4) { - fuckingBadCodeId = '1,2' - } - setCurrentStatus(statusName) - console.log('handleChangeStatus') - setSearch(e => ({ ...e, delivery_notice_order_status: fuckingBadCodeId })) - } - - const handleAuditSuccess = () => { - getData() - } - - const [showFilter, setShowFilter] = useState(false) - // 筛选列表 - const onShowFilter = () => { - setShowFilter(true) - } - // 点击关闭筛选列表框 - const handlePopupClose = () => { - setShowFilter(false) - } - - // 展示时间筛选 - const [showTime, setShowTime] = useState(false) - - // 点击关闭时间筛选 - const handClose = () => { - setShowTime(false) - } - const [start, setStart] = useState(new Date().toLocaleDateString()) - const [end, setEnd] = useState('') - // 选择时间 - const handTime = (event) => { - console.log(event?.value, 'event?.value?.start') - setStart(event?.value?.start) - setEnd(event?.value?.end) - setShowTime(false) - console.log(search, 8888) - } - // 显示时间选择器 - const handleSearchTime = () => { - setShowTime(true) - } - // 筛选框点击确认 - const handleConfirm = (changedFields: SearchField, timeKey) => { - console.log('changedFields==>changedFields', changedFields) - // 自定义时间 - if (timeKey === '6') { - setSearch(prevProps => ({ ...prevProps, ...changedFields, date_min: start, date_max: end })) - } - else { - setSearch(prevProps => ({ ...prevProps, ...changedFields })) - } - handlePopupClose() - } - // 筛选框点击重置 - const handleReset = () => { - setSearch(defaultSearchFields) - } - - const isScan = useRef(false) - - const scanIcon = () => { - // 扫描 - const handleScan = () => { - Taro.scanCode({ - success(res) { - console.log(res, '22222') - isScan.current = true - setSearch(e => ({ - page: e.page, - size: e.size, - delivery_notice_order_no: res.result, - })) - }, - fail(res) { - console.log(res) - }, - }) - } - return ( - - - - ) - } - useEffect(() => { - getData() - }, [search]) - - return ( - - - - - - - - - {/* 状态栏 */} - - - - - - {currentStatus}共 {deliveryOrderList.total} 单 - - {deliveryOrderList.list.map((item) => { - return - })} - - - - - - handTime(e)}> - - ) -} - -export default Delivery diff --git a/src/pages/deliveryDetail/index.config.ts b/src/pages/deliveryDetail/index.config.ts deleted file mode 100644 index c0de240..0000000 --- a/src/pages/deliveryDetail/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - enablePullDownRefresh: true, - navigationBarTitleText: '销售发货', -} diff --git a/src/pages/deliveryDetail/index.module.scss b/src/pages/deliveryDetail/index.module.scss deleted file mode 100644 index 78a8a3f..0000000 --- a/src/pages/deliveryDetail/index.module.scss +++ /dev/null @@ -1,111 +0,0 @@ -page { - display: flex; - flex-flow: column nowrap; - height: 100%; -} -.deliveryDetail { - display: flex; - flex-flow: column nowrap; - height: 100%; - .content { - padding-top: 24px; - flex: 1 1 auto; - overflow: scroll; - .detailTop { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - } - } - .bottomBar { - flex: none; - margin: 0 24px; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-top: 24px; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - } -} -.detailInfo { - .detailInfoItem { - &--title { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - font-size: 28px; - font-weight: bold; - color: #424242; - padding: 10px 0; - } - &--detail { - display: flex; - flex-flow: column nowrap; - - &--row{ - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 0; - font-size: 28px; - color: #6e6e6e; - } - &--name{ - flex: 2; - } - &--count{ - flex: 1; - } - &--weight{ - flex: 1; - text-align: right; - } - } - } -} -.orderInfoTop{ - font-size: 28px; - color: $color_font_one; - font-weight: 550; -} - -.orderNo { - font-size: 28px; - font-weight: 550; - color: #424242; -} -.status { - font-size: 28px; - &--toBeAudit { - color: $color_danger; - font-weight: bold; - } - &--audited { - color: $color_main; - font-weight: bold; - } -} - -.divider { - margin: 20px 0 10px 0; -} -.total { - margin-top: 24px; - padding: 15px 24px; - font-size: 24px; - line-height: 30px; - font-weight: 600; - color: #f79b31; - background: #fef9f4; - border-radius: 8px; - display: flex; - .totalContent{ - flex: 1 1 auto; - display: inline-block; - text-align: right; - } -} diff --git a/src/pages/deliveryDetail/index.tsx b/src/pages/deliveryDetail/index.tsx deleted file mode 100644 index 251c86c..0000000 --- a/src/pages/deliveryDetail/index.tsx +++ /dev/null @@ -1,278 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro, { usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { FC } from 'react' -import { useCallback, useLayoutEffect, useMemo, useState } from 'react' -import styles from './index.module.scss' -import { DeliverNoticeOrder, DeliveryNoticeOrderAudit, DeliveryNoticeOrderUpload } from '@/api' -import { formatDateTime, formatMeterDiv, formatWeightDiv } from '@/common/format' -import Cell from '@/components/cell' -import Divider from '@/components/Divider' -import LayoutBlock from '@/components/layoutBlock' -import NormalButton from '@/components/normalButton' -import SaleModeTag from '@/components/saleModeTag' -import UploadImage from '@/components/uploadImage' -import { alert } from '@/common/common' -import { TakeOutOfStorage } from '@/api/delivery' -import { EnumSaleMode } from '@/common/Enumerate' - -const DeliveryDetail: FC = () => { - usePullDownRefresh(() => { - getData() - }) - - const router = useRouter() - - const { fetchData } = DeliverNoticeOrder() - const { fetchData: takeOut } = TakeOutOfStorage() - - const [detailInfo, setDetailInfo] = useState>({}) - - // const [isPending, startTransition] = useTransition() - - const getData = async() => { - const { id } = router.params - const res = await fetchData({ - id, - }) - console.log('res==>', res.data) - // startTransition(() => { - setDetailInfo(res.data) - // }) - Taro.stopPullDownRefresh() - } - - useLayoutEffect(() => { - getData() - }, []) - - const { fetchData: uploadData } = DeliveryNoticeOrderUpload() - - const { fetchData: FetchAudit } = DeliveryNoticeOrderAudit() - - // const DetailItem = useMemo(() => { - // const element - // = !!detailInfo?.weight_list?.length - // && detailInfo?.weight_list.map((weightItem, index) => { - // return ( - // - // - // - // - // - // - // {weightItem.product_code} {weightItem.product_name} - // - // - // - // 共 {weightItem?.sale_mode === 0 ? `${weightItem.roll} 条` : `${formatMeterDiv(weightItem?.length || 0)} 米`} - // - // - // - // - // {weightItem.product_color_code} {weightItem.product_color_name} - // - // - // x{weightItem?.sale_mode === 0 ? `${weightItem.roll} 条` : `${formatMeterDiv(weightItem?.length || 0)} 米`} - // - // {formatWeightDiv(weightItem.weight)}kg - // - // - // - // - // ) - // }) - // return <>{element} - // }, [detailInfo]) - - const [readyToUploadList, setReadyToUploadList] = useState([]) - - const handleUploadChange = (imageList: string[]) => { - console.log('imageList===>', imageList) - setReadyToUploadList([...imageList]) - } - // 上传附件 - const handleUploadPic = useCallback(async() => { - if (!readyToUploadList.length) { - return Promise.reject(new Error('请先上传附件')) - } - console.log('readyToUploadList:::', readyToUploadList) - const res = await uploadData({ - id: Number(router.params.id), - delivery_appendix: readyToUploadList, - }) - if (res.success) { - // alert.success('上传成功') - // getData() - return Promise.resolve() - } - else { - return Promise.reject(new Error('上传失败')) - } - }, [readyToUploadList]) - - // 审核 - const handleAudit = useCallback(() => { - // if (detailInfo?.delivery_appendix_url?.length === 0) { - // alert.error('请先上传附件') - // return - // } - Taro.showModal({ - confirmColor: '#337FFF', - title: '确定审核?', - async success(res) { - if (res.confirm) { - try { - await handleUploadPic() - } - catch (e) { - e.name = '' - console.log('e', e.toString()) - alert.error(e.toString()) - return - } - const res = await FetchAudit({ id: Number(router.params.id) }) - if (res.success) { - alert.success('审核成功') - getData() - } - else { - alert.none(res.msg) - } - } - else if (res.cancel) { - console.log('用户点击取消') - } - }, - }) - }, [readyToUploadList]) - - const handleTakeOutOfStorage = async() => { - const res = await takeOut({ - sale_order_id: detailInfo.sale_order_id, - }) - if (res.success) { - Taro.showToast({ title: '出仓成功', icon: 'success' }) - getData() - } - else { - Taro.showToast({ title: '出仓失败', icon: 'error' }) - } - } - - const BottomBar = () => { - return ( - - { - !detailInfo?.is_outbound && - 确认出仓 - - } - - 确认送达 - - - ) - } - - const groups = useMemo(() => { - const temp: Record = {} - detailInfo?.weight_list?.forEach((weightItem) => { - const name = `${weightItem.product_code} ${weightItem.product_name}` - temp.hasOwnProperty(name) ? temp[name].push(weightItem) : temp[name] = [weightItem] - }) - return temp - }, [detailInfo]) - - const formatUnit = (saleMode: EnumSaleMode) => { - return saleMode === EnumSaleMode.Bulk ? '条' : '米' - } - - return ( - - - - - 发货单号:{detailInfo?.order_no} - {detailInfo?.status === 0 ? 待发货 : 已完成} - - { - Object.entries(groups).map(([name, group], index) => { - let total = 0 - if (group[0]?.sale_mode === EnumSaleMode.Bulk) { - total = group.reduce((acc, cur) => acc + cur.roll, 0) - } - else { - total = group.reduce((acc, cur) => acc + formatMeterDiv(cur.length), 0) - } - return ( - - - - - - - {name} - - - - 共 {total} {formatUnit(group[0]?.sale_mode)} - - - { - group?.map((weightItem, key) => { - return ( - - - {weightItem.product_color_code} {weightItem.product_color_name} - - - x{weightItem?.sale_mode === 0 ? `${weightItem.roll} 条` : `${formatMeterDiv(weightItem?.length || 0)} 米`} - - {formatWeightDiv(weightItem.weight)}kg - - ) - }) - } - - - - ) - }) - } - - 汇总: - - 共{detailInfo?.delivery_product_nums || 0}种面料,{detailInfo?.delivery_product_color_nums || 0}种颜色,共 - {detailInfo?.sale_mode === 0 ? `${detailInfo?.total_roll}条` : `${formatMeterDiv(detailInfo?.total_length).toLocaleString()}米`} - ,重量{formatWeightDiv(detailInfo?.total_weight).toLocaleString()}kg - - - - - 订单信息 - - - - - - - - - - 附件 - - - - - {detailInfo?.status === 0 && BottomBar()} - - ) -} -export default DeliveryDetail diff --git a/src/pages/getColorCard/addColorCard/components/colorCardItem/index.module.scss b/src/pages/getColorCard/addColorCard/components/colorCardItem/index.module.scss deleted file mode 100644 index b4c9cc1..0000000 --- a/src/pages/getColorCard/addColorCard/components/colorCardItem/index.module.scss +++ /dev/null @@ -1,39 +0,0 @@ -.colorCardBottom { - width: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - overflow: hidden; - margin-bottom: 24px; - .leftCont { - width: 134px; - height: 134px; - border-radius: 8px; - margin-right: 24px; - } - .rightCont { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - &__top { - font-size: 28px; - @include common_ellipsis(1); - } - &__bottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - width: 100%; - align-items: flex-end; - } - &__left { - flex: 1 1 auto; - overflow: hidden; - } - &__right { - width: 35%; - } - } -} diff --git a/src/pages/getColorCard/addColorCard/components/colorCardItem/index.tsx b/src/pages/getColorCard/addColorCard/components/colorCardItem/index.tsx deleted file mode 100644 index 7e9e3d9..0000000 --- a/src/pages/getColorCard/addColorCard/components/colorCardItem/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { View } from '@tarojs/components' -import { useCallback } from 'react' -import styles from './index.module.scss' -import LabAndImg from '@/components/LabAndImg' -import Tag from '@/components/tag' -import { formatRemoveHashTag } from '@/common/format' -import Counter from '@/components/counter' -import Divider from '@/components/Divider' - -interface PropsType { - item: any - onChangeCounter?: (value: number, id: number) => void -} - -const ColorCardItem = (props: PropsType) => { - const { item, onChangeCounter } = props - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - - const handleCountChange = (value: number) => { - onChangeCounter?.(value, item.id) - } - - return - - - - - - - - {item.color_card_name} - - - - { - item.affiliation_product.map((product_color, index) => { - return {formatRemoveHashTag(product_color.code)} - }) - } - - - - - - - - -} -export default ColorCardItem diff --git a/src/pages/getColorCard/addColorCard/index.config.ts b/src/pages/getColorCard/addColorCard/index.config.ts deleted file mode 100644 index c6c6fc4..0000000 --- a/src/pages/getColorCard/addColorCard/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '领取色卡', - disableSwipeBack: true, - navigationStyle: 'custom', -} diff --git a/src/pages/getColorCard/addColorCard/index.module.scss b/src/pages/getColorCard/addColorCard/index.module.scss deleted file mode 100644 index 2771112..0000000 --- a/src/pages/getColorCard/addColorCard/index.module.scss +++ /dev/null @@ -1,135 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.backIcon { - transform: rotate(180deg); -} -.layoutBlock { - padding: 24px 34px; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.context { - flex: 1 1 auto; - height: 100%; - overflow-y: scroll; -} -.addButton { - margin-left: 24px; - margin-right: 24px; - margin-top: 24px; -} -.customerTop { - color: #333333; - font-size: 28px; -} -.customerBottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - color: #9b9b9b; - font-size: 28px; -} - -.colorCardTop { - font-size: 28px; -} -.colorCardBottom { - width: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - overflow: hidden; - margin-bottom: 24px; - .leftCont { - width: 134px; - height: 134px; - border-radius: 8px; - margin-right: 24px; - } - .rightCont { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - &__top { - font-size: 28px; - @include common_ellipsis(1); - } - &__bottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - width: 100%; - align-items: flex-end; - } - &__left { - flex: 1 1 auto; - overflow: hidden; - } - &__right { - width: 30%; - } - } -} -.paymentMethod { - text-align: right; - font-size: 28px; - color: #f64861; -} - -.remarkTop { - display: flex; - justify-content: space-between; - .remarkTitle { - font-size: 28px; - font-weight: 500; - color: #393939; - } - .remarkTag { - display: flex; - flex-flow: row nowrap; - font-size: 24px; - color: #626262; - } -} - -.remarkBottom { - .remarkContent { - font-size: 28px; - color: #999999; - } -} - -.bottomBar { - .bottomTotal { - color: #aeaeae; - font-size: 24px; - } - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); -} -.bottomBar__button { - font-size: 28px; -} diff --git a/src/pages/getColorCard/addColorCard/index.tsx b/src/pages/getColorCard/addColorCard/index.tsx deleted file mode 100644 index a3deb7f..0000000 --- a/src/pages/getColorCard/addColorCard/index.tsx +++ /dev/null @@ -1,391 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro, { useDidShow, useUnload } from '@tarojs/taro' -import { useCallback, useEffect, useRef, useState } from 'react' -import styles from './index.module.scss' -import ColorCardItem from './components/colorCardItem' -import LayoutBlock from '@/components/layoutBlock' -import NormalButton from '@/components/normalButton' -import Divider from '@/components/Divider' -import IconFont from '@/components/iconfont/iconfont' -import { alert, goLink } from '@/common/common' -import { ClientListApi } from '@/api/order' -import AddressDetailBox from '@/pages/orderDetails/components/addressDetailBox' -import Popup from '@/components/popup' -import Remark from '@/pages/orderDetails/components/remark' -import { SubmitColorCardOrder } from '@/api/colorCard' -import NavBar from '@/pages/order/components/NavBar' -import { MpPurchaserAddressList } from '@/api/addressList' -import { debounce } from '@/common/util' - -const AddColorCard = () => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - const [addressInfo, setAddressInfo] = useState({}) - - // 获取客户 - const [clientList, setClientList] = useState([]) - const { fetchData: fetchClientData } = ClientListApi() - - const [order, setOrder] = useState([]) - const orderRef = useRef(order) - orderRef.current = order - console.log('AddColorCard rerender', order) - - useDidShow(() => { - const colorCardCache = Taro.getStorageSync('colorCardCache') - if (colorCardCache) { - console.log('colorCardCache', JSON.parse(colorCardCache)) - setOrder(JSON.parse(colorCardCache)) - } - }) - - const [clientInfo, setClientInfo] = useState({ - clientId: -1, - clientName: '', - clientPhone: '', - }) - - const getClient = async() => { - const res = await fetchClientData({ - page: 1, size: 10, - }) - if (!res.success) { - return alert.error(res.msg) - } - currPage.data.clientId = res.data.list.length > 0 ? res.data.list[0]?.id : -1 - currPage.data.clientName = res.data.list.length > 0 ? res.data.list[0]?.name : '' - currPage.data.clientPhone = res.data.list.length > 0 ? res.data.list[0]?.phone : '' - const { - clientId, - clientName, - clientPhone, - } = currPage.data - setClientInfo({ - clientId, - clientName, - clientPhone, - }) - setClientList([...res.data.list]) - } - - useEffect(() => { - getClient() - }, []) - - useUnload(() => { - Taro.removeStorageSync('colorCardCache') - }) - - // 选择客户 - const handleSelectCustomer = () => { - goLink(`/pages/customerPage/index?clientId=${clientInfo?.clientId}`) - } - // 添加色卡 - const handleAddColorCard = () => { - Taro.setStorage({ - key: 'colorCardCache', - data: JSON.stringify(order), - success: () => { - goLink('/pages/getColorCard/colorCardList/index', { isGoBack: true }) - }, - }) - // Taro.setStorageSync('colorCardCache', JSON.stringify(order)) - } - - const { fetchData, state } = SubmitColorCardOrder() - // 提交订单 - const handleSubmitOrder = debounce(async() => { - if (!addressInfo.address_id) { - return alert.none('请选择地址') - } - if (!clientInfo.clientId) { - return alert.none('请选择客户') - } - if (order.length === 0) { return alert.none('请选择色卡') } - - // 请求数据 - const res = await fetchData({ - address_id: addressInfo.address_id, - color_card_infos: order.map(item => ({ id: item.id, count: item.count || 1 })), - purchaser_id: clientInfo.clientId, - remark, - }) - if (res.success) { - Taro.showToast({ - title: '提交成功', - icon: 'success', - duration: 2000, - }) - Taro.removeStorageSync('colorCardCache') - goLink('/pages/getColorCard/colorCardDetail/index', { id: res.data.id }, 'redirectTo') - } - }, 300) - - const deleteColorCard = (id) => { - setOrder((prev) => { - return prev.filter(item => item.id !== id) - }) - Taro.setStorageSync('colorCardCache', JSON.stringify(orderRef.current.filter(item => item.id !== id))) - } - - const handleCountChange = (value: number, id: number) => { - console.log('value', value, orderRef.current) - if (orderRef.current.length === 1 && value === 0) { - return alert.none('最后一个色卡不能删除') - } - if (value === 0) { - Taro.showModal({ - content: '确认删除所选色卡?', - confirmText: '删除', - confirmColor: '#337fff', - success: ({ confirm }) => { - if (confirm) { - deleteColorCard(id) - } - }, - }) - return - } - setOrder((prev) => { - const newOlder = prev.map((item) => { - if (item.id === id) { - item.count = value - } - return item - }) - Taro.setStorageSync('colorCardCache', JSON.stringify(newOlder)) - return newOlder - }) - } - - const handSelect = () => { - goLink(`/pages/addressManager/index?purchaser_id=${clientInfo.clientId}`) - } - // 接受选择客户页面传递过来的数据 - useDidShow(() => { - // 判断是否有跳转选择客户 - if (currPage.data?.clientId && currPage.data?.clientId !== '') { - setClientInfo({ - clientId: currPage.data?.clientId, - clientName: currPage.data?.clientName, - clientPhone: currPage.data?.clientPhone, - }) - // 当前客户不是已选客户 重新获取默认地址 - console.log(clientInfo.clientId, currPage.data?.clientId) - if (clientInfo.clientId !== currPage.data?.clientId) { - getDefaultAddressList(currPage.data?.clientId) - } - } - // 默认客户 - if (currPage.data?.clientId == null) { - setClientInfo(() => { - return { - clientId: clientList.length > 0 ? clientList[0]?.id : -1, - clientName: clientList.length > 0 ? clientList[0]?.name : '', - clientPhone: clientList.length > 0 ? clientList[0]?.phone : '', - } - }) - if (clientList.length > 0) { - getDefaultAddressList(clientList[0]?.id) - } - } - }) - - const initAddressInfo = () => { - setAddressInfo(val => ({ - ...val, - province_name: '', - address_id: '', - city_name: '', - address_detail: '', - district_name: '', - target_user_name: '', - purchaser_phone: '', - })) - } - - useDidShow(() => { - // 获取选择的地址 - console.log('addressObj', currPage.data?.addressObj, clientInfo.clientId, currPage.data?.clientId) - if (!currPage.data?.addressObj) { return initAddressInfo() } - const { - purchaser_id, - province_name, - id, - city_name, - address_detail, - district_name, - name, - phone, - } = currPage.data?.addressObj - if (purchaser_id === currPage.data?.clientId) { - setAddressInfo(val => ({ - ...val, - province_name: province_name || '', - address_id: id || '', - city_name: city_name || '', - address_detail: address_detail || '', - district_name: district_name || '', - target_user_name: name || '', - purchaser_phone: phone || '', - })) - } - else { - initAddressInfo() - } - const selectId = id - const obj = currPage?.data?.ids?.filter((item) => { return item == selectId }) - console.log('ids', currPage?.data?.ids) - if (currPage?.data?.ids && obj.length === 0) { - initAddressInfo() - } - }) - - // 备注操作 - const [showDesc, setShowDesc] = useState(false) - const [remark, setRemark] = useState('') - const handleShowDesc = () => { - setShowDesc(true) - } - - const getRemark = useCallback((value: string) => { - setShowDesc(false) - console.log('remark', value) - setRemark(value) - }, []) - - const onClickBack = () => { - Taro.showModal({ - content: '返回后页面数据将不回保留,确认返回?', - confirmColor: '#4a8dff', - success: ({ confirm }) => { - if (confirm) { - Taro.navigateBack({ - delta: 1, - }) - } - }, - }) - } - - const { fetchData: addressListApi } = MpPurchaserAddressList() - // 获取默认地址 - const getDefaultAddressList = async(purchaser_id: number) => { - const res = await addressListApi({ purchaser_id }) - if (res.success) { - const { list } = res.data - let defaultAddress = list?.find((item) => { return item.is_default }) - if (!defaultAddress) { - defaultAddress = list?.[0] - } - setAddressInfo(val => ({ - ...val, - province_name: defaultAddress?.province_name || '', - address_id: defaultAddress?.id || '', - city_name: defaultAddress?.city_name || '', - address_detail: defaultAddress?.address_detail || '', - district_name: defaultAddress?.district_name || '', - target_user_name: defaultAddress?.name || '', - purchaser_phone: defaultAddress?.phone || '', - })) - currPage.data.addressObj = defaultAddress - } - } - - return - - - - } title="领取色卡" - > - - {/* 客户信息 */} - - - 客户信息 - - - - { - clientInfo.clientId !== -1 - ? (<> - - {clientInfo.clientName} - - - {clientInfo.clientPhone} - - - ) - : 选择领取客户 - } - - - - { - clientInfo.clientId !== -1 && } - > - } - - 添加色卡 - {/* 色卡信息 */} - - 色卡信息 - - { - order.map((item) => { - return ( - - ) - }) - } - 快递到付 - - {/* 备注信息 */} - - - 备注信息 - - 填写/修改备注 - - - - - - { remark || '尚未备注信息' } - - - - - - - 当前共 {order.length} 种色卡,共 {order.reduce((total, curr) => total + (curr.count || 1), 0)} 本 - - - 提交订单 - - - - setShowDesc(false)}> - { - showDesc && - } - - -} -export default AddColorCard diff --git a/src/pages/getColorCard/colorCardDetail/index.config.ts b/src/pages/getColorCard/colorCardDetail/index.config.ts deleted file mode 100644 index 5890632..0000000 --- a/src/pages/getColorCard/colorCardDetail/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '色卡订单详情', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', -} diff --git a/src/pages/getColorCard/colorCardDetail/index.module.scss b/src/pages/getColorCard/colorCardDetail/index.module.scss deleted file mode 100644 index 63e754b..0000000 --- a/src/pages/getColorCard/colorCardDetail/index.module.scss +++ /dev/null @@ -1,242 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - .context { - flex: 1 1 auto; - height: 100%; - overflow-y: scroll; - } - .orderProcess { - font-size: 28px; - } - .orderInfoTop { - font-size: 28px; - color: $color_font_one; - } - .customerTop { - color: #333333; - font-size: 28px; - } - .customerBottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - color: #343434; - font-size: 28px; - } - - .colorCardTop { - font-size: 28px; - } - .colorCardBottom { - width: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - overflow: hidden; - margin-bottom: 24px; - .colorCardImage { - margin-right: 30px; - margin-bottom: 24px; - } - .leftCont { - width: 134px; - height: 134px; - border-radius: 8px; - } - .rightCont { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - &__top { - font-size: 28px; - @include common_ellipsis(1); - } - &__bottom { - display: flex; - flex-flow: row wrap; - width: 100%; - } - &__container { - display: flex; - flex-flow: row nowrap; - } - &__left { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - } - &__right { - min-width: 100px; - text-align: right; - font-size: 28px; - } - } - } - .paymentMethod { - text-align: right; - font-size: 28px; - color: #f64861; - } -} -.address_box { - display: flex; - .address_box_left { - margin-right: 24px; - .cirle { - border-radius: 50%; - width: 64px; - height: 64px; - background: #4a7fff; - display: flex; - align-items: center; - justify-content: center; - } - } - .address_box_right { - flex: 1 1 auto; - .address { - height: 78px; - font-size: 28px; - font-weight: 500; - @include common_ellipsis(2); - color: #000000; - margin-right: 41px; - display: flex; - align-items: center; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; /*这里设置几行*/ - overflow: hidden; - } - .bottom { - display: flex; - align-items: center; - justify-content: space-between; - .reatName { - font-size: 28px; - font-weight: 500; - color: #337fff; - margin-right: 32px; - } - .leftbottom { - display: flex; - align-items: center; - .name { - line-height: 34px; - width: 84px; - height: 34px; - @include common_ellipsis(); - font-size: 28px; - font-weight: 400; - color: #343434; - margin-right: 16px; - } - - .phone { - height: 34px; - font-size: 28px; - font-weight: 400; - color: #343434; - } - } - } - } -} - -.bottomBar { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); -} -.bottomBar__button { - font-size: 28px; - margin-left: 20px; -} -.remark { - font-size: 28px; - color: #9b9b9b; -} - -.step-title { - display: flex; - flex-flow: row nowrap; - font-size: 28px; - align-items: center; - color: #9c9c9c; -} -.step-status { - font-weight: 550; - color: inherit; - margin-right: 40px; -} -.current-status { - color: #393939 !important; -} -.attachment { - display: flex; - flex-flow: row wrap; - overflow-x: scroll; - .step-url-container { - margin-right: 16px; - margin-top: 16px; - width: 128px; - height: 128px; - } - .step-url { - width: 100%; - height: 100%; - border-radius: 8px; - } -} -.popup { - padding: 0 30px; - .title { - font-weight: 500; - font-size: 24px; - margin: 20px 0; - } - .textarea { - background-color: #f3f3f3; - border-radius: 10px; - width: 100%; - height: 260px; - padding: 20px; - padding-bottom: 50px; - box-sizing: border-box; - font-size: $font_size; - border: 2px solid #e6e6e6; - } - .picBtn { - margin-top: 30px; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - } - .button { - width: 48%; - } -} diff --git a/src/pages/getColorCard/colorCardDetail/index.tsx b/src/pages/getColorCard/colorCardDetail/index.tsx deleted file mode 100644 index 0b580d6..0000000 --- a/src/pages/getColorCard/colorCardDetail/index.tsx +++ /dev/null @@ -1,340 +0,0 @@ -import { Image, Text, Textarea, View } from '@tarojs/components' -import Taro, { usePullDownRefresh, useRouter } from '@tarojs/taro' -import { useCallback, useEffect, useRef, useState } from 'react' -import classNames from 'classnames' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import Divider from '@/components/Divider' -import LabAndImg from '@/components/LabAndImg' -import Tag from '@/components/tag' -import Cell from '@/components/cell' -import { formatDateTime, formatRemoveHashTag, formatUrl } from '@/common/format' -import NormalButton from '@/components/normalButton' -import Steps from '@/components/steps' -import Step from '@/components/steps/components/step' -import { - AuditPassColorCardOrder, CancelColorCardOrder, GetColorCardOrderDetail, - RefuseColorCardOrder, -} from '@/api/colorCard' -import { alert, checkKey } from '@/common/common' -import IconFont from '@/components/iconfont/iconfont' -import Popup from '@/components/popup' -import UploadImage from '@/components/uploadImage' - -const ColorCardDetail = () => { - const { fetchData } = GetColorCardOrderDetail() - - const router = useRouter() - - const getData = async() => { - console.log('id', router.params.id) - const res = await fetchData({ id: Number(router.params.id) }) - if (!res.success) { - return alert.error(res.msg) - } - setOrder(res.data) - // 小程序提供的api,通知页面停止下拉刷新效果 - Taro.stopPullDownRefresh() - } - - // 页面下拉刷新 - usePullDownRefresh(() => { - getData() - }) - - const [order, setOrder] = useState({}) - - const [addressInfo, setAddressInfo] = useState() - - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - // 复制 - const handleCopy = (data: string) => { - Taro.setClipboardData({ - data, - success() { - Taro.showToast({ - title: '复制成功', - }) - }, - }) - } - - const { fetchData: cancelOrderApi } = CancelColorCardOrder() - - const cancelOrder = async(id: number) => { - const res = await cancelOrderApi({ id }) - if (res.success) { - getData() - alert.success('取消成功') - } - else { - alert.error(res.msg) - } - } - - // 取消订单 - const handleCancel = () => { - Taro.showModal({ - content: '确定取消该订单?', - confirmColor: '#337fff', - confirmText: '确认', - success: (res) => { - if (res.confirm) { - cancelOrder(Number(router.params.id)) - console.log('用户点击确定') - } - }, - }) - } - - useEffect(() => { - getData() - }, []) - - const handleClickImagePreview = (imageList: any[], index: number) => { - Taro.previewImage({ - current: formatUrl(imageList[index]), - urls: imageList.map(item => formatUrl(item)), - }) - } - - // 查看图片 - const [ShowPic, setShowPic] = useState(false) - const [PicList, setPicList] = useState([]) - // 获取图片列表 - const picUrl = useRef([]) - const getImageList = useCallback((list) => { - console.log('list', list) - picUrl.current = list - }, []) - // 色卡审批 - const handleAudit = () => { - setShowPic(true) - } - - const [remarkValue, setRemarkValue] = useState('') - const getDesc = (e) => { - console.log('getDesc', e.detail.value) - setRemarkValue(e.detail.value) - } - const onBlur = (e) => { - console.log('onBlur', e.detail.value) - setRemarkValue(e.detail.value) - } - - const handleRefuseSubmit = async() => { - if (!remarkValue) { - return alert.error('请填写拒绝原因') - } - - const res = await refuseApi({ - delivery_appendix: picUrl.current, - id: Number(router.params.id), - audit_remark: remarkValue, - }) - if (res.success) { - getData() - alert.success('拒绝成功') - setShowPic(false) - } - else { - alert.error(res.msg) - } - } - const handleAuditSubmit = async() => { - if (picUrl.current.length === 0) { - return alert.error('请上传图片') - } - const res = await auditApi({ - audit_remark: remarkValue, - delivery_appendix: picUrl.current, - id: Number(router.params.id), - }) - if (res.success) { - getData() - alert.success('审核成功') - setShowPic(false) - } - else { - alert.error(res.msg) - } - } - - const { fetchData: auditApi } = AuditPassColorCardOrder() - const { fetchData: refuseApi } = RefuseColorCardOrder() - - return - - - 订单进程 - - - - {/* - 申请中 -> 已完成 2 - 申请中 -> 已取消 4 - 申请中 -> 已拒绝 3 - */} - { - order.order_progress?.map((item, index) => { - return - {item.order_status_name} - {formatDateTime(item.audit_time)} - - } description={ - <> - { - item.audit_remark && {item.audit_remark} - } - { - item.delivery_appendix_url - && - { - item.delivery_appendix_url?.map((url, index) => { - return handleClickImagePreview(item.delivery_appendix_url, index)}> - - - }) - } - - } - - } - /> - }) - } - - - - - - 客户信息 - - - {order?.purchaser_name} - {order?.purchaser_phone} - - - - - - - - - - - - - {order?.address} - - - - {order.target_user_name} - {order.target_user_phone} - - {order.shipment_mode_name} - - - - - {/* 色卡信息 */} - - 色卡信息 - - { - order.color_card_info?.map((item) => { - return ( - - - - - - - - - - - {item.name} - - - { - item.affiliation_product?.map((product_color, index) => { - return {formatRemoveHashTag(product_color.code)} - }) - } - - - - x{item.count}本 - - - - - - ) - }) - } - 快递到付 - - - 订单信息 - - - - {order.order_no} - handleCopy(order.order_no)}>复制 - - } - > - - - - - - 备注信息 - - {order?.remark || '暂无备注信息'} - - - - { - order.order_status === 1 - ? <> - - 取消订单 - - { - checkKey('receive_color_card_audit') - ? - 色卡审批 - - : null - } - {/* - 色卡审批 - */} - - : null - } - - setShowPic(false)}> - - 发货物流凭证 - - 审核备注 - - - - - 拒绝 - 同意 - - - - -} -export default ColorCardDetail diff --git a/src/pages/getColorCard/colorCardList/index.config.ts b/src/pages/getColorCard/colorCardList/index.config.ts deleted file mode 100644 index b5bcc75..0000000 --- a/src/pages/getColorCard/colorCardList/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '添加色卡', -} diff --git a/src/pages/getColorCard/colorCardList/index.module.scss b/src/pages/getColorCard/colorCardList/index.module.scss deleted file mode 100644 index 8bced9c..0000000 --- a/src/pages/getColorCard/colorCardList/index.module.scss +++ /dev/null @@ -1,105 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.search { - width: 100%; - display: flex; - justify-content: space-between; - padding: 20px; - box-sizing: border-box; - align-items: center; - background-color: #fff; - border-bottom: 1px solid #e5e5e5; - &__cancel { - margin: 0 32px; - color: #727272; - font-size: 28px; - } -} - -.context { - flex: 1 1 auto; - height: 100%; - overflow: hidden; - background-color: white; -} - -.bottomBar { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); -} -.bottomBar__button { - width: 100%; - font-size: 28px; -} - -.colorCard { - padding: 24px 0; - border-bottom: 1px solid #f6f6f6; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - &__image { - width: 144px; - height: 144px; - border-radius: 8px; - margin-right: 24px; - overflow: hidden; - position: relative; - } - &__title { - font-size: 28px; - color: #383838; - @include common_ellipsis(2); - } - &__code { - } - &__content { - flex: 1 1 auto; - display: flex; - flex-flow: column nowrap; - } - .addButton { - width: 100px; - padding-right: 30px; - display: flex; - justify-content: flex-end; - align-items: center; - } -} -.imageTag { - width: 100%; - box-sizing: border-box; - position: absolute; - padding: 7px; - bottom: 0px; - right: 0px; - opacity: 0.7; - color: #ffffff; - text-align: center; - font-size: 24px; - z-index: 1; - background: rgba(0, 0, 0, 0.6); -} diff --git a/src/pages/getColorCard/colorCardList/index.tsx b/src/pages/getColorCard/colorCardList/index.tsx deleted file mode 100644 index bb8bf02..0000000 --- a/src/pages/getColorCard/colorCardList/index.tsx +++ /dev/null @@ -1,265 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, useRouter, useUnload } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import Search from '@/components/search' -import NormalButton from '@/components/normalButton' -import LabAndImg from '@/components/LabAndImg' -import Tag from '@/components/tag' -import MCheckbox from '@/components/checkbox' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { alert, goLink } from '@/common/common' -import { GetCanAddCardList } from '@/api/colorCard' -import { formatRemoveHashTag } from '@/common/format' -// 限制5种色卡 -const limit = 10 - -const ColorCardList = () => { - const { fetchData, state } = GetCanAddCardList() - - const [orderList, setOrderList] = useState<{ list: any[]; total: number }>({ - list: [], - total: 0, - }) - const multipleSelection = useRef([]) - // 搜索 - const getSearchData = debounce((value: string) => { - setSearchField(prev => ({ ...prev, name: value, page: 1, size: 10 })) - }, 300) - // 取消 - const handleCancel = () => { - Taro.navigateBack() - } - - const router = useRouter() - - // redirectTo 会触发 onLoad 事件 - let isRedirect = false - // 确认 - const handleSubmit = () => { - const cache = Taro.getStorageSync('colorCardCache') - let cacheArr: any[] = multipleSelection.current - if (cache) { - cacheArr = [...cacheArr, ...JSON.parse(cache)] - } - Taro.setStorageSync('colorCardCache', JSON.stringify(cacheArr)) - if (router?.params.isGoBack) { - isRedirect = true - Taro.navigateBack({ - delta: 1, - }) - } - else { - isRedirect = true - // 携带id跳转 - goLink('/pages/getColorCard/addColorCard/index', null, 'redirectTo') - } - } - - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - // 页码和页数 - const [searchField, setSearchField] = useState<{ name?: string; color_card_ids?: number[]; page: number; size: number }>({ - name: '', - color_card_ids: [], - page: 1, - size: 10, - }) - - const getData = async() => { - const res = await fetchData(getFilterData(searchField)) - if (!res.success) { - return alert.error(res.msg) - } - setOrderList({ list: res.data.list, total: res.data.total }) - setRefresherTriggeredStatus(false) - } - - useEffect(() => { - getData() - }, [searchField]) - - const selectedList = useRef([]) - - const isAdd = useRef([]) - - useDidShow(() => { - Taro.getStorage({ - key: 'colorCardCache', - success: (res) => { - console.log('cache', res.data) - if (res.data) { - const temp = JSON.parse(res.data).map(item => item.id) - // 已选的列入 selectedList - selectedList.current = temp - isAdd.current = temp - setSearchField(val => ({ ...val, color_card_ids: selectedList.current })) - } - }, - fail: () => { - console.log('colorCardCache fail') - }, - }) - // const cache = Taro.getStorageSync('colorCardCache') - // if (cache) { - // // 已选的列入 selectedList - // selectedList.current = JSON.parse(cache).map(item => item.id) - // setSearchField(val => ({ ...val, color_card_ids: selectedList.current })) - // } - }) - - // 上拉加载数据 - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - // 下拉刷新 - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: orderList.list, total: orderList.total, status: state.loading! }) - }, [orderList, state.loading]) - - const getScrollToLower = useCallback(() => { - if (orderList.list.length < orderList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [orderList]) - // 选择 - const onSelect = (item: any) => { - console.log('item==>', item, selectedList.current) - setOrderList((prev: any) => { - prev.list?.forEach((val) => { - if (val.id === item.id) { - val.status = true - multipleSelection.current = [...multipleSelection.current, val] - selectedList.current = [...selectedList.current, item.id] - } - }) - return { list: prev.list, total: prev.total } - }) - } - // 未选择 - const onUnSelect = (item: any) => { - setOrderList((prev: any) => { - prev.list?.forEach((val) => { - if (val.id === item.id) { - val.status = false - multipleSelection.current = multipleSelection.current.filter(mul => mul.id !== val.id) - selectedList.current = selectedList.current.filter(mul => mul !== val.id) - } - }) - return { list: prev.list, total: prev.total } - }) - console.log('multipleSelection', multipleSelection.current) - } - - const handleClickCheckBox = (item: any) => { - console.log('item', item) - if (isDisabled(item.id)) { - return alert.none(`最多选择${limit}种色卡`) - } - if (item.is_add) { return } - if (item.status) { - onUnSelect(item) - } - else { - onSelect(item) - } - } - const noop = (e) => { - e.stopPropagation() - } - - useUnload(() => { - console.log('onUnload', isRedirect) - if (!isRedirect) { - Taro.removeStorageSync('colorCardCache') - } - }) - - const isDisabled = (currentId: number) => { - console.log('selectedList, isAdd', selectedList.current, isAdd.current) - if (isAdd.current.includes(currentId)) { - return true - } - return selectedList.current.length >= limit - } - - return - - - 取消 - - - - - { - orderList.list.map((item) => { - return handleClickCheckBox(item)}> - - - - - { - item.is_multiple_product ? 多面料共用 : null - } - - - - {item.color_card_name} - - { - item.affiliation_product?.map((colorCode, index) => { - return {formatRemoveHashTag(colorCode.code)} - }) - } - - - - {/* multipleSelection.current.some(mul => mul.id === item.id) 确保加载新数据时保持选中状态 */} - mul.id === item.id)} - onSelect={() => onSelect(item)} - onClose={() => onUnSelect(item)} - /> - - - - }) - } - - - - - - { - multipleSelection.current.length ? `确认(已选 ${multipleSelection.current.length} 个)` : '确认' - } - - - - -} -export default ColorCardList diff --git a/src/pages/getColorCard/components/colorCardItemList/index.module.scss b/src/pages/getColorCard/components/colorCardItemList/index.module.scss deleted file mode 100644 index 27d37c3..0000000 --- a/src/pages/getColorCard/components/colorCardItemList/index.module.scss +++ /dev/null @@ -1,129 +0,0 @@ -.colorCardTopItem { - display: flex; - align-items: center; - justify-content: space-between; - - .colorCardOrderNo { - font-size: 28px; - font-weight: 550; - color: #000000; - } - - .colorCardStatus { - font-size: 28px; - font-weight: 550; - color: #0d7cff; - } -} -.colorCardFlexBox { - display: flex; - align-items: center; - .colorCardPussName { - margin-right: 10px; - font-size: 28px; - font-weight: 500; - color: #666666; - } - .colorCardTag { - background-color: #e3ecff; - border-color: transparent; - color: #337fff; - } -} - -.colorCardContBox { - width: 100%; - display: flex; - justify-content: space-between; - overflow: hidden; - .colorCardLeftCont { - width: 134px; - height: 134px; - border-radius: 8px; - position: relative; - } - - .colorCardRightCont { - width: calc(100% - 134px); - flex: 1 1 auto; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - margin-left: 24px; - justify-content: space-between; - .colorCardRightTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 12px; - - .colorCardProductName { - width: 70%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-right: 8px; - font-size: 28px; - color: #000000; - } - - .colorCardShipMode { - width: 25%; - font-size: 28px; - color: #000000; - text-align: right; - } - } - &Tags{ - display: flex; - flex-flow: row wrap; - } - - .colorCardColorsBox { - display: flex; - align-items: center; - - .colorCardColorName { - flex: 1; - font-size: 28px; - color: #797979; - text-align: right; - } - } - } -} - -.colorCardBottomMsg { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 16px; - - .colorCardMsgLeft { - font-size: 24px; - font-weight: 400; - color: #a1a1a1; - } - - .colorCardMsgRight { - font-size: 24px; - font-weight: 400; - color: #a1a1a1; - } -} -.colorCardPaymentMethod { - display: flex; - justify-content: flex-end; - .colorCardMsgRightOne { - font-size: 28px; - font-weight: 500; - color: #f64861; - align-self: flex-end; - } -} - -.colorCardBottomBox { - display: flex; - justify-content: flex-end; - margin-top: 32px; -} diff --git a/src/pages/getColorCard/components/colorCardItemList/index.tsx b/src/pages/getColorCard/components/colorCardItemList/index.tsx deleted file mode 100644 index 55c502a..0000000 --- a/src/pages/getColorCard/components/colorCardItemList/index.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import type { ITouchEvent } from '@tarojs/components' -import { ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import styles from './index.module.scss' -import { formatRemoveHashTag } from '@/common/format' -import LabAndImg from '@/components/LabAndImg' -import NormalButton from '@/components/normalButton' -import Divider from '@/components/Divider' -import Tag from '@/components/tag' -import LayoutBlock from '@/components/layoutBlock' -import { goLink } from '@/common/common' - -interface PropsType { - data?: any - cancel?: (e: ITouchEvent) => void -} -const ItemList = (props: PropsType) => { - const { data, cancel } = props - console.log('data===>', data) - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - // // 进入详情页 - const navTo = () => { - goLink('/pages/getColorCard/colorCardDetail/index', { id: data?.order_id }) - } - - return ( - - - 单号:{data.order_no} - {data.order_status_name} - - - {data.purchaser_name} - { - data.sale_user_name && - {data.sale_user_name} - - } - - - - - - - - - - - - {data?.color_card_info[0]?.name} - {data?.shipment_mode_name} - - - {data?.color_card_info[0]?.affiliation_product?.map((item, index) => { - return {formatRemoveHashTag(item.code)} - }) - } - - - - x{data?.color_card_info?.[0]?.count || 0}本 - - - - - - 色卡信息: - {data?.color_card_count || 0} 种色卡,共 {data?.color_card_number || 0} 本 - - - 快递到付 - - - { - data?.order_status === 1 && - 取消订单 - - } - - - - ) -} -export default memo(ItemList) diff --git a/src/pages/getColorCard/index.config.ts b/src/pages/getColorCard/index.config.ts deleted file mode 100644 index e8660e0..0000000 --- a/src/pages/getColorCard/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '领取色卡', -} diff --git a/src/pages/getColorCard/index.module.scss b/src/pages/getColorCard/index.module.scss deleted file mode 100644 index b6ba5a5..0000000 --- a/src/pages/getColorCard/index.module.scss +++ /dev/null @@ -1,66 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - - .search { - width: 100%; - display: flex; - justify-content: space-between; - padding: 20px; - box-sizing: border-box; - align-items: center; - background-color: #fff; - border-bottom: 1px solid #e5e5e5; - } - .tab_bar{ - position: relative; - z-index: 99; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding: 20px; - background-color: white; - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - } - .color_card_list{ - flex: 1 1 auto; - height: 100%; - overflow: hidden; - .order_item{ - margin: 20px 0; - } - } - .bottomBar { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - } -} -.tab_bar .button{ - padding: 0 60px; -} -.bottomBar__button{ - width: 100%; - font-size: 28px; -} diff --git a/src/pages/getColorCard/index.tsx b/src/pages/getColorCard/index.tsx deleted file mode 100644 index a6c25e9..0000000 --- a/src/pages/getColorCard/index.tsx +++ /dev/null @@ -1,141 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useReady } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import ItemList from './components/colorCardItemList' -import Search from '@/components/search' -import NormalButton from '@/components/normalButton' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { alert, goLink } from '@/common/common' -import { CancelColorCardOrder, GetColorCardOrderList } from '@/api/colorCard' -import Empty from '@/components/empty' -import { COLOR_CARD_LIST_EMPTY_IMAGE } from '@/common/constant' -import SelectColorCardStatus from '@/components/SelectColorCardStatus' - -const GetColorCard = () => { - const { fetchData, state } = GetColorCardOrderList() - const getData = async() => { - const res = await fetchData(getFilterData(searchField)) - if (!res.success) { - return alert.error(res.msg) - } - setColorList({ list: res.data.list, total: res.data.total }) - setRefresherTriggeredStatus(false) - } - - // // status 1 申请中 2 已完成 - // // 页码和页数 - const [searchField, setSearchField] = useState<{ name?: string; status?: number; page: number; size: number }>({ - name: '', - status: 0, - page: 1, - size: 10, - }) - const [colorList, setColorList] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - // // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - // // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: colorList.list, total: colorList.total, status: state.loading! }) - }, [colorList, state.loading]) - // 筛选参数 - // 上拉加载数据 - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - const getScrollToLower = useCallback(() => { - if (colorList.list.length < colorList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [colorList]) - - // 领取色卡 - const getColorCard = () => { - goLink('/pages/getColorCard/colorCardList/index') - } - - // 搜索 - const getSearchData = debounce((value: string) => { - setSearchField(e => ({ ...e, name: value })) - }, 300) - - const handleClickFilter = (value) => { - if (searchField.status === value) { return } - setSearchField(e => ({ ...e, status: value })) - } - - useEffect(() => { - getData() - }, [searchField]) - - const { fetchData: cancelOrderApi } = CancelColorCardOrder() - - const cancelOrder = async(id) => { - const res = await cancelOrderApi({ id }) - if (res.success) { - getData() - } - } - - // 取消订单 - const handleCancel = (e, id: number) => { - e.stopPropagation() - Taro.showModal({ - content: '确定取消该订单?', - confirmColor: '#337fff', - confirmText: '确认', - success: (res) => { - if (res.confirm) { - cancelOrder(id) - console.log('用户点击确定') - } - }, - }) - } - - return - - - - - - } - statusMore={statusMore} - selfonScrollToLower={getScrollToLower} - refresherEnabled - refresherTriggered={refresherTriggeredStatus} - selfOnRefresherRefresh={getRefresherRefresh} - safeAreaInsetBottom={false} - > - {colorList?.list?.map((item) => { - return ( - - handleCancel(e, item.order_id)}> - - ) - })} - - - - - 领取色卡 - - - -} - -export default GetColorCard diff --git a/src/pages/index/components/productClass/index.module.scss b/src/pages/index/components/productClass/index.module.scss deleted file mode 100644 index 0c08a13..0000000 --- a/src/pages/index/components/productClass/index.module.scss +++ /dev/null @@ -1,134 +0,0 @@ -.container { - position: relative; -} -.class_main { - position: relative; - // height: 100%; -} -.product_class_main_line { - width: 100%; - height: 80px; - margin-bottom: 20px; - background-color: #f7f7f7; - .product_class_scroll { - &::-webkit-scrollbar { - display: none; - } - box-sizing: border-box; - padding: 20px 90px 0 20px; - .product_class_list { - white-space: nowrap; - display: flex; - box-sizing: border-box; - grid-column-gap: 20px; - .product_class_item { - flex-shrink: 0; - width: 160px; - height: 56px; - padding: 0 15px; - background: #ffffff; - border: 1px solid transparent; - border-radius: 29px; - text-align: center; - line-height: 56px; - font-size: 24px; - color: rgba(0, 0, 0, 0.8); - box-sizing: border-box; - max-width: 260px; - // @include common_ellipsis; - margin: 0 0 16px 0; - } - .product_class_item_selected { - border: 1px solid #3c78f4; - color: #3c78f4; - background: #ecf2ff; - box-sizing: border-box; - } - } - } - .product_class_more { - position: absolute; - right: 0; - top: 0; - width: 88px; - height: 100%; - background-color: #f7f7f7; - box-shadow: -7px 0px 7px -5px rgba(0, 0, 0, 0.16); - line-height: 100%; - display: flex; - align-items: center; - .zhankai { - margin-left: 15px; - } - .product_class_more_icon { - margin-left: 20px; - display: inline-block; - transform: rotate(90deg); - font-size: 30px; - color: rgba(0, 0, 0, 0.5); - } - } -} - -.product_class_main_block { - width: 100%; - height: 100%; - box-sizing: border-box; - position: absolute; - top: 0; - left: 0; - .product_class_block_con { - max-height: 500px; - background-color: #f7f7f7; - z-index: 999; - position: relative; - } - .product_class_scroll { - box-sizing: border-box; - max-height: 500px; - padding: 0 20px; - padding: 20px 20px 0 20px; - .product_class_list { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); - grid-column-gap: 20px; - box-sizing: border-box; - .product_class_item { - width: 160px; - height: 56px; - padding: 0 15px; - background: #ffffff; - border: 1px solid transparent; - border-radius: 29px; - text-align: center; - line-height: 56px; - font-size: 24px; - color: rgba(0, 0, 0, 0.8); - margin: 0 0 20px 0; - box-sizing: border-box; - @include common_ellipsis(1); - } - .product_class_item_selected { - border: 1px solid #3c78f4; - color: #3c78f4; - background: #ecf2ff; - box-sizing: border-box; - } - } - } - .product_class_close { - font-size: 24px; - color: rgba(0, 0, 0, 0.6); - padding-bottom: 20px; - display: flex; - justify-content: center; - } -} -.product_class_block_mask { - position: absolute; - top: 0; - height: 100%; - width: 100%; - background-color: rgba(0, 0, 0, 0.5); - z-index: 100; -} diff --git a/src/pages/index/components/productClass/index.tsx b/src/pages/index/components/productClass/index.tsx deleted file mode 100644 index 88204c0..0000000 --- a/src/pages/index/components/productClass/index.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow } from '@tarojs/taro' -import classnames from 'classnames' -import { memo, useCallback, useEffect, useState } from 'react' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' - -interface Param { - open: boolean - onOpenClick?: (val: boolean) => void - onSelect?: (id: number) => void - list?: { name: string; id: number }[] - defaultSelectId: number -} - -// type ParamProduct = Omit - -const ProductClassLine = memo((option: Param) => { - const { onOpenClick, defaultSelectId = 0, onSelect, list = [], open } = option - const [selectInfo, setSelectInfo] = useState({ - selected: 0, // 当前选中的id - tabId: 0, // 需要滚动到的id - }) - - console.log('刷新了') - - useEffect(() => { - let data: { item: any; index: number } = { item: null, index: 0 } - list?.forEach((item, index) => { - if (item.id == defaultSelectId) { - data = { item, index } - } - }) - if (data.item) { - const num = data.index > 0 ? data.index - 1 : 0 - console.log('获取数据::', list[num].id) - setSelectInfo(e => ({ ...e, tabId: list[num].id, selected: data.item.id })) - } - }, [defaultSelectId, list]) - - const clickEvent = ({ item, index }: { item: any; index: number }) => { - const num = index > 0 ? index - 1 : 0 - setSelectInfo(e => ({ ...e, tabId: list[num].id, selected: item.id })) - onSelect?.(item.id) - } - - const [markHeight, setMarkHeight] = useState('100%') - - useEffect(() => { - if (open) { - const query = Taro.createSelectorQuery() - query.select('#mainId').fields({ rect: true }) - query.selectViewport().scrollOffset() - query.exec((res) => { - console.log('list', list) - console.log('res', res) - const height = res[1].scrollHeight - res[0].top - console.log('height', height) - setMarkHeight(`${height}px`) // #the-id节点的上边界坐标 - }) - } - }, [open]) - - return ( - <> - - - - {list?.map((item, index) => ( - clickEvent({ item, index })} - key={item.id} - > - {item.name} - - ))} - - - {!open - ? onOpenClick?.(true)}> - - - : null} - - {open && onOpenClick?.(false)}>} - - ) -}) - -ProductClassLine.displayName = 'ProductClassLine' - -const ProductClassBlock = (option: Param) => { - const { onOpenClick, defaultSelectId = 0, onSelect, list = [], open } = option - const [selectInfo, setSelectInfo] = useState(0) - - useEffect(() => { - setSelectInfo(defaultSelectId) - }, [defaultSelectId]) - - const clickEvent = (item) => { - setSelectInfo(item.id) - onSelect?.(item.id) - } - - return ( - <> - - - - - {list?.map(item => ( - clickEvent(item)} - key={item.id} - > - {item.name} - - ))} - - - onOpenClick?.(false)}> - 点击收起 - - - - - ) -} - -const PrcductSub = (option: Param) => { - const { open = false, onOpenClick, onSelect, list, defaultSelectId } = option - const getSelect = useCallback((id) => { - onSelect?.(id) - }, []) - const openClick = useCallback((val) => { - onOpenClick?.(val) - }, []) - - return ( - - - - - ) -} -export default PrcductSub diff --git a/src/pages/index/index.config.ts b/src/pages/index/index.config.ts deleted file mode 100644 index 86e3b2e..0000000 --- a/src/pages/index/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '首页', -} diff --git a/src/pages/index/index.module.scss b/src/pages/index/index.module.scss deleted file mode 100644 index 995b859..0000000 --- a/src/pages/index/index.module.scss +++ /dev/null @@ -1,39 +0,0 @@ -.main { - background-color: $color_bg_one; - // height: 100vh; - display: flex; - flex-direction: column; - - .search { - width: 100%; - display: flex; - justify-content: space-between; - padding: 20px; - box-sizing: border-box; - align-items: center; - background-color: #fff; - - .search_collect { - font-size: 26px; - border: 2px solid #007aff; - color: #007aff; - border-radius: 50px; - width: 132px; - height: 44px; - text-align: center; - line-height: 44px; - } - - .search_input { - flex: 1; - margin-left: 20px; - } - } - - .products { - padding-bottom: calc($customTabBarHeight + env(safe-area-inset-bottom)); - height: calc(100vh - $customTabBarHeight - env(safe-area-inset-bottom) - 100px); - } -} - -//246 diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx deleted file mode 100644 index 8647033..0000000 --- a/src/pages/index/index.tsx +++ /dev/null @@ -1,200 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import Search from '@/components/search' -import SideBar from '@/components/sideBar' -import Product from '@/components/product' -import ShopCart from '@/components/shoppingCart' -import { goLink } from '@/common/common' -import { KindListApi, ProductListApi } from '@/api/index' -// import useLogin from '@/use/useLogin' -import { ClientListApi, MpProductColorList, MpShoppingCartProductColorList } from '@/api/order' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { useCheckTabBarSelectStatus } from '@/use/useCommon' -import { TabBarIndex } from '@/reducers/tabBar' - -const limit = 6 - -const Index = () => { - const product_kind_id_ref = useRef(0) - // 获取客户 - const [clienList, setclienList] = useState([]) - const { fetchData: listFetchData } = ClientListApi() - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - - const [clientObj, setclientObj] = useState({ - clientId: -1, - clientName: '', - }) - const getClient = async() => { - const res = await listFetchData({ - page: 1, size: 10, - }) - setclientObj({ - clientId: res.data.list?.length > 0 ? res.data.list[0]?.id : -1, - clientName: res.data.list?.length > 0 ? res.data.list[0]?.name : '', - }) - setclienList([...res.data.list]) - } - - const [filtrate, setFiltrate] = useState({ product_kind_id: 0, size: limit, page: 1 }) - // 获取面料种类 - const [kindData, setKindData] = useState({ list: [], defaultId: 0 }) - const { fetchData } = KindListApi() - const categoryList = async() => { - const res = await fetchData() - if (res.data?.list) { - setKindData({ ...kindData, list: res.data.list, defaultId: res.data.list[0].id }) - setFiltrate({ ...filtrate, product_kind_id: res.data.list[0].id }) - product_kind_id_ref.current = res.data.list[0].id - } - } - - // 获取面料列表 - const [productData, setProductData] = useState({ list: [], total: 0 }) - const [hasMore, setHasMore] = useState(true) - const pageNum = useRef({ size: filtrate.size, page: filtrate.page }) - const { fetchData: productFetchData, state: productState } = ProductListApi() - // 获取数据方法 - const getProductList = async() => { - const { data, total } = await productFetchData(filtrate) - setProductData({ ...productData, list: data.list, total }) - setRefresherTriggeredStatus(() => false) - } - // 监听查询条件 - useEffect(() => { - if (filtrate.product_kind_id) { getProductList() } - }, [filtrate]) - - // 点击面料类型 - const getProductKindId = useCallback((e) => { - pageNum.current.page = 1 - setProductData({ list: [], total: 0 }) - setFiltrate(list => ({ ...list, size: limit, product_kind_id: e.id })) - product_kind_id_ref.current = e.id - }, []) - - // 上拉加载数据 - const getScrolltolower = useCallback(() => { - if (productData.list.length >= productData.total) { - setHasMore(false) - } - else { - pageNum.current.page++ - const newSize = pageNum.current.size * pageNum.current.page - setFiltrate(e => ({ ...e, size: newSize })) - } - }, [productData]) - - const [showShopCart, setShowShopCart] = useState(false) - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setFiltrate({ ...filtrate, size: limit }) - setHasMore(true) - setRefresherTriggeredStatus(true) - } - useEffect(() => { - categoryList() - getClient() - }, []) - - const ShopCartRef = useRef(null) - - const [goodObj, setGoodsobj] = useState({}) - // 点击对应商品显示购物车 - const showCart = async(item) => { - ShopCartRef.current.setSearchObj(e => ({ ...e, goodsId: item.id, purchaser_id: clientObj?.clientId, code_or_name: '' })) - ShopCartRef.current.SearchRef.current.setInputCon('') - setShowShopCart(true) - setGoodsobj(item) - } - - // 关闭弹窗 - const closePoup = () => { - setShowShopCart(false) - } - // 数据加载状态 - const statusMore = useMemo(() => { - const status = dataLoadingStatus({ list: productData.list, total: productData.total, status: productState.loading! }) - console.log('loading status', status) - return status - }, [productData, productState.loading]) - - useDidShow(() => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - // 判断是否有跳转选择客户 - if (currPage.data?.clientId && currPage.data?.clientId !== '') { - setclientObj({ - clientId: currPage.data?.clientId, - clientName: currPage.data?.clientName, - }) - ShopCartRef.current.setSearchObj(val => ({ ...val, purchaser_id: currPage.data?.clientId })) - } - // 默认客户 - if (currPage.data?.clientId == null) { - setclientObj({ - clientId: clienList.length > 0 ? clienList[0]?.id : -1, - clientName: clienList.length > 0 ? clienList[0]?.name : '', - }) - } - }) - - // 获取二级分类 - const product_kind_id_next_ref = useRef(0) - const getSelectClassId = useCallback((id) => { - pageNum.current.page = 1 - setProductData({ list: [], total: 0 }) - const kind_id = id == -1 ? product_kind_id_ref.current : id - product_kind_id_next_ref.current = id - setFiltrate(list => ({ ...list, size: limit, product_kind_id: kind_id })) - }, []) - - useCheckTabBarSelectStatus(TabBarIndex.INDEX) - - return ( - // setShowShopCart(showShopCart)}> - - - {/* goLink('/pages/collection/index')}> - 我的收藏 - */} - goLink('/pages/searchPage/index')}> - - - - - - showCart(item)} /> - - - - - // - ) -} -export default Index -// oninputEvent={(e, item) => { oninputEvent(e, item) }} diff --git a/src/pages/inviteCode/index.config.ts b/src/pages/inviteCode/index.config.ts deleted file mode 100644 index 29bfdd0..0000000 --- a/src/pages/inviteCode/index.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - navigationBarTitleText: '邀请码', - navigationBarTextStyle: 'black', - navigationBarBackgroundColor: '#E4EEFD', - backgroundColor: '#E4EEFD', - backgroundColorTop: '#E4EEFD', -} diff --git a/src/pages/inviteCode/index.module.scss b/src/pages/inviteCode/index.module.scss deleted file mode 100644 index 87fda3e..0000000 --- a/src/pages/inviteCode/index.module.scss +++ /dev/null @@ -1,150 +0,0 @@ -page { - display: flex; - flex-flow: column nowrap; - height: 100%; -} -.main { - display: flex; - flex-flow: column nowrap; - height: 100%; - background: linear-gradient(to bottom, #e4eefd 25%, $color_bg_one 42%); - padding-bottom: 0; - box-sizing: border-box; - overflow-y: scroll; - .content { - flex: 1 1 auto; - overflow: scroll; - } -} -.background { - display: flex; - flex-flow: row nowrap; - padding: 20px 56px; - padding-bottom: 0; - align-items: center; - justify-content: space-between; - overflow: hidden; - .left { - .title { - padding-bottom: 5px; - font-size: 60px; - font-weight: 500; - } - .description { - font-size: 28px; - color: #848689; - font-weight: 400; - } - } - .right { - .iconContainer { - width: 260px; - position: relative; - bottom: -36px; - .icon { - width: 130%; - } - } - } -} -.inviteCodeContent { - position: relative; - top: -20px; -} -.codeBar { - border-radius: 15px; - background-color: #f7f8fa; - padding: 40px 0; - .inviteCodeBar { - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - margin-bottom: 16px; - .invite { - padding: 0 40px; - font-size: 46px; - font-weight: 500; - color: #337fff; - line-height: 65px; - } - } -} -.tips { - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - font-size: 24px; - font-weight: 400; - color: #9fa0a1; - line-height: 28px; - padding: 0 40px; -} -.inviteListTitle { - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - padding-top: 15px; - padding-bottom: 30px; - .listTitle { - padding: 0 20px; - font-size: 32px; - font-weight: 500; - color: #000000; - } - .titleIconLeft { - width: 24px; - height: 4px; - background: linear-gradient(270deg, #333333 0%, rgba(51, 51, 51, 0) 100%); - opacity: 0.3; - } - .titleIconRight { - width: 24px; - height: 4px; - background: linear-gradient(270deg, rgba(51, 51, 51, 0) 0%, #333333 100%); - opacity: 0.3; - } -} -.bottomBar { - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-top: 24px; - padding-right: 48px; - padding-left: 48px; - background-color: #ffffff; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - &__text{ - font-weight: 500; - } -} -.codePreview { - display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; - position: relative; - top: -120px; - .imageContainer { - width: 80vw; - height: auto; - .image { - width: 100%; - height: 100%; - } - } - .previewTips { - position: absolute; - bottom: -80px; - font-size: 40px; - font-weight: 400; - color: #c2c2c2; - letter-spacing: 5px; - white-space: nowrap; - } -} diff --git a/src/pages/inviteCode/index.tsx b/src/pages/inviteCode/index.tsx deleted file mode 100644 index 6d2134d..0000000 --- a/src/pages/inviteCode/index.tsx +++ /dev/null @@ -1,331 +0,0 @@ -import { Canvas, Image, Text, View } from '@tarojs/components' -import Taro, { useReady } from '@tarojs/taro' -import React, { useCallback, useRef, useState } from 'react' -import style from './index.module.scss' -import Dialog from '@/components/Dialog' -import LayoutBlock from '@/components/layoutBlock' -import Divider from '@/components/Divider' -import type { TablePropsType } from '@/components/table' -import Table from '@/components/table' -import NormalButton from '@/components/normalButton' -import { alert } from '@/common/common' -import { GenBarCodeOrQrCode, GetInvitationInfo, GetInvitationList } from '@/api' -import { getCDNSource } from '@/common/constant' - -// 需要传进来的表头数据示例 -const inviteColumns = [ - { - key: 'invitee', - title: '被邀请人', - dataIndex: 'invitee', - width: '50%', - }, - { - key: 'InviteResults', - title: '邀请进度', - dataIndex: 'InviteResults', - width: '50%', - }, -] -const defaultSize = 24 -// 邀请码 -const InviteCode = () => { - const sizeRef = useRef(defaultSize) - const { fetchData: getInvitationListAPI } = GetInvitationList() - const { fetchData } = GetInvitationInfo() - const { fetchData: genCode } = GenBarCodeOrQrCode() - const [inviteInfo, setInviteInfo] = useState({}) - const [currentTable, setCurrentTable] = useState({ - columns: inviteColumns, - dataSource: { list: [], total: 0 }, - }) - const [loading, setLoading] = useState(false) - const getInvitationList = async() => { - const res = await getInvitationListAPI({ size: sizeRef.current }) - if (res.success) { - console.log('getInviteCode', res) - setCurrentTable((prev: any) => ({ - ...prev, - dataSource: { - list: res.data.list.map((item, index: number) => ({ - key: index, - index: index + 1, - invitee: item.invitee_name || '--', - InviteResults: item.schedule, - })), - total: res.data.list.length, - }, - })) - } - } - // 获取邀请码 - const getInviteCode = async() => { - const res = await fetchData() - if (res.success) { - setInviteInfo(res.data) - } - } - // 生成二维码 - const genQRcode = async() => { - const res = await genCode({ content: `InviteCode:${inviteInfo.invitation_code}` }) - if (res.success) { - return res.data.qrcode_base64 - } - else { - setLoading(false) - } - } - - const [, setForceUpdate] = useState({}) - const canvasNode = useRef(null) - const ctx = useRef(null) - const [showPopup, setShowPopup] = useState(false) - - const [targetImageUrl, setTargetImageUrl] = useState('') - - const getImageObject = (canvas: Taro.Canvas, src: string) => { - return new Promise((resolve, reject) => { - console.log('getImageObject param', canvas, src) - const img = canvas.createImage() - img.src = src - img.onload = () => { - console.log('image===>', img) - resolve(img) - } - img.onerror = (err) => { - console.log('image error===>', err) - alert.error('图片加载失败') - reject(err) - } - }) - } - // canvas 生成 图片 - const saveCanvasToImage = (canvas) => { - Taro.canvasToTempFilePath({ - canvas, - fileType: 'png', - success: (res) => { - console.log('tempFilePath', res.tempFilePath) - setTargetImageUrl(res.tempFilePath) - }, - fail: (error) => { - console.log('error', error) - }, - complete: () => { - setLoading(false) - }, - }) - } - const getImageInfo = (filePath) => { - Taro.getImageInfo({ - src: filePath, - success: (infoRes) => { - console.log('', infoRes) - }, - }) - } - // 初始化 canvas - const initCanvas = async() => { - return new Promise((resolve, reject) => { - Taro.nextTick(() => { - const query = Taro.createSelectorQuery() - query.select('#canvas').node(({ node: canvas }: { node: Taro.Canvas }) => { - console.log('canvas==>', canvas) - const context = canvas.getContext('2d') - console.log('ctx', context) - canvasNode.current = canvas - ctx.current = context - console.log('canvas', canvas) - setForceUpdate({}) - resolve(true) - }).exec() - }) - }) - } - - const doublePick = (num, minus = false) => { - if (minus) { - return num / 2 - } - else { - return num * 2 - } - } - const [canvasStyle, setCanvasStyle] = useState({}) - const startPaint = async(ctx: Taro.RenderingContext, canvas: Taro.Canvas, image: Taro.Image) => { - // 开始绘制 - const { width, height } = canvas - console.log('startPaint param', ctx, canvas, image) - const cCanvasCtx = ctx as any - cCanvasCtx.clearRect(0, 0, width, height) - cCanvasCtx.drawImage(image, 0, 0, width, height) - cCanvasCtx.save() - cCanvasCtx.font = `${doublePick(40)}px 微软雅黑` - cCanvasCtx.fillStyle = '#000000' - cCanvasCtx.fillText('蜘蛛管家', doublePick(40), doublePick(80)) // text up above canvas - cCanvasCtx.save() - cCanvasCtx.font = `${doublePick(26)}px 微软雅黑` - cCanvasCtx.fillStyle = '#8f9398' - cCanvasCtx.fillText('真挚邀请您建立合作关系', doublePick(40), doublePick(130)) // text up above canvas - cCanvasCtx.save() - cCanvasCtx.font = `${doublePick(24)}px 微软雅黑` - cCanvasCtx.fillStyle = '#a6a6a6' - cCanvasCtx.fillText('请前往邀请码页面,进行扫描邀请', doublePick(100), doublePick(630)) // text up above canvas - cCanvasCtx.save() - cCanvasCtx.font = `${doublePick(36)}px 微软雅黑` - cCanvasCtx.fillStyle = '#7f7f7f' - cCanvasCtx.fillText('邀 请 码', doublePick(72), doublePick(730)) // text up above canvas - cCanvasCtx.save() - cCanvasCtx.font = `${doublePick(24)}px 微软雅黑` - cCanvasCtx.fillStyle = '#cccccc' - cCanvasCtx.fillText('|', doublePick(258), doublePick(724)) // text up above canvas - cCanvasCtx.save() - cCanvasCtx.font = `${doublePick(36)}px 微软雅黑` - cCanvasCtx.fillStyle = '#7f7f7f' - cCanvasCtx.fillText(`${inviteInfo.invitation_code}`, doublePick(311), doublePick(730)) // text up above canvas - cCanvasCtx.save() - const codeUrl = await genQRcode() - try { - const code = await getImageObject(canvas, codeUrl) - cCanvasCtx.drawImage(code, doublePick(110), doublePick(213), doublePick(342), doublePick(342)) - } - catch (err) { - console.error('合成二维邀请码失败', err) - setLoading(false) - throw new Error('合成二维邀请码失败') - } - - saveCanvasToImage(canvas) - } - // 绘制最终的海报,图片使用两倍大小,canvas大小是图片的二分之一 就能让canvas生成出来的图片清晰了 - const drawPictorial = async() => { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve, reject) => { - setLoading(true) - if (!ctx.current) { - // 重新初始化canvas - await initCanvas() - } - const canvas = canvasNode.current! - Taro.getImageInfo({ - src: getCDNSource('/user/inviteCodePopup.png'), - success: (res) => { - console.log('res==>', res) - canvas.width = res.width - canvas.height = res.height - setCanvasStyle({ - width: `${doublePick(canvas.width, true)}px`, - height: `${doublePick(canvas.height, true)}px`, - }) - getImageObject(canvas, `${res.path}`).then(async(image) => { - try { - // 开始绘制 - await startPaint(ctx.current!, canvas, image) - resolve(true) - } - catch (err) { - console.log(err) - setLoading(false) - reject(new Error('绘制失败')) - } - }).catch((error) => { - setLoading(false) - throw new Error(error) - }) - }, - }) - }) - } - // 加载更多 - const handleLoadMore = () => { - sizeRef.current += defaultSize - } - const handleQRcodeShare = async() => { - try { - // painter.current.startPaint() - const flag = await drawPictorial() - if (flag) { - setShowPopup(true) - } - } - catch (err) { - throw new Error('弹出二维码失败') - } - } - // 复制二维码 - const handleCopyInviteCode = () => { - Taro.setClipboardData({ - data: inviteInfo.invitation_code, - }) - } - const handleChange = (value: boolean) => { - setShowPopup(value) - } - useReady(() => { - getInviteCode() - getInvitationList() - setTimeout(() => { - initCanvas() - }, 200) - }) - return - - - - 蜘蛛管家 - 真挚邀请您建立合作关系 - - - - - - - - - - - - 邀请码 - - {inviteInfo.invitation_code} - - 填写邀请码,即可在蜘蛛管家下单购物 - - - - - - 成功邀请 - - - -
-
-
- 温馨提示:邀请码确定绑定后,不支持解绑。 -
-
- {/* */} - {/* 已踩坑,这里必须设置canvas的style的width和height,单单只设置canvas实例的width和height是不行的。会模糊! */} - - - - 二维码分享 - - - 复制邀请码 - - - - - - {/* showMenuByLongpress 属性只对 小程序有效 */} - - - 长按图片保存到手机 - - - -
-} -export default InviteCode diff --git a/src/pages/login/components/remind/index.module.scss b/src/pages/login/components/remind/index.module.scss deleted file mode 100644 index aa51a47..0000000 --- a/src/pages/login/components/remind/index.module.scss +++ /dev/null @@ -1,35 +0,0 @@ -.remind_con { - height: 430px; - .title { - width: 100%; - text-align: center; - margin-top: 32px; - font-weight: 500; - } - .regulations_text { - color: rgba(0, 0, 0, 0.6); - font-size: 22px; - text-align: center; - margin-top: 80px; - text { - color: #1245b0; - font-size: 22px; - } - } - .btn_con { - width: 100%; - justify-content: center; - display: flex; - margin-top: 88px; - text { - display: inline-block; - width: 612px; - height: 80px; - background: linear-gradient(90deg, #4581ff 0%, #0d56fa 100%); - border-radius: 43px; - color: #fff; - text-align: center; - line-height: 80px; - } - } -} diff --git a/src/pages/login/components/remind/index.tsx b/src/pages/login/components/remind/index.tsx deleted file mode 100644 index b9b0a6c..0000000 --- a/src/pages/login/components/remind/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Text, View } from '@tarojs/components' -import styles from './index.module.scss' -import Popup from '@/components/popup' -import { goLink } from '@/common/common' - -export interface Param { - show: boolean - onSubmit?: () => void - onClose?: () => void -} -export default function Remind(props: Param) { - return props.onClose?.()}> - - 请阅读并同意以下条款 - - goLink('/pages/clauseDetail/index', { type: 'clause' })}>《服务条例》 - 和 - goLink('/pages/clauseDetail/index', { type: 'policy' })}>《隐私政策》 - - props.onSubmit?.()}> - 同意并继续 - - - -} diff --git a/src/pages/login/index.config.ts b/src/pages/login/index.config.ts deleted file mode 100644 index bd25448..0000000 --- a/src/pages/login/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '登录', -} diff --git a/src/pages/login/index.module.scss b/src/pages/login/index.module.scss deleted file mode 100644 index 9930fda..0000000 --- a/src/pages/login/index.module.scss +++ /dev/null @@ -1,117 +0,0 @@ -page { - background-color: #fff; -} -.login { - width: 100%; - background-color: white; - Image { - vertical-align: bottom; - } - &-panel { - padding: 0 48px; - } - &-title { - margin-left: 11px; - Text { - display: block; - &:first-child { - font-size: 70px; - font-weight: 400; - color: $color_font_one; - } - &:last-child { - font-size: 40px; - color: #727272; - font-weight: 550; - line-height: 2; - } - } - } - .input-bar { - display: flex; - flex-flow: row nowrap; - align-items: center; - border: 1px solid #c2c2c2; - border-radius: 12px; - margin-top: 4vh; - padding: 15px 20px; - font-size: 40px; - @mixin inputBaseStyle { - display: block; - width: 100%; - flex: 1 1 auto; - padding-left: 15px; - font-size: 32px; - padding-right: 0; - color: #808080; - } - &--account { - @include inputBaseStyle; - } - &--password { - @include inputBaseStyle; - } - } - &-options { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding: 0 10px; - } - &-option { - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-top: 4vh; - font-size: 26px; - color: #909090; - } - &-button { - height: 90px; - margin-top: 7vh; - font-size: 32px; - } -} -.isRememberPwd { - display: block; - margin-left: 10px; -} -.isForgetPwd { - margin: 0 20px; -} -.quick-login { - margin-top: 6vh; - &--options { - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - } - &--divider { - font-size: 25px; - font-weight: lighter; - color: #acacac; - } - &--iconCard { - color: #acacac; - } -} -.regulations { - display: flex; - justify-content: center; - margin-top: 32px; - color: rgba(0, 0, 0, 0.6); - font-size: 22px; - align-items: center; - .regulations_text { - margin-left: 10px; - } - text { - color: #1245b0; - font-size: 22px; - } -} -.regulations_text { - margin-left: 10px; -} diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx deleted file mode 100644 index d8afacb..0000000 --- a/src/pages/login/index.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { Image, Input, Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { FC } from 'react' -import { memo, useState } from 'react' -import { useDispatch } from 'react-redux' -import type { Dispatch } from 'redux' -import styles from './index.module.scss' -import Remind from './components/remind' -import Divider from '@/components/Divider' -import IconFont from '@/components/iconfont/iconfont' -import NormalButton from '@/components/normalButton' -import IconCard from '@/components/iconCard' -import { LoginApi } from '@/api' -import { alert, checkKey, goLink } from '@/common/common' -import useUserInfo from '@/use/useUserInfo' -import { BUSINESS_MANAGER_PHONE } from '@/common/constant' -import type { TabBarAction } from '@/reducers/tabBar' -import { INITIAL_STATE } from '@/reducers/tabBar' -import { TabBarType } from '@/constants/tabbar' -import Checkbox from '@/components/checkbox' - -const QuickLogin: FC = () => { - return ( - - - 或通过以下方式登录 - - - - - - ) -} -const QuickLoginWithMemo = memo(QuickLogin) -const Login: FC = () => { - // const { selectedId, tabItem } = useSelector((state) => { - // return state.tabBarData - // }) - const [isRemember, setRemember] = useState(false) - - const [eyesStatus, setEyesStatus] = useState(true) - - const handlePwdVisible = () => { - setEyesStatus(value => !value) - } - - const selectCallBack = () => { - console.log('selectCallBack') - setRemember(true) - } - const closeCallBack = () => { - setRemember(false) - console.log('closeCallBack') - } - - const [account, setAccount] = useState('') - const [password, setPassword] = useState('') - - const formatInput = (value: string) => { - return value.trim() - } - const [selected, setSelected] = useState(false) - const [showRemind, setShowRemind] = useState(false) - const onSubmit = () => { - setSelected(true) - setShowRemind(false) - } - const handleInputAccount = (event: any) => { - const formated = formatInput(event.detail.value) - setAccount(formated) - } - const handleInputPassword = (event: any) => { - const formated = formatInput(event.detail.value) - setPassword(formated) - } - - const { setToken, setUserInfo } = useUserInfo() - - const { fetchData } = LoginApi() - const dispatch = useDispatch>() - - const handleLogin = async() => { - if (account === '' || password === '') { return alert.error('账号密码不能为空!') } - if (!selected) { - setShowRemind(true) - return - } - console.log('账户密码:', account, password) - const res = await fetchData({ - account, - password, - }) - - if (res.success) { - alert.success('登陆成功') - setToken(res.data.token) - setUserInfo({ ...res.data }) - const tempTabBar = INITIAL_STATE.tabItem.filter(item => res.data.mp_role_access_list.includes(item.key)) - const dispatched = dispatch({ type: TabBarType.SET_TAB_ITEM, data: { tabItem: tempTabBar } }) - console.log('dispatch', dispatched) - dispatch({ type: TabBarType.SET_SELECTED, data: { selectedId: tempTabBar?.[0].id } }) - Taro.switchTab({ - url: dispatched.data.tabItem?.[0]?.pagePath || '', - }) - } - else { - alert.error('登陆失败') - } - } - // 处理忘记密码的逻辑 - const handleForgetPwd = () => { - Taro.showToast({ title: `联系客服:${BUSINESS_MANAGER_PHONE}`, icon: 'none' }) - } - - return ( - - - - - 您好, - 欢迎来到蜘蛛管家 - - - - - - - - - - - - {!eyesStatus - ? ( - - ) - : ( - - )} - - - - - {/* - 记住密码 - */} - - - - 忘记密码? - - - - 登录 - - - setSelected(true)} onClose={() => setSelected(false)} > - - 我已阅读并同意 - goLink('/pages/clauseDetail/index', { type: 'clause' })}>《服务条例》 - 和 - goLink('/pages/clauseDetail/index', { type: 'policy' })}>《隐私政策》 - - - - {/* H5 显示微信登陆 */} - {process.env.TARO_ENV === 'h5' && } - - setShowRemind(false)} /> - - ) -} - -export default Login diff --git a/src/pages/newCollection/components/itemList/index.module.scss b/src/pages/newCollection/components/itemList/index.module.scss deleted file mode 100644 index 60e13af..0000000 --- a/src/pages/newCollection/components/itemList/index.module.scss +++ /dev/null @@ -1,76 +0,0 @@ -.itemBox { - margin: 24px; - background: #ffffff; - border-radius: 16px; - padding: 0px 32px 32px 32px; - position: relative; - - .itemTop { - width: 100%; - height: 82px; - border-bottom: 1px solid #f7f7f7; - display: flex; - align-items: center; - justify-content: space-between; - - .itemTopLeft { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .itemTopRight { - font-size: 28px; - font-weight: 500; - color: #e42945; - } - } - - .flexBox { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 20px; - - .flexLeft1 { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .flexRight1 { - font-size: 32px; - font-weight: 500; - color: #000000; - } - - .flexLeft { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .flexRight { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .btnAnd { - position: absolute; - width: 160px; - height: 72px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 72px; - right: 32px; - bottom: 32px; - } -} diff --git a/src/pages/newCollection/components/itemList/index.tsx b/src/pages/newCollection/components/itemList/index.tsx deleted file mode 100644 index 111de61..0000000 --- a/src/pages/newCollection/components/itemList/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import { navigateTo } from '@tarojs/router' -import styles from './index.module.scss' -// import BottomBtns from '@/components/BottomBtns' -import { formatDateTime, formatPriceDiv } from '@/common/format' - -interface Params { - obj: any -} -const ItemList = (pros: Params) => { - const navTo = (e) => { - e?.stopPropagation() - Taro.navigateTo({ - url: `/pages/collectionDetail/index?id=${pros.obj.id}`, - }) - } - - const styleColor = useMemo(() => { - if (pros.obj.auditor_status_name == '待审核') { - return '#E42945' - } - else if (pros.obj.auditor_status_name == '已审核') { - return '#337FFF' - } - else if (pros.obj.auditor_status_name == '已拒绝') { - return '#000000' - } - }, [pros.obj]) - - return ( - - - {pros.obj.purchaser_name} - {pros.obj.auditor_status_name} - - - 转账金额: - ¥{formatPriceDiv(pros.obj.receipt_amount, 100, true)} - - - 待认款金额: - ¥{formatPriceDiv(pros.obj.pending_distribute_amount, 100, true)} - - - 收款时间: - {formatDateTime(pros.obj.create_time)} - - {/* 查看详情 */} - - ) -} -export default memo(ItemList) diff --git a/src/pages/newCollection/index.config.ts b/src/pages/newCollection/index.config.ts deleted file mode 100644 index 99f2585..0000000 --- a/src/pages/newCollection/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '收款列表', -} diff --git a/src/pages/newCollection/index.module.scss b/src/pages/newCollection/index.module.scss deleted file mode 100644 index 3611c4d..0000000 --- a/src/pages/newCollection/index.module.scss +++ /dev/null @@ -1,237 +0,0 @@ -.flexBox { - display: flex; - width: 200px; - align-items: center; - justify-content: flex-end; -} - -.icon_shaixuan { - color: #0D7CFF; - font-size: 35px !important; - margin-right: 10px; -} - -.activeshaixuan { - color: #000; - font-size: 35px !important; - margin-right: 10px; -} - -.shaixuan { - margin-right: 32px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; -} - -.activeshai { - color: #0D7CFF; - margin-right: 32px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; -} - -.order_list { - height: calc(100vh - 300px); - background: #f7f7f7; - - .bigBpx { - height: 200px; - } - - .kongboxTwo { - height: 100px; - } -} - -.fixedBox { - width: 100%; - position: fixed; - bottom: 64px; - display: flex; - align-items: center; - justify-content: center; -} - -.addBtn { - width: 80%; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 28px; - font-weight: 500; - text-align: center; - line-height: 80px; - color: #FFFFFF; -} - -.pageTop { - width: 100%; - margin-top: 24px; - display: flex; - align-items: center; - justify-content: space-between; - // margin-bottom: 10px; - - .pageTopLeft { - font-size: 24px; - font-weight: 400; - color: #000000; - margin-left: 24px; - } - - .pageTopRight { - font-size: 24px; - font-weight: 400; - color: #000000; - margin-right: 24px; - } -} - -.popupBox { - - // padding: 48px; - .timeFlex { - display: flex; - padding-left: 48px; - - .timeOne { - width: 319px; - height: 68px; - background: #E9E9E9; - border-radius: 8px; - opacity: 0.4; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 68px; - border: 1px solid #f7f7f7; - box-sizing: border-box; - margin-right: 16px; - } - - .activetimeOne { - width: 319px; - height: 68px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 28px; - font-weight: 500; - color: #337FFF; - margin-right: 16px; - text-align: center; - line-height: 68px; - } - } - - - - .timeBox2 { - margin-top: 16px; - margin-right: 48px; - margin-left: 48px; - height: 68px; - background: #E9E9E9; - border-radius: 8px; - text-align: center; - line-height: 68px; - position: relative; - font-size: 28px; - font-weight: 400; - color: #000000; - margin-bottom: 72px; - - .more { - position: absolute; - right: 30px; - top: 5px; - font-size: 40px; - } - } - - .activetimeBox2 { - margin-top: 16px; - margin-right: 48px; - margin-left: 48px; - background: rgba(51, 127, 255, 0.1); - height: 68px; - border-radius: 8px; - text-align: center; - line-height: 68px; - position: relative; - font-size: 28px; - font-weight: 400; - color: #337FFF; - margin-bottom: 72px; - border: 1px solid #337FFF; - - .more { - position: absolute; - right: 30px; - top: 5px; - font-size: 40px; - } - } - - .safeBox { - height: 100px; - } - - .bottomBox { - height: 160px; - background: #FFFFFF; - position: fixed; - bottom: 0; - z-index: 99; - display: flex; - padding-top: 16px; - justify-content: space-between; - width: 100vw; - - .resetBox { - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087EFF; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #337FFF; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button { - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; - margin-right: 48px; - } - - .activeButton { - margin-right: 48px; - width: 311px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 32px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } - } -} diff --git a/src/pages/newCollection/index.tsx b/src/pages/newCollection/index.tsx deleted file mode 100644 index a923164..0000000 --- a/src/pages/newCollection/index.tsx +++ /dev/null @@ -1,301 +0,0 @@ -import { Button, Input, View } from '@tarojs/components' -import Taro, { faceVerifyForPay, useDidShow } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import ItemList from './components/itemList' -import Search from '@/components/search' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import Popup from '@/components/popup' -import InfiniteScroll from '@/components/infiniteScroll' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - MpCashManagementOrderList, -} from '@/api/newCollection' -import TimePickerPopup from '@/components/timePickerPopup' -import IconFont from '@/components/iconfont/iconfont' -import NormalButton from '@/components/normalButton' - -const NewCollection = () => { - const myDate = new Date() - const [searchField, setSearchField] = useState< - { - page: number - size: number - search_name: string - start_time: number | string - end_time: number | string - }>({ - page: 1, - size: 10, - search_name: '', - start_time: `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).subtract(14, 'day').format('YYYY-MM-DD')} 00:00:00`, - end_time: `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).add(1, 'day').format('YYYY-MM-DD')} 00:00:00`, - }) - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - - // 获取订单列表 - const { fetchData: listFetchData, state: orderState } = MpCashManagementOrderList() - const [orderData, setOrderData] = useState<{ list: any[]; total: number; summary?: any }>({ list: [], total: 0, summary: {} }) - - // 输入了搜索关键字 - const getSearchData = useCallback((e) => { - pageNum.current.page = 1 - setOrderData(() => ({ list: [], total: 0 })) - setSearchField(val => ({ ...val, search_name: e, size: 10 })) - }, []) - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getOrderList = async() => { - const res = await listFetchData({ - ...searchField, - }) - setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total, summary: res.data?.summary })) - setRefresherTriggeredStatus(false) - } - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - getOrderList() - setSearchField(val => ({ ...val, size: 10 })) - } - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading as any }) - }, [orderData, orderState]) - - // 上拉加载数据 - const getScrolltolower = useCallback(() => { - if (orderData.list.length < orderData.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - console.log(pageNum.current.page, 'pageNum.current.page') - console.log(size, 123123) - setSearchField({ ...searchField, size }) - } - }, [orderData]) - - // 是否不允许确认筛选 - const isDisabled = useMemo(() => { - // if (searchField.stage !== '不限' || - // searchField.sale_mode !== '不限' || - // searchField.return_type !== '不限' || - // searchField.start_time !== '' || - // searchField.end_time !== '' - // ) { - // return false - // } else { - // return true - // } - return false - }, []) - - // 新建收款 - const handAdd = () => { - Taro.navigateTo({ - url: '/pages/addCollection/index', - }) - } - - // 筛选弹出 - - const [SelectPopup, setSelectPopup] = useState(false) - - // 时间数组 - const [TimeList, setTimeList] = useState( - [ - { - id: 1, - name: '默认14天内', - start_time: `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).subtract(14, 'day').format('YYYY-MM-DD')} 00:00:00`, - end_time: `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).add(1, 'day').format('YYYY-MM-DD')} 00:00:00`, - checked: true, - }, - { - id: 2, - name: '展示全部日期', - start_time: '', - end_time: '', - checked: false, - }, - ], - ) - - // 弹窗确认选择 - const handSureSelect = () => { - pageNum.current.size = 10 - setSearchField({ ...searchField, size: 10 }) - getOrderList() - setSelectPopup(false) - } - - // 展示时间筛选 - const [showTime, setShowTime] = useState(false) - // 关闭时间筛选 - const handClose = () => { - setShowTime(false) - } - - const [start, setStart] = useState(myDate.toLocaleDateString()) - const [end, setEnd] = useState('') - // 选择时间 - const handTime = (eq) => { - // 直接进来点确定的时候做处理 - if (Object.keys(eq).length === 0) { - const obj = { - start: '', - end: '', - } - obj.start = `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).format('YYYY-MM-DD')} 00:00:00` - obj.end = `${dayjs(new Date(obj?.start)).add(1, 'day').format('YYYY-MM-DD')} 00:00:00` - eq.value = obj - } - setSearchField(val => ({ ...val, start_time: eq?.value?.start, end_time: eq?.value?.end })) - setStart(eq?.value?.start) - setEnd(eq?.value?.end) - setShowTime(false) - pageNum.current.size = 10 - } - useDidShow(() => { - getOrderList() - }) - - // 监听筛选条件变化 - useEffect(() => { - getOrderList() - }, [searchField.size, searchField.search_name]) - const timeArea = useMemo(() => { - // const res = TimeList.filter(item => { - // return item.checked - // }) - // && res.length > 0 - if (end !== '') { - return `${start} ` + '-' + ` ${end}` - } - else { - return '自定义起始时间' - } - }, [end]) - - useEffect(() => { - setSearchField(searchField) - }, [searchField]) - // 选择时间item - const handSelect = (it) => { - TimeList.map((item) => { - if (item.id == it.id) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - setTimeList([...TimeList]) - pageNum.current.size = 10 - setSearchField({ ...searchField, start_time: it.start_time, end_time: it.end_time, size: 10 }) - // setSearchField({ ...searchField, size: 10 }) - setEnd('') - } - - // 重置 - const handReset = () => { - TimeList.map((item) => { - if (item.id == 1) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - setTimeList([...TimeList]) - pageNum.current.size = 10 - setSearchField({ - ...searchField, - start_time: `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).subtract(14, 'day').format('YYYY-MM-DD')} 00:00:00`, - end_time: `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).add(1, 'day').format('YYYY-MM-DD')} 00:00:00`, - size: 10, - }) - setStart(myDate.toLocaleDateString()) - setEnd('') - } - return ( - <> - - - { setSelectPopup(true) }}> - - 筛选 - - - - - 时间默认14天内 - 金额汇总:{formatPriceDiv(orderData?.summary?.receipt_amount)} - - - - {orderData?.list?.map((item, index) => { - return ( - - - - ) - })} - - - - 新建收款 - - - { setSelectPopup(false) }}> - - - { - TimeList.map((item, index) => { - return ( - handSelect(item)} className={classnames((item.checked && timeArea == '自定义起始时间') ? styles.activetimeOne : styles.timeOne)} key={index}>{item.name} - ) - }) - } - - { setShowTime(true) }}>{timeArea} - - { - timeArea == '自定义起始时间' - && - } - - {/* { - timeArea == '自定义起始时间' && - } */} - - - - - - - - - handTime(e)} - > - - ) -} -export default NewCollection diff --git a/src/pages/order/components/NavBar/index.module.scss b/src/pages/order/components/NavBar/index.module.scss deleted file mode 100644 index 8cafbeb..0000000 --- a/src/pages/order/components/NavBar/index.module.scss +++ /dev/null @@ -1,38 +0,0 @@ -.navBarContainer { - overflow: hidden; - background-color: #fff; - height: auto; - flex-shrink: 0; -} -.navBar { - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - width: 100%; - padding: 0 24px; - box-sizing: border-box; - .left_view { - flex: 2; - } - .title { - flex: 5; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - font-size: 36px; - font-weight: 550; - color: #000; - } - .right_view { - flex: 2; - } -} -.back { - display: flex; - align-items: center; - .iconName { - font-size: 28px; - } -} diff --git a/src/pages/order/components/NavBar/index.tsx b/src/pages/order/components/NavBar/index.tsx deleted file mode 100644 index 15c63d6..0000000 --- a/src/pages/order/components/NavBar/index.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useReady } from '@tarojs/taro' -import { useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' - -interface NavBarPropsType { - children?: React.ReactNode - hasLeft?: boolean - leftSlot?: React.ReactNode - title?: string - onClickLeftIcon?: () => void -} -const NavBar = (props: NavBarPropsType) => { - const { children, hasLeft = false, title = '', leftSlot, onClickLeftIcon } = props - const handleClickLeftIcon = () => { - onClickLeftIcon?.() - } - const menuButtonRect = useRef(null) - const systemInfo = useRef(null) - const navBarExtendHeight = useRef(0) - const rpxToPx = useRef(0) - const [, setForceUpdate] = useState({}) - const [height, setHeight] = useState(0) - // 处理布局 - const handleLayout = () => { - const { statusBarHeight, system } = systemInfo.current! - const ios = !!(system.toLowerCase().search('ios') + 1) - if (ios) { - navBarExtendHeight.current = 4 // 下方扩展4像素高度 防止下方边距太小 - } - else { - navBarExtendHeight.current = 0 - } - const { top, height: menuHeight } = menuButtonRect.current! - const height = menuHeight + (top - statusBarHeight!) * 2 + statusBarHeight! // 整个navBar的高度 - console.log('height', height) - setHeight(height) - } - useEffect(() => { - systemInfo.current = Taro.getSystemInfoSync() - menuButtonRect.current = Taro.getMenuButtonBoundingClientRect() - rpxToPx.current = systemInfo.current.screenWidth / 750 - setForceUpdate({}) - handleLayout() - }, []) - - const menuHeight = useMemo(() => { - return menuButtonRect.current?.height - }, [menuButtonRect.current]) - - const menuTop = useMemo(() => { - return menuButtonRect.current?.top - }, [menuButtonRect.current]) - - return - - - {hasLeft && leftSlot - ? leftSlot - : - - 返回 - - } - - - { title || children } - - - - - -} -export default NavBar diff --git a/src/pages/order/components/PayPopup/index.module.scss b/src/pages/order/components/PayPopup/index.module.scss deleted file mode 100644 index d983f3f..0000000 --- a/src/pages/order/components/PayPopup/index.module.scss +++ /dev/null @@ -1,189 +0,0 @@ -.popupBox { - position: relative; - z-index: 99; - background: #f7f7f7; - bottom: 0; - - .contBox { - width: 100%; - // width: 670px; - padding-bottom: 30px; - // height: 739px; - background: #FFFFFF; - margin-top: 32px; - // margin-left: 40px; - overflow: hidden; - - .topMoney { - font-size: 48px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #337FFF; - width: 100%; - text-align: center; - margin-bottom: 60px; - } - - .itemMoney { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 32px; - - .leftFont { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - margin-left: 40px; - } - - .rightFont { - margin-right: 40px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - - .line { - margin-right: 40px; - // width: 590px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-left: 40px; - margin-bottom: 32px; - } - - .itemBox { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 64px; - - .leftItem { - margin-left: 40px; - display: flex; - align-items: center; - - .leftCrile { - display: flex; - align-items: center; - justify-content: center; - width: 56px; - height: 56px; - border-radius: 50%; - background: #4a7fff; - - .lujing { - color: #FFFFFF; - font-size: 35px; - } - } - - .rightLeft { - margin-left: 30px; - - - .title { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .nums { - font-size: 22px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - } - - .checkYuan { - width: 40px; - height: 40px; - border: 2px solid #D5D5D5; - margin-right: 40px; - border-radius: 50%; - display: flex; - justify-content: center; - align-items: center; - - .gou { - font-size: 20px; - color: #FFFFFF; - } - - } - - .activeChecked { - background: #337fff; - width: 40px; - height: 40px; - border: 2px solid #337fff; - margin-right: 40px; - border-radius: 50%; - display: flex; - justify-content: center; - align-items: center; - - .gou { - font-size: 20px; - color: #FFFFFF; - } - } - - .chakanquanbukehu { - margin-right: 40px; - color: #000000; - font-size: 50px; - } - } - - - } - - - -} - -.sure { - // margin-top: 35px; - margin-left: 40px; - margin-right: 40px; - // width: 670px; - height: 80px; - background: #337FFF; - border-radius: 44px; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #FFFFFF; - text-align: center; - line-height: 80px; -} - -.pic { - margin-left: 24px; - margin-right: 24px; - // width: 702px; - height: 1500px; - border-radius: 16px; - border: 1px solid #f7f7f7; -} - -.safeBox { - height: 200px; -} - -.scrollStyle { - height: 900px; -} - -.scroStyle { - height: 900px; -} \ No newline at end of file diff --git a/src/pages/order/components/PayPopup/index.tsx b/src/pages/order/components/PayPopup/index.tsx deleted file mode 100644 index 83d7fa7..0000000 --- a/src/pages/order/components/PayPopup/index.tsx +++ /dev/null @@ -1,185 +0,0 @@ - -import { Image, ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import BottomBtns from '@/components/BottomBtns' -import { formatImgUrl, formatPriceDiv } from '@/common/format' -import Popup from '@/components/popup' -import useCheckAuthorize from '@/use/useCheckAuthorize' -import { alert } from '@/common/common' -import IconFont from '@/components/iconfont/iconfont' - -interface Props { - showPopup: true | false - popupClose?: () => void - obj: { - wait_pay_amount?: number | string - actual_amount?: number | string - total_sale_price?: number | string - should_collect_order_id?: number | string - pre_collect_order_id?: number | string - status?: number | string - } - showSide?: boolean - list?: any[] - clickItem?: (any) => void - handsurePay?: (any) => void - title: string - picUrl?: string -} -const PayPopup = (props: Props) => { - const { - showSide = true, - showPopup = false, - popupClose, - obj = { - wait_pay_amount: '', - actual_amount: '', - total_sale_price: '', - }, - clickItem, - handsurePay, - list = [], - title = '待支付款项', - picUrl = '', - } = props - - const fileData = useRef({ - filePath: '', - base64: '', - }) - - // 预览图片 - const showImage = () => { - const time = new Date().valueOf() - const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(picUrl) || [] - const filePath = `${Taro.env.USER_DATA_PATH}/img${time}.${format}` - fileData.current.filePath = filePath - fileData.current.base64 = bodyData - const save = Taro.getFileSystemManager() - save.writeFile({ - filePath: fileData.current.filePath, - data: fileData.current.base64, - encoding: 'base64', - }) - Taro.previewImage({ - current: fileData.current.filePath, // 当前显示 - urls: [fileData.current.filePath], // 需要预览的图片http链接列表 - }) - } - - // 检查是否开启保存图片权限 - const { check } = useCheckAuthorize({ scope: 'scope.writePhotosAlbum', msg: '您没授权,无法保存图片' }) - - // 保存图片 - const saveImage = () => { - const time = new Date().valueOf() - const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(picUrl) || [] - const filePath = `${Taro.env.USER_DATA_PATH}/img${time}.${format}` - fileData.current.filePath = filePath - fileData.current.base64 = bodyData - const save = Taro.getFileSystemManager() - save.writeFile({ - filePath: fileData.current.filePath, - data: fileData.current.base64, - encoding: 'base64', - }) - alert.loading('正在保存图片') - Taro.saveImageToPhotosAlbum({ - filePath: fileData.current.filePath, - success() { - alert.success('图片保存成功') - }, - fail(err) { - console.log('err::', err) - }, - }) - } - const saveImageCheck = async() => { - const res = await check() - res && saveImage() - } - return ( - - popupClose?.()}> - - { - showSide && - - ¥{formatPriceDiv(obj.wait_pay_amount)} - - - - 订单金额 - - - ¥{formatPriceDiv(obj.wait_pay_amount)} - - - - - 已付金额 - - - ¥{formatPriceDiv(obj.actual_amount)} - - - - { - list.map((item, index) => { - return ( - clickItem?.(item)}> - - - - - - {item.name} - { - item.fonts && {item.fonts}{ - item.money !== '' ? '¥' : '' - }{item.money} - } - - - { - item.name !== '扫码支付' && item.name !== '线下汇款' - && - - - } - { - (item.name === '扫码支付' || item.name === '线下汇款') - && - } - - ) - }) - } - - } - { - showSide && handsurePay?.(props?.obj)}>确认交易 - } - { - !showSide - && - - showImage()}> - - - } - { - !showSide && saveImageCheck()}>保存图片 - } - - - - - ) -} -export default memo(PayPopup) diff --git a/src/pages/order/components/itemList/index.module.scss b/src/pages/order/components/itemList/index.module.scss deleted file mode 100644 index 8a9f373..0000000 --- a/src/pages/order/components/itemList/index.module.scss +++ /dev/null @@ -1,244 +0,0 @@ -.itemBox { - margin-top: 20px; - overflow: hidden; - margin-right: 24px; - // height: 560px; - padding-bottom: 20px; - background: #ffffff; - border-radius: 16px; - margin-left: 24px; - - .topItem { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 24px; - - .orderNo { - font-size: 28px; - - font-weight: 500; - color: #000000; - margin-left: 32px; - } - - .status { - margin-right: 32px; - font-size: 28px; - - font-weight: 500; - color: #0d7cff; - } - } - .flexBox { - display: flex; - align-items: center; - justify-content: space-between; - .pussName { - margin-left: 32px; - font-size: 28px; - font-weight: 500; - color: #000000; - margin-right: 10px; - } - .platform_name { - background: #ecf2ff; - border-radius: 6px; - font-size: 20px; - border: 0; - text-align: center; - color: #007aff; - padding: 4px 10px; - } - .editFont { - margin-right: 32px; - width: 84px; - height: 32px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 22px; - text-align: center; - line-height: 32px; - font-weight: 400; - color: #337fff; - } - } - - .line { - margin-left: 32px; - margin-right: 32px; - height: 1px; - background: #e7e7e7; - margin-top: 16px; - margin-bottom: 16px; - } - - .contBox { - // padding-right: 32px; - // width: 100%; - // width: 638rpx; - margin-left: 32px; - display: flex; - justify-content: space-between; - - .leftCont { - // min-width: 24%; - width: 134px; - height: 134px; - border-radius: 8px; - position: relative; - - .leftContNums { - width: 134px; - height: 39px; - background: #000000; - border-radius: 0px 0px 8px 8px; - opacity: 0.5; - position: absolute; - bottom: 0; - font-size: 20px; - - font-weight: 400; - color: #ffffff; - text-align: center; - line-height: 39px; - } - } - - .rightCont { - min-width: 76%; - margin-left: 24px; - - .rightTop { - display: flex; - align-items: center; - justify-content: space-between; - min-width: 76%; - // width: 480px; - margin-bottom: 12px; - - .productBox { - display: flex; - align-items: center; - - .productName { - max-width: 285px; - height: 34px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-right: 8px; - font-size: 28px; - - font-weight: 400; - color: #000000; - } - - .productMode { - width: 60px; - height: 28px; - background: #337fff; - border-radius: 8px; - font-size: 20px; - - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 28px; - } - } - - .shipMode { - margin-right: 60px; - font-size: 28px; - - font-weight: 400; - color: #000000; - } - } - - .colorsBox { - padding-right: 60px; - display: flex; - align-items: center; - // width: 480px; - // margin-right: 32px; - margin-bottom: 8px; - - .colorNameOne { - flex: 1; - font-size: 24px; - - font-weight: 400; - color: #000000; - width: 133px; - height: 30px; - text-align: left; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .colorName { - flex: 1; - font-size: 24px; - - font-weight: 400; - color: #000000; - text-align: center; - } - - .colorNameTwo { - flex: 1; - font-size: 24px; - - font-weight: 400; - color: #000000; - text-align: right; - } - } - } - } - - .lineOne { - margin-right: 32px; - height: 1px; - background: #e7e7e7; - margin-left: 32px; - margin-top: 16px; - } - - .bottomMsg { - margin-top: 16px; - display: flex; - align-items: center; - justify-content: space-between; - - .msgLeft { - margin-left: 32px; - font-size: 24px; - font-weight: 400; - color: #a1a1a1; - } - - .msgRight { - margin-right: 32px; - font-size: 24px; - - font-weight: 400; - color: #a1a1a1; - } - - .msgRightOne { - margin-right: 32px; - font-size: 28px; - - font-weight: 500; - color: #f64861; - } - } - - .bottomBox { - margin-top: 16px; - } -} diff --git a/src/pages/order/components/itemList/index.tsx b/src/pages/order/components/itemList/index.tsx deleted file mode 100644 index 7334ee1..0000000 --- a/src/pages/order/components/itemList/index.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import BottomBtns from '@/components/BottomBtns' -import { formatPriceDiv } from '@/common/format' -import LabAndImg from '@/components/LabAndImg' -import Tag from '@/components/tag' - -interface propsObj { - obj: any - cancle?: (arg: any, obj: any) => void - nextBuy?: (arg: any, obj: any) => void - toPay?: (arg: any, obj: any) => void -} -const ItemList = (props: propsObj) => { - const { obj } = props - const navTo = (e) => { - e?.stopPropagation() - Taro.navigateTo({ - url: `/pages/orderDetails/index?id=${obj?.id}`, - }) - } - - const totalMoney = useMemo(() => { - if (obj.status == 0 || obj.status == 1 || obj.status == 2) { - return obj?.estimate_amount - } - else { - return obj?.bill_total_sale_price - } - }, [obj]) - - // 待接单、配布中、已配布状态时,叫预估金额,其他状态叫合计金额。 - const monyFont = useMemo(() => { - if (obj?.status === 0 || obj?.status === 1) { - return '预估金额' - } - else { - return '合计金额' - } - }, [obj]) - - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - - return ( - - - 单号:{obj?.order_no} - {obj?.status_name} - - - - {obj?.purchaser_name} - { - (obj?.platform_source_name && obj?.platform_source !== 1) - && - { obj?.platform_source_name } - - } - - { - obj?.is_modify && 已修改 - } - - - - - - - 颜色 ({obj?.total_colors}) - - - - - - - {obj?.product_list[0]?.code} {obj?.product_list[0]?.name} - {obj?.sale_mode === 0 ? '大货' : obj?.sale_mode === 1 ? '剪版' : '散剪'} - - {obj?.shipment_mode_name} - - - {obj?.product_list[0]?.product_colors[0]?.code} {obj?.product_list[0]?.product_colors[0]?.name} - x{obj?.sale_mode === 0 ? obj?.product_list[0]?.product_colors[0]?.roll : obj?.product_list[0]?.product_colors[0]?.length / 100} {obj?.sale_mode === 0 ? '条' : 'm'} - ¥ {obj?.product_list[0]?.product_colors[0]?.sale_price / 100}/{obj?.sale_mode == 1 ? 'm' : 'kg'} - - { - obj?.product_list[0]?.product_colors?.length > 1 && <> - - {obj?.product_list[0]?.product_colors[1]?.code} {obj?.product_list[0]?.product_colors[1]?.name} - x{obj?.sale_mode === 0 ? obj?.product_list[0]?.product_colors[1]?.roll : obj?.product_list[0]?.product_colors[1]?.length / 100} {obj?.sale_mode === 0 ? '条' : 'm'} - ¥ {obj?.product_list[0]?.product_colors[1]?.sale_price / 100}/{obj?.sale_mode == 1 ? 'm' : 'kg'} - - - } - - - - - {obj?.total_fabrics} 种面料,{obj?.total_colors} 种颜色,共 {obj?.sale_mode === 0 ? obj?.total_number : obj?.total_number / 100} {obj?.sale_mode === 0 ? '条' : 'm'} - {obj.status != 5 && ¥{formatPriceDiv(totalMoney)}} - - - {/* { - obj.status != 5 && - {monyFont} - ¥{formatPriceDiv(totalMoney)} - - } */} - - props?.cancle?.(e, obj)} - nextBuy={e => props?.nextBuy?.(e, obj)} - toPay={e => props?.toPay?.(e, obj)} - > - - - ) -} -export default memo(ItemList) diff --git a/src/pages/order/components/offlinePay/index.module.scss b/src/pages/order/components/offlinePay/index.module.scss deleted file mode 100644 index ae7cf38..0000000 --- a/src/pages/order/components/offlinePay/index.module.scss +++ /dev/null @@ -1,94 +0,0 @@ -$top: 170px; - -.offlinePay_main { - - - .offlinePay_con { - padding: 20px; - background-color: #fff; - border-radius: 20px; - - .miconfont_title { - transform: rotate(-180deg); - position: absolute; - left: 20px; - top: 27px; - font-size: 37px; - color: $color_font_three; - z-index: 99; - } - } - - .title { - font-size: $font_size_big; - color: #000000; - text-align: center; - font-weight: 700; - position: relative; - - } - - .offlinePay_list { - border-radius: 10px; - padding: 60px 0; - - .flexBox { - - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 56px; - .title { - margin-left: 48px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .leftFlex { - margin-right: 48px; - display: flex; - align-items: center; - - .btn { - margin-left: 16px; - width: 65px; - height: 32px; - border-radius: 8px; - border: 1px solid #337FFF; - font-size: 24px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #337FFF; - text-align: center; - line-height: 32px; - } - } - - } - - .offlinePay_con_text { - font-size: $font_size; - font-weight: 700; - } - } - - .btns { - background: #007aff; - border-radius: 40px; - width: 668px; - height: 82px; - text-align: center; - line-height: 80px; - width: 100%; - color: #fff; - font-size: 32px; - margin-top: 30px; - } - - .kongBox { - height: calc($customTabBarHeight + env(safe-area-inset-bottom)); - - } -} \ No newline at end of file diff --git a/src/pages/order/components/offlinePay/index.tsx b/src/pages/order/components/offlinePay/index.tsx deleted file mode 100644 index d6f1b09..0000000 --- a/src/pages/order/components/offlinePay/index.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo } from 'react' -import classnames from 'classnames' -import AmountShow from '../amountShow' -import styles from './index.module.scss' -import MCheckbox from '@/components/checkbox' -import Popup from '@/components/popup' -import SearchInput from '@/components/searchInput' - -interface Param { - show?: true | false - onClose?: () => void - offlineInfo?: { - account_name: string - bank_of_deposit: string - transfer_remittance_account: string - } - showKong?: true | false -} -const OfflinePay = ({ show = true, onClose, offlineInfo, showKong = true }: Param) => { - // 复制功能 - const clipboardData = () => { - Taro.setClipboardData({ - data: `开户名称:${offlineInfo?.account_name};\n\r 开户银行:${offlineInfo?.bank_of_deposit};\n\r 转账汇款账号:${offlineInfo?.transfer_remittance_account};`, - success(res) { - Taro.showToast({ - icon: 'none', - title: '复制成功', - }) - }, - }) - } - // //复制功能 - const copy = (index) => { - let res: any = '' - if (index === 1) { - res = offlineInfo?.account_name - } - else if (index === 2) { - res = offlineInfo?.bank_of_deposit - } - else if (index === 3) { - res = offlineInfo?.transfer_remittance_account - } - Taro.setClipboardData({ - data: res || '', - success(res) { - Taro.showToast({ - icon: 'none', - title: '复制成功', - }) - }, - }) - } - return ( - - - - - 线下汇款 - - - 开户名称 - - {offlineInfo?.account_name} - { copy(1) }}>复制 - - - - 开户银行 - - {offlineInfo?.bank_of_deposit} - { copy(2) }}>复制 - - - - 转账汇款账号 - - {offlineInfo?.transfer_remittance_account} - { copy(3) }}>复制 - - - {/* - {offlineInfo?.bank_of_deposit} - - - {offlineInfo?.transfer_remittance_account} - */} - - 复制信息 - - { - showKong && - } - - - - - ) -} -export default memo(OfflinePay) diff --git a/src/pages/order/components/orderStatusList/index.module.scss b/src/pages/order/components/orderStatusList/index.module.scss deleted file mode 100644 index 57d864e..0000000 --- a/src/pages/order/components/orderStatusList/index.module.scss +++ /dev/null @@ -1,18 +0,0 @@ -.order_status_list{ - font-size: $font_size; - color: #000; - // margin-top: 20px; - .order_status_item{ - padding: 20px; - box-sizing: border-box; - } - .selected{ - font-weight: 700; - color: #337FFF; - border-bottom: 4px solid #337FFF; - } - .order_list_scroll{ - white-space: nowrap; - display: flex; - } -} \ No newline at end of file diff --git a/src/pages/order/components/orderStatusList/index.tsx b/src/pages/order/components/orderStatusList/index.tsx deleted file mode 100644 index e5da965..0000000 --- a/src/pages/order/components/orderStatusList/index.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { ScrollView, View } from '@tarojs/components' -import { memo, useEffect, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -interface Param { - list: { id: number; name: string }[] - defaultId?: number | null - onSelect?: (val: number) => void -} -const OrderStatusList = ({ list = [], defaultId = null, onSelect }: Param) => { - const [selectInfo, setSelectInfo] = useState({ - selected: -1, // 当前选中的id - tabId: '', // 需要滚动到的id - }) - - const clickEvent = ({ item, index }: { item: any; index: number }) => { - const num = index > 0 ? index - 1 : 0 - setSelectInfo(e => ({ ...e, tabId: list[num].id.toString(), selected: item.id })) - onSelect?.(item.id) - } - useEffect(() => { - if (typeof defaultId === 'number' && defaultId >= 0) { - console.log('defaultId:::', defaultId) - const index = list?.findIndex((item) => { - return item.id == defaultId - }) - if (index !== -1) { - const num = index > 0 ? index - 1 : 0 - setSelectInfo(e => ({ ...e, tabId: list[num].id.toString() })) - } - } - setSelectInfo(e => ({ ...e, selected: defaultId || -1 })) - }, [defaultId]) - return ( - - - - {list.map((item, index) => { - return ( - clickEvent({ item, index })} - className={classnames(styles.order_status_item, selectInfo.selected == item.id && styles.selected)} - > - {item.name} - - ) - })} - - - - ) -} -export default memo(OrderStatusList) diff --git a/src/pages/order/index.config.ts b/src/pages/order/index.config.ts deleted file mode 100644 index a2a8633..0000000 --- a/src/pages/order/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '订单', - navigationStyle: 'custom', -} diff --git a/src/pages/order/index.module.scss b/src/pages/order/index.module.scss deleted file mode 100644 index 7dbb169..0000000 --- a/src/pages/order/index.module.scss +++ /dev/null @@ -1,279 +0,0 @@ -.orderContainer { - overflow: hidden; - height: 100%; -} -.flexBox { - display: flex; - align-items: center; - justify-content: flex-end; - margin-left: 24px; -} -.searchBar { - background: #ffffff; - padding: 16px 24px; - position: sticky; - top: 0; - z-index: 99; -} -.activeshaixuan { - color: #000; - font-size: 35px; - margin-right: 10px; -} - -.shaixuan { - font-size: 28px; - font-weight: 400; - color: #000000; -} - -.activeshai { - font-size: 28px; - font-weight: 400; - color: #0d7cff; -} - -.popupBox { - // padding-bottom: calc($customTabBarHeight + env(safe-area-inset-bottom)); - // padding-bottom: env(safe-area-inset-bottom); - - .topBox { - display: flex; - padding-left: 48px; - - .leftTop { - .lefttopTitle { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-bottom: 24px; - } - - .lefttopSelectBox { - display: flex; - align-items: center; - width: 319px; - height: 68px; - background: #f6f6f6; - border-radius: 8px; - // opacity: 0.4; - justify-content: space-between; - margin-right: 16px; - - .lefttopSelectNameactive { - font-size: 28px; - font-weight: 400; - color: #8b8b8b; - margin-left: 24px; - } - - .lefttopSelectName { - font-size: 28px; - font-weight: 400; - color: #000000; - margin-left: 24px; - } - - .icon_more { - margin-right: 24px; - font-size: 30px; - } - } - - .activelefttopSelectBox { - width: 319px; - height: 68px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - border: 1px solid #337fff; - display: flex; - align-items: center; - justify-content: space-between; - margin-right: 16px; - - .lefttopSelectName { - font-size: 28px; - font-weight: 400; - color: #337fff; - margin-left: 24px; - } - - .icon_more { - margin-right: 24px; - font-size: 30px; - color: #337fff; - } - } - } - } - - .secondBox { - margin-top: 40px; - padding-left: 48px; - - .secondTopfont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .inputBox { - width: 654px; - height: 68px; - background: #f6f6f6; - border-radius: 8px; - // opacity: 0.4; - margin-top: 24px; - display: flex; - justify-content: space-between; - align-items: center; - - .orderInput { - margin-left: 24px; - width: 400px; - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .saomiao { - margin-right: 24px; - font-size: 40px; - color: #000; - } - } - } - - .thirdBox { - margin-top: 30px; - padding-left: 48px; - - .thirdTopfont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .flexModebox { - margin-top: 24px; - display: flex; - - .activemodeBox { - margin-right: 16px; - width: 152px; - height: 68px; - background: rgba(51, 127, 255, 0.1); - border-radius: 8px; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 68px; - border: 1px solid #337fff; - box-sizing: border-box; - } - - .modeBox { - margin-right: 16px; - width: 152px; - height: 68px; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 68px; - box-sizing: border-box; - border: 1px solid transparent; - } - } - } - - .bottomBox { - // width: 100%; - // width: 750px; - height: 160px; - background: #ffffff; - // position: fixed; - // bottom: calc($customTabBarHeight + env(safe-area-inset-bottom)); - z-index: 99; - display: flex; - padding-top: 16px; - align-items: center; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087eff; - font-size: 28px; - font-weight: 500; - color: #337fff; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 32px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - - // .activeButton { - // margin-right: 32px; - // width: 311px; - // height: 80px; - // background: #337fff; - // border-radius: 44px; - // font-size: 32px; - // font-weight: 500; - // color: #fff; - // text-align: center; - // line-height: 80px; - // } - } -} - -.order_list { - flex: 1 1 auto; - overflow: hidden; - // height: calc(100vh - $customTabBarHeight + env(safe-area-inset-bottom) - 230px); - background: #f7f7f7; -} -.afterSaleIcon { - position: relative; - width: 68px; - height: 68px; - background: #ffffff; - box-shadow: 0px 0px 12px 0px rgba(104, 180, 255, 0.35); - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - border-radius: 50%; - .iconName { - position: absolute; - top: -10px; - right: -30px; - width: 56px; - height: 30px; - background: #007aff; - border-radius: 10px 0px 10px 0px; - font-size: 18px; - font-weight: 400; - text-align: center; - line-height: 30px; - color: #ffffff; - } -} diff --git a/src/pages/order/index.tsx b/src/pages/order/index.tsx deleted file mode 100644 index 106770b..0000000 --- a/src/pages/order/index.tsx +++ /dev/null @@ -1,729 +0,0 @@ -import { Button, Input, View } from '@tarojs/components' -import Taro, { faceVerifyForPay, useDidShow } from '@tarojs/taro' -import type { Dispatch } from 'redux' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import { useDispatch } from 'react-redux' -import OrderStatusList from './components/orderStatusList' -import styles from './index.module.scss' -import ItemList from './components/itemList' -import OfflinePay from './components/offlinePay' -import PayPopup from './components/PayPopup' -import NavBar from './components/NavBar' -import { - GetPayCode, MpEnumSaleOrderStatus, - MpSaleOrderCancel, - MpShoppingCartProductColorList, - OrderListApi, - OrderPaymentOrderPaymentMethodInfo, - OrderPaymentOrderPaymentSubmission, - OrderPaymentPreCollectOrderOrderPaymentMethodInfo, - OrderPaymentPreCollectOrderOrderPaymentSubmission, -} from '@/api/order' -import Search from '@/components/search' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import Popup from '@/components/popup' -import InfiniteScroll from '@/components/infiniteScroll' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import { PAY_H5_CODE_URL } from '@/common/constant' -import { goLink, paywayList } from '@/common/common' -import { useSelector } from '@/reducers/hooks' -import type { TabBarAction } from '@/reducers/tabBar' -import { TabBarIndex } from '@/reducers/tabBar' -import { TabBarType } from '@/constants/tabbar' -import { useCheckTabBarSelectStatus } from '@/use/useCommon' -import NormalButton from '@/components/normalButton' -import { EnumSaleMode } from '@/common/Enumerate' - -interface filterObj { - purchaser_id?: string | number - clientName?: string - sale_user_id?: string | number - saleuserName?: string - order_no?: string | undefined - sale_mode?: Number | undefined - shipment_mode?: Number | undefined -} -const Order = () => { - // 页码和页数 - const [searchField, setSearchField] = useState<{ status: number | unknown; page: number; size: number; order_no: string }>({ - status: -1, - page: 1, - size: 10, - order_no: '', - }) - - // 获取订单列表 - const { fetchData: listFetchData, state: orderState } = OrderListApi() - const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - // 筛选参数 - const [searchObj, setsearchObj] = useState({ - purchaser_id: '', - clientName: '', - sale_user_id: '', - saleuserName: '', - sale_mode: undefined, - shipment_mode: undefined, - }) - // 筛选内容展示 - const [showPopup, setshowPopup] = useState(false) - // 上拉加载数据 - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getOrderList = async() => { - const res = await listFetchData({ - ...getFilterData(searchField), - ...getFilterData(searchObj), - }) - setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setshowPopup(false) - setRefresherTriggeredStatus(() => false) - } - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - // 数据加载状态 - const statusMore = useMemo(() => { - console.log({ list: orderData.list, total: orderData.total, status: orderState.loading }, '{ list: orderData.list, total: orderData.total, status: orderState.loading }') - return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading! }) - }, [orderData, orderState]) - - const getScrolltolower = useCallback(() => { - if (orderData.list.length < orderData.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [orderData]) - - // //获取订单状态 - const { fetchData: orderStatusListFetchData } = MpEnumSaleOrderStatus() - const [statusList, setStatusList] = useState([{ id: -1, name: '全部' }]) - const getOrderStatusList = async() => { - const res = await orderStatusListFetchData() - setStatusList(e => [...e, ...res.data.list]) - } - - // 监听筛选条件变化 - useEffect(() => { - if (searchField.status != null) { getOrderList() } - }, [searchField]) - - // //状态改变 - const changeStatus = useCallback((e) => { - pageNum.current.page = 1 - setSearchField(value => ({ ...value, status: e, size: 10 })) - setOrderData(() => ({ list: [], total: 0 })) - }, []) - - // 输入了搜索关键字 - const getSearchData = useCallback((e) => { - pageNum.current.page = 1 - setOrderData(() => ({ list: [], total: 0 })) - setSearchField(val => ({ ...val, order_no: e, size: 10 })) - }, []) - const showSelctPopup = () => { - setshowPopup(true) - } - // 关闭筛选内容展示 - const closePopup = () => { - setshowPopup(false) - } - - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - - useDidShow(() => { - // 获取选择的客户 - console.log(currPage.data, '8888') - - setsearchObj(e => ({ - ...e, - purchaser_id: currPage.data?.clientId ? currPage.data?.clientId : '', - clientName: currPage.data?.clientName ? currPage.data?.clientName : '', - sale_user_id: currPage.data?.saleuserId ? currPage.data?.saleuserId : '', - saleuserName: currPage.data?.saleuserName ? currPage.data?.saleuserName : '', - })) - }) - - // 跳转选择客户 - const navTo = (index) => { - if (index === 1) { - Taro.navigateTo({ - url: `/pages/customerPage/index?clientId=${searchObj?.purchaser_id}`, - }) - } - else { - Taro.navigateTo({ - url: `/pages/saleuserPage/index?saleuserId=${searchObj?.sale_user_id}`, - }) - } - } - - // 订单类型 - const [modeList, setModeList] = useState([{ id: -1, name: '不限' }, { id: 0, name: '大货' }, { id: 1, name: '剪版' }, { id: 2, name: '散剪' }]) - // 选择订单类型 - const handCheckMode = (item) => { - modeList.map((it) => { - if (it.id === item.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setModeList([...modeList]) - setsearchObj(e => ({ ...e, sale_mode: item.id })) - } - - /// 发货方式类型 - const [deliveryList, setdeliveryList] = useState([{ id: -1, name: '不限' }, { id: 1, name: '自提' }, { id: 2, name: '物流' }]) - // 选择发货方式类型 - const handCheckDelivery = (item) => { - deliveryList.map((it) => { - if (it.id === item.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setdeliveryList([...deliveryList]) - setsearchObj(e => ({ ...e, shipment_mode: item.id })) - } - // 是否不允许确认筛选 - const isDisabled = useMemo(() => { - if (searchObj.clientName !== '' - || searchObj.saleuserName !== '' - || searchObj.sale_mode !== undefined - || searchObj.shipment_mode !== undefined - ) { - return false - } - else { - return true - } - }, [searchObj]) - - // 数组重置 - const resetArr = (arr) => { - arr.map((it) => { - it.checked = false - return it - }) - return arr - } - // 确认筛选 - const handSure = async() => { - getOrderList() - } - // 重置 - const handReset = () => { - pageNum.current.page = 1 - setsearchObj({ - purchaser_id: '', - clientName: '', - sale_user_id: '', - saleuserName: '', - sale_mode: undefined, - shipment_mode: undefined, - }) - currPage.data.clientId = null - currPage.data.clientName = null - currPage.data.saleuserId = null - currPage.data.saleuserName = null - // setSearchField({ ...searchField, size: 10 }) - const arrOne = resetArr(modeList) - setModeList([...arrOne]) - const arrTwo = resetArr(deliveryList) - setdeliveryList([...arrTwo]) - } - // 扫描 - const handScan = () => { - Taro.scanCode({ - success(res) { - setSearchField(val => ({ ...val, order_no: res.result })) - }, - fail(res) { - console.log(res) - }, - }) - } - - useEffect(() => { - getOrderStatusList() - }, []) - - const { fetchData: cancelFetch } = MpSaleOrderCancel() - // 取消订单 - const cancle = async(e, item) => { - e.stopPropagation() - Taro.showModal({ - content: '确定要取消吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await cancelFetch({ id: item.id }) - if (res.msg === 'success') { - Taro.showToast({ - title: '取消成功', - }) - Taro.hideLoading() - getOrderList() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - }, - }) - } - // 再次购买 - const { fetchData: buyFetch } = MpShoppingCartProductColorList() - const nextBuy = async(e, item) => { - e.stopPropagation() - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const arr: any = [] - item.product_list.forEach((item) => { - item.product_colors.forEach((it) => { - arr.push({ - length: it.length, - roll: it.roll, - product_color_id: it.id, - }) - }) - }) - const query = { - purchaser_id: item.purchaser_id, - sale_mode: item.sale_mode, - color_list: arr, - } - const res = await buyFetch(query) - if (res.msg === 'success') { - Taro.hideLoading() - Taro.showToast({ - title: '加入购物车成功!', - duration: 2000, - }) - getOrderList() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - // 去支付逻辑 - const { fetchData: infoOneFetch } = OrderPaymentOrderPaymentMethodInfo() - const { fetchData: infoTwoFetch } = OrderPaymentPreCollectOrderOrderPaymentMethodInfo() - const [itemObj, setItemObj] = useState({}) - const [payList, setPayList] = useState(paywayList) - - // 显示支付 - const [showPay, setShowPay] = useState(false) - - // 显示线下汇款 - const [showOffline, setShowOffine] = useState(false) - - // 扫码支付 - const [showSide, setShowSide] = useState(true) - const [title, setTitle] = useState('') - const [picUrl, setPicUrl] = useState('') - const { fetchData: payFetch } = GetPayCode() - const handScanpay = async() => { - const list: any = [] - itemObj.product_list.forEach((item) => { - item.product_colors.forEach((it) => { - list.push({ - product_code: item.code, - product_name: item.name, - product_color_code: formatRemoveHashTag(it.code), - product_color_name: it.name, - num: it.roll.toString(), - weight: formatWeightDiv(it.actual_weight).toString(), - sale_price: (it.sale_price / 100).toString(), - total_price: - it.total_sale_price !== 0 - ? (it.total_sale_price / 100).toString() - : (it.estimate_amount / 100).toString(), - length: (it.length / 100).toString(), - weight_error: formatWeightDiv(it.weight_error).toString(), - }) - }) - }) - const query = { - list, - title: '面料销售电子确认单', - show_qrcode: true, - show_barcode: true, - order_type: itemObj.sale_mode_name, - shipment_mode: itemObj.shipment_mode_name, - company: itemObj.title_purchaser_name, - sale_user: itemObj.sale_user_name, - order_created_time: formatDateTime(itemObj.create_time), - order_no: itemObj.order_no, - target_user_name: itemObj.target_user_name, - target_address: itemObj.address_detail, - target_description: itemObj.remark, - pay_account: itemObj.transfer_remittance_account, - bank_account_name: itemObj.account_name, - bank_name: itemObj.bank_of_deposit, - pay_type: itemObj.settle_mode_name, - client: itemObj.purchaser_name, - phone: itemObj.target_user_phone, - order_total_length: (itemObj.total_number / 100).toString(), - order_total_price: ( - itemObj.bill_total_sale_price / 100 - ).toString(), - total_weight_error_discount: ( - itemObj.total_weight_error_discount / 100 - ).toString(), - order_total_num: itemObj.total_number.toString(), - qrcode: `${PAY_H5_CODE_URL}?key=${md5Key}`, - order_total_weight: (itemObj.total_weight / 1000).toString(), - estimate_amount: (itemObj.estimate_amount / 100).toString(), - total_sale_price: (itemObj.total_sale_price / 100).toString(), - actual_amount: (itemObj.actual_amount / 100).toString(), - wait_pay_amount: (itemObj.wait_pay_amount / 100).toString(), - order_total_weight_error: ( - itemObj.total_weight_error / 1000 - ).toString(), - show_sale_price: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_total_price: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_estimate_amount: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_total_sale_price: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_total_weight_error_discount: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_actual_amount: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_wait_pay_amount: itemObj?.sale_mode == 0 && itemObj?.is_display_price ? true : !!((itemObj?.sale_mode === 1 || itemObj?.sale_mode === 2)), - show_tips: true, - tips: `请核对本单后验收, 如发现质量问题,请于收到货之日起3天内与平台客服联系协商解决,逾期不作处理即表示购方默认对货物无异议;购方确认无任何问题方可裁剪/加工,一经裁剪,缩水等工艺,平台概不负责; - 看布购货,请先试缩水,并注意分缸裁布!如需撞色拼接,请先试色牢度。非质量问题,恕不退换,谢谢合作!`, - } - const res = await payFetch(query) - if (res.data) { - console.log(res.data.base64) - setShowSide(false) - setTitle('查看销售码单') - setPicUrl(res.data.base64) - } - } - // 选择支付方式 - const clickItem = (item) => { - if (item.name === '扫码支付') { handScanpay() } - if (item.name === '线下汇款') { setShowOffine(true) } - payList.map((it) => { - if (item.id === it.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setPayList([...payList]) - } - const toPay = async(e, item) => { - e.stopPropagation() - console.log('toPay', item) - - setItemObj(item) - if (item.status !== 10) { - const res = await infoOneFetch({ id: item.should_collect_order_id }) - setmd5Key(res.data.md5_key) - const filter = payList.filter((it) => { - // 1. 待发货、待收货、待自提、已收货 隐藏货到付款 账期 - // 2. 散剪、剪板 待付款状态 隐藏货到付款 账期 - if ([3, 8, 13, 9].includes(item.status) || ([7].includes(item.status) && [EnumSaleMode.BulkCut, EnumSaleMode.Plate].includes(item.sale_mode))) { - return ![5, 3].includes(it.id) - } - else { - return true - } - }) - filter.map((item) => { - if (item.id === 3) { - item.name = `${res.data.account_period}天账期` - item.fonts = `可用额度${formatPriceDiv( - res.data.account_period_credit_available_line, - ).toLocaleString()}` - } - if (item.id === 2) { - item.fonts = `可用额度${formatPriceDiv( - res.data.advance_deposit_balance, - ).toLocaleString()}` - } - return item - }) - setPayList([...filter]) - if (item.is_shipper_picks_up) { - const obj = filter.filter((item) => { - return item.id === 6 - }) - console.log(obj, '456456') - if (obj.length === 0) { - filter.unshift({ - id: 6, - iconfont: 'icon-huozhuziti', - color: '#ffffff', - name: '货主自提', - fonts: '', - money: '', - isCheck: false, - }) - setPayList([...filter]) - } - } - } - else { - const res = await infoTwoFetch({ id: item.pre_collect_order_id }) - setmd5Key(res.data.md5_key) - const arr: any = [] - arr.push( - { - id: 2, - iconfont: 'icon-yufukuan1', - name: '预存款', - fonts: `可用额度${formatPriceDiv( - res.data.advance_deposit_balance, - ).toLocaleString()}`, - money: '', - isCheck: false, - }, - { - iconfont: 'icon-yue', - name: '线下汇款', - }, - { - iconfont: 'icon-saomiao', - name: '扫码支付', - color: '#ffffff', - }, - - ) - if (item.is_shipper_picks_up) { - const obj = arr.filter((item) => { - return item.id === 6 - }) - if (obj.length === 0) { - arr.unshift({ - id: 6, - iconfont: 'icon-huozhuziti', - name: '货主自提', - color: '#ffffff', - fonts: '', - money: '', - isCheck: false, - }) - } - } - setPayList([...arr]) - } - setShowSide(true) - setTitle('待支付款项') - setShowPay(true) - } - const [md5Key, setmd5Key] = useState('') - // 确认交易 - const { fetchData: payOneFetch } = OrderPaymentOrderPaymentSubmission() - const { fetchData: payTwoFetch } = OrderPaymentPreCollectOrderOrderPaymentSubmission() - const handsurePay = (obj) => { - let arr: any = [] - // if (obj.status !== 10) { - arr = payList.filter((item) => { - return item.checked - }) - if (!arr.length) { - Taro.showToast({ - title: '请选择后再提交', - icon: 'error', - }) - return false - } - - Taro.showModal({ - content: '确定交易吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const restult = await (obj.status !== 10 ? payOneFetch({ id: Number(obj.should_collect_order_id), payment_method: Number(arr[0]?.id) }) : payTwoFetch({ id: Number(obj.pre_collect_order_id), payment_method: Number(arr[0]?.id) })) - if (restult?.msg === 'success') { - Taro.showToast({ - title: '交易成功', - }) - Taro.hideLoading() - setShowPay(false) - getOrderList() - } - else { - Taro.showToast({ - title: restult?.msg, - icon: 'error', - }) - } - } - }, - }) - - // } - } - const handleAfterSale = () => { - goLink('/pages/refundPage/index') - } - - useCheckTabBarSelectStatus(TabBarIndex.ORDER) - - return ( - - - - 售后 - - } title="订单" - /> - - handScan()} defaultValue={searchField.order_no} showScan placeholder="搜索商品/名称/颜色/订单号" showBtn={false} changeOnSearch={getSearchData}> - showSelctPopup()}> - - 筛选 - - - - - - - - - {orderData?.list?.map((item, index) => { - return ( - - cancle(e, item)} - nextBuy={(e, item) => nextBuy(e, item)} - toPay={(e, item) => toPay(e, item)} - > - - ) - })} - - {/* */} - - closePopup()}> - - - navTo(1)}> - 客户信息 - - {searchObj.clientName === '' ? '请选择客户' : searchObj.clientName} - - - - navTo(2)}> - 业务员 - - {searchObj.saleuserName === '' ? '请选择客户' : searchObj.saleuserName} - - - - - - 订单类型 - - {modeList.map((item, index) => { - return ( - { - handCheckMode(item) - }} - className={classnames(item.checked ? styles.activemodeBox : styles.modeBox)} - key={index} - > - {item.name} - - ) - })} - - - - 发货方式 - - {deliveryList.map((item, index) => { - return ( - { - handCheckDelivery(item) - }} - className={classnames(item.checked ? styles.activemodeBox : styles.modeBox)} - key={index} - > - {item.name} - - ) - })} - - - - - 重置 - - - 确认 - - - - - setShowPay(false)} - clickItem={item => clickItem(item)} - handsurePay={obj => handsurePay(obj)} - showSide={showSide} - title={title} - picUrl={picUrl} - > - setShowOffine(false)} offlineInfo={itemObj}> - - ) -} -export default Order diff --git a/src/pages/orderDetails/components/BottomApply/index.module.scss b/src/pages/orderDetails/components/BottomApply/index.module.scss deleted file mode 100644 index a04d88e..0000000 --- a/src/pages/orderDetails/components/BottomApply/index.module.scss +++ /dev/null @@ -1,9 +0,0 @@ -.title { - width: 112px; - height: 34px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: rgba(0, 0, 0, 0.8); - margin-bottom: 10px; -} \ No newline at end of file diff --git a/src/pages/orderDetails/components/BottomApply/index.tsx b/src/pages/orderDetails/components/BottomApply/index.tsx deleted file mode 100644 index 741d55a..0000000 --- a/src/pages/orderDetails/components/BottomApply/index.tsx +++ /dev/null @@ -1,317 +0,0 @@ -import { View } from '@tarojs/components' -import { memo, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -interface prosObj { - obj?: { - sale_mode?: Number - collect_status?: Number | string - status?: Number - payment_method?: Number - settle_mode?: Number | string - is_shipper_picks_up?: boolean - } - handApplyGoods?: () => void - handApplyMoney?: () => void - nextBuy?: (any) => void - handSureGoods?: (any) => void - handShowCodeList?: (any) => void - cancle?: (any) => void - handEdit?: () => void - goodsObj?: any - // handSureGoods?: () => void, -} -const BottomApply = (props: prosObj) => { - const { - obj = { - sale_mode: 0, - collect_status: '', - status: '', - payment_method: 0, - settle_mode: '', - is_shipper_picks_up: false, - }, - handApplyGoods, - handApplyMoney, - handSureGoods, - cancle, - handShowCodeList, - handEdit, - goodsObj = {}, - nextBuy, - // handSureGoods - } = props - - // 判断显示申请退货 - const showTuihuo = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status == 9 && obj.collect_status == 0 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 9 && obj.collect_status == 1 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 9 && obj.collect_status == 2 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 9 && obj.settle_mode == 3 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 2 && obj.status == 9 && goodsObj?.av_return_product?.length) - ) { - return true - } - else { return false } - }, [obj]) - // 判断显示申请退款 - const showTuikuan = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status == 2 && obj.collect_status == 1 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 7 && obj.collect_status == 2 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 7 && obj.collect_status == 3 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 0 && obj.status == 11 && (obj.collect_status == 1 || obj.collect_status == 2) && goodsObj?.av_return_product?.length) - // || (obj.sale_mode === 0 && obj.status == 3 && obj.collect_status == 0 && goodsObj?.av_return_product?.length && !obj.is_shipper_picks_up) - || (obj.sale_mode === 0 && obj.status == 3 && obj.collect_status == 2 && goodsObj?.av_return_product?.length && !obj.is_shipper_picks_up) - || (obj.sale_mode === 0 && obj.status == 3 && obj.collect_status == 1 && goodsObj?.av_return_product?.length && !obj.is_shipper_picks_up) - || (obj.sale_mode === 1 && obj.status == 0 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 1 && obj.status == 9 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 2 && obj.status == 0 && obj.collect_status == 1 && goodsObj?.av_return_product?.length) - || (obj.sale_mode === 2 && obj.status == 0 && obj.collect_status == 2 && goodsObj?.av_return_product?.length) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断显示再次购买 - const showBuy = useMemo(() => { - if ( - obj.sale_mode === 0 - || (obj.sale_mode === 1 && obj.status !== 10) - || (obj.sale_mode === 2 && obj.status !== 10) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断显示确认收货 - const showTake = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status == 8 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status == 8 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status == 8 && obj.collect_status == 2) - || (obj.sale_mode === 0 && obj.status == 8 && obj.settle_mode == 3) - || (obj.sale_mode === 1 && obj.status == 8) - || (obj.sale_mode === 2 && obj.status == 8) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断是否显示码单 - // 订单状态:待付款、待发货、待提货、待收货、已收货、已完成 - const showCodeList = useMemo(() => { - if (obj.status == 3 || obj.status == 8 || obj.status == 11 || obj.status == 9 || obj.status == 4) { - return true - } - else { return false } - }, [obj]) - - // 判断显示取消订单 - - const showCancel = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status === 0) - || (obj.sale_mode === 0 && obj.status === 1) - || (obj.sale_mode === 0 && obj.status === 2 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 7 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 11 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 11 && obj.settle_mode == 3) - || (obj.sale_mode === 0 && obj.status === 3 && obj.settle_mode == 3) - || (obj.sale_mode === 1 && obj.status === 10) - || (obj.sale_mode === 2 && obj.status === 10) - || (obj.sale_mode === 2 && obj.status === 0 && (obj.collect_status == 1 || obj.collect_status == 2)) - || (obj.sale_mode === 2 && obj.status === 0 && obj.collect_status == 0) - || (obj.sale_mode === 1 && obj.status === 10) - || (obj.sale_mode === 2 && obj.status === 10) - || (obj.sale_mode === 0 && obj.status === 13) - || (obj.collect_status == 0) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断显示去付款 - const canBuy = useMemo(() => { - if ( - (obj.sale_mode === 0 && obj.status === 7 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 7 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 7 && obj.settle_mode == 3) - || (obj.sale_mode === 0 && obj.status === 3 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 3 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 8 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 8 && obj.collect_status == 0) - || (obj.sale_mode === 0 && obj.status === 9 && obj.collect_status == 1) - || (obj.sale_mode === 0 && obj.status === 9 && obj.collect_status == 0) - || (obj.sale_mode === 2 && obj.status === 2) - || (obj.sale_mode === 2 && obj.status === 7) - || (obj.sale_mode === 1 && obj.status === 10) - || (obj.sale_mode === 1 && obj.status === 7) - || (obj.sale_mode === 2 && obj.status === 10) - ) { - return true - } - else { return false } - }, [obj]) - - // 判断是否显示修改订单 - const showEdit = useMemo(() => { - if (obj.status == 0 || obj.status == 1) { - return true - } - else { - return false - } - }, [obj]) - - const [btnList, setbtnList] = useState([]) - useMemo(() => { - const arr: any[] = [] - let nums = 0 - if (showCancel) { - nums = nums + 1 - arr.push({ - key: 'showCancel', - label: '取消订单', - bgKind: 1, - sort: 1, - }) - } - if (canBuy) { - nums = nums + 1 - arr.push({ - key: 'canBuy', - label: '去付款', - bgKind: 2, - sort: 20, - }) - } - if (showBuy) { - nums = nums + 1 - arr.push({ - key: 'showBuy', - label: '再次购买', - bgKind: 3, - sort: 10, - }) - } - if (showTake) { - nums = nums + 1 - arr.push({ - key: 'showTake', - label: '确认收货', - bgKind: 1, - sort: 9, - }) - } - if (showCodeList) { - nums = nums + 1 - arr.push({ - key: 'showCodeList', - label: '销售码单', - bgKind: 1, - sort: 12, - }) - } - if (showTuikuan) { - nums = nums + 1 - arr.push({ - key: 'showTuikuan', - label: '申请退款', - bgKind: 3, - sort: 3, - }) - } - if (showTuihuo) { - nums = nums + 1 - arr.push({ - key: 'showTuihuo', - label: '申请退货', - bgKind: 3, - sort: 2, - }) - } - if (showEdit) { - nums = nums + 1 - console.log('101010') - arr.push({ - key: 'showEdit', - label: '修改订单', - bgKind: 3, - sort: 9, - }) - } - const fiterArr = arr.sort((a, b) => a.sort - b.sort) - setbtnList([...fiterArr]) - return nums - }, [obj]) - - const submitBtns = (e, key) => { - if (key === 'showTuihuo') { - handApplyGoods?.() - } - if (key === 'showTuikuan') { - handApplyMoney?.() - } - if (key === 'showCodeList') { - handShowCodeList?.(e) - } - if (key === 'showTake') { - handSureGoods?.(e) - } - if (key === 'showCancel') { - cancle?.(e) - } - if (key === 'showBuy') { - nextBuy?.(e) - } - // if (key === 'canBuy') { - // toPay?.(e) - // } - if (key === 'showEdit') { - handEdit?.() - } - } - - return ( - <> - {/* { - showBuy && nextBuy?.(e)}>再次购买 - } - { - showTuihuo && handApplyGoods?.()}>申请退货 - } - { - showTake && handSureGoods?.(e)}>确认收货 - } - { - showTuikuan && handApplyMoney?.()}>申请退款 - - } - { - showCodeList && handShowCodeList?.(e)}>销售码单 - - } - - { - !showTuihuo && !showTuikuan && !showBuy && 暂无更多 - } */} - { - btnList.map((item, index) => - index < btnList.length - 3 && ( - submitBtns(e, item.key)}> - {item.label} - - ), - ) - } - - ) -} -export default memo(BottomApply) diff --git a/src/pages/orderDetails/components/addressDetailBox/index.module.scss b/src/pages/orderDetails/components/addressDetailBox/index.module.scss deleted file mode 100644 index 005de74..0000000 --- a/src/pages/orderDetails/components/addressDetailBox/index.module.scss +++ /dev/null @@ -1,141 +0,0 @@ -.addressBox { - margin-right: 24px; - // width: 702px; - min-height: 223px; - background: #ffffff; - border-radius: 16px; - margin-top: 24px; - margin-left: 24px; - - .topBox { - padding-top: 28px; - display: flex; - align-items: center; - - .cirle { - border-radius: 50%; - margin-left: 32px; - width: 64px; - height: 64px; - background: #4a7fff; - display: flex; - align-items: center; - justify-content: center; - - .dingwei { - color: #ffffff; - font-size: 26px; - } - } - - .address { - margin-left: 24px; - width: 461px; - height: 78px; - font-size: 28px; - font-weight: 500; - color: #000000; - margin-right: 41px; - align-items: center; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; /*这里设置几行*/ - overflow: hidden; - } - - .icon_more { - font-size: 50px; - } - } - - .line { - margin-top: 16px; - float: right; - margin-right: 32px; - width: 550px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .bottom { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 44px; - .reatName { - font-size: 28px; - font-weight: 500; - color: #337fff; - margin-right: 32px; - } - .leftbottom { - margin-left: 120px; - display: flex; - align-items: center; - .name { - width: 100px; - height: 34px; - @include common_ellipsis(); - font-size: 28px; - color: #343434; - margin-right: 16px; - } - - .phone { - font-size: 28px; - color: #343434; - } - } - - .reatBox { - position: relative; - margin-left: 32px; - - .updateBtn { - width: 200px; - font-size: $font_size_min; - background-color: #f0f0f0; - height: 64px; - border-radius: 16px; - color: $color_font_two; - // position: absolute; - bottom: 10px; - // right: -10px; - text-align: center; - z-index: 999; - - .updateBtn_list { - position: absolute; - display: flex; - z-index: 5; - width: 100%; - - .updateBtn_item_select { - color: #fff; - } - } - - .updateBtn_item { - flex: 1; - text-align: center; - line-height: 64px; - } - - .updateBtn_select { - color: #fff; - background-color: $color_main; - border-radius: 16px; - position: absolute; - width: 100px; - height: 64px; - z-index: 1; - transition: all 0.3s ease-in-out; - } - } - } - } -} -.empty { - display: flex !important; -} diff --git a/src/pages/orderDetails/components/addressDetailBox/index.tsx b/src/pages/orderDetails/components/addressDetailBox/index.tsx deleted file mode 100644 index 72f60ce..0000000 --- a/src/pages/orderDetails/components/addressDetailBox/index.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' -import { alert } from '@/common/common' - -interface AddressInfo { - take_goods_address: string - province_name: string - city_name: string - district_name: string - address_detail: string - target_user_name: string - purchaser_phone: string -} -interface propsObj { - receivingStatus: Number | null // 1 自提 2 物流 - onReceivingStatus?: (any, Number) => void // 切换自提或者物流 - obj?: AddressInfo - navSelect?: (any) => void - icon?: React.ReactNode - showBtn?: boolean - showWhatFont?: string - isReadonly?: boolean -} -const AddressDetailBox = (props: propsObj) => { - const { - receivingStatus = null, - onReceivingStatus, - obj = { - target_user_name: '暂无', - purchaser_phone: '暂无', - } as AddressInfo, - navSelect, - showBtn = true, - showWhatFont = '', - isReadonly = false, - icon, - } = props - - return ( - - navSelect?.(obj)}> - - {icon ?? } - - { - receivingStatus == 1 && {obj.take_goods_address || '中华人民共和国广东省佛山市禅城区陆盈纺织仓库'} - } - { - (obj?.province_name != '' && receivingStatus == 2) - && {obj?.province_name}{obj?.city_name}{obj?.district_name}{obj?.address_detail} - } - { - (obj?.province_name == '' && receivingStatus == 2) - && 请选择地址 - } - { - (receivingStatus !== 1 && !isReadonly) - ? - : null - } - - - - - {receivingStatus === 1 ? '谭先生' : obj.target_user_name} - {receivingStatus === 1 ? 13242128982 : obj.purchaser_phone} - { - showBtn && - - - onReceivingStatus?.(e, 1)}> - 自提 - - onReceivingStatus?.(e, 2)}> - 物流 - - - - - - } - - { - !showBtn && {showWhatFont} - } - - - ) -} -export default memo(AddressDetailBox) diff --git a/src/pages/orderDetails/components/advanceOrderState/index.module.scss b/src/pages/orderDetails/components/advanceOrderState/index.module.scss deleted file mode 100644 index bc8452a..0000000 --- a/src/pages/orderDetails/components/advanceOrderState/index.module.scss +++ /dev/null @@ -1,76 +0,0 @@ -.advance_main { - background-image: url('https://cdn.zzfzyc.com/mall/crm_order_detail_bg.png'); - background-size: 100% 100%; - background-repeat: no-repeat; - width: 702px; - margin-top: 20px; - margin-left: 24px; - height: 238px; - background-color: #007aff; - border-radius: 20px; - display: flex; - align-items: center; - font-size: 24px; - color: #dddddd; - position: relative; - - .time_con { - padding-left: 30px; - - .times { - margin-bottom: 25px; - display: flex; - align-items: center; - - .text { - margin-right: 15px; - } - - .num { - width: 46px; - height: 50px; - background: #0063ce; - border-radius: 10px; - line-height: 50px; - text-align: center; - font-weight: 700; - color: #fff; - } - - .separate { - padding: 0 10px; - } - } - } - - .cardIcon { - width: 238px; - height: 178px; - position: absolute; - right: 0; - bottom: 0; - - .image { - width: 100%; - height: 100%; - } - } - - .refresh { - position: absolute; - top: 23px; - right: 20px; - display: flex; - color: #dddddd; - display: flex; - align-items: center; - - .mconfont { - font-size: 36px; - } - - .refresh_text { - font-size: 25px; - } - } -} diff --git a/src/pages/orderDetails/components/advanceOrderState/index.tsx b/src/pages/orderDetails/components/advanceOrderState/index.tsx deleted file mode 100644 index 1b60b88..0000000 --- a/src/pages/orderDetails/components/advanceOrderState/index.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import { formatImgUrl } from '@/common/format' -import { useTimeCountDown } from '@/use/useCommon' -import { ORDER_STATUS, PAYMENT_METHOD } from '@/common/enum' - -interface List { - status: string - time: string - tag: string - desc: string - expire_time: string -} - -interface Param { - onRefresh?: () => void - orderInfo?: { - logistics_details: List[] // 订单状态列表 - payment_method: number // 支付方式 - status: number // 订单状态 - } -} -const AdvanceOrderState = ({ orderInfo, onRefresh }: Param) => { - const { showTime, onStart, timeStatus } = useTimeCountDown() - - // 订单状态枚举 - const { SaleorderstatusWaitingPrePayment } = ORDER_STATUS - - // 获取预付款最后时间 - const endTime = useMemo(() => { - if (orderInfo?.status == SaleorderstatusWaitingPrePayment.value && orderInfo.logistics_details.length > 0) { - return orderInfo.logistics_details[0].expire_time - } - return '' - }, [orderInfo]) - - useEffect(() => { - if (endTime) { onStart(endTime) } - }, [endTime]) - - useEffect(() => { - if (timeStatus == 2) { onRefresh?.() } - }, [timeStatus]) - - return ( - - - - - {showTime.HH} - : - {showTime.MM} - : - {showTime.SS} - - 等待买家付款,超时自动取消 - - {/* - - */} - onRefresh?.()}> - - 刷新 - - - ) -} -export default memo(AdvanceOrderState) diff --git a/src/pages/orderDetails/components/orderState/index.module.scss b/src/pages/orderDetails/components/orderState/index.module.scss deleted file mode 100644 index 7d585e2..0000000 --- a/src/pages/orderDetails/components/orderState/index.module.scss +++ /dev/null @@ -1,202 +0,0 @@ -.order_flow_state { - width: 702px; - margin-top: 24px; - margin-left: 24px; - border-radius: 16px; - background-color: #fff; - border-radius: 20px; - padding: 20px; - box-sizing: border-box; - position: relative; - overflow: hidden; - - .order_status_list { - max-height: 250px; - overflow: hidden; - transition: all 0.3s ease-in-out; - } - - .order_status_list_show { - max-height: 1000px !important; - } - - .order_status_item { - position: relative; - - &:nth-last-child(n + 2) { - padding-bottom: 30px; - } - - .order_status_tail_end, - .order_status_tail { - width: 15px; - height: 15px; - border: 2px solid $color_main; - background-color: #fff; - border-radius: 50%; - position: absolute; - left: 0; - top: 10px; - z-index: 10; - } - - .order_status_tail_end { - background-color: $color_main; - } - - .order_status_line { - border-left: 2px solid $color_main; - height: 100%; - top: 10px; - left: 9px; - position: absolute; - z-index: 1; - } - - .order_status_content { - // display: flex; - // align-items: center; - padding: 0 30px; - .flexBox { - display: flex; - align-items: center; - .order_status_title { - color: $color_font_two; - font-size: $font_size; - font-weight: 700; - } - - .order_status_time { - color: $color_font_two; - font-size: $font_size_medium; - padding: 0 20px; - } - - .order_status_tag { - font-size: $font_size_min; - background: #f0f0f0; - border-radius: 6px; - padding: 5px 10px; - color: $color_font_two; - } - - .order_status_select { - color: $color_main; - } - - .order_status_tag_select { - color: $color_main; - } - } - .picBox { - display: flex; - flex-shrink: 0; - flex-wrap: wrap; - .pic { - margin-right: 10px; - margin-bottom: 10px; - width: 90px; - height: 90px; - border-radius: 10px; - } - } - } - - .order_status_des { - color: $color_font_two; - font-size: $font_size_medium; - margin-bottom: 12px; - } - - .order_status_des_select { - color: $color_font_one; - } - - .pay_time { - height: 56px; - background: #f6f6f6; - border-radius: 20px; - color: #3c3c3c; - font-size: 24px; - display: flex; - align-items: center; - justify-content: center; - font-weight: 700; - margin-top: 20px; - - text { - font-size: 28px; - color: $color_main; - padding: 0 10px; - } - } - } - - .more { - width: 100%; - text-align: center; - font-size: $font_size_min; - color: $color_font_one; - padding-top: 20px; - - .miconfonts { - display: inline-block; - font-size: 25px; - transform: rotate(90deg); - } - - .open_miconfonts { - transform: rotate(-90deg); - } - } - - .image_tag { - width: 140px; - height: 144px; - - .image { - width: 140px; - height: 144px; - } - - position: absolute; - top: -10px; - right: -10px; - } - - .refresh { - position: absolute; - top: 23px; - right: 20px; - display: flex; - color: #707070; - display: flex; - align-items: center; - - .mconfont { - font-size: 30px; - } - - .refresh_text { - font-size: 23px; - } - } -} - -.pay_title_tag { - margin-top: 10px; - font-size: 24px; - color: #ee7500; - background: rgba(255, 230, 206, 0.36); - border-radius: 10px; - height: 56px; - display: flex; - align-items: center; - position: relative; - z-index: 999; - - .miconfont { - font-size: 30px; - padding: 0 20px; - } -} diff --git a/src/pages/orderDetails/components/orderState/index.tsx b/src/pages/orderDetails/components/orderState/index.tsx deleted file mode 100644 index beea849..0000000 --- a/src/pages/orderDetails/components/orderState/index.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import * as dayjs from 'dayjs' -import styles from './index.module.scss' -import Tag from '@/components/tag' -import { formatDateTime, formatImgUrl } from '@/common/format' -import { ORDER_STATUS, PAYMENT_METHOD } from '@/common/enum' - -interface List { - status: string - time: string - tag: string - desc: string - expire_time: string - delivery_appendix_url?: string[] -} - -interface Param { - onRefresh?: () => void - orderInfo?: { - logistics_details: List[] // 订单状态列表 - payment_method: number // 支付方式 - status: number // 订单状态 - account_period?: number // 账期 - account_period_time?: string // 还款日期 - is_outbound?: boolean - } - picUrl?: string[] -} -const OrderState = ({ orderInfo = { logistics_details: [], payment_method: 0, status: 0 }, onRefresh, picUrl = [] }: Param) => { - useEffect(() => { - console.log('orderInfo33::', orderInfo) - }, [orderInfo]) - - const [showMore, setShowMore] = useState(false) - const changeMore = () => { - setShowMore(() => !showMore) - } - const dataList = useMemo(() => { - return orderInfo.logistics_details ? orderInfo?.logistics_details.reverse() : [] - }, [orderInfo.logistics_details]) - - // 订单状态枚举 - const { SaleorderstatusWaitingPrePayment } = ORDER_STATUS - - // 支付方式枚举 - const { - PaymentMethodAccountPeriod, - PaymentMethodCashOnDelivery, - } = PAYMENT_METHOD - - const handSee = (item) => { - console.log(item, 'itemmmm') - Taro.previewImage({ - current: item, // 图片的地址url - urls: picUrl, // 预览的地址url - }) - } - - return ( - <> - {(dataList?.length > 0) && - - {dataList.map((item, index) => { - return - {(dataList.length > 1) && } - {(dataList.length != (index + 1)) && } - - - {item.status} - {formatDateTime(item.time)} - {(['待发货', '已发货'].includes(item.status) && orderInfo?.is_outbound) && 已出仓} - - { - (['待发货', '已发货'].includes(item.status) && orderInfo?.is_outbound) && 订单货物已出仓,打包整理后火速发出 - } - - { - item.delivery_appendix_url?.map((item, index) => { - return ( - handSee(item)} /> - ) - }) - } - - - {item.desc} - - })} - - {(dataList.length > 2) && changeMore()}> - {showMore ? '收起详情' : '点击查看详情'} - - } - - {(orderInfo.payment_method == PaymentMethodCashOnDelivery.value) && } - {(orderInfo.payment_method == PaymentMethodAccountPeriod.value) && } - - } - {(orderInfo.payment_method == PaymentMethodAccountPeriod.value) && - - 您使用了{orderInfo.account_period}天账期支付,还款日期为{formatDateTime(orderInfo.account_period_time)} - } - - ) -} -export default memo(OrderState) diff --git a/src/pages/orderDetails/components/remark/index.module.scss b/src/pages/orderDetails/components/remark/index.module.scss deleted file mode 100644 index 61aa789..0000000 --- a/src/pages/orderDetails/components/remark/index.module.scss +++ /dev/null @@ -1,62 +0,0 @@ -.order_popup { - display: flex; - flex-direction: column; - align-items: center; - padding: 20px 0; - .order_popup_title { - color: $font_size_big; - font-weight: 700; - color: #000000; - padding-bottom: 20px; - } - .order_popup_input { - width: 100%; - padding: 0 25px; - box-sizing: border-box; - margin-top: 43px; - position: relative; - .descDataNum { - position: absolute; - right: 40px; - bottom: 10px; - height: 39px; - font-size: $font_size_medium; - color: $color_font_two; - } - - textarea { - background-color: #f3f3f3; - border-radius: 10px; - width: 100%; - height: 313px; - padding: 20px; - padding-bottom: 50px; - box-sizing: border-box; - font-size: $font_size; - border: 2px solid #e6e6e6; - } - } - .recommend_remark { - margin: 10px 28px; - color: #808080; - font-size: 28px; - } - .recommend_remark_content { - margin: 0 20px; - .tag { - height: 50px; - margin: 0 8px; - margin-bottom: 10px; - } - } - .order_save_address { - height: 82px; - background: #007aff; - border-radius: 40px; - width: 668px; - text-align: center; - line-height: 82px; - color: #fff; - margin-top: 60px; - } -} diff --git a/src/pages/orderDetails/components/remark/index.tsx b/src/pages/orderDetails/components/remark/index.tsx deleted file mode 100644 index 8ce4ee8..0000000 --- a/src/pages/orderDetails/components/remark/index.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import { Textarea, View } from '@tarojs/components' -import { useCallback, useEffect, useState } from 'react' -import styles from './index.module.scss' -import Popup from '@/components/popup' -import Tag from '@/components/tag' - -interface Param { - onBlur?: (val: any) => void - onSave?: (val: string) => void - defaultValue?: string - recommend?: boolean -} -const recommendReport = [ - { - id: 1, - value: '拿色片', - }, - { - id: 2, - value: '顺丰', - }, - { - id: 3, - value: '客户自提', - }, - { - id: 4, - value: '加急一下', - }, - { - id: 5, - value: '物流到', - }, - { - id: 6, - value: '中台秀银', - }, - { - id: 7, - value: '中台晓茵', - }, - { - id: 8, - value: '中台淑婷', - }, - { - id: 9, - value: '中台结慧', - }, - { - id: 10, - value: '辛苦了', - }, -] - -const Remark = ({ onBlur, onSave, defaultValue = '', recommend = true }: Param) => { - const [descData, setDescData] = useState({ - number: 0, - value: '', - count: 200, - }) - - const getDesc = (value) => { - let res = value - if (value.length > descData.count) { - res = value.slice(0, descData.count) - } - setDescData({ ...descData, number: res.length, value: res }) - } - - const setSave = () => { - onSave?.(descData.value) - } - useEffect(() => { - getDesc(defaultValue) - }, [defaultValue]) - - const onClickTag = (item) => { - setDescData(prev => ({ - ...prev, - value: prev.value + item.value, - })) - } - - return ( - - 编辑备注 - - - {descData.number}/{descData.count} - - { - recommend - ? - 推荐备注 - - { - recommendReport.map((item) => { - return onClickTag(item)} circle customClassName={styles.tag} key={item.id}>{item.value} - }) - } - - - : null - } - - setSave()}>保存 - - ) -} - -export default Remark diff --git a/src/pages/orderDetails/index.config.ts b/src/pages/orderDetails/index.config.ts deleted file mode 100644 index 030cb10..0000000 --- a/src/pages/orderDetails/index.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default { - navigationBarTitleText: '订单详情', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', - enableShareAppMessage: true, -} diff --git a/src/pages/orderDetails/index.module.scss b/src/pages/orderDetails/index.module.scss deleted file mode 100644 index dd3281b..0000000 --- a/src/pages/orderDetails/index.module.scss +++ /dev/null @@ -1,580 +0,0 @@ -page { - background: #f7f7f7; -} -.passBackground { - background: url('https://cdn.zzfzyc.com/orderDetail/pass_background.png'); - background-size: contain; - background-repeat: no-repeat; -} -.refuseBackground { - background-image: url('https://cdn.zzfzyc.com/orderDetail/refuse_background.png'); - background-size: contain; - background-repeat: no-repeat; -} -.pendingBackground { - background: url('https://cdn.zzfzyc.com/orderDetail/pending_background.png'); - background-size: contain; - background-repeat: no-repeat; -} -.status { - position: absolute; - top: 0; - left: 0; - width: 100%; - display: flex; - flex-flow: row nowrap; - box-sizing: border-box; - padding: 40px 32px; - height: 257px; - .statusLeft { - width: 50%; - } - .statusRight { - width: 50%; - font-size: 26px; - color: #736d6e; - line-height: 32px; - .name { - margin-top: 24px; - } - .time { - margin-top: 17px; - } - .buttonBar { - margin-top: 24px; - justify-content: flex-end; - display: flex; - flex-flow: row nowrap; - align-items: center; - } - .refuseButton { - border-radius: 8px; - background-color: #eff4fe; - } - .passButton { - border-radius: 8px; - margin-left: 20px; - } - } - .statusTitle { - display: flex; - flex-flow: row nowrap; - align-items: center; - .statusName { - margin-left: 10px; - font-size: 40px; - } - .refuseName { - color: #f65269; - } - .passName { - color: #00ab5b; - } - .pendingName { - color: #333; - } - } - .price { - color: #757172; - font-size: 26px; - margin-top: 16px; - } -} - -.statusDialog { - width: 65vw; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - background-color: white; - padding: 36px; - border-radius: 16px; - position: relative; - .closeDialog { - position: absolute; - top: 30px; - right: 30px; - width: 40px; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - } - .statusLeft { - width: 100%; - } - .statusTitle { - display: flex; - flex-flow: row nowrap; - align-items: center; - .statusName { - margin-left: 10px; - font-size: 40px; - } - .refuseName { - color: #f65269; - } - .passName { - color: #00ab5b; - } - .pendingName { - color: #333; - } - } - .price { - color: #757172; - font-size: 26px; - margin-top: 16px; - } - .shareBtn { - margin-top: 60px; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - padding: 0 30px; - width: 100%; - height: 72px; - text-align: center; - box-sizing: border-box; - font-size: $font_size_medium; - border: 1px solid $color_main; - background-color: $color_main; - border-radius: 50px; - color: white; - // active 伪类 - &:active { - background-color: rgba($color: $color_main, $alpha: 0.5); - color: #fff; - } - } -} - -.mainBox { - .pussBox { - margin-top: 24px; - display: flex; - align-items: center; - - .pussName { - font-size: 28px; - color: #000000; - } - - .pussPhone { - margin-left: 88px; - font-size: 28px; - color: #000000; - } - } - - .total { - margin-top: 44px; - font-size: 24px; - color: #000000; - margin-left: 32px; - margin-bottom: 8px; - } - - .productBox { - // width: 702px; - margin-right: 24px; - background: #ffffff; - border-radius: 16px; - margin-left: 24px; - padding-bottom: 36px; - overflow: hidden; - - .flexMoney { - display: flex; - margin-top: 32px; - align-items: center; - justify-content: space-between; - - .flexTotalBox { - display: flex; - align-items: center; - - .totalFont { - margin-left: 32px; - margin-right: 8px; - font-size: 28px; - color: #000000; - } - - .tishi { - font-size: 28px; - } - } - - .shoudPay { - font-size: 28px; - font-weight: 500; - color: #f64861; - margin-right: 32px; - } - } - } -} - -.defaltBox { - margin: 24px; - padding: 24px 32px 24px 24px; - background: #ffffff; - border-radius: 16px; - - .titleBox { - // margin-right: 24px; - // margin-left: 24px; - // width: 638px; - display: flex; - justify-content: space-between; - align-items: center; - - .title { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .modeName { - font-size: 28px; - font-weight: 500; - color: #337fff; - } - } - - .modeLine { - margin-top: 24px; - // width: 638px; - // margin-right: 24px; - // margin-left: 24px; - height: 1px; - background: #000000; - opacity: 0.1; - } -} - -.goodsBox { - margin-top: 24px; - overflow: hidden; - border-bottom: 8px solid #f7f7f7; - - .goodsProduct { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-left: 32px; - } - - .goodsLine { - margin-right: 24px; - margin-left: 24px; - // width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-left: 32px; - margin-top: 24px; - } - - .itemGoods { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - margin-right: 32px; - width: 495px; - border-bottom: 1px solid #f7f7f7; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - color: #000000; - } - - .itemNums { - font-size: 28px; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - .flexBox { - display: flex; - .itemMoney { - font-size: 28px; - margin-right: 10px; - color: #000000; - } - .lastBox { - font-size: 28px; - text-decoration: line-through; - color: #7f7f7f; - } - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #333333; - } - } - } - } - - .itemGoods:last-child { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: none; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - color: #000000; - } - - .itemNums { - font-size: 28px; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .flexBox { - display: flex; - .itemMoney { - font-size: 28px; - margin-right: 10px; - color: #000000; - } - .lastBox { - font-size: 28px; - text-decoration: line-through; - color: #7f7f7f; - } - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #333333; - } - } - } - } - - .product_goods { - padding-right: 32px; - // width: 100%; - margin-top: 32px; - display: flex; - align-items: center; - margin-bottom: 24px; - justify-content: space-between; - .prodct_name { - height: 32px; - font-size: 26px; - font-weight: 400; - color: #3a3a3a; - margin-left: 32px; - max-width: 224px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - .product_right { - display: flex; - align-items: center; - .lastBox { - min-width: 120px; - font-size: 26px; - text-decoration: line-through; - color: #7f7f7f; - margin-right: 24px; - text-align: left; - } - .itemMoney { - min-width: 120px; - font-size: 28px; - margin-right: 10px; - color: #757575; - margin-right: 40px; - text-align: left; - } - .itemMoneyOne { - width: 100px; - font-size: 26px; - font-weight: 500; - color: #4f4f4f; - text-align: left; - } - } - } -} - -.goodsBox:last-child { - border-bottom: none; -} - -.detailBox { - display: flex; - margin-top: 24px; - align-items: center; - justify-content: space-between; - - .detailRightFlex { - display: flex; - align-items: center; - - .detailRight { - font-size: 28px; - color: #000000; - } - - .detailBtn { - margin-left: 16px; - width: 65px; - height: 32px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 24px; - color: #337fff; - text-align: center; - line-height: 32px; - } - } - - .detailFont { - font-size: 28px; - color: #b8b8b8; - } -} - -.remarkFont { - margin-top: 24px; - font-size: 28px; - color: #000000; -} - -.safeBottom { - height: 300px; -} - -.bottomBox { - display: flex; - justify-content: space-between; - align-items: center; - // width: 750px; - width: 100%; - height: 160px; - background: #ffffff; - position: fixed; - bottom: 0; - padding-bottom: 24px; - - // position: relative; - .moreFontBox { - width: 200px; - - .moreFont { - font-size: 28px; - color: rgba(0, 0, 0, 0.8); - margin-left: 48px; - } - } - - .posssBox { - border-radius: 8px; - position: absolute; - left: 32px; - z-index: 99; - bottom: 170px; - // width: 120px; - padding: 24px; - background: #fff; - border: 1px solid #ccc; - box-shadow: 2px 2px 2px #ccc; - } - - .posssBox:after { - display: inline-block; - position: absolute; - bottom: -20px; - z-index: 88; - // left: 5px; - width: 0; - height: 0px; - content: ''; - border-style: solid; - border-width: 20px; - border-color: #fff #fff transparent transparent; - transform: rotate(135deg); - box-shadow: 2px -2px 2px #ccc; - } -} - -.order_save_address { - height: 82px; - background: #007aff; - border-radius: 40px; - // width: 668px; - text-align: center; - line-height: 82px; - color: #fff; - margin-top: 20px; - margin-left: 24px; - margin-right: 24px; - margin-bottom: 20px; -} -.platform_name { - background: #ecf2ff; - border-radius: 6px; - margin-left: 10px; - font-size: 20px; - border: none !important; - text-align: center; - color: #007aff; - padding: 4px 10px; -} diff --git a/src/pages/orderDetails/index.tsx b/src/pages/orderDetails/index.tsx deleted file mode 100644 index bd1973e..0000000 --- a/src/pages/orderDetails/index.tsx +++ /dev/null @@ -1,1130 +0,0 @@ -import { Button, Text, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { ReactNode } from 'react' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import OfflinePay from '../order/components/offlinePay' -import PayPopup from '../order/components/PayPopup' -import styles from './index.module.scss' -import AdvanceOrderState from './components/advanceOrderState' -import AddressDetailBox from './components/addressDetailBox' -import BottomApply from './components/BottomApply' -import OrderState from './components/orderState' -import Remark from '@/components/textareaEnhance' -import Popup from '@/components/popup' -import BottomBtns from '@/components/BottomBtns' -import { debounce } from '@/common/util' -import { - GetPayCode, - MpSaleOrder, - MpSaleOrderAddress, - MpSaleOrderCancel, - MpSaleOrderPut, - MpSaleOrderReceive, - MpSaleOrderShipmentMode, - MpShoppingCartProductColorList, - OrderPaymentOrderPaymentMethodInfo, - OrderPaymentOrderPaymentSubmission, - OrderPaymentPreCollectOrderOrderPaymentMethodInfo, - OrderPaymentPreCollectOrderOrderPaymentSubmission, - PassAdjustPriceAudit, - RefuseAdjustPriceAudit, -} from '@/api/order' -import { alert, goLink, paywayList } from '@/common/common' -import { formatDateTime, formatHashTag, formatImgUrl, formatMeterDiv, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import { IMG_CND_Prefix, PAY_H5_CODE_URL } from '@/common/constant' -import SaleCodeList from '@/components/SaleCodeList' -import LabAndImg from '@/components/LabAndImg' -import Tag from '@/components/tag' -import { EnumSaleMode } from '@/common/Enumerate' -import NormalButton from '@/components/normalButton' -import Dialog from '@/components/Dialog' -import useUserInfo from '@/use/useUserInfo' - -// 卡片盒子元素 -interface Obs { - title?: string - modeName?: string - showMode?: boolean - children?: ReactNode - clickNode?: () => void -} - -const DefaultBox = (props: Obs) => { - const { - title = '标题', - modeName = '大货', - showMode = false, - children, - clickNode, - } = props - - return ( - - - {title} - { - showMode && clickNode?.()}>{modeName} - } - - - {children} - - ) -} -const DefaultBoxWithMemo = memo(DefaultBox) - -// 产品商品元素 -interface PropGoods { - // item?: { - // code?: string | number - // } - list: any[] - obj: { - sale_mode?: number | string - } -} -const GoodsItem = (porps: PropGoods) => { - const { list = [], obj = {} } = porps - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - return ( - <> - { - list.map((item, index) => { - return ( - - {item.code}# {item.name} - - { - item.product_colors.map((it, inx) => { - return ( - // {/* 第一个版本的样式 */} - - // - // - // - // - // - // - // {formatHashTag(it.code, it.name)} - // x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} - // - // - // - // ¥{formatPriceDiv(it.sale_price)}/{obj?.sale_mode === 1 ? 'm' : 'kg'} - // { - // obj?.sale_mode === 0 && it?.sale_price !== it?.standard_sale_price && ¥{it?.standard_sale_price / 100}/{obj?.sale_mode === 1 ? 'm' : 'kg'} - // } - // - // ¥{formatPriceDiv(it.total_sale_price)} - // - // - // - - // {/* 第二个版本的样式 */} - - - {formatHashTag(it.code, it.name)} x{obj?.sale_mode === EnumSaleMode.Bulk ? it.roll : formatMeterDiv(it.length)}{obj?.sale_mode === EnumSaleMode.Bulk ? '条' : 'm'} - - { - (obj?.sale_mode === EnumSaleMode.Bulk && it?.sale_price !== it?.standard_sale_price) ? ¥{formatPriceDiv(it?.standard_sale_price, 100, true)}/kg : null - } - ¥{formatPriceDiv(it.sale_price, 100, true)}/{obj?.sale_mode === EnumSaleMode.Plate ? 'm' : 'kg'} - ¥{formatPriceDiv(it.total_sale_price, 100, true)} - - - - ) - }) - } - - ) - }) - } - - - ) -} -const GoodsItemWithMemo = memo(GoodsItem) -enum AdjustPriceAuditStatus { - NONE = 0, - PASS = 3, - PENDING = 1, - REFUSE = 2, -} -interface NotificationProps{ - salesOrderId: number - auditStatus: AdjustPriceAuditStatus - baseData: any - onSuccess: () => void - isReadjust: boolean - saleUserId: number -} -// 服务通知 -const ServicesNotification = (props: NotificationProps) => { - const { userInfo } = useUserInfo() - const { salesOrderId, auditStatus, baseData, onSuccess, isReadjust, saleUserId } = props - const { fetchData: pass } = PassAdjustPriceAudit() - const { fetchData: refuse } = RefuseAdjustPriceAudit() - - const handleRefuse = async() => { - const res = await refuse({ - sale_order_id: salesOrderId, - }) - if (res.success) { - Taro.showToast({ - title: '拒绝成功', - icon: 'success', - duration: 2000, - }) - onSuccess() - } - } - const handlePass = async() => { - const res = await pass({ - sale_order_id: salesOrderId, - }) - if (res.success) { - Taro.showToast({ - title: '审核通过', - icon: 'success', - duration: 2000, - }) - onSuccess() - } - } - - const [showDialog, setShowDialog] = useState(false) - const handleShowDialog = (bool) => { - setShowDialog(bool) - } - // 点击分享 - const handleShare = () => { - console.log('handleShare') - handleShowDialog(false) - } - - useEffect(() => { - if (userInfo.userInfo.user_id) { - if (auditStatus === AdjustPriceAuditStatus.PENDING && isReadjust && userInfo.userInfo.user_id === saleUserId) { - handleShowDialog(true) - } - } - }, [isReadjust, auditStatus, saleUserId, userInfo]) - - const statusStyles = useMemo(() => { - const res = { - background: '', - textColor: '', - icon: null as React.ReactNode, - } - if (auditStatus === AdjustPriceAuditStatus.PENDING) { - res.background = styles.pendingBackground - res.textColor = styles.pendingName - res.icon = - } - else if (auditStatus === AdjustPriceAuditStatus.PASS) { - res.background = styles.passBackground - res.textColor = styles.passName - res.icon = - } - else if (auditStatus === AdjustPriceAuditStatus.REFUSE) { - res.background = styles.refuseBackground - res.textColor = styles.refuseName - res.icon = - } - return res - }, [auditStatus]) - return - - - {statusStyles.icon} - {baseData.adjust_price_audit_status_name} - - 单价调整超过 {formatPriceDiv(baseData.max_adjust_price)} 元 - - - { - auditStatus === AdjustPriceAuditStatus.PENDING - ? - 拒绝 - 同意 - - : <> - 审核人员:{baseData.adjust_price_audit_name} - 审核时间:{formatDateTime(baseData.adjust_price_audit_time)} - - } - - - - - handleShowDialog(false)}> - - - - {statusStyles.icon} - {baseData.adjust_price_audit_status_name} - - 单价调整超过 {formatPriceDiv(baseData.max_adjust_price)} 元,请分享至上级 - - {/* - */} - - - - -} - -const OrderDetails = () => { - const router = useRouter() - // useEffect(() => { - // getDetail() - // }, []) - - // 收货方法,1:自提,2物流 - const [receivingStatus, setReceivingStatus] = useState(null) - // 切换自提或者物流 - const { fetchData: selectFetch } = MpSaleOrderShipmentMode() - const onReceivingStatus = debounce(async(e, value) => { - if (infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5 || infoObj.status === 3 || infoObj.status === 11) { - alert.error('不允许更改') - return false - } - e.stopPropagation() - if (receivingStatus === value) { - alert.error('不能选择相同的方式') - return false - } - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await selectFetch({ id: Number(infoObj.id), shipment_mode: value }) - if (res.msg === 'success') { - Taro.hideLoading() - Taro.showToast({ - title: '成功', - icon: 'success', - }) - setReceivingStatus(value) - getDetail() - } - else { - if (res.data.code == 70029) { - Taro.hideLoading() - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - else { - Taro.hideLoading() - Taro.showToast({ - title: '请先去新增地址', - icon: 'error', - }) - } - } - }, 300) - - const { fetchData: infoFetch, state } = MpSaleOrder() - // 是否有调整价格 - const isReadjust = useMemo(() => { - return state.data.product_list?.some(item => item.product_colors?.some(item => item?.sale_price !== item?.standard_sale_price)) - }, [state]) - - const [infoObj, setInfoObj] = useState({}) - // 获取订单详情 - const getDetail = async() => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - const res = await infoFetch({ id: router.params.id }) - Taro.hideLoading() - // 小程序提供的api,通知页面停止下拉刷新效果 - Taro.stopPullDownRefresh() - orderMsg.forEach((it) => { - if (it.leftTitle === '订单编号:') { - it.rightTitle = res.data.order_no - } - if (it.leftTitle === '创建时间:') { - it.rightTitle = formatDateTime(res.data.create_time) - } - if (it.leftTitle === '发货时间:') { - it.rightTitle = formatDateTime(res.data.delivery_time) - } - if (it.leftTitle === '业务员:') { - it.rightTitle = res.data.sale_user_name - } - if (res.data.change_time !== '') { - if (it.leftTitle === '编辑时间:') { - it.rightTitle = formatDateTime(res.data.change_time) - } - } - else { - if (it.leftTitle === '编辑时间:') { - it.showFont = false - } - } - }) - res.data.picUrl = res.data.delivery_appendix_url?.map((item) => { - item = IMG_CND_Prefix + item - return item - }) - res.data.logistics_details?.map((item) => { - if (item.status == '待收货') { - item.delivery_appendix_url = res.data.delivery_appendix_url?.map((item) => { - item = IMG_CND_Prefix + item - return item - }) - } - return item - }) - setInfoObj(res.data) - setOrderMsg([...orderMsg]) - setReceivingStatus(res.data.shipment_mode) - } - // 复制功能 - const clipboardData = () => { - Taro.setClipboardData({ - data: infoObj?.order_no || '', - success(res) { - Taro.showToast({ - icon: 'none', - title: '复制成功', - }) - }, - }) - } - const page = Taro.getCurrentInstance().page - if (page && page.onShareAppMessage) { - page.onShareAppMessage = (res) => { - console.log('useShareAppMessage', res) - let shareTitle = `订单${infoObj.order_no}` - if (res.from === 'button') { - // 来自页面内转发按钮 - console.log(res.target) - shareTitle += `,${infoObj.adjust_price_audit_status_name}` - } - return { - title: shareTitle, - path: `/pages/orderDetails/index?id=${infoObj.id}`, - } - } - } - - // useEffect(() => { - // setReceivingStatus(receivingStatus) - // }, [receivingStatus]) - // 订单信息文字数组 - const [orderMsg, setOrderMsg] = useState([ - { - leftTitle: '订单编号:', - rightTitle: '------', - showBtn: true, - showFont: true, - }, - { - leftTitle: '创建时间:', - rightTitle: '------', - showFont: true, - }, - { - leftTitle: '发货时间:', - rightTitle: '------', - showFont: true, - }, - { - leftTitle: '业务员:', - rightTitle: '------', - showFont: true, - }, - { - leftTitle: '编辑时间:', - rightTitle: '------', - showFont: true, - - }, - ]) - - // 备注操作 - const [showDesc, setShowDesc] = useState(false) - const { fetchData: remarkFetch } = MpSaleOrderPut() - const getRemark = async() => { - const res = await remarkFetch({ remark: infoObj.remark, id: Number(router.params.id) }) - if (res.msg === 'success') { - Taro.showToast({ - title: '成功', - icon: 'success', - }) - setShowDesc(false) - getDetail() - } - } - - // 更多按钮查看操作 - const [showMore, setShowMore] = useState(false) - - // 刷新页面 - const refresh = useCallback(() => { - alert.loading('刷新中') - getDetail() - }, []) - - const { fetchData: cancelFetch } = MpSaleOrderCancel() - // 取消订单 - const cancle = async(e, item) => { - e.stopPropagation() - Taro.showModal({ - content: '确定要取消吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await cancelFetch({ id: item.id }) - if (res.msg === 'success') { - Taro.showToast({ - title: '取消成功', - }) - Taro.hideLoading() - getDetail() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - }, - }) - } - // 再次购买 - const { fetchData: buyFetch } = MpShoppingCartProductColorList() - const nextBuy = async(e, item) => { - e.stopPropagation() - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const arr: any = [] - item.product_list.forEach((item) => { - item.product_colors.forEach((it) => { - arr.push({ - length: it.length, - roll: it.roll, - product_color_id: it.id, - }) - }) - }) - const query = { - purchaser_id: item.purchaser_id, - sale_mode: item.sale_mode, - color_list: arr, - } - const res = await buyFetch(query) - if (res.msg === 'success') { - Taro.showToast({ - title: '加入购物车成功!', - }) - Taro.hideLoading() - getDetail() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - - // 扫码支付 - const [showSide, setShowSide] = useState(true) - const [title, setTitle] = useState('') - const [picUrl, setPicUrl] = useState('') - - // 显示支付 - const [showPay, setShowPay] = useState(false) - // 去支付逻辑 - const { fetchData: infoOneFetch } = OrderPaymentOrderPaymentMethodInfo() - const { fetchData: infoTwoFetch } = OrderPaymentPreCollectOrderOrderPaymentMethodInfo() - const [payList, setPayList] = useState(paywayList) - const toPay = async(e, item) => { - e.stopPropagation() - console.log('toPay', item) - if (item.status !== 10) { - const res = await infoOneFetch({ id: item.should_collect_order_id }) - setmd5Key(res.data.md5_key) - // 待发货、待收货、待自提、已收货 - const filter = payList.filter((it) => { - // 1. 待发货、待收货、待自提、已收货 隐藏货到付款 账期 - // 2. 散剪、剪板 待付款状态 隐藏货到付款 账期 - if ([3, 8, 13, 9].includes(item.status) || ([7].includes(item.status) && [EnumSaleMode.BulkCut, EnumSaleMode.Plate].includes(item.sale_mode))) { - return ![5, 3].includes(it.id) - } - else { - return true - } - }) - console.log('filter', filter) - filter.map((item) => { - if (item.id === 3) { - item.name = `${res.data.account_period}天账期` - item.fonts = `可用额度${formatPriceDiv( - res.data.account_period_credit_available_line, - ).toLocaleString()}` - } - if (item.id === 2) { - item.fonts = `可用额度${formatPriceDiv( - res.data.advance_deposit_balance, - ).toLocaleString()}` - } - return item - }) - setPayList([...filter]) - if (item.is_shipper_picks_up) { - const obj = filter.filter((item) => { - return item.id === 6 - }) - console.log(obj, '456456') - if (obj.length === 0) { - filter.unshift({ - id: 6, - iconfont: 'icon-huozhuziti', - name: '货主自提', - color: '#ffffff', - fonts: '', - money: '', - isCheck: false, - }) - setPayList([...filter]) - } - } - } - else { - const res = await infoTwoFetch({ id: item.pre_collect_order_id }) - setmd5Key(res.data.md5_key) - const arr: any = [] - arr.push( - { - id: 2, - iconfont: 'icon-yufukuan1', - name: '预存款', - fonts: `可用额度${formatPriceDiv( - res.data.advance_deposit_balance, - ).toLocaleString()}`, - money: '', - isCheck: false, - }, - { - iconfont: 'icon-yue', - name: '线下汇款', - }, - { - iconfont: 'icon-saomiao', - name: '扫码支付', - color: '#ffffff', - }, - ) - if (item.is_shipper_picks_up) { - const obj = arr.filter((item) => { - return item.id === 6 - }) - if (obj.length === 0) { - arr.unshift({ - id: 6, - iconfont: 'icon-huozhuziti', - name: '货主自提', - fonts: '', - money: '', - isCheck: false, - color: '#ffffff', - }) - } - } - setPayList([...arr]) - } - setShowSide(true) - setTitle('待支付款项') - setShowPay(true) - } - - useDidShow(() => { - getDetail() - }) - // 页面下拉刷新 - usePullDownRefresh(() => { - console.log('usePullDownRefresh') - getDetail() - }) - - const [md5Key, setmd5Key] = useState('') - - const { fetchData: payFetch } = GetPayCode() - const handScanpay = async() => { - const list: any = [] - infoObj.product_list.forEach((item) => { - item.product_colors.forEach((it) => { - list.push({ - product_code: item.code, - product_name: item.name, - product_color_code: formatRemoveHashTag(it.code), - product_color_name: it.name, - num: it.roll.toString(), - weight: formatWeightDiv(it.actual_weight).toString(), - sale_price: (it.sale_price / 100).toString(), - total_price: - it.total_sale_price !== 0 - ? (it.total_sale_price / 100).toString() - : (it.estimate_amount / 100).toString(), - length: (it.length / 100).toString(), - weight_error: formatWeightDiv(it.weight_error).toString(), - }) - }) - }) - const query = { - list, - title: '面料销售电子确认单', - show_qrcode: true, - show_barcode: true, - order_type: infoObj.sale_mode_name, - shipment_mode: infoObj.shipment_mode_name, - company: infoObj.title_purchaser_name, - sale_user: infoObj.sale_user_name, - order_created_time: formatDateTime(infoObj.create_time), - order_no: infoObj.order_no, - target_user_name: infoObj.target_user_name, - target_address: infoObj.address_detail, - target_description: infoObj.remark, - pay_account: infoObj.transfer_remittance_account, - bank_account_name: infoObj.account_name, - bank_name: infoObj.bank_of_deposit, - pay_type: infoObj.settle_mode_name, - client: infoObj.purchaser_name, - phone: infoObj.target_user_phone, - order_total_length: (infoObj.total_number / 100).toString(), - order_total_price: ( - infoObj.bill_total_sale_price / 100 - ).toString(), - total_weight_error_discount: ( - infoObj.total_weight_error_discount / 100 - ).toString(), - order_total_num: infoObj.total_number.toString(), - qrcode: `${PAY_H5_CODE_URL}?key=${md5Key}`, - order_total_weight: (infoObj.total_weight / 1000).toString(), - estimate_amount: (infoObj.estimate_amount / 100).toString(), - total_sale_price: (infoObj.total_sale_price / 100).toString(), - actual_amount: (infoObj.actual_amount / 100).toString(), - wait_pay_amount: (infoObj.wait_pay_amount / 100).toString(), - order_total_weight_error: ( - infoObj.total_weight_error / 1000 - ).toString(), - show_sale_price: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_total_price: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_estimate_amount: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_total_sale_price: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_total_weight_error_discount: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_actual_amount: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_wait_pay_amount: infoObj?.sale_mode === 0 && infoObj?.is_display_price ? true : !!((infoObj?.sale_mode === 1 || infoObj?.sale_mode === 2)), - show_tips: true, - tips: `请核对本单后验收, 如发现质量问题,请于收到货之日起3天内与平台客服联系协商解决,逾期不作处理即表示购方默认对货物无异议;购方确认无任何问题方可裁剪/加工,一经裁剪,缩水等工艺,平台概不负责; - 看布购货,请先试缩水,并注意分缸裁布!如需撞色拼接,请先试色牢度。非质量问题,恕不退换,谢谢合作!`, - } - const res = await payFetch(query) - if (res.data) { - console.log(res.data.base64) - setShowSide(false) - setTitle('查看销售码单') - setPicUrl(res.data.base64) - } - } - - // 确认交易 - const { fetchData: payOneFetch } = OrderPaymentOrderPaymentSubmission() - const { fetchData: payTwoFetch } = OrderPaymentPreCollectOrderOrderPaymentSubmission() - const handsurePay = (obj) => { - let arr: any = [] - // if (obj.status !== 10) { - arr = payList.filter((item) => { - return item.checked - }) - if (!arr.length) { - Taro.showToast({ - title: '请选择后再提交', - icon: 'error', - }) - return false - } - - Taro.showModal({ - content: '确定交易吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const restult = await (obj.status !== 10 ? payOneFetch({ id: Number(obj.should_collect_order_id), payment_method: Number(arr[0]?.id) }) : payTwoFetch({ id: Number(obj.pre_collect_order_id), payment_method: Number(arr[0]?.id) })) - if (restult?.msg === 'success') { - Taro.showToast({ - title: '交易成功', - }) - Taro.hideLoading() - setShowPay(false) - getDetail() - } - else { - Taro.hideLoading() - Taro.showToast({ - title: restult?.msg, - icon: 'error', - }) - } - } - }, - }) - - // } - } - - // 显示线下汇款 - const [showOffline, setShowOffline] = useState(false) - // 选择地址 - const handSelect = (obj) => { - if (receivingStatus === 1 || (infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5 || infoObj.status === 11 || infoObj.status === 3)) { - alert.error('不允许更改') - return false - } - Taro.navigateTo({ - url: `/pages/addressManager/index?orderId=${obj.id}&purchaser_id=${obj.purchaser_id}`, - }) - } - - // 是否显示按钮 - const showBtn = useMemo(() => { - if ((infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5 || infoObj.status === 11 || infoObj.status === 3)) { - return false - } - else { - return true - } - }, [infoObj]) - - const showWhatFont = useMemo(() => { - if (infoObj.shipment_mode === 1) { - return '自提商品' - } - else { - return '物流' - } - }, [infoObj]) - - // 申请退货 - const handApplyGood = () => { - if (infoObj.av_return_product.length == 0) { - return alert.error('暂无货物退') - } - else { - Taro.navigateTo({ - url: `/pages/applyGoods/index?orderId=${infoObj.id}`, - }) - setShowMore(false) - } - } - - // 申请退款 - const handApplyMoney = () => { - // 三种类型的 待收货,已收货后申请退货退款,需要选择质量/非质量问题 - if (infoObj?.status == 8 || infoObj?.status == 9) { - Taro.navigateTo({ - url: `/pages/applyGoods/index?orderId=${infoObj.id}`, - }) - } - else { - Taro.navigateTo({ - url: `/pages/applyMoney/index?orderId=${infoObj.id}`, - }) - } - setShowMore(false) - } - - // 确认收货 - const { fetchData: receveFetch } = MpSaleOrderReceive() - const handSureGoods = async() => { - Taro.showModal({ - content: '确认收货吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - const res = await receveFetch({ sale_order_id: Number(infoObj.id) }) - if (res?.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - Taro.hideLoading() - setShowMore(false) - getDetail() - } - else { - Taro.hideLoading() - Taro.showToast({ - title: res?.msg, - icon: 'error', - }) - } - } - }, - }) - } - - const onChange = (e) => { - setInfoObj(val => ({ ...val, remark: e })) - } - // 选择支付方式 - const clickItem = (item) => { - if (item.name === '扫码支付') { handScanpay() } - if (item.name === '线下汇款') { setShowOffline(true) } - payList.map((it) => { - if (item.id === it.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setPayList([...payList]) - } - useEffect(() => { - setInfoObj(infoObj) - }, [infoObj]) - const showRemarkFont = useMemo(() => { - if (infoObj.status === 10 || infoObj.status == 0 || infoObj.status == 1 || infoObj.status == 2 || infoObj.status == 7) { - return `${'填写/修改备注'} >` - } - else { - return '' - } - }, [infoObj]) - - const BottomBtnsRef = useRef() - const [showOther, setshowOther] = useState(false) - useMemo(() => { - Taro.nextTick(() => { - if (BottomBtnsRef.current?.btnList.length > 3) { - setshowOther(true) - return true - } - else { - setshowOther(false) - return false - } - }) - }, [infoObj]) - // 待接单、配布中、已配布状态时,叫预估金额,其他状态叫合计金额。 - const payFont = useMemo(() => { - if (infoObj?.status === 0 || infoObj?.status === 1 || infoObj?.status === 2) { - return '预估金额' - } - else { - return '合计金额' - } - }, [infoObj]) - - const [showCodeList, setshowCodeList] = useState(false) - // 展示码单 - const handShowCodeList = () => { - setshowCodeList(true) - } - - // 修改订单 - const handEdit = () => { - Taro.navigateTo({ - url: `/pages/orderEdit/index?orderId=${infoObj.id}`, - }) - } - - const onSuccess = () => { - getDetail() - } - - return ( - - - { - infoObj.adjust_price_audit_status !== AdjustPriceAuditStatus.NONE && - } - {(infoObj?.status != 10 && )} - { - infoObj.status === 10 && refresh()} /> - } - - handSelect(obj)} - obj={infoObj} - receivingStatus={receivingStatus} - onReceivingStatus={(e, value) => onReceivingStatus(e, value)} - > - - - {infoObj.purchaser_name} - - { - infoObj?.platform_source !== 1 && - {infoObj?.platform_source_name || '暂无'} - - } - - {infoObj.purchaser_phone} - - - {infoObj.total_fabrics} 种面料,{infoObj.total_colors} 个颜色,共 {infoObj.sale_mode === 0 ? infoObj.total_number : infoObj.total_number / 100} {infoObj.sale_mode === 0 ? '条' : 'm'} - - - - - {payFont} - - ¥{formatPriceDiv(infoObj.bill_total_sale_price, 100, true)} - - - - 实付金额 - - ¥{formatPriceDiv(infoObj.actual_amount, 100, true)} - - { - infoObj?.wait_pay_amount < 0 && - - {infoObj?.wait_pay_amount?.toString().indexOf('-') !== -1 ? '退款金额' : '待付金额'} - - ¥{formatPriceDiv(infoObj.refund_amount, 100, true)} - - } - { - infoObj?.wait_pay_amount > 0 && - - {infoObj?.wait_pay_amount?.toString().indexOf('-') !== -1 ? '退款金额' : '待付金额'} - - ¥{formatPriceDiv(infoObj.wait_pay_amount, 100, true)} - - } - - - { - orderMsg.map((item, index) => { - return ( - - item.showFont && - - {item.leftTitle} - - - {item.rightTitle} - {item.showBtn && clipboardData()}>复制} - - - - ) - }) - } - - - setShowDesc(showRemarkFont != '')}> - {infoObj.remark === '' ? '暂无' : infoObj.remark} - - - setShowDesc(false)}> - - getRemark(e)} - onChange={e => onChange(e)} - defaultValue={infoObj.remark} - /> - getRemark()}>保存 - - - - - - { - showOther - && <> - { - !showMore && setShowMore(true)}>更多 - } - { - showMore && setShowMore(false)}>关闭 - } - { - showMore && - handApplyGood?.()} - handApplyMoney={() => handApplyMoney?.()} - nextBuy={e => nextBuy?.(e, infoObj)} - handSureGoods={() => handSureGoods?.()} - handShowCodeList={() => handShowCodeList?.()} - cancle={e => cancle?.(e, infoObj)} - > - - } - - } - - cancle?.(e, infoObj)} - nextBuy={e => nextBuy?.(e, infoObj)} - toPay={e => toPay?.(e, infoObj)} - handShowCodeList={() => handShowCodeList?.()} - handSureGoods={() => handSureGoods?.()} - handApplyGoods={() => handApplyGood?.()} - handApplyMoney={() => handApplyMoney?.()} - handEdit={() => handEdit?.()} - > - - setShowPay(false)} - clickItem={infoObj => clickItem(infoObj)} - handsurePay={infoObj => handsurePay(infoObj)} - showSide={showSide} - title={title} - picUrl={picUrl} - > - setShowOffline(false)} offlineInfo={infoObj}> - setshowCodeList(false)}> - - ) -} -export default OrderDetails diff --git a/src/pages/orderEdit/components/GoodsItem/index.module.scss b/src/pages/orderEdit/components/GoodsItem/index.module.scss deleted file mode 100644 index dacba2f..0000000 --- a/src/pages/orderEdit/components/GoodsItem/index.module.scss +++ /dev/null @@ -1,253 +0,0 @@ -.goodsBox { - margin-top: 24px; - overflow: hidden; - border-bottom: 8px solid #f7f7f7; - - .goodsProduct { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-left: 32px; - } - - .goodsLine { - margin-right: 24px; - margin-left: 24px; - // width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-left: 32px; - margin-top: 24px; - } - - .itemGoods { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - margin-right: 32px; - width: 495px; - border-bottom: 1px solid #f7f7f7; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-weight: 400; - color: #000000; - } - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #333333; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - .flexBox { - display: flex; - .itemMoney { - font-size: 28px; - margin-right: 10px; - font-weight: 400; - color: #000000; - } - .lastBox { - font-size: 28px; - font-weight: 400; - text-decoration: line-through; - color: #7f7f7f; - } - } - - .newBox { - display: flex; - align-items: center; - - .reduceBox { - width: 50px; - height: 50px; - display: flex; - align-items: center; - justify-content: center; - border-radius: 18px; - border: 1px solid #337fff; - .reduce { - width: 20px; - height: 3px; - background: #337fff; - border-radius: 16px; - opacity: 0.8; - } - } - - .numsBox { - width: 81px; - display: flex; - align-items: center; - justify-content: center; - font-size: 24px; - font-weight: 400; - color: #000000; - text-align: center; - } - - .addBox { - width: 50px; - height: 50px; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - color: #fff; - font-size: 35px; - border-radius: 18px; - border: 1px solid #337fff; - background-color: #337fff; - } - } - } - } - } - - .itemGoods:last-child { - margin-top: 24px; - display: flex; - - .itemPic { - margin-left: 32px; - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: none; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-weight: 400; - color: #000000; - } - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #333333; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .flexBox { - display: flex; - .itemMoney { - font-size: 28px; - margin-right: 10px; - font-weight: 400; - color: #000000; - } - .lastBox { - font-size: 28px; - font-weight: 400; - text-decoration: line-through; - color: #7f7f7f; - } - } - - .newBox { - display: flex; - align-items: center; - - .reduceBox { - width: 50px; - height: 50px; - display: flex; - align-items: center; - justify-content: center; - border-radius: 18px; - border: 1px solid #337fff; - .reduce { - width: 20px; - height: 3px; - background: #337fff; - border-radius: 16px; - opacity: 0.8; - } - } - - .numsBox { - width: 81px; - display: flex; - align-items: center; - justify-content: center; - font-size: 24px; - font-weight: 400; - color: #000000; - text-align: center; - } - - .addBox { - width: 50px; - height: 50px; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - color: #fff; - font-size: 35px; - border-radius: 18px; - border: 1px solid #337fff; - background-color: #337fff; - } - } - } - } - } -} - -.goodsBox:last-child { - border-bottom: none; -} diff --git a/src/pages/orderEdit/components/GoodsItem/index.tsx b/src/pages/orderEdit/components/GoodsItem/index.tsx deleted file mode 100644 index 0b2a088..0000000 --- a/src/pages/orderEdit/components/GoodsItem/index.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { Input, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import LabAndImg from '@/components/LabAndImg' -import { formatDateTime, formatHashTag, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' - -// 产品商品元素 -interface PropGoods { - list: any[] - obj: { - sale_mode?: number | string - } - modeFont: number - clickReduce?: (item: any) => void - handPlus?: (item: any) => void - onBlur?: (e: any, item: any) => void -} -const GoodsItem = (porps: PropGoods) => { - const { list = [], obj = {} } = porps - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - - // const [value, setValue] = useState({ count: props.value.nums }) - - const onInputEven = (e, it) => { - const res = e.detail.value - if (porps.modeFont == 0) { - if (Number(res) < 1) { - // setValue({ count: '' }) - } - } - if (porps.modeFont == 1) { - if (Number(res) < 0) { - // setValue({ count: '' }) - } - } - if (porps.modeFont == 2) { - if (Number(res) < 0) { - // setValue({ count: '' }) - } - } - } - - const type = useMemo(() => { - if (porps.modeFont === 0) { - return 'number' - } - else { - return 'digit' - } - }, [porps.modeFont]) - - return ( - <> - { - list.map((item, index) => { - return ( - - {item.code}# {item.name} - - { - item.product_colors.map((it, inx) => { - return ( - - - - - {/* */} - - - {formatHashTag(it.code, it.name)} - ¥{formatPriceDiv(it.total_sale_price)} - {/* x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} */} - - - - ¥{formatPriceDiv(it.sale_price)}/{obj?.sale_mode === 1 ? 'm' : 'kg'} - {/* { - obj?.sale_mode === 0 && it?.sale_price !== it?.standard_sale_price && ¥{it?.standard_sale_price / 100}/{obj?.sale_mode === 1 ? 'm' : 'kg'} - } */} - - - { porps.clickReduce?.(it) }}> - - - - - onInputEven(e, it)} onBlur={e => porps.onBlur?.(e, it)}> - - { porps.handPlus?.(it) }}> - + - - - - - - ) - }) - } - - ) - }) - } - - - ) -} -export default memo(GoodsItem) diff --git a/src/pages/orderEdit/components/addressDetailBox/index.module.scss b/src/pages/orderEdit/components/addressDetailBox/index.module.scss deleted file mode 100644 index 5af4958..0000000 --- a/src/pages/orderEdit/components/addressDetailBox/index.module.scss +++ /dev/null @@ -1,144 +0,0 @@ -.addressBox { - margin-right: 24px; - // width: 702px; - min-height: 223px; - background: #ffffff; - border-radius: 16px; - margin-top: 24px; - margin-left: 24px; - - .topBox { - padding-top: 28px; - display: flex; - align-items: center; - - .cirle { - border-radius: 50%; - margin-left: 32px; - width: 64px; - height: 64px; - background: #4a7fff; - display: flex; - align-items: center; - justify-content: center; - - .dingwei { - color: #ffffff; - font-size: 26px; - } - } - - .address { - margin-left: 24px; - width: 461px; - height: 78px; - font-size: 28px; - font-weight: 500; - color: #000000; - margin-right: 41px; - display: flex; - align-items: center; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; /*这里设置几行*/ - overflow: hidden; - } - - .icon_more { - font-size: 50px; - } - } - - .line { - margin-top: 16px; - float: right; - margin-right: 32px; - width: 550px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .bottom { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 44px; - .reatName { - font-size: 28px; - font-weight: 500; - color: #337fff; - margin-right: 32px; - } - .leftbottom { - margin-left: 120px; - display: flex; - align-items: center; - .name { - line-height: 34px; - width: 84px; - height: 34px; - @include common_ellipsis(); - font-size: 28px; - font-weight: 400; - color: #343434; - margin-right: 16px; - } - - .phone { - height: 34px; - font-size: 28px; - font-weight: 400; - color: #343434; - // margin-right: 70px; - } - } - - .reatBox { - position: relative; - margin-right: 32px; - - .updateBtn { - width: 200px; - font-size: $font_size_min; - background-color: #f0f0f0; - height: 64px; - border-radius: 16px; - color: $color_font_two; - // position: absolute; - bottom: 10px; - // right: -10px; - text-align: center; - z-index: 999; - - .updateBtn_list { - position: absolute; - display: flex; - z-index: 5; - width: 100%; - - .updateBtn_item_select { - color: #fff; - } - } - - .updateBtn_item { - flex: 1; - text-align: center; - line-height: 64px; - } - - .updateBtn_select { - color: #fff; - background-color: $color_main; - border-radius: 16px; - position: absolute; - width: 100px; - height: 61px; - z-index: 1; - transition: all 0.3s ease-in-out; - } - } - } - } -} diff --git a/src/pages/orderEdit/components/addressDetailBox/index.tsx b/src/pages/orderEdit/components/addressDetailBox/index.tsx deleted file mode 100644 index 815e820..0000000 --- a/src/pages/orderEdit/components/addressDetailBox/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' -import { alert } from '@/common/common' - -interface propsObj { - receivingStatus: Number | null - onReceivingStatus?: (any, Number) => void - obj?: any - navSelect?: (any) => void - showBtn?: boolean - showWhatFont?: string -} -const AddressDetailBox = (props: propsObj) => { - const { - receivingStatus = null, - onReceivingStatus, - obj = {}, - navSelect, - showBtn = true, - showWhatFont = '', - } = props - - return ( - - navSelect?.(obj)}> - - - - { - receivingStatus == 1 && {obj.take_goods_address || '中华人民共和国广东省佛山市禅城区陆盈纺织仓库'} - } - { - (obj?.address_id != 0 && receivingStatus == 2) - && {obj?.province_name}{obj?.city_name}{obj?.district_name}{obj?.address_detail} - } - { - (obj?.address_id == 0 && receivingStatus == 2) - && - } - { - receivingStatus !== 1 - && - } - - - - - {receivingStatus === 1 ? '谭先生' : obj?.address_id == 0 ? '' : obj.target_user_name} - {receivingStatus === 1 ? 13242128982 : obj?.address_id == 0 ? '' : obj.purchaser_phone} - - { - showBtn && - - - onReceivingStatus?.(e, 1)}> - 自提 - - onReceivingStatus?.(e, 2)}> - 物流 - - - - - - } - { - !showBtn && {showWhatFont} - } - - - ) -} -export default memo(AddressDetailBox) diff --git a/src/pages/orderEdit/index.config.ts b/src/pages/orderEdit/index.config.ts deleted file mode 100644 index 3b15beb..0000000 --- a/src/pages/orderEdit/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '订单详情', - -} diff --git a/src/pages/orderEdit/index.module.scss b/src/pages/orderEdit/index.module.scss deleted file mode 100644 index 52dde0e..0000000 --- a/src/pages/orderEdit/index.module.scss +++ /dev/null @@ -1,212 +0,0 @@ -page { - background: #f7f7f7; -} - -.mainBox { - .pussBox { - margin-top: 24px; - display: flex; - align-items: center; - - .pussName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .pussPhone { - margin-left: 88px; - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - .addBtn { - margin: 24px; - width: 702px; - height: 82px; - background: #ffffff; - border-radius: 16px; - border: 1px solid #337fff; - font-size: 28px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 82px; - } - .total { - margin-top: 44px; - font-size: 24px; - font-weight: 400; - color: #000000; - margin-left: 32px; - margin-bottom: 8px; - } - - .productBox { - // width: 702px; - margin-right: 24px; - background: #ffffff; - border-radius: 16px; - margin-left: 24px; - padding-bottom: 36px; - overflow: hidden; - - .flexMoney { - display: flex; - margin-top: 32px; - align-items: center; - justify-content: space-between; - - .flexTotalBox { - display: flex; - align-items: center; - - .totalFont { - margin-left: 32px; - margin-right: 8px; - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .tishi { - font-size: 28px; - } - } - - .shoudPay { - font-size: 28px; - font-weight: 500; - color: #f64861; - margin-right: 32px; - } - } - } -} - -.defaltBox { - margin: 24px; - padding: 24px 32px 24px 24px; - background: #ffffff; - border-radius: 16px; - - .titleBox { - // margin-right: 24px; - // margin-left: 24px; - // width: 638px; - display: flex; - justify-content: space-between; - align-items: center; - - .title { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .modeName { - font-size: 28px; - font-weight: 500; - color: #337fff; - } - } - - .modeLine { - margin-top: 24px; - // width: 638px; - // margin-right: 24px; - // margin-left: 24px; - height: 1px; - background: #000000; - opacity: 0.1; - } -} - -.detailBox { - display: flex; - margin-top: 24px; - align-items: center; - justify-content: space-between; - - .detailRightFlex { - display: flex; - align-items: center; - - .detailRight { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .detailBtn { - margin-left: 16px; - width: 65px; - height: 32px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 24px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 32px; - } - } - - .detailFont { - font-size: 28px; - font-weight: 400; - color: #b8b8b8; - } -} - -.remarkFont { - margin-top: 24px; - font-size: 28px; - font-weight: 400; - color: #000000; -} - -.safeBottom { - height: 300px; -} - -.bottomBox { - display: flex; - align-items: center; - // width: 750px; - width: 100%; - height: 160px; - background: #ffffff; - position: fixed; - bottom: 0; - z-index: 10000; - padding-bottom: 24px; - .bottomBtn { - width: 702px; - margin-left: 24px; - margin-right: 24px; - font-size: 28px; - font-weight: 500; - color: #ffffff; - height: 80px; - background: #337fff; - border-radius: 44px; - text-align: center; - line-height: 80px; - } -} - -.order_save_address { - height: 82px; - background: #007aff; - border-radius: 40px; - // width: 668px; - text-align: center; - line-height: 82px; - color: #fff; - margin-top: 20px; - margin-left: 24px; - margin-right: 24px; - margin-bottom: 20px; -} diff --git a/src/pages/orderEdit/index.tsx b/src/pages/orderEdit/index.tsx deleted file mode 100644 index 744afe9..0000000 --- a/src/pages/orderEdit/index.tsx +++ /dev/null @@ -1,794 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { ReactNode } from 'react' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import AddressDetailBox from './components/addressDetailBox' -import GoodsItem from './components/GoodsItem' -import Remark from '@/components/textareaEnhance' -import Popup from '@/components/popup' -import { debounce } from '@/common/util' -import { - MpSaleOrder, - MpSaleOrderPut, - MpsaleOrderaddProductList, - MpsaleOrdersubmit, -} from '@/api/order' -import { alert, goLink } from '@/common/common' -import { formatDateTime, formatHashTag, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' -import { MpPurchaserAddressList } from '@/api/addressList' - -// 卡片盒子元素 -interface Obs { - title?: string - modeName?: string - showMode?: boolean - children?: ReactNode - clickNode?: () => void -} - -const DefaultBox = (props: Obs) => { - const { - title = '标题', - modeName = '大货', - showMode = false, - children, - clickNode, - } = props - - return ( - - - {title} - { - showMode && clickNode?.()}>{modeName} - } - - - {children} - - ) -} -const DefaultBoxWithMemo = memo(DefaultBox) - -const OrderDetails = () => { - const router = useRouter() - const addrssRef = useRef([]) - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - const { fetchData: addressFetch } = MpPurchaserAddressList() - let selectId = -1 - - // 收货方法,1:自提,2物流 - const [receivingStatus, setReceivingStatus] = useState(null) - // 切换自提或者物流 - const onReceivingStatus = debounce(async(e, value) => { - e.stopPropagation() - if (receivingStatus === value) { - alert.error('不能选择相同的方式') - return false - } - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - // 判断是否有默认地址 - if (value === 2 && addrssRef.current.length > 0 && !currPage.data?.addressObj) { - setInfoObj(val => ({ - ...val, - province_name: addrssRef.current[0]?.province_name, - address_id: addrssRef.current[0]?.id, - city_name: addrssRef.current[0]?.city_name, - address_detail: addrssRef.current[0]?.address_detail, - district_name: addrssRef.current[0]?.district_name, - target_user_name: addrssRef.current[0]?.name, - purchaser_phone: addrssRef.current[0]?.phone, - })) - } - // 没有默认地址提示进去选择地址 - if (value === 2 && !addrssRef.current.length && !infoObj?.address_id) { - alert.error('请选择地址') - } - setReceivingStatus(value) - Taro.hideLoading() - }, 300) - - // 获取客户地址 - // 获取地址 - const getAddress = async(id) => { - const result = await addressFetch({ purchaser_id: id }) - addrssRef.current = result?.data?.list.filter((item) => { return item.is_default }) - } - - const { fetchData: infoFetch } = MpSaleOrder() - const [infoObj, setInfoObj] = useState({}) - const [goodList, setgoodList] = useState([]) - // 获取订单详情 - const getDetail = async() => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - const res = await infoFetch({ id: router.params.orderId }) - setInfoObj(res.data) - res.data.product_list.forEach((item) => { - item.product_colors.map((it) => { - it.nums = res.data?.sale_mode == 0 ? it.roll : it.length / 100 - return it - }) - }) - setgoodList([...res.data.product_list]) - orderMsg.map((it) => { - if (it.leftTitle === '订单编号:') { - it.rightTitle = res.data.order_no - } - if (it.leftTitle === '创建时间:') { - it.rightTitle = formatDateTime(res.data.create_time) - } - if (it.leftTitle === '发货时间:') { - it.rightTitle = formatDateTime(res.data.delivery_time) - } - if (it.leftTitle === '业务员:') { - it.rightTitle = res.data.sale_user_name - } - }) - setOrderMsg([...orderMsg]) - setReceivingStatus(res.data.shipment_mode) - // 小程序提供的api,通知页面停止下拉刷新效果 - Taro.stopPullDownRefresh() - Taro.hideLoading() - getAddress(res.data?.purchaser_id) - } - - // 订单信息文字数组 - const [orderMsg, setOrderMsg] = useState([ - { - leftTitle: '订单编号:', - rightTitle: '------', - showBtn: true, - }, - { - leftTitle: '创建时间:', - rightTitle: '------', - }, - { - leftTitle: '发货时间:', - rightTitle: '------', - }, - { - leftTitle: '业务员:', - rightTitle: '------', - }, - ]) - - // 备注操作 - const [showDesc, setShowDesc] = useState(false) - const { fetchData: remarkFetch } = MpSaleOrderPut() - const getRemark = async() => { - const res = await remarkFetch({ remark: infoObj.remark, id: Number(router.params.orderId) }) - if (res.msg === 'success') { - Taro.showToast({ - title: '成功', - icon: 'success', - }) - setShowDesc(false) - getDetail() - } - } - - useEffect(() => { - getDetail() - }, []) - - // 面料修改获取金额列表接口 - const { fetchData: editFetch } = MpsaleOrderaddProductList() - - useDidShow(() => { - // getDetail() - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - // 获取选择回来的地址 - if (currPage.data?.addressObj) { - setInfoObj(val => ({ - ...val, - province_name: currPage.data?.addressObj?.province_name ? currPage.data?.addressObj?.province_name : '', - address_id: currPage.data?.addressObj?.id ? currPage.data?.addressObj?.id : '', - city_name: currPage.data?.addressObj?.city_name ? currPage.data?.addressObj?.city_name : '', - address_detail: currPage.data?.addressObj?.address_detail ? currPage.data?.addressObj?.address_detail : '', - district_name: currPage.data?.addressObj?.district_name ? currPage.data?.addressObj?.district_name : '', - target_user_name: currPage.data?.addressObj?.name ? currPage.data?.addressObj?.name : '', - purchaser_phone: currPage.data?.addressObj?.phone ? currPage.data?.addressObj?.phone : '', - })) - } - - selectId = currPage.data?.addressObj?.id - const obj = currPage?.data?.ids?.filter((item) => { return item == selectId }) - if (currPage?.data?.ids && obj.length === 0 && infoObj?.address_id == 0) { - setInfoObj(val => ({ - ...val, - province_name: '', - address_id: '', - city_name: '', - address_detail: '', - district_name: '', - target_user_name: '', - purchaser_phone: '', - })) - } - if (!currPage.data?.addressObj && infoObj?.address_id == 0) { - setReceivingStatus(1) - } - else { - setReceivingStatus(2) - } - // 获取选择回来的商品 - if (currPage.data?.selectGoodsList && currPage.data?.selectGoodsList.length > 0) { - for (let i = 0; i < currPage.data?.selectGoodsList.length; i++) { - let flag = true - for (let j = 0; j < goodList.length; j++) { - if (goodList[j].id === currPage.data?.selectGoodsList[i].id) { - flag = false - goodList[j].product_colors.push(...currPage.data?.selectGoodsList[i].product_colors) - } - } - if (flag) { goodList.push(currPage.data?.selectGoodsList[i]) } - } - handEditMoney(1) - } - }) - - const goodsObjRef = useRef() - useEffect(() => { - goodsObjRef.current = goodList - }, [goodList]) - - // 面料修改或者添加获取实时金额 - const handEditMoney = async(toastEnum) => { - let toastMsg = '' - if (toastEnum == 1) { - toastMsg = '添加商品成功' - } - else { - toastMsg = '修改商品成功' - } - Taro.showLoading({ - title: '请稍等...', - }) - const arr: any = [] - goodsObjRef.current.forEach((ec) => { - ec.product_colors.forEach((v) => { - const colorsArr: any[] = [] - colorsArr.push({ - product_color_id: v.id, - length: infoObj?.sale_mode == 0 ? 0 : Number(v.nums) * 100, - roll: infoObj?.sale_mode != 0 ? 0 : Number(v.nums), - sale_price: v.sale_price, - }) - arr.push({ - product_id: ec.id, - sale_mode: Number(infoObj?.sale_mode), - color_list: colorsArr, - }) - }) - }) - // 合并相同的数据 - const idArray: any[] = [] - const newAarray: any[] = [] - - arr.forEach((ele, i) => { - if (!idArray.includes(ele.product_id)) { - newAarray.push({ - product_id: ele.product_id, - name: ele.name, - sale_mode: Number(infoObj?.sale_mode), - color_list: ele.color_list, - }) - - idArray.push(ele.product_id) - } - else { - newAarray.map((dom, k) => { - if (dom.product_id == ele.product_id) { - dom.color_list = [...ele.color_list, ...dom.color_list] - } - }) - } - }) - - const res = await editFetch({ add_product_list_param: newAarray, sale_order_id: infoObj?.id }) - if (res.data) { - Taro.hideLoading() - Taro.showToast({ - title: toastMsg, - icon: 'none', - }) - goodList.map((item) => { - res.data.list?.map((v) => { - if (item.id == v.id) { - item.product_colors?.forEach((edg) => { - v.product_colors?.forEach((ac) => { - if (edg.id == ac.id) { - edg.sale_price = ac.sale_price - edg.total_sale_price = ac.total_sale_price - } - }) - }) - } - }) - return item - }) - setgoodList([...goodList]) - } - else { - Taro.hideLoading() - } - } - - // 页面下拉刷新 - usePullDownRefresh(() => { - getDetail() - }) - - // 选择地址 - const handSelect = (obj) => { - Taro.navigateTo({ - url: `/pages/addressManager/index?orderId=${-100}&purchaser_id=${obj.purchaser_id}`, - }) - } - - // 是否显示按钮 - const showBtn = useMemo(() => { - if ((infoObj.status === 8 || infoObj.status === 9 || infoObj.status === 4 || infoObj.status === 5 || infoObj.status === 11 || infoObj.status === 3)) { - return false - } - else { - return true - } - }, [infoObj]) - - const showWhatFont = useMemo(() => { - if (infoObj.shipment_mode === 1) { - return '自提商品' - } - else { - return '物流' - } - }, [infoObj]) - - const onChange = (e) => { - setInfoObj(val => ({ ...val, remark: e })) - } - - useEffect(() => { - setInfoObj(infoObj) - }, [infoObj]) - - const showRemarkFont = useMemo(() => { - if (infoObj.status === 10 || infoObj.status == 0 || infoObj.status == 1 || infoObj.status == 2 || infoObj.status == 7) { - return `${'填写/修改备注'} >` - } - else { - return '' - } - }, [infoObj]) - - // 待接单、配布中、已配布状态时,叫预估金额,其他状态叫合计金额。 - const payFont = useMemo(() => { - if (infoObj?.status === 0 || infoObj?.status === 1 || infoObj?.status === 2) { - return '预估金额' - } - else { - return '合计金额' - } - }, [infoObj]) - - // 复制功能 - const clipboardData = () => { - Taro.setClipboardData({ - data: infoObj?.order_no || '', - success(res) { - Taro.showToast({ - icon: 'none', - title: '复制成功', - }) - }, - }) - } - - // 判断是否整数类型 - function isInteger(obj) { - return (obj | 0) === obj - } - - // 删除面料的ids数组 - const [deleteProductIds, setdeleteProductIds] = useState([]) - - // 删除商品弹窗 - const handCancelToast = (item) => { - // const deletIds: any[] = [] - for (let i = 0; i < goodList?.length; i++) { - if (goodList.length === 1 && goodList[i].product_colors?.length === 1) { - return Taro.showToast({ - icon: 'none', - title: '至少保留一个面料', - }) - } - } - Taro.showModal({ - content: '删除所选商品?', - async success(res) { - if (res.confirm) { - // 删除某项商品 - goodList.forEach((edg) => { - edg?.product_colors.map((it, index) => { - if (item.id == it.id) { - deleteProductIds.push(item.id) - edg?.product_colors.splice(index, 1) - } - return it - }) - return edg - }) - // 子商品没有了大商品也删除 - goodList.forEach((edg, index) => { - if (!edg?.product_colors.length) { - goodList.splice(index, 1) - } - }) - setgoodList([...goodList]) - setdeleteProductIds([...deleteProductIds]) - } - else if (res.cancel) { - console.log('用户点击取消') - } - }, - }) - } - - // 输入框减 - const clickReduce = useCallback((item) => { - goodList.forEach((edg) => { - edg?.product_colors.map((it) => { - if (item.id == it.id) { - if (infoObj?.sale_mode == 0 && item.nums == 1) { - return handCancelToast(item) - } - if (infoObj?.sale_mode == 1 && item.nums == 0.3) { - return handCancelToast(item) - } - if (infoObj?.sale_mode == 2 && item.nums == 3) { - return handCancelToast(item) - } - if (isInteger(item.nums)) { - it.nums-- - handEditMoney(2) - } - else { - it.nums = Math.trunc(item.nums) - handEditMoney(2) - } - } - return it - }) - return edg - }) - setgoodList([...goodList]) - // if ((infoObj?.sale_mode == 0 && item.nums > 1) || (infoObj?.sale_mode == 1 && item.nums > 0.3) || (infoObj?.sale_mode == 2 && item.nums > 3)) { - // handEditMoney(2) - // } - }, [goodList]) - - // 输入框加 - const handPlus = useCallback((item) => { - goodList.forEach((edg) => { - edg?.product_colors.map((it) => { - if (item.id == it.id) { - if (isInteger(item.nums)) { - item.nums++ - } - else { - item.nums++ - item.nums = Math.trunc(item.nums) - } - } - return it - }) - return edg - }) - setgoodList([...goodList]) - handEditMoney(2) - }, [goodList]) - - // 输入框监听 - const onBlur = useCallback((e, item) => { - goodList.forEach((edg) => { - edg?.product_colors.map((it) => { - if (it.id == item.id) { - if (infoObj.sale_mode == 0 && (e.detail.value == '' || Number(e.detail.value) == 0)) { - it.nums = 1 - } - else if (infoObj.sale_mode == 0 && (e.detail.value != '' || Number(e.detail.value) > 0)) { - it.nums = Number(e.detail.value) - } - - if (infoObj.sale_mode == 1 && Number(e.detail.value) < 0.3) { - it.nums = 0.3 - } - else if (infoObj.sale_mode == 1 && Number(e.detail.value) >= 0.3) { - if (isInteger(Number(e.detail.value))) { - it.nums = Number(e.detail.value) - } - else { - it.nums = Number(e.detail.value).toFixed(2) - } - } - - if (infoObj.sale_mode == 2 && Number(e.detail.value) < 3) { - it.nums = 3 - } - else if (infoObj.sale_mode == 2 && Number(e.detail.value) >= 3) { - if (isInteger(Number(e.detail.value))) { - it.nums = Number(e.detail.value) - } - else { - it.nums = Number(e.detail.value).toFixed(2) - } - } - } - return it - }) - return edg - }) - setgoodList([...goodList]) - handEditMoney(2) - }, [goodList]) - - // 添加面料 - const navTo = () => { - const arr = JSON.stringify(goodList).replace(/%/g, '%25') - Taro.navigateTo({ - url: `/pages/addFabric/index?goodList=${arr}&purchaser_id=${infoObj?.purchaser_id}&sale_mode=${infoObj?.sale_mode}`, - }) - } - - const { fetchData: submitFetch } = MpsaleOrdersubmit() - // 提交修改 - const handSubmit = () => { - if ((infoObj?.address_id == 0 || !infoObj?.address_id) && receivingStatus == 2) { - return Taro.showToast( - { - title: '请选择收货地址', - icon: 'error', - }, - ) - } - const quertArr: any[] = [] - - goodList.forEach((item) => { - item.product_colors?.forEach((edc) => { - quertArr.push({ - length: infoObj?.sale_mode != 0 ? edc.nums * 100 : 0, - product_color_id: edc.id, - product_id: item.id, - roll: infoObj?.sale_mode == 0 ? edc.nums : 0, - // sale_order_detail_id: edc.sale_order_detail_id ? edc.sale_order_detail_id : 0, - }) - }) - }) - - const query = { - address_id: infoObj?.address_id, - commodity_list: quertArr, - delete_detail_list: filterArr(deleteProductIds), - remark: infoObj?.remark, - sale_order_id: infoObj?.id, - shipment_mode: receivingStatus, - } - console.log(query, 'quertArrquertArr') - Taro.showModal({ - content: '是否确认提交修改', - async success(res) { - if (res.confirm) { - Taro.showLoading({ - title: '加载中...', - }) - const res = await submitFetch(query) - if (res.data) { - Taro.hideLoading() - Taro.redirectTo({ - url: `/pages/orderDetails/index?id=${res.data.id}`, - }) - } - else { - Taro.showToast({ - title: res.data.msg, - icon: 'none', - }) - Taro.hideLoading() - } - } - else if (res.cancel) { - console.log('用户点击取消') - } - }, - }) - } - - // 数组去重 - const filterArr = (arr) => { - const newArr: any[] = [] - // 控制外循环 - for (let i = 0; i < arr.length; i++) { - for (let j = i + 1; j < arr.length; j++) { - if (arr[i] == arr[j]) { - arr[j] = 0 - } - } - // 去除值为0的 - if (arr[i] == 0) { - continue - } - else { - // 放入新的数组 - newArr.push(arr[i]) - } - } - return newArr - } - - // 计算预估金额 - const totalMoney = useMemo(() => { - const arr: any = [] - goodList.forEach((item) => { - item.product_colors.forEach((it) => { - arr.push(Number(it.total_sale_price)) - }) - }) - const hate = sum(arr) - return hate - }, [goodList]) - - // 计算总面料 - const totalProduct = useMemo(() => { - const arr: any = [] - goodList.forEach((item) => { - arr.push(item) - }) - return arr.length - }, [goodList]) - - // 计算总颜色 - const totalColors = useMemo(() => { - const arr: any = [] - goodList.forEach((item) => { - item.product_colors.forEach((it) => { - arr.push(it) - }) - }) - return arr.length - }, [goodList]) - - // 计算总颜色数量 - const totalColorsNums = useMemo(() => { - const arr: any = [] - goodList.forEach((item) => { - item.product_colors.forEach((it) => { - arr.push(Number(it.nums)) - }) - }) - const hate = sum(arr) - return hate - }, [goodList]) - - function sum(arr) { - let s = 0 - for (let i = arr.length - 1; i >= 0; i--) { - s += arr[i] - } - return s - } - - return ( - - handSelect(obj)} - obj={infoObj} - receivingStatus={receivingStatus} - onReceivingStatus={(e, value) => onReceivingStatus(e, value)} - > - - - {infoObj.purchaser_name} - {infoObj.purchaser_phone} - - - navTo()}>添加面料 - {totalProduct} 种面料,{totalColors} 个颜色,共 {totalColorsNums} {infoObj.sale_mode === 0 ? '条' : 'm'} - - clickReduce(it)} - handPlus={it => handPlus(it)} - onBlur={(e, it) => onBlur(e, it)} - modeFont={infoObj?.sale_mode} - > - - - {payFont} - - ¥{formatPriceDiv(totalMoney)} - - {/* - - 实付金额 - - ¥{formatPriceDiv(infoObj.actual_amount)} - */} - { - infoObj?.wait_pay_amount < 0 && - - {infoObj?.wait_pay_amount?.toString().indexOf('-') !== -1 ? '退款金额' : '待付金额'} - - ¥{formatPriceDiv(infoObj.wait_pay_amount)} - - } - { - infoObj?.wait_pay_amount > 0 && - - {infoObj?.wait_pay_amount?.toString().indexOf('-') !== -1 ? '退款金额' : '待付金额'} - - ¥{formatPriceDiv(infoObj.wait_pay_amount)} - - } - - - - { - orderMsg.map((item, index) => { - return ( - - - {item.leftTitle} - - - {item.rightTitle} - {item.showBtn && clipboardData()}>复制} - - - - ) - }) - } - - - setShowDesc(showRemarkFont != '')}> - {infoObj.remark === '' ? '暂无' : infoObj.remark} - - - setShowDesc(false)}> - - getRemark(e)} - onChange={e => onChange(e)} - defaultValue={infoObj.remark} - /> - getRemark()}>保存 - - - - - - handSubmit()}>提交修改 - - - ) -} -export default OrderDetails diff --git a/src/pages/orderWarningAnalysis/components/SelectProcessingStatus/index.module.scss b/src/pages/orderWarningAnalysis/components/SelectProcessingStatus/index.module.scss deleted file mode 100644 index a1cb97d..0000000 --- a/src/pages/orderWarningAnalysis/components/SelectProcessingStatus/index.module.scss +++ /dev/null @@ -1,6 +0,0 @@ -.grid { - padding: 24px 40px; - display: grid; - grid-gap: 24px 24px; - grid-template-columns: 1fr 1fr 1fr; -} diff --git a/src/pages/orderWarningAnalysis/components/SelectProcessingStatus/index.tsx b/src/pages/orderWarningAnalysis/components/SelectProcessingStatus/index.tsx deleted file mode 100644 index 5b3b77e..0000000 --- a/src/pages/orderWarningAnalysis/components/SelectProcessingStatus/index.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { View } from '@tarojs/components' -import { FC, forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import { EnumMarketingDepartmentApi } from '@/api/index' -import DropDownItem from '@/components/dropDown-item' -import FilterButton from '@/components/filterButton' - -type ChangedValue = string | number - -interface SelectSaleTypeProps { - onChange?: (value: ChangedValue) => void - onCloseOverlay?: () => void -} - -interface EnumList { - id: number - code: string - name: string -} -const manual = [ - { id: 1, code: '0', name: '进行中' }, - { id: 2, code: '1', name: '有异常' }, - { id: 3, code: '2', name: '已完成' }, - { id: 4, code: '2', name: '已取消' }, - { id: 5, code: '2', name: '超时完成' }, -] -// 处理状态 -const SelectProcessingStatus = (props: SelectSaleTypeProps, ref) => { - const selectName = '处理状态' - - const { onChange, onCloseOverlay } = props - console.log(props) - const { fetchData } = EnumMarketingDepartmentApi() - - const [enumList, setEnumList] = useState([]) - - const getData = async() => { - const res = await fetchData() - setEnumList([{ id: -1, code: '', name: '全部' }, ...manual]) - } - - useEffect(() => { - getData() - }, []) - - const [currentValue, setCurrentValue] = useState(-1) - - const handleClick = (value: ChangedValue) => { - setCurrentValue(value) - onChange?.(value) - } - const dropDownRef = useRef(null) - - useImperativeHandle( - ref, - () => { - return { - show: dropDownRef.current.show, - showPopup: dropDownRef.current.showPopup, - closePopup: dropDownRef.current.closePopup, - } - }, - [dropDownRef.current], - ) - - const displayTitle = useMemo(() => { - if (currentValue === -1) { - return selectName - } - return enumList.length ? enumList.filter(option => option.id === currentValue)?.[0]?.name : selectName - }, [enumList, currentValue]) - - return ( - - - {!!enumList.length - && enumList.map((item: EnumList, key) => { - return ( - handleClick(item.id)}> - {item.name} - - ) - })} - - - ) -} -export default memo(forwardRef(SelectProcessingStatus)) diff --git a/src/pages/orderWarningAnalysis/components/orderItem/index.module.scss b/src/pages/orderWarningAnalysis/components/orderItem/index.module.scss deleted file mode 100644 index 30bcfa4..0000000 --- a/src/pages/orderWarningAnalysis/components/orderItem/index.module.scss +++ /dev/null @@ -1,56 +0,0 @@ -.totalSummary { - margin-bottom: 20px; -} -.gray{ - filter: grayscale(1); -} -.name { - color: #9b9b9b; - margin-right: 20px; - font-size: 28px; -} -.number { - color: #9b9b9b; - margin-right: 20px; - font-size: 28px; -} -.address { - color: #9b9b9b; - font-size: 28px; - margin-right: 20px; -} -.tag { - padding: 0 5px; - margin-right: 10px; -} -.title { - font-size: 28px; - font-weight: 500; -} -.status { - font-size: 28px; -} -.waiting { - background-color: #e1efff; - border-color: #e1efff; -} -.pending { - background-color: #a91832; - border-color: #a91832; -} -.fail { - background-color: #e23855; - border-color: #e23855; -} -.success { - background-color: #337fff; - border-color: #337fff; -} -.cancel { - color: #9d9d9d; - background-color: #dedede; - border-color: #dedede; -} -.cancelColor { - color: #9d9d9d; -} diff --git a/src/pages/orderWarningAnalysis/components/orderItem/index.tsx b/src/pages/orderWarningAnalysis/components/orderItem/index.tsx deleted file mode 100644 index 5b6d276..0000000 --- a/src/pages/orderWarningAnalysis/components/orderItem/index.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { Text, View } from '@tarojs/components' -import classnames from 'classnames' -import { useMemo } from 'react' -import StatusLine, { IStatusType } from '../statusLine' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import Divider from '@/components/Divider' -import Tag from '@/components/tag' -import IconFont from '@/components/iconfont/iconfont' -import { goLink } from '@/common/common' - -const defaultStatusLine = [ - { - id: 1, - order_warning_process: 1, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '开始', - }, - { - id: 2, - order_warning_process: 2, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '接单', - }, - { - id: 3, - order_warning_process: 3, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '配布', - }, - { - id: 4, - children: [ - { - id: 5, - order_warning_process: 4, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '提货', - }, - { - id: 6, - order_warning_process: 5, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '收款', - }, - ], - }, - { - id: 7, - order_warning_process: 6, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '出仓', - }, - { - id: 8, - order_warning_process: 7, - colorClassName: IStatusType.WAITING, - type: IStatusType.WAITING, - typeName: '收货', - }, -] - -interface IProps { - data: any -} - -const typeStyles = { - 已完成: styles.success, - 有异常: styles.pending, - 超时完成: styles.fail, - 已取消: styles.cancel, -} - -const OrderItem = (props: IProps) => { - const { data } = props - const handleClickDetail = () => { - goLink('/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index', { - id: data.sale_order_id, - }) - } - - const dispenseStatus = (item: any, baseData: any) => { - if (baseData.handle_status_name === '已取消') { - return IStatusType.CANCAL - } - // 已处理 未超时 就是已完成 - if (item.is_handle && !item.is_timeout) { - return IStatusType.SUCCESS - } - else if (item.is_handle && item.is_timeout) { // 超时 已处理 就是超时完成 - return IStatusType.FAIL - } - else if (!item.is_handle && item.is_timeout) { // 超时 未处理 就是进行中异常 - return IStatusType.PENDING - } - else { - return IStatusType.WAITING - } - } - - const statusLine = useMemo(() => { - const temp = JSON.parse(JSON.stringify(defaultStatusLine)) - return temp.map((item) => { - if (item.children && item.children.length > 0) { - item.children = item.children.map((subItem) => { - let index = data?.order_process?.findIndex(i => i.order_warning_process === subItem.order_warning_process) - index = index == null ? -1 : index - if (index !== -1) { - const target = data?.order_process[index] - return { - id: subItem.id, - order_warning_process: target.order_warning_process, - colorClassName: dispenseStatus(target, data), - type: dispenseStatus(target, data), - typeName: target.order_warning_process_name, - } - } - else { - return subItem - } - }) - return item - } - else { - let index = data?.order_process?.findIndex(i => i.order_warning_process === item.order_warning_process) - index = index == null ? -1 : index - if (index !== -1) { - const target = data?.order_process[index] - return { - id: item.id, - order_warning_process: target.order_warning_process, - colorClassName: dispenseStatus(target, data), - type: dispenseStatus(target, data), - typeName: target.order_warning_process_name, - } - } - else { - return item - } - } - }) - }, [data]) - - const colorGray = () => { - return data?.handle_status_name === '已取消' ? styles.cancelColor : null - } - - return - - - {data?.handle_status_name} - 单号:{data?.sale_order_no} - - {data?.handle_status_name === '已取消' ? '取消' : data?.order_process?.[data?.order_process.length - 1]?.order_warning_process_name} - - - - - {data?.sale_user_name} - {data?.roll_or_length} - {data?.address} - - - - - -} -export default OrderItem diff --git a/src/pages/orderWarningAnalysis/components/statusLine/index.module.scss b/src/pages/orderWarningAnalysis/components/statusLine/index.module.scss deleted file mode 100644 index c9f44f2..0000000 --- a/src/pages/orderWarningAnalysis/components/statusLine/index.module.scss +++ /dev/null @@ -1,61 +0,0 @@ -.process { - width: 100%; - display: flex; - > .block { - &:first-child { - border-top-left-radius: 12px; - border-bottom-left-radius: 12px; - } - &:last-child { - border-top-right-radius: 12px; - border-bottom-right-radius: 12px; - } - } - .block { - flex: 1; - background-color: #e1efff; - height: 30px; - border-right: 1px solid white; - position: relative; - } - .waiting { - background-color: #e1efff; - } - .pending { - background-color: #a91832; - } - .fail { - background-color: #e23855; - } - .success { - background-color: #337fff; - } - .cancel { - background-color: #dedede; - } - - .col { - display: flex; - flex-direction: column; - } - .subBlock { - height: 15px; - border-right: unset; - border-bottom: 1px solid white; - &:last-child { - border-bottom: unset; - } - } - .text { - position: absolute; - bottom: -40px; - left: 0; - right: 0; - text-align: center; - font-size: 24px; - color: #000; - } - .text1 { - bottom: 25px; - } -} diff --git a/src/pages/orderWarningAnalysis/components/statusLine/index.tsx b/src/pages/orderWarningAnalysis/components/statusLine/index.tsx deleted file mode 100644 index 26f85fa..0000000 --- a/src/pages/orderWarningAnalysis/components/statusLine/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { Text, View } from '@tarojs/components' -import classNames from 'classnames' -import React from 'react' -import styles from './index.module.scss' - -export enum IStatusType { - PENDING = 'pending', - WAITING = 'waiting', - SUCCESS = 'success', - FAIL = 'fail', - CANCAL = 'cancal', -} - -interface statusList { - id: number - colorClassName?: IStatusType - type?: IStatusType - typeName?: string - children?: statusList[] - showText?: boolean -} - -interface StatusLineProps { - showStatusText?: boolean - line: statusList[] -} - -const StatusLine = (props: StatusLineProps) => { - const { line } = props - return - { - line.map((item) => { - if (item.children && item.children.length > 0) { - return - { - item.children.map((subItem, index) => { - return - { - subItem.showText && {subItem.typeName} - } - - }) - } - - } - else { - return - { - item.showText && {item.typeName} - } - - } - }) - } - -} -export default StatusLine diff --git a/src/pages/orderWarningAnalysis/components/steps/components/step/index.tsx b/src/pages/orderWarningAnalysis/components/steps/components/step/index.tsx deleted file mode 100644 index f1b53a8..0000000 --- a/src/pages/orderWarningAnalysis/components/steps/components/step/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { View } from '@tarojs/components' -import classnames from 'classnames' -import type { FC } from 'react' -import '../../index.scss' - -export type StepStatus = 'wait' | 'process' | 'finish' | 'error' -export interface StepProps { - title?: React.ReactNode - description?: React.ReactNode - icon?: React.ReactNode - status?: 'wait' | 'process' | 'finish' | 'error' -} - -const Step: FC = (props) => { - const { - title, - description, - icon, - status = 'wait', - } = props - console.log('status==>', status) - return - - {icon || } - - - - {title} - {!!description && {description}} - - -} -export default Step diff --git a/src/pages/orderWarningAnalysis/components/steps/index.scss b/src/pages/orderWarningAnalysis/components/steps/index.scss deleted file mode 100644 index cda09c3..0000000 --- a/src/pages/orderWarningAnalysis/components/steps/index.scss +++ /dev/null @@ -1,200 +0,0 @@ -@import '../../../../styles/common.scss'; -$icon-size: 30px; -$icon-color: #e5e5e5; -$line-to-next-color: #e5e5e5; - -.step { - .step-indicator { - position: relative; - .step-connection { - position: absolute; - z-index: 0; - background-color: #e5e5e5; - } - .step-icon-container { - position: absolute; - z-index: 1; - background: white; - } - } - - &:last-child { - .step-indicator .step-connection { - display: none; - } - } - &-status-finish { - .step-icon-container { - color: $color_main; - } - .step-title { - // color: $color_main; - } - .step-indicator .step-connection { - background-color: $color_main !important; - } - } - - &-status-wait { - .step-icon-container { - color: #e5e5e5; - } - .step-title { - // color: #999; - } - .step-connection { - background-color: #999 !important; - } - } - &-status-process { - .step-icon-container { - color: #810000; - } - .step-title { - // color: #810000; - } - .step-indicator .step-connection { - background-color: #810000 !important; - } - } - &-status-finish { - .step-icon-container { - color: $color_main; - } - .step-indicator .step-connection { - background-color: $color_main !important; - } - } - &-status-error { - .step-icon-container { - color: $color_danger; - } - .step-title { - // color: $color_danger; - } - .step-indicator .step-connection { - background-color: $color_danger !important; - } - } -} - -.steps { - $title-font-size: 28px; - $description-font-size: 24px; - $indicator-margin-right: 0; - - width: 100%; - box-sizing: border-box; - - &-horizontal { - display: flex; - justify-content: space-around; - padding: 16px 0; - - .step { - flex: 1; - - .step-indicator { - width: 100%; - height: 48px; - .step-connection { - left: 50%; - top: 50%; - height: 1px; - transform: translateY(-50%); - width: 100%; - } - .step-icon-container { - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - } - } - } - - .step-content { - text-align: center; - font-size: $description-font-size; - padding: 4px 16px 0; - .step-title { - font-size: $title-font-size; - } - .step-description { - margin-top: 8px; - color: #999; - } - } - } - - &-vertical { - padding: 16px 32px; - - .step { - display: flex; - align-items: stretch; - - .step-indicator { - flex: none; - width: 48px; - margin-right: $indicator-margin-right; - - .step-connection { - left: 50%; - top: calc($title-font-size * 1.5 / 2); - width: 1px; - transform: translateX(-50%); - height: 100%; - } - .step-icon-container { - top: calc($title-font-size * 1.5 / 2); - left: 50%; - transform: translate(-50%, -50%); - } - } - - &:last-child { - .step-content { - padding-bottom: 0; - } - } - .step-content { - flex: auto; - padding-bottom: 48px; - .step-title { - font-size: $title-font-size; - line-height: 1.5; - } - .step-description { - padding-top: 8px; - font-size: $description-font-size; - // color: #999; - } - } - } - } -} - -.step-icon-container { - font-size: $icon-size; -} - -.step-icon-dot { - display: block; - width: 16px; - height: 16px; - background: currentColor; - border-radius: 8px; - position: relative; - &::after{ - content: ''; - display: block; - width: 8px; - height: 8px; - background: white; - border-radius: 4px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } -} diff --git a/src/pages/orderWarningAnalysis/components/steps/index.tsx b/src/pages/orderWarningAnalysis/components/steps/index.tsx deleted file mode 100644 index d773cf5..0000000 --- a/src/pages/orderWarningAnalysis/components/steps/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { View } from '@tarojs/components' -import React from 'react' -import classNames from 'classnames' -import './index.scss' -import type { StepProps } from './components/step' - -/** - * 用法 - * - * - * - * - * - * - */ - -interface StepsProps { - current?: number - direction?: 'horizontal' | 'vertical' - children: React.ReactNode - customClassName?: string - customStyle?: React.CSSProperties -} -// 步骤条 -const Steps = (props: StepsProps) => { - const { - current = 0, - direction = 'horizontal', - children, - customClassName, - customStyle, - } = props - - return - { - React.Children.map(children, (child, index) => { - console.log('child', child) - if (!React.isValidElement(child)) { - return child - } - const props = child.props as StepProps - - // eslint-disable-next-line react/prop-types - let status = props.status || 'wait' - - if (index < current) { - // eslint-disable-next-line react/prop-types - status = props.status || 'finish' - } - else if (index === current) { - // eslint-disable-next-line react/prop-types - status = props.status || 'process' - } - console.log('status==>', status) - return React.cloneElement(child, { - // @ts-expect-error 无法推断 - status, - }) - }) - } - -} -export default Steps diff --git a/src/pages/orderWarningAnalysis/index.config.ts b/src/pages/orderWarningAnalysis/index.config.ts deleted file mode 100644 index a2acf78..0000000 --- a/src/pages/orderWarningAnalysis/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '订单预警分析', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', -} diff --git a/src/pages/orderWarningAnalysis/index.module.scss b/src/pages/orderWarningAnalysis/index.module.scss deleted file mode 100644 index a954ccc..0000000 --- a/src/pages/orderWarningAnalysis/index.module.scss +++ /dev/null @@ -1,106 +0,0 @@ -page { - height: 100vh; - overflow: hidden; -} -.main { - display: flex; - flex-flow: column nowrap; - height: 100%; - overflow: hidden; - .topBox { - width: 100%; - position: sticky; - top: 0; - z-index: 999; - background: #fff; - .search_input { - padding-top: 8px; - margin-left: 24px; - margin-right: 24px; - margin-bottom: 10px; - } - - .menuBox { - width: 100%; - display: flex; - flex: 1; - } - } - .totalFont { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - box-sizing: border-box; - text-align: center; - padding: 12px 24px; - font-size: 26px; - color: #aeaeae; - } -} - -.statusDialog { - background: linear-gradient(180deg, #e9f1ff 0%, #ffffff 100%); - overflow: hidden; - border-radius: 12px; - width: 75vw; - padding: 20px; - .title { - text-align: center; - padding: 20px 0; - font-weight: 500; - font-size: 28px; - } - .statusLine { - display: flex; - flex-flow: row nowrap; - align-items: center; - background-color: #ffffff; - padding: 10px; - border-radius: 12px; - margin-bottom: 20px; - height: 130px; - } - .explanation { - display: flex; - flex-flow: row wrap; - padding: 20px; - &_status { - width: 100px; - border-radius: 50px; - height: 30px; - margin-right: 20px; - } - &_block { - display: flex; - width: 50%; - } - &_text { - font-size: 24px; - color: #000; - margin-bottom: 20px; - flex-shrink: 0; - } - &_success { - background-color: #337fff; - } - &_fail { - background-color: #e23855; - } - &_pending { - background-color: #a91832; - } - &_waiting { - border: 2px solid white; - box-sizing: border-box; - background-color: #e1efff; - } - &_cancel { - background-color: #adadad; - } - } -} -.order_list { - flex: 1 1 auto; - overflow: hidden; - background: #f7f7f7; -} diff --git a/src/pages/orderWarningAnalysis/index.tsx b/src/pages/orderWarningAnalysis/index.tsx deleted file mode 100644 index d39a34b..0000000 --- a/src/pages/orderWarningAnalysis/index.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import { Text, View } from '@tarojs/components' -import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import dayjs from 'dayjs' -import classnames from 'classnames' -import styles from './index.module.scss' -import OrderItem from './components/orderItem' -import SelectProcessingStatus from './components/SelectProcessingStatus' -import StatusLine, { IStatusType } from './components/statusLine' -import SelectGroup from '@/components/SelectGroup' -import InfiniteScroll from '@/components/infiniteScroll' -import type { ChangedValue } from '@/components/SelectTimePicker' -import SelectTimePicker from '@/components/SelectTimePicker' -import SelectSaleType from '@/components/SelectSaleType' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import { ClientListApi } from '@/api/order' -import IconText from '@/components/iconText' -import Dialog from '@/components/Dialog' -import NormalButton from '@/components/normalButton' -import { GetOrderEarlyWarningListApi } from '@/api/orderWarning' -import SelectOrderType from '@/components/SelectOrderType' -import { alert } from '@/common/common' - -const FilterTimeOptions = { - 1: { - name: '今天', - date_min: `${dayjs(new Date()) - .add(-1, 'day') - .format('YYYY-MM-DD')} 19:00:00`, - date_max: `${dayjs(new Date()) - .format('YYYY-MM-DD')} 19:00:00`, - }, - 2: { - name: '昨日', - date_min: `${dayjs(new Date()) - .add(-2, 'day') - .format('YYYY-MM-DD')} 19:00:00`, - date_max: `${dayjs(new Date()) - .add(-1, 'day') - .format('YYYY-MM-DD')} 19:00:00`, - }, - // 2: { - // name: '近7日', - // date_min: `${dayjs(new Date()) - // .add(-7, 'day') - // .format('YYYY-MM-DD')} 00:00:00`, - // date_max: `${dayjs(new Date()) - // .add(0, 'day') - // .format('YYYY-MM-DD')} 00:00:00`, - // }, - // 3: { - // name: '近30日', - // date_min: `${dayjs(new Date()) - // .add(-30, 'day') - // .format('YYYY-MM-DD')} 00:00:00`, - // date_max: `${dayjs(new Date()) - // .add(0, 'day') - // .format('YYYY-MM-DD')} 00:00:00`, - // }, - // 4: { - // name: '近90日', - // date_min: `${dayjs(new Date()) - // .add(-90, 'day') - // .format('YYYY-MM-DD')} 00:00:00`, - // date_max: `${dayjs(new Date()) - // .add(0, 'day') - // .format('YYYY-MM-DD')} 00:00:00`, - // }, -} - -const statusLine = [ - { - id: 1, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '开始', - showText: true, - }, - { - id: 2, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '接单', - showText: true, - }, - { - id: 3, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '配布', - showText: true, - }, - { - id: 4, - children: [ - { - id: 5, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '提货', - showText: true, - }, - { - id: 6, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '收款', - showText: true, - }, - ], - }, - - { - id: 7, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '出仓', - showText: true, - }, - { - id: 8, - colorClassName: IStatusType.SUCCESS, - type: IStatusType.SUCCESS, - typeName: '收货', - showText: true, - }, -] - -interface ISearchField { - order_start_time: string - order_end_time: number | string - sale_mode: string - handle_status: string -} - -// 订单预警分析 -const OrderWarningAnalysis = () => { - const { fetchData, state } = GetOrderEarlyWarningListApi() - - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getData = async() => { - const res = await fetchData(getFilterData(searchField)) - setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(false) - } - - const [searchField, setSearchField] = useState({ - order_start_time: FilterTimeOptions[1].date_min, - order_end_time: FilterTimeOptions[1].date_max, - sale_mode: '', - handle_status: '', - }) - - const onChangeOrderType = (value) => { - setSearchField((e: ISearchField) => ({ - ...e, - sale_mode: value === -1 ? '' : value, - })) - } - const limit = 1 - const onChangeTimePicker = useCallback((value: ChangedValue) => { - console.log('value', value) - let [date_min, date_max] = value - date_min = dayjs(date_min).subtract(1).format('YYYY-MM-DD 19:00:00') - date_max = dayjs(date_max).format('YYYY-MM-DD 19:00:00') - const diff = dayjs(date_max).diff(dayjs(date_min), 'days') - console.log('diff', diff) - if (diff > limit) { - return alert.none('日期范围不能超过1天') - } - setSearchField((e: ISearchField) => ({ - ...e, - order_start_time: date_min, - order_end_time: date_max, - })) - }, []) - const onChangeStatus = (value) => { - setSearchField((e: ISearchField) => ({ - ...e, - handle_status: value === -1 ? '' : value, - })) - } - - const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: orderData.list, total: orderData.list.length, status: state.loading! }) - }, [orderData, state]) - - // const pageNum = useRef({ size: searchField.size, page: searchField.page }) - // const getScrollToLower = useCallback(() => { - // if (orderData.list.length < orderData.total) { - // pageNum.current.page++ - // const size = pageNum.current.size * pageNum.current.page - // setSearchField({ ...searchField, size }) - // } - // }, [orderData]) - const getRefresherRefresh = async() => { - // pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val })) - } - - // 监听筛选条件变化 - useEffect(() => { - getData() - }, [searchField]) - - const [showDialog, setShowDialog] = useState(false) - - const handleShowTips = (bool) => { - setShowDialog(bool) - } - - const handleConfirm = () => { - setShowDialog(false) - } - - const selectTimePickerRef = useRef(null) - const selectProcessingStatusRef = useRef(null) - const selectOrderTypeRef = useRef(null) - return - - - - true}> - true}> - true} timeOptions={FilterTimeOptions}> - - - - - - - - 共 {orderData?.total || 0} 单 - - - - {orderData?.list?.map((item, index) => { - return ( - - ) - })} - - - - - 进度条信息 - - - - - - - 待进行 - - - - 正常进行 - - - - 超时完成 - - - - 进行中异常 - - - - 已取消 - - - 确认 - - - -} -export default OrderWarningAnalysis diff --git a/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.config.ts b/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.config.ts deleted file mode 100644 index 772a8f5..0000000 --- a/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '分析详情', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', -} diff --git a/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.module.scss b/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.module.scss deleted file mode 100644 index 02de6c5..0000000 --- a/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.module.scss +++ /dev/null @@ -1,91 +0,0 @@ -page { - height: 100vh; - overflow: hidden; -} -.successBackground { - background: url('https://cdn.zzfzyc.com/orderWarningAnalysis/success.png'); - background-size: contain; - background-repeat: no-repeat; -} -.failBackground { - background-image: url('https://cdn.zzfzyc.com/orderWarningAnalysis/fail.png'); - background-size: contain; - background-repeat: no-repeat; -} -.pendingBackground { - background: url('https://cdn.zzfzyc.com/orderWarningAnalysis/pending.png'); - background-size: contain; - background-repeat: no-repeat; -} -.cancelBackground { - background: url('https://cdn.zzfzyc.com/orderWarningAnalysis/cancel.png'); - background-size: contain; - background-repeat: no-repeat; -} -.status { - position: absolute; - top: 0; - left: 0; - width: 100%; - display: flex; - flex-flow: row nowrap; - box-sizing: border-box; - padding: 40px 32px; - height: 257px; - z-index: -1; - .statusLeft { - width: 50%; - } - .statusTitle { - display: flex; - flex-flow: row nowrap; - align-items: center; - .statusName { - margin-left: 10px; - font-size: 40px; - } - .failName { - color: #e5576f; - } - .passName { - color: #393b3d; - } - .pendingName { - color: #ab1d37; - } - .cancelName { - color: #8c8c8c; - } - } - .price { - color: #757172; - font-size: 26px; - margin-top: 16px; - } -} -.main { - display: flex; - flex-flow: column nowrap; - height: 100%; - overflow: scroll; - .step_outside { - padding-left: 0; - } - .step_inside { - padding-left: 0; - } - .timeout { - color: #e5576f; - font-weight: 500; - } - .step-title { - display: flex; - flex-flow: row nowrap; - font-size: 28px; - align-items: center; - } - .step-status { - font-weight: 550; - margin-right: 40px; - } -} diff --git a/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.tsx b/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.tsx deleted file mode 100644 index 36dd9c8..0000000 --- a/src/pages/orderWarningAnalysis/orderWarningAnalysisDetail/index.tsx +++ /dev/null @@ -1,296 +0,0 @@ -import { Text, View } from '@tarojs/components' -import { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import { useMemo, useState } from 'react' -import classNames from 'classnames' -import Steps from '../components/steps' -import type { StepStatus } from '../components/steps/components/step' -import Step from '../components/steps/components/step' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' -import LayoutBlock from '@/components/layoutBlock' -import { alert, goLink, handleTimeout } from '@/common/common' -import Divider from '@/components/Divider' -import Cell from '@/components/cell' -import { formatDateTime } from '@/common/format' -import { GetOrderEarlyWarningListApi } from '@/api/orderWarning' - -interface NotificationProps{ - baseData?: any -} -const StatusHeader = (props: NotificationProps) => { - const { baseData } = props - - const statusStyles = useMemo(() => { - const res = { - background: '', - textColor: '', - icon: null as React.ReactNode, - } - if (baseData.handle_status_name === '有异常') { - res.background = styles.pendingBackground - res.textColor = styles.pendingName - res.icon = - } - else if (baseData.handle_status_name === '已完成' || baseData.handle_status_name === '进行中') { - res.background = styles.successBackground - res.textColor = styles.passName - res.icon = - } - else if (baseData.handle_status_name === '超时完成') { - res.background = styles.failBackground - res.textColor = styles.failName - res.icon = - } - else { - res.background = styles.cancelBackground - res.textColor = styles.cancelName - res.icon = - } - return res - }, [baseData]) - const totalTime = useMemo(() => { - const totalMins = baseData?.order_process?.reduce((prev: number, cur: any) => { - console.log('cur', cur) - return prev + cur?.timeout_min - }, 0) - return handleTimeout(totalMins) - }, [baseData]) - return - - - {statusStyles.icon} - {baseData.handle_status_name} - - - { - baseData.handle_status_name === '进行中' - ? baseData.handle_status_name - : null - } - { - baseData.handle_status_name === '有异常' - ? `${baseData.handle_status_name} 超时 ${totalTime}` - : null - } - { - baseData.handle_status_name === '超时完成' - ? `总共超时 ${totalTime}` - : null - } - { - baseData.handle_status_name === '已取消' - ? '订单已取消' - : null - } - - - -} - -const statusLine = [ - { - id: 1, - order_warning_process: 1, - colorClassName: 'wait', - type: 'wait', - typeName: '开始', - }, - { - id: 2, - order_warning_process: 2, - colorClassName: 'wait', - type: 'wait', - typeName: '接单', - }, - { - id: 3, - order_warning_process: 3, - colorClassName: 'wait', - type: 'wait', - typeName: '配布', - children: [ - { - id: 5, - order_warning_process: 4, - colorClassName: 'wait', - type: 'wait', - typeName: '提货', - }, - { - id: 6, - order_warning_process: 5, - colorClassName: 'wait', - type: 'wait', - typeName: '收款', - }, - ], - }, - { - id: 7, - order_warning_process: 6, - colorClassName: 'wait', - type: 'wait', - typeName: '出仓', - }, - { - id: 8, - order_warning_process: 7, - colorClassName: 'wait', - type: 'wait', - typeName: '收货', - }, -] - -const OrderWarningAnalysisDetail = () => { - const router = useRouter() - const { fetchData, state } = GetOrderEarlyWarningListApi() - const [data, setData] = useState({}) - const getData = async() => { - const res = await fetchData({ sale_order_id: router?.params.id }) - if (res.success) { - setData(res.data.list[0]) - } - else { - alert.error(res.msg) - } - } - useDidShow(() => { - if (router?.params.id) { - getData() - } - }) - // 页面下拉刷新 - usePullDownRefresh(() => { - getData() - }) - - const handleClickSaleOrderDetail = () => { - goLink('/pages/orderDetails/index', { id: data?.sale_order_id }) - } - - const dispatchStatus = (item: any): { status: StepStatus } => { - // 已处理 未超时 就是已完成 - if (item.is_handle && !item.is_timeout) { - return { - status: 'finish', - } - } - else if (item.is_handle && item.is_timeout) { // 超时 已处理 就是超时完成 - return { - status: 'error', - } - } - else if (!item.is_handle && item.is_timeout) { // 超时 未处理 就是进行中异常 - return { - status: 'process', - } - } - else { - return { - status: 'wait', - } - } - } - - return - - - - - - 单号:{data?.sale_order_no} - - - - - - - - - - { - statusLine.map((item, key) => { - let index = data?.order_process?.findIndex(i => i.order_warning_process === item.order_warning_process) - index = index == null ? -1 : index - if (index !== -1) { - const target = data?.order_process[index] - return - {target.order_warning_process_name} - {formatDateTime(target.complete_time)} - - } description={ - <> - { - - target.timeout_min !== 0 - ? - 超时 {handleTimeout(target.timeout_min)} - - : null - } - { - (item.children && item.children.length > 0) - ? item.children.map((subItem, subIndex) => { - let index = data?.order_process?.findIndex(i => i.order_warning_process === subItem.order_warning_process) - index = index == null ? -1 : index - if (index !== -1) { - const target = data?.order_process[index] - return - {target.order_warning_process_name} - {formatDateTime(target.complete_time)} - - } description={ - target.timeout_min !== 0 - ? 超时 {handleTimeout(target.timeout_min)} - : null - } - > - } - else { - return - {subItem.typeName} - 未开始 - - } description="" - > - } - }) - : null - - } - - - } - > - } - else { - return - {item.typeName} - 未开始 - - } description={ - (item.children && item.children.length > 0) - ? item.children.map((subItem, subIndex) => { - return - {subItem.typeName} - 未开始 - - } description="" - > - }) - : null - } - > - } - }) - } - - - -} -export default OrderWarningAnalysisDetail diff --git a/src/pages/refundDetail/components/addressDetailBox/index.module.scss b/src/pages/refundDetail/components/addressDetailBox/index.module.scss deleted file mode 100644 index 3b1e63f..0000000 --- a/src/pages/refundDetail/components/addressDetailBox/index.module.scss +++ /dev/null @@ -1,129 +0,0 @@ -.addressBox { - - margin-left: 24px; - margin-right: 24px; - background: #FFFFFF; - border-radius: 16px; - margin-top: 24px; - overflow: hidden; - padding-bottom: 20px; - - .topFont { - margin-top: 16px; - margin-left: 32px; - margin-right: 32px; - height: 54px; - background: #FEF9F4; - border-radius: 8px; - text-align: center; - line-height: 54px; - font-size: 24px; - font-weight: 500; - color: #F79B31; - } - - .topBox { - padding-top: 28px; - display: flex; - align-items: center; - - - .cirle { - border-radius: 50%; - margin-left: 32px; - width: 64px; - height: 64px; - background: #4A7FFF; - display: flex; - align-items: center; - justify-content: center; - - .dingwei { - color: #FFFFFF; - font-size: 26px; - } - } - - .address { - margin-left: 24px; - width: 461px; - height: 78px; - font-size: 28px; - font-weight: 500; - color: #000000; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - /*这里设置几行*/ - overflow: hidden; - margin-right: 41px; - display: flex; - align-items: center; - } - - .icon_more { - font-size: 50px; - } - } - - .line { - margin-top: 16px; - float: right; - margin-right: 32px; - width: 550px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .bottom { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 24px; - - .leftBottom { - padding-left: 120px; - display: flex; - align-items: center; - - .name { - width: 84px; - height: 34px; - @include common_ellipsis(); - font-size: 28px; - font-weight: 400; - color: #000000; - margin-right: 16px; - } - - .phone { - font-size: 28px; - font-weight: 400; - color: #000000; - margin-right: 70px; - } - } - - - .btn { - width: 216px; - height: 64px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 64px; - margin-right: 32px; - } - - .nobtn { - width: 216px; - height: 64px; - margin-right: 32px; - } - } -} \ No newline at end of file diff --git a/src/pages/refundDetail/components/addressDetailBox/index.tsx b/src/pages/refundDetail/components/addressDetailBox/index.tsx deleted file mode 100644 index 878800a..0000000 --- a/src/pages/refundDetail/components/addressDetailBox/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import IconFont from '@/components/iconfont/iconfont' - -interface propsObj { - receivingStatus?: Number | null - onReceivingStatus?: (any, Number) => void - obj: any - handUp?: (any) => void -} -const AddressDetailBox = (props: propsObj) => { - const { - obj = {}, - handUp, - } = props - - const seeFont = useMemo(() => { - if (obj.stage == 1) { - return '上传物流回单' - } - else { - return '查看物流回单' - } - }, [obj]) - - return ( - - 请按以下退货地址寄回货物并提供退货物流信息 - - - - - 广东省佛山市禅城区陆盈纺织仓库 - - - - - 谭先生 - {13242128982} - - { - obj.stage != 0 && handUp?.(obj)}>{seeFont} - } - - - ) -} -export default memo(AddressDetailBox) diff --git a/src/pages/refundDetail/components/orderState/index.module.scss b/src/pages/refundDetail/components/orderState/index.module.scss deleted file mode 100644 index c1fb9ec..0000000 --- a/src/pages/refundDetail/components/orderState/index.module.scss +++ /dev/null @@ -1,187 +0,0 @@ -.order_flow_state { - width: 702px; - margin-top: 24px; - margin-left: 24px; - border-radius: 16px; - background-color: #fff; - border-radius: 20px; - padding: 20px; - box-sizing: border-box; - position: relative; - overflow: hidden; - - .order_status_list { - max-height: 250px; - overflow: hidden; - transition: all 0.3s ease-in-out; - } - - .order_status_list_show { - max-height: 1000px !important; - } - - .order_status_item { - position: relative; - - &:nth-last-child(n + 2) { - padding-bottom: 30px; - } - - .order_status_tail_end, - .order_status_tail { - width: 15px; - height: 15px; - border: 2px solid $color_main; - background-color: #fff; - border-radius: 50%; - position: absolute; - left: 0; - top: 10px; - z-index: 10; - } - - .order_status_tail_end { - background-color: $color_main; - } - - .order_status_line { - border-left: 2px solid $color_main; - height: 100%; - top: 10px; - left: 9px; - position: absolute; - z-index: 1; - } - - .order_status_content { - display: flex; - align-items: center; - padding: 0 30px; - - .order_status_title { - color: $color_font_two; - font-size: $font_size; - font-weight: 700; - } - - .order_status_time { - color: $color_font_two; - font-size: $font_size_medium; - padding: 0 20px; - } - - .order_status_tag { - font-size: $font_size_min; - background: #f0f0f0; - border-radius: 6px; - padding: 5px 10px; - color: $color_font_two; - } - - .order_status_select { - color: $color_main; - } - - .order_status_tag_select { - color: $color_main; - } - } - - .order_status_des { - color: $color_font_two; - font-size: $font_size_medium; - margin-left: 30px; - } - - .order_status_des_select { - color: $color_font_one; - } - - .pay_time { - height: 56px; - background: #f6f6f6; - border-radius: 20px; - color: #3c3c3c; - font-size: 24px; - display: flex; - align-items: center; - justify-content: center; - font-weight: 700; - margin-top: 20px; - - text { - font-size: 28px; - color: $color_main; - padding: 0 10px; - } - } - } - - .more { - width: 100%; - text-align: center; - font-size: $font_size_min; - color: $color_font_one; - padding-top: 20px; - - .miconfonts { - display: inline-block; - font-size: 25px; - transform: rotate(90deg); - } - - .open_miconfonts { - transform: rotate(-90deg); - } - } - - .image_tag { - width: 140px; - height: 144px; - - .image { - width: 140px; - height: 144px; - } - - position: absolute; - top: -10px; - right: -10px; - } - - .refresh { - position: absolute; - top: 23px; - right: 20px; - display: flex; - color: #707070; - display: flex; - align-items: center; - - .mconfont { - font-size: 30px; - } - - .refresh_text { - font-size: 23px; - } - } -} - -.pay_title_tag { - margin-top: 10px; - font-size: 24px; - color: #ee7500; - background: rgba(255, 230, 206, 0.36); - border-radius: 10px; - height: 56px; - display: flex; - align-items: center; - position: relative; - z-index: 999; - - .miconfont { - font-size: 30px; - padding: 0 20px; - } -} diff --git a/src/pages/refundDetail/components/orderState/index.tsx b/src/pages/refundDetail/components/orderState/index.tsx deleted file mode 100644 index 44eb2fe..0000000 --- a/src/pages/refundDetail/components/orderState/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import * as dayjs from 'dayjs' -import styles from './index.module.scss' -import { formatDateTime, formatImgUrl } from '@/common/format' -import { ORDER_STATUS, PAYMENT_METHOD } from '@/common/enum' - -interface List { - status: string - time: string - tag: string - desc: string - remark: string - expire_time: string -} - -interface Param { - onRefresh?: () => void - orderInfo?: { - logistics_details: List[] // 订单状态列表 - payment_method: number // 支付方式 - status: number // 订单状态 - account_period?: number // 账期 - account_period_time?: string // 还款日期 - } -} -const OrderState = ({ orderInfo = { logistics_details: [], payment_method: 0, status: 0 }, onRefresh }: Param) => { - useEffect(() => { - console.log('orderInfo33::', orderInfo) - }, [orderInfo]) - - const [showMore, setShowMore] = useState(false) - const changeMore = () => { - setShowMore(() => !showMore) - } - const dataList = useMemo(() => { - const arr = orderInfo?.logistics_details - if (orderInfo.logistics_details) { - return arr.reverse() - } - else { - return [] - } - }, [orderInfo.logistics_details]) - - return ( - <> - {(dataList?.length > 0) && - - {dataList.map((item, index) => ( - - {(dataList.length > 1) && } - {(dataList.length != (index + 1)) && } - - {item.status} - {formatDateTime(item.time)} - - {item.remark} - - ), - ) - } - - {(dataList.length > 2) && changeMore()}> - {showMore ? '收起详情' : '点击查看详情'} - - } - } - - ) -} -export default memo(OrderState) diff --git a/src/pages/refundDetail/index.config.ts b/src/pages/refundDetail/index.config.ts deleted file mode 100644 index 619ba00..0000000 --- a/src/pages/refundDetail/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '售后详情', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', -} diff --git a/src/pages/refundDetail/index.module.scss b/src/pages/refundDetail/index.module.scss deleted file mode 100644 index 7bcd467..0000000 --- a/src/pages/refundDetail/index.module.scss +++ /dev/null @@ -1,343 +0,0 @@ -page { - height: 100vh; - overflow: hidden; -} -.main { - display: flex; - flex-flow: column nowrap; - height: 100%; - overflow: hidden; - .context { - flex: 1 1 auto; - overflow: scroll; - } - .detailBox { - display: flex; - margin-top: 24px; - align-items: center; - justify-content: space-between; - - .detailRightFlex { - display: flex; - align-items: center; - - .detailRight { - font-size: 28px; - color: #000000; - } - - .detailBtn { - margin-left: 16px; - width: 65px; - height: 32px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 24px; - color: #337fff; - text-align: center; - line-height: 32px; - } - } - - .detailFont { - font-size: 28px; - color: #000000; - } - } - - .picBox { - display: flex; - flex-wrap: wrap; - - .pic { - width: 134px; - height: 134px; - margin-right: 10px; - margin-top: 20px; - border-radius: 8px; - } - - .noPic { - height: 182px; - width: 100%; - text-align: center; - line-height: 182px; - font-size: 28px; - font-weight: 500; - color: #000000; - } - } - - .safeBox { - width: 100%; - height: 160px; - } - - .bottomMuck { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - height: 150px; - width: 100%; - display: flex; - padding-top: 15px; - box-sizing: border-box; - background: #ffffff; - justify-content: flex-end; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - - .cancleBtn { - margin-left: 20px; - } - - .seeButon { - margin-left: 20px; - } - } - - .totalBox { - width: 100%; - height: 100px; - display: flex; - align-items: center; - justify-content: space-between; - - .totalLeft { - font-size: 28px; - color: #000000; - } - - .totalRight { - font-size: 28px; - color: #000000; - } - } - - .picBtn { - margin-top: 20px; - margin-bottom: 20px; - margin-left: 24px; - margin-right: 24px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 28px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } -} - -.defaltBox { - margin: 24px; - padding: 24px 32px 24px 24px; - background: #ffffff; - border-radius: 16px; - - .titleBox { - // width: 638px; - display: flex; - justify-content: space-between; - align-items: center; - - .title { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .modeName { - font-size: 28px; - font-weight: 500; - color: #337fff; - } - } - - .modeLine { - margin-top: 24px; - // width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .pussBox { - margin-top: 15px; - display: flex; - - .pussName { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-right: 20px; - } - - .pussPhone { - font-size: 28px; - font-weight: 500; - color: #000000; - } - } -} - -.goodsBox { - margin-top: 24px; - overflow: hidden; - border-bottom: 1px solid #f7f7f7; - - .goodsProduct { - font-size: 28px; - font-weight: 500; - color: #000000; - // margin-left: 32px; - } - - .itemGoods { - margin-top: 24px; - display: flex; - - .itemPic { - // margin-left: 32px; - // margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .clear { - width: 42px; - } - - .itemRight { - padding-bottom: 24px; - // margin-right: 32px; - width: 80%; - border-bottom: 1px solid #f7f7f7; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - color: #000000; - } - - .itemNums { - font-size: 28px; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #000000; - } - } - } - } - - .itemGoods:last-child { - margin-top: 24px; - display: flex; - - .itemPic { - width: 108px; - height: 108px; - border-radius: 8px; - } - - .clear { - width: 42px; - height: 108px; - } - - .itemRight { - padding-bottom: 24px; - width: 80%; - border-bottom: none; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - color: #000000; - } - - .itemNums { - font-size: 28px; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #000000; - } - } - } - } -} -.popup { - padding: 0 30px; - .title { - font-weight: 500; - font-size: 24px; - margin: 20px 0; - color: #333; - } - .textarea { - background-color: #f3f3f3; - border-radius: 10px; - width: 100%; - height: 260px; - padding: 20px; - padding-bottom: 50px; - box-sizing: border-box; - font-size: $font_size; - border: 2px solid #e6e6e6; - } - .popupBtn { - margin-top: 30px; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - } - .button { - width: 48%; - } -} diff --git a/src/pages/refundDetail/index.tsx b/src/pages/refundDetail/index.tsx deleted file mode 100644 index ee362ab..0000000 --- a/src/pages/refundDetail/index.tsx +++ /dev/null @@ -1,620 +0,0 @@ -import { Button, Image, Text, Textarea, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { ReactNode } from 'react' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import OrderState from './components/orderState' -import AddressDetailBox from './components/addressDetailBox' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - AuditReturnApplyOrder, - GetWarehouseList, - MpReturnApplyOrder, - RefuseReturnApplyOrder, - ReturnApplyOrderCancel, - ReturnApplyOrderUploadAccessory, -} from '@/api/refound' -import { IMG_CND_Prefix } from '@/common/constant' -import Popup from '@/components/popup' -import UploadImage from '@/components/uploadImage' -import { alert, checkKey } from '@/common/common' -import RefundCodelist from '@/components/RefundCodelist' -import LabAndImg from '@/components/LabAndImg' -import NormalButton from '@/components/normalButton' -import Divider from '@/components/Divider' -import Cell from '@/components/cell' - -enum ReturnEnum { - Refunded = 3, // 已退款 - RefundedBefore = 5, // 待退款-确认单 - RefundedAfter = 6, // 待退款 -} - -enum ReturnType { - TypeOne = 2, // 预收退款 -} - -interface Obs { - title?: string - modeName?: string - showMode?: boolean - children?: ReactNode - clickNode?: () => void -} - -const DefaultBox = (props: Obs) => { - const { - title = '标题', - modeName = '大货', - showMode = false, - children, - clickNode, - } = props - - return ( - - - {title} - { - showMode && clickNode?.()}>{modeName} - } - - - {children} - - ) -} -const DefaultBoxWithMemo = memo(DefaultBox) - -interface PropGoods { - // item?: { - // code?: string | number - // } - list: any[] - obj: any -} - -const GoodsItem = (porps: PropGoods) => { - const { list = [], obj = {} } = porps - - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - return ( - <> - { - list.map((item, index) => { - return ( - - {formatHashTag(item.code, item.name)} - { - item.product_colors.map((it, inx) => { - return ( - - { - it.texture_url === '' - && - } - { - it.texture_url !== '' - && - - - } - - - - {formatHashTag(it?.code, it?.name)} - {/* x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} */} - { - obj.sale_mode == 0 && x{obj.stage == 0 || obj.stage == 1 || obj.stage == 2 - ? it.roll - : obj.stage == 5 || obj.stage == 6 || obj.stage == 3 - ? it.return_roll - : it.roll}{obj?.sale_mode == 0 ? '条' : 'm'} - } - { - obj.sale_mode != 0 && x{it.length / 100}m - } - - - ¥{it.sale_price / 100}/{obj?.sale_mode == 0 ? 'kg' : 'm'} - {/* ¥{formatPriceDiv(it.total_sale_price)} */} - - - - ) - }) - } - - ) - }) - } - - - ) -} -const GoodsItemWithMemo = memo(GoodsItem) - -const RefundDetail = () => { - // 页面下拉刷新 - const router = useRouter() - // 查看图片 - const [ShowPic, setShowPic] = useState(false) - - const [PicList, setPicList] = useState([]) - // 订单信息文字数组 - const [orderMsg, setOrderMsg] = useState([ - { - leftTitle: '售后编号:', - rightTitle: '------', - showBtn: true, - }, - { - leftTitle: '订单号:', - rightTitle: '------', - showBtn: true, - }, - { - leftTitle: '退货原因:', - rightTitle: '------', - }, - { - leftTitle: '退货说明:', - rightTitle: '------', - }, - { - leftTitle: '其他说明:', - rightTitle: '------', - }, - { - leftTitle: '货物状况:', - rightTitle: '------', - }, - { - leftTitle: '申请时间:', - rightTitle: '------', - }, - ]) - // 获取详情 - const { fetchData: detailFetch } = MpReturnApplyOrder() - const [DeatailObj, setDeatailObj] = useState({}) - const getDetail = async() => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - const res = await detailFetch({ id: Number(router.params.id) }) - if (res.data) { - setDeatailObj(res.data) - orderMsg.forEach((it) => { - if (it.leftTitle === '售后编号:') { - it.rightTitle = res.data.return_order_no - } - if (it.leftTitle === '订单号:') { - it.rightTitle = res.data.order_no - } - if (it.leftTitle === '退货原因:') { - it.rightTitle = res.data.return_reason_name - } - if (it.leftTitle === '退货说明:') { - it.rightTitle = res.data.return_explain_name - } - if (it.leftTitle === '其他说明:') { - it.rightTitle = res.data.reason_describe - } - if (it.leftTitle === '货物状况:') { - it.rightTitle = res.data.goods_status_name - } - if (it.leftTitle === '申请时间:') { - it.rightTitle = formatDateTime(res.data.apply_time) - } - }) - setOrderMsg([...orderMsg]) - setPicList([...res.data?.accessory_url !== null ? res.data?.accessory_url : []]) - Taro.hideLoading() - // 小程序提供的api,通知页面停止下拉刷新效果 - Taro.stopPullDownRefresh() - } - } - - // 分辨用质检中还是质检前的数组 - const productList = useMemo(() => { - if (DeatailObj.stage === 0 - || (DeatailObj.sale_mode == 1 && DeatailObj.type == 1) || DeatailObj.stage === 1 || DeatailObj.stage === 2) { - return DeatailObj.product_list - } - else { - return DeatailObj.quality_check_pass_product - } - }, [DeatailObj]) - - // 复制功能 - const clipboardData = (val) => { - Taro.setClipboardData({ - data: val || '', - success(res) { - Taro.showToast({ - icon: 'none', - title: '复制成功', - }) - }, - }) - } - - // 取消退货 - const { fetchData: cancelFetch } = ReturnApplyOrderCancel() - const handCancle = async() => { - Taro.showModal({ - content: '确定要取消吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - const res = await cancelFetch({ id: Number(DeatailObj.id) }) - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - if (res.msg === 'success') { - Taro.showToast({ - title: '取消成功', - }) - Taro.hideLoading() - getDetail() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - }, - }) - } - - const handUp = () => { - setShowPic(true) - } - - const onlyRead = useMemo(() => { - if (DeatailObj.stage == 1) { - return false - } - else { - return true - } - }, [DeatailObj]) - - // 获取图片列表 - const picUrl = useRef([]) - const getImageList = useCallback((list) => { - picUrl.current = list - }, []) - - // 提交附件 - const { fetchData: sureFetch } = ReturnApplyOrderUploadAccessory() - const handSure = () => { - let arr: any = [] - arr = [...picUrl.current] - if (arr == 0) { - return alert.error('请先添加附件') - } - Taro.showModal({ - content: '确定要提交吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - const res = await sureFetch({ id: Number(DeatailObj.id), accessory_url: arr }) - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - if (res.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - setShowPic(false) - Taro.hideLoading() - getDetail() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - }, - }) - } - const proview = (item) => { - Taro.previewImage({ - current: IMG_CND_Prefix + item, // 当前显示图片的 http 链接 - urls: DeatailObj.fabric_piece_accessory_url.map((item) => { - item = IMG_CND_Prefix + item - return item - }), // 需要预览的图片 http 链接列表 - }) - } - const [ShowCode, setShowCode] = useState(false) - const handSee = () => { - setShowCode(true) - } - usePullDownRefresh(() => { - getDetail() - }) - useEffect(() => { - getDetail() - getWarehouseList() - }, []) - - // 待退款和已退款需要变更字段 - const totalGoods = useMemo(() => { - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_fabrics - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.total_fabrics - } - if (DeatailObj.type == ReturnType.TypeOne) { - return DeatailObj.total_fabrics - } - }, [DeatailObj]) - // 待退款和已退款需要变更字段 - const totalColors = useMemo(() => { - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_colors - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.total_colors - } - if (DeatailObj.type == ReturnType.TypeOne) { - return DeatailObj.total_colors - } - }, [DeatailObj]) - // 待退款和已退款需要变更字段 - const totalNums = useMemo(() => { - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.sale_mode == 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_number - } - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.sale_mode != 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_number / 100 - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.sale_mode == 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.return_roll - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.sale_mode != 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.total_number / 100 - } - if (DeatailObj.type == ReturnType.TypeOne) { - return DeatailObj.total_number / 100 - } - }, [DeatailObj]) - - const { fetchData: auditApi } = AuditReturnApplyOrder() - const { fetchData: refuseApi } = RefuseReturnApplyOrder() - - const [showSaleAfterPopup, setShowSaleAfterPopup] = useState(false) - - const handleShowPopup = () => { - setShowSaleAfterPopup(true) - } - - const navTo = () => { - Taro.navigateTo({ - url: '/pages/wareHousePage/index', - }) - } - - const [remarkValue, setRemarkValue] = useState('') - const getDesc = (e) => { - setRemarkValue(e.detail.value) - } - const onBlur = (e) => { - setRemarkValue(e.detail.value) - } - - const handleRefuseSubmit = async() => { - if (!remarkValue) { - return alert.error('请输入拒绝原因') - } - const res = await refuseApi({ - remark: remarkValue, - return_apply_order_id: Number(router.params.id), - }) - if (res.success) { - getDetail() - alert.success('审核成功') - setShowSaleAfterPopup(false) - } - else { - alert.error(res.msg) - } - } - const handleAuditSubmit = async() => { - if (clientObj.clientId === -1 || !clientObj.clientId) { - alert.error('请选择仓库') - } - const res = await auditApi({ - remark: remarkValue, - return_apply_order_id: Number(router.params.id), - warehouse_id: clientObj.clientId, - }) - if (res.success) { - getDetail() - alert.success('审核成功') - setShowSaleAfterPopup(false) - } - else { - alert.error(res.msg) - } - } - - const [clientObj, setclientObj] = useState({ - clientId: -1, - clientName: '', - }) - const { fetchData } = GetWarehouseList() - const [clienList, setclienList] = useState([]) - - const getWarehouseList = async() => { - const res = await fetchData() - setclientObj({ - clientId: res.data.list?.length > 0 ? res.data.list[0]?.id : -1, - clientName: res.data.list?.length > 0 ? res.data.list[0]?.name : '', - }) - setclienList([...res.data.list]) - } - - useDidShow(() => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面\ - console.log('currPage', currPage) - // 判断是否有跳转选择客户 - if (currPage.data?.clientId) { - setclientObj({ - clientId: currPage.data?.clientId, - clientName: currPage.data?.clientName, - }) - } - // 默认仓库 - if (!currPage.data?.clientId) { - console.log('默认仓库') - setclientObj({ - clientId: clienList.length > 0 ? clienList[0]?.id : -1, - clientName: clienList.length > 0 ? clienList[0]?.name : '', - }) - } - }) - - return ( - - - - - - - {DeatailObj.purchaser_name} - {DeatailObj.purchaser_phone} - - - - - - 总计 - {totalGoods} 种面料,{totalColors} 种颜色,共 { totalNums} {DeatailObj?.sale_mode == 0 ? '条' : '米'} - - { - (DeatailObj.stage == 3) - && - 退款金额 - ¥{ - formatPriceDiv(DeatailObj.refund_amount) - } - - - } - - - { - orderMsg.map((item, index) => { - return ( - - - {item.leftTitle} - - - {item.rightTitle} - {item.showBtn && clipboardData(item.rightTitle)}>复制} - - - - ) - }) - } - - - - - { - DeatailObj?.fabric_piece_accessory_url?.length > 0 && DeatailObj?.fabric_piece_accessory_url.map((item, index) => { - return ( - proview(item)} - mode="aspectFill" src={IMG_CND_Prefix + item} - > - ) - }) - } - { - DeatailObj?.fabric_piece_accessory_url?.length === 0 && 暂无图片 - } - - - - - { - checkKey('return_and_refund_audit') - ? <> - { - DeatailObj.stage === 0 && 售后审批 - } - - : null - } - { - (DeatailObj.stage === 0 || DeatailObj.stage === 1) && handCancle()}>取消退货 - } - { - (DeatailObj.sale_mode == 0 && DeatailObj.stage == 3 && (DeatailObj.type == 1 || DeatailObj.type == 3)) && { handSee() }}>查看码单 - } - - - setShowCode(false)} - > - setShowSaleAfterPopup(false)}> - - 退回仓库* - } desc={ - clientObj.clientId !== -1 ? clientObj.clientName : '请选择仓库' - } isLink onClick={navTo} - > - - 售后备注 - - - - - 拒绝 - 同意 - - - - setShowPic(false)}> - <> - - { - - !onlyRead && handSure()}>确认修改 - } - - - - ) -} -export default RefundDetail diff --git a/src/pages/refundMoneyDetail/components/addressDetailBox/index.module.scss b/src/pages/refundMoneyDetail/components/addressDetailBox/index.module.scss deleted file mode 100644 index 71ddd2c..0000000 --- a/src/pages/refundMoneyDetail/components/addressDetailBox/index.module.scss +++ /dev/null @@ -1,123 +0,0 @@ -.addressBox { - - margin-left: 24px; - margin-right: 24px; - background: #FFFFFF; - border-radius: 16px; - margin-top: 24px; - overflow: hidden; - padding-bottom: 20px; - - .topFont { - margin-top: 16px; - margin-left: 32px; - margin-right: 32px; - height: 54px; - background: #FEF9F4; - border-radius: 8px; - text-align: center; - line-height: 54px; - font-size: 24px; - font-weight: 500; - color: #F79B31; - } - - .topBox { - padding-top: 28px; - display: flex; - align-items: center; - - - .cirle { - border-radius: 50%; - margin-left: 32px; - width: 64px; - height: 64px; - background: #4A7FFF; - display: flex; - align-items: center; - justify-content: center; - - .dingwei { - color: #FFFFFF; - font-size: 26px; - } - } - - .address { - margin-left: 24px; - width: 461px; - height: 78px; - font-size: 28px; - font-weight: 500; - color: #000000; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - /*这里设置几行*/ - overflow: hidden; - margin-right: 41px; - display: flex; - align-items: center; - } - - .icon_more { - font-size: 50px; - } - } - - .line { - margin-top: 16px; - float: right; - margin-right: 32px; - width: 550px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .bottom { - display: flex; - align-items: center; - justify-content: flex-end; - margin-top: 24px; - - .name { - width: 84px; - height: 34px; - @include common_ellipsis(); - font-size: 28px; - font-weight: 400; - color: #000000; - margin-right: 16px; - } - - .phone { - font-size: 28px; - font-weight: 400; - color: #000000; - margin-right: 70px; - } - - .btn { - width: 216px; - height: 64px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 64px; - margin-right: 32px; - } - - .nobtn { - width: 216px; - height: 64px; - margin-right: 32px; - } - } -} - diff --git a/src/pages/refundMoneyDetail/components/addressDetailBox/index.tsx b/src/pages/refundMoneyDetail/components/addressDetailBox/index.tsx deleted file mode 100644 index 343a1c5..0000000 --- a/src/pages/refundMoneyDetail/components/addressDetailBox/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -interface propsObj { - receivingStatus?: Number | null - onReceivingStatus?: (any, Number) => void - obj: any - handUp?: (any) => void -} -const AddressDetailBox = (props: propsObj) => { - const { - obj = {}, - handUp, - } = props - - const seeFont = useMemo(() => { - if (obj.stage == 1) { - return '上传物流回单' - } - else { - return '查看物流回单' - } - }, [obj]) - - return ( - - 请按以下退货地址寄回货物并提供退货物流信息 - - - - - 广东省佛山市禅城区陆盈纺织仓库 - - - - 谭先生 - {13242128982} - - handUp?.(obj)}>{seeFont} - - {/* { - obj.stage !== 1 && - } */} - - - ) -} -export default memo(AddressDetailBox) diff --git a/src/pages/refundMoneyDetail/components/orderState/index.module.scss b/src/pages/refundMoneyDetail/components/orderState/index.module.scss deleted file mode 100644 index 1bb88e3..0000000 --- a/src/pages/refundMoneyDetail/components/orderState/index.module.scss +++ /dev/null @@ -1,188 +0,0 @@ -.order_flow_state { - width: 702px; - margin-top: 24px; - margin-left: 24px; - border-radius: 16px; - background-color: #fff; - border-radius: 20px; - padding: 20px; - box-sizing: border-box; - position: relative; - overflow: hidden; - - .order_status_list { - max-height: 250px; - overflow: hidden; - transition: all 0.3s ease-in-out; - } - - .order_status_list_show { - max-height: 1000px !important; - } - - .order_status_item { - position: relative; - - &:nth-last-child(n+2) { - padding-bottom: 30px; - } - - .order_status_tail_end, - .order_status_tail { - width: 15px; - height: 15px; - border: 2px solid $color_main; - background-color: #fff; - border-radius: 50%; - position: absolute; - left: 0; - top: 10px; - z-index: 10; - } - - .order_status_tail_end { - background-color: $color_main; - } - - .order_status_line { - border-left: 2px solid $color_main; - height: 100%; - top: 10px; - left: 9px; - position: absolute; - z-index: 1; - } - - .order_status_content { - display: flex; - align-items: center; - padding: 0 30px; - - .order_status_title { - color: $color_font_two; - font-size: $font_size; - font-weight: 700; - } - - .order_status_time { - color: $color_font_two; - font-size: $font_size_medium; - padding: 0 20px; - } - - .order_status_tag { - font-size: $font_size_min; - background: #F0F0F0; - border-radius: 6px; - padding: 5px 10px; - color: $color_font_two; - } - - .order_status_select { - color: $color_main; - } - - .order_status_tag_select { - color: $color_main; - } - } - - .order_status_des { - color: $color_font_two; - font-size: $font_size_medium; - margin-left: 30px; - } - - .order_status_des_select { - color: $color_font_one; - } - - .pay_time { - height: 56px; - background: #f6f6f6; - border-radius: 20px; - color: #3C3C3C; - font-size: 24px; - display: flex; - align-items: center; - justify-content: center; - font-weight: 700; - margin-top: 20px; - - text { - font-size: 28px; - color: $color_main; - padding: 0 10px; - - } - } - } - - .more { - width: 100%; - text-align: center; - font-size: $font_size_min; - color: $color_font_one; - padding-top: 20px; - - .miconfonts { - display: inline-block; - font-size: 25px; - transform: rotate(90deg); - } - - .open_miconfonts { - transform: rotate(-90deg); - } - } - - .image_tag { - width: 140px; - height: 144px; - - .image { - width: 140px; - height: 144px; - } - - position: absolute; - top: -10px; - right: -10px; - } - - .refresh { - position: absolute; - top: 23px; - right: 20px; - display: flex; - color: #707070; - display: flex; - align-items: center; - - .mconfont { - font-size: 30px; - } - - .refresh_text { - font-size: 23px; - } - } -} - -.pay_title_tag { - margin-top: 10px; - font-size: 24px; - color: #EE7500; - background: rgba(255, 230, 206, 0.36); - border-radius: 10px; - height: 56px; - display: flex; - align-items: center; - position: relative; - z-index: 999; - - .miconfont { - font-size: 30px; - padding: 0 20px; - } -} diff --git a/src/pages/refundMoneyDetail/components/orderState/index.tsx b/src/pages/refundMoneyDetail/components/orderState/index.tsx deleted file mode 100644 index 05886ff..0000000 --- a/src/pages/refundMoneyDetail/components/orderState/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import * as dayjs from 'dayjs' -import styles from './index.module.scss' -import { formatDateTime, formatImgUrl } from '@/common/format' -import { ORDER_STATUS, PAYMENT_METHOD } from '@/common/enum' - -interface List { - status: string - time: string - tag: string - remark: string - expire_time: string -} - -interface Param { - onRefresh?: () => void - orderInfo?: { - logistics_details: List[] // 订单状态列表 - payment_method: number // 支付方式 - status: number // 订单状态 - account_period?: number // 账期 - account_period_time?: string // 还款日期 - } -} -const OrderState = ({ orderInfo = { logistics_details: [], payment_method: 0, status: 0 }, onRefresh }: Param) => { - useEffect(() => { - console.log('orderInfo33::', orderInfo) - }, [orderInfo]) - - const [showMore, setShowMore] = useState(false) - const changeMore = () => { - setShowMore(() => !showMore) - } - const dataList = useMemo(() => { - const arr = orderInfo?.logistics_details - if (orderInfo.logistics_details) { - return arr.reverse() - } - else { - return [] - } - }, [orderInfo.logistics_details]) - - return ( - <> - {(dataList?.length > 0) && - - {dataList.map((item, index) => - {(dataList.length > 1) && } - {(dataList.length != (index + 1)) && } - - {item.status} - {formatDateTime(item.time)} - - {item.remark} - )} - - {(dataList.length > 2) && changeMore()}> - {showMore ? '收起详情' : '点击查看详情'} - - } - } - - ) -} -export default memo(OrderState) diff --git a/src/pages/refundMoneyDetail/index.config.ts b/src/pages/refundMoneyDetail/index.config.ts deleted file mode 100644 index 619ba00..0000000 --- a/src/pages/refundMoneyDetail/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '售后详情', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', -} diff --git a/src/pages/refundMoneyDetail/index.module.scss b/src/pages/refundMoneyDetail/index.module.scss deleted file mode 100644 index b2df537..0000000 --- a/src/pages/refundMoneyDetail/index.module.scss +++ /dev/null @@ -1,375 +0,0 @@ -page { - height: 100vh; - overflow: hidden; -} -.main { - display: flex; - flex-flow: column nowrap; - height: 100%; - overflow: hidden; - .context { - flex: 1 1 auto; - overflow: scroll; - } - .detailBox { - display: flex; - margin-top: 24px; - align-items: center; - justify-content: space-between; - - .detailRightFlex { - display: flex; - align-items: center; - - .detailRight { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .detailBtn { - margin-left: 16px; - width: 65px; - height: 32px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 24px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 32px; - } - } - - .detailFont { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .picBox { - display: flex; - flex-wrap: wrap; - - .pic { - width: 134px; - height: 134px; - margin-right: 10px; - margin-bottom: 10px; - } - - .noPic { - height: 182px; - width: 100%; - text-align: center; - line-height: 182px; - font-size: 28px; - font-weight: 500; - color: #000000; - } - } - - .safeBox { - width: 100%; - height: 160px; - } - - .bottomMuck { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - height: 150px; - width: 100%; - display: flex; - padding-top: 15px; - box-sizing: border-box; - background: #ffffff; - justify-content: flex-end; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - - .cancleBtn { - margin-left: 20px; - width: 160px; - height: 72px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 72px; - } - - .seeButon { - margin-left: 20px; - width: 160px; - height: 72px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 72px; - } - } - - .totalBox { - margin-top: 10px; - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - // margin-bottom: 10px; - - .totalLeft { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .totalRight { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .picBtn { - margin-top: 20px; - margin-bottom: 20px; - margin-left: 24px; - margin-right: 24px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 28px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } -} - -.defaltBox { - margin: 24px; - padding: 24px 32px 24px 24px; - background: #ffffff; - border-radius: 16px; - - .titleBox { - width: 638px; - display: flex; - justify-content: space-between; - align-items: center; - - .title { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .modeName { - font-size: 28px; - font-weight: 500; - color: #337fff; - } - } - - .modeLine { - margin-top: 24px; - width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - } - - .pussBox { - margin-top: 15px; - display: flex; - - .pussName { - font-size: 28px; - font-weight: 500; - color: #000000; - margin-right: 20px; - } - - .pussPhone { - font-size: 28px; - font-weight: 500; - color: #000000; - } - } -} - -.goodsBox { - margin-top: 24px; - overflow: hidden; - border-bottom: 1px solid #f7f7f7; - - .goodsProduct { - font-size: 28px; - font-weight: 500; - color: #000000; - // margin-left: 32px; - } - - .itemGoods { - margin-top: 24px; - display: flex; - - .itemPic { - // margin-left: 32px; - // margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .clear { - width: 42px; - } - - .itemRight { - padding-bottom: 24px; - width: 80%; - border-bottom: 1px solid #f7f7f7; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #000000; - } - } - } - } - - .itemGoods:last-child { - margin-top: 24px; - display: flex; - - .itemPic { - // margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .clear { - width: 42px; - height: 108px; - } - - .itemRight { - padding-bottom: 24px; - width: 80%; - border-bottom: none; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .itemMoney { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .itemMoneyOne { - font-size: 28px; - font-weight: 500; - color: #000000; - } - } - } - } -} -.popup { - padding: 0 30px; - .title { - font-weight: 500; - font-size: 24px; - margin: 20px 0; - color: #333; - } - .textarea { - background-color: #f3f3f3; - border-radius: 10px; - width: 100%; - height: 260px; - padding: 20px; - padding-bottom: 50px; - box-sizing: border-box; - font-size: $font_size; - border: 2px solid #e6e6e6; - } - .popupBtn { - margin-top: 30px; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - } - .button { - width: 48%; - } -} diff --git a/src/pages/refundMoneyDetail/index.tsx b/src/pages/refundMoneyDetail/index.tsx deleted file mode 100644 index a4a14bb..0000000 --- a/src/pages/refundMoneyDetail/index.tsx +++ /dev/null @@ -1,592 +0,0 @@ -import { Button, Image, Input, Text, Textarea, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import type { ReactNode } from 'react' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import OrderState from './components/orderState' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - AuditReturnApplyOrder, - GetWarehouseList, - MpReturnApplyOrder, - RefuseReturnApplyOrder, - ReturnApplyOrderCancel, - ReturnApplyOrderUploadAccessory, -} from '@/api/refound' -// import AddressDetailBox from './components/addressDetailBox' -import { IMG_CND_Prefix } from '@/common/constant' -import RefundCodelist from '@/components/RefundCodelist' -import LabAndImg from '@/components/LabAndImg' -import NormalButton from '@/components/normalButton' -import { alert, checkKey } from '@/common/common' -import Popup from '@/components/popup' -import Cell from '@/components/cell' -import Divider from '@/components/Divider' - -enum ReturnEnum { - Refunded = 3, // 已退款 - RefundedBefore = 5, // 待退款-确认单 - RefundedAfter = 6, // 待退款 -} - -enum ReturnType { - TypeOne = 2, // 预收退款 -} - -interface Obs { - title?: string - modeName?: string - showMode?: boolean - children?: ReactNode - clickNode?: () => void -} - -const DefaultBox = (props: Obs) => { - const { - title = '标题', - modeName = '大货', - showMode = false, - children, - clickNode, - } = props - - return ( - - - {title} - { - showMode && clickNode?.()}>{modeName} - } - - - {children} - - ) -} -const DefaultBoxWithMemo = memo(DefaultBox) - -interface PropGoods { - // item?: { - // code?: string | number - // } - list: any[] - obj: any -} -const GoodsItem = (porps: PropGoods) => { - const { list = [], obj = {} } = porps - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - return ( - <> - { - list.map((item, index) => { - return ( - - {formatHashTag(item?.code, item?.name)} - { - item?.product_colors.map((it, inx) => { - return ( - - { - it.texture_url === '' - && - } - { - it.texture_url !== '' - && - - - } - {/* */} - - - - {formatHashTag(it?.code, it?.name)} - {/* x{obj?.sale_mode === 0 ? it.roll : it.length / 100}{obj?.sale_mode === 0 ? '条' : 'm'} */} - { - obj.sale_mode == 0 && x{obj.stage == 0 || obj.stage == 1 || obj.stage == 2 - ? it.roll - : obj.stage == 5 || obj.stage == 6 || obj.stage == 3 - ? it.return_roll - : it.roll}{obj?.sale_mode == 0 ? '条' : 'm'} - } - { - obj.sale_mode != 0 && x{it.length / 100}m - } - - - ¥{it.sale_price / 100}/{obj?.sale_mode == 0 ? 'kg' : 'm'} - {/* ¥{formatPriceDiv(it.total_sale_price)} */} - - - - ) - }) - } - - ) - }) - } - - - ) -} -const GoodsItemWithMemo = memo(GoodsItem) - -const RefundMoneyDetail = () => { - const router = useRouter() - - // 获取详情 - const { fetchData: detailFetch } = MpReturnApplyOrder() - const [DeatailObj, setDeatailObj] = useState({}) - - // 分辨用质检中还是质检前的数组 - const productList = useMemo(() => { - if (DeatailObj?.stage == 0 || DeatailObj?.type == 3 || DeatailObj?.type == 2) { - return DeatailObj?.product_list - } - else { - return DeatailObj?.quality_check_pass_product - } - }, [DeatailObj]) - - // 订单信息文字数组 - const [orderMsg, setOrderMsg] = useState([ - { - leftTitle: '售后编号:', - rightTitle: '------', - showBtn: true, - }, - { - leftTitle: '订单号:', - rightTitle: '------', - showBtn: true, - }, - { - leftTitle: '退货原因:', - rightTitle: '------', - }, - { - leftTitle: '退货说明:', - rightTitle: '------', - }, - { - leftTitle: '其他说明:', - rightTitle: '------', - }, - // { - // leftTitle: '货物状况:', - // rightTitle: '------', - // }, - { - leftTitle: '申请时间:', - rightTitle: '------', - }, - ]) - - // 复制功能 - const clipboardData = (val) => { - Taro.setClipboardData({ - data: val || '', - success(res) { - Taro.showToast({ - icon: 'none', - title: '复制成功', - }) - }, - }) - } - const getDetail = async() => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - const res = await detailFetch({ id: Number(router.params.id) }) - if (res.data) { - setDeatailObj(res.data) - orderMsg.forEach((it) => { - if (it.leftTitle === '售后编号:') { - it.rightTitle = res.data.return_order_no - } - if (it.leftTitle === '订单号:') { - it.rightTitle = res.data.order_no - } - if (it.leftTitle === '退货原因:') { - it.rightTitle = res.data.return_reason_name - } - if (it.leftTitle === '退货说明:') { - it.rightTitle = res.data.return_explain_name - } - if (it.leftTitle === '其他说明:') { - it.rightTitle = res.data.reason_describe - } - // if (it.leftTitle === '货物状况:') { - // it.rightTitle = res.data.goods_status_name - // } - if (it.leftTitle === '申请时间:') { - it.rightTitle = formatDateTime(res.data.apply_time) - } - }) - setOrderMsg([...orderMsg]) - Taro.stopPullDownRefresh() - // setPicList([...res.data?.accessory_url !== null ? res.data?.accessory_url : []]) - Taro.hideLoading() - } - } - // 取消退货 - const { fetchData: cancelFetch } = ReturnApplyOrderCancel() - const handCancle = async() => { - Taro.showModal({ - content: '确定要取消吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - const res = await cancelFetch({ id: Number(DeatailObj.id) }) - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - if (res.msg === 'success') { - Taro.showToast({ - title: '取消成功', - }) - Taro.hideLoading() - getDetail() - } - else { - Taro.showToast({ - title: res.msg, - icon: 'error', - }) - } - } - }, - }) - } - // //查看图片 - // const [ShowPic, setShowPic] = useState(false) - - // const [PicList, setPicList] = useState([]) - - // const handUp = (value) => { - // setShowPic(true) - // } - - // const onlyRead = useMemo(() => { - // if (DeatailObj.stage == 1) { - // return false - // } else { - // return true - // } - // }, [DeatailObj]) - - // //获取图片列表 - // const picUrl = useRef([]) - // const getImageList = useCallback((list) => { - // picUrl.current = list - // }, []) - - const proview = (item) => { - Taro.previewImage({ - current: IMG_CND_Prefix + item, // 当前显示图片的 http 链接 - urls: DeatailObj.fabric_piece_accessory_url.map((item) => { - item = IMG_CND_Prefix + item - return item - }), // 需要预览的图片 http 链接列表 - }) - } - const [ShowCode, setShowCode] = useState(false) - const handSee = () => { - setShowCode(true) - } - - useEffect(() => { - getDetail() - getWarehouseList() - }, []) - // 页面下拉刷新 - usePullDownRefresh(() => { - getDetail() - }) - - const { fetchData: auditApi } = AuditReturnApplyOrder() - const { fetchData: refuseApi } = RefuseReturnApplyOrder() - - const [showSaleAfterPopup, setShowSaleAfterPopup] = useState(false) - - const handleShowPopup = () => { - setShowSaleAfterPopup(true) - } - - const navTo = () => { - Taro.navigateTo({ - url: '/pages/wareHousePage/index', - }) - } - - const [remarkValue, setRemarkValue] = useState('') - const getDesc = (e) => { - setRemarkValue(e.detail.value) - } - const onBlur = (e) => { - setRemarkValue(e.detail.value) - } - - const handleRefuseSubmit = async() => { - if (!remarkValue) { - return alert.error('请输入拒绝原因') - } - const res = await refuseApi({ - remark: remarkValue, - return_apply_order_id: Number(router.params.id), - }) - if (res.success) { - getDetail() - alert.success('审核成功') - setShowSaleAfterPopup(false) - } - else { - alert.error(res.msg) - } - } - const handleAuditSubmit = async() => { - if (clientObj.clientId === -1 || !clientObj.clientId) { - alert.error('请选择仓库') - } - const res = await auditApi({ - remark: remarkValue, - return_apply_order_id: Number(router.params.id), - warehouse_id: clientObj.clientId, - }) - if (res.success) { - getDetail() - alert.success('审核成功') - setShowSaleAfterPopup(false) - } - else { - alert.error(res.msg) - } - } - - const [clientObj, setclientObj] = useState({ - clientId: -1, - clientName: '', - }) - const { fetchData } = GetWarehouseList() - const [clienList, setclienList] = useState([]) - - const getWarehouseList = async() => { - const res = await fetchData() - setclientObj({ - clientId: res.data.list?.length > 0 ? res.data.list[0]?.id : -1, - clientName: res.data.list?.length > 0 ? res.data.list[0]?.name : '', - }) - setclienList([...res.data.list]) - } - - useDidShow(() => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面\ - console.log('currPage', currPage) - // 判断是否有跳转选择客户 - if (currPage.data?.clientId) { - setclientObj({ - clientId: currPage.data?.clientId, - clientName: currPage.data?.clientName, - }) - } - // 默认仓库 - if (!currPage.data?.clientId) { - console.log('默认仓库') - setclientObj({ - clientId: clienList.length > 0 ? clienList[0]?.id : -1, - clientName: clienList.length > 0 ? clienList[0]?.name : '', - }) - } - }) - - // 待退款和已退款需要变更字段 - const totalGoods = useMemo(() => { - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_fabrics - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.total_fabrics - } - if (DeatailObj.type == ReturnType.TypeOne) { - return DeatailObj.total_fabrics - } - }, [DeatailObj]) - // 待退款和已退款需要变更字段 - const totalColors = useMemo(() => { - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_colors - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.total_colors - } - if (DeatailObj.type == ReturnType.TypeOne) { - return DeatailObj.total_colors - } - }, [DeatailObj]) - // 待退款和已退款需要变更字段 - const totalNums = useMemo(() => { - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.sale_mode == 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_number - } - if ((DeatailObj.stage == ReturnEnum.Refunded || DeatailObj.stage == ReturnEnum.RefundedBefore || DeatailObj.stage == ReturnEnum.RefundedAfter) && DeatailObj.sale_mode != 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.quality_check_pass_number / 100 - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.sale_mode == 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.return_roll - } - if ((DeatailObj.stage != ReturnEnum.Refunded || DeatailObj.stage != ReturnEnum.RefundedBefore || DeatailObj.stage != ReturnEnum.RefundedAfter) && DeatailObj.sale_mode != 0 && DeatailObj.type != ReturnType.TypeOne) { - return DeatailObj.total_number / 100 - } - if (DeatailObj.type == ReturnType.TypeOne) { - return DeatailObj.total_number / 100 - } - }, [DeatailObj]) - - return ( - - - - - - - {DeatailObj.purchaser_name} - {DeatailObj.purchaser_phone} - - - - - - 总计 - {totalGoods} 种面料,{totalColors} 种颜色,共 { totalNums} {DeatailObj?.sale_mode == 0 ? '条' : '米'} - - { - DeatailObj.stage == 0 && - - 合计金额 - ¥{ - formatPriceDiv(DeatailObj.total_refund_amount) - } - - } - { - (DeatailObj.stage == 3) && - 退款金额 - ¥{ - formatPriceDiv(DeatailObj.refund_amount) - } - - } - { - (DeatailObj.stage == 3) && - 其他扣除金额 - ¥{ - formatPriceDiv(DeatailObj.other_deduction_amount) - } - - } - { - (DeatailObj.stage == 3) && - 退款去向 - { - DeatailObj.refund_flow_name - } - - } - - - { - orderMsg.map((item, index) => { - return ( - - - {item.leftTitle} - - - {item.rightTitle} - {item.showBtn && clipboardData(item.rightTitle)}>复制} - - - - ) - }) - } - - - - - { - DeatailObj?.fabric_piece_accessory_url?.length > 0 && DeatailObj?.fabric_piece_accessory_url.map((item, index) => { - return ( - proview(item)} - mode="aspectFill" src={IMG_CND_Prefix + item} - > - ) - }) - } - { - DeatailObj?.fabric_piece_accessory_url?.length === 0 && 暂无图片 - } - - - - - { - checkKey('return_and_refund_audit') - ? <> - { - DeatailObj.stage === 0 && 售后审批 - } - - : null - } - { - (DeatailObj.stage === 0 || DeatailObj.stage === 1) && handCancle()}>取消退货 - - } - { - (DeatailObj.sale_mode == 0 && DeatailObj.stage == 3 && (DeatailObj.type == 1 || DeatailObj.type == 3)) && { handSee() }}>查看码单 - } - - - setShowCode(false)} - > - setShowSaleAfterPopup(false)}> - - 退回仓库* - } desc={ - clientObj.clientId !== -1 ? clientObj.clientName : '请选择仓库' - } isLink onClick={navTo} - > - - 售后备注 - - - - - 拒绝 - 同意 - - - - - ) -} -export default RefundMoneyDetail diff --git a/src/pages/refundPage/components/refundItemList/index.module.scss b/src/pages/refundPage/components/refundItemList/index.module.scss deleted file mode 100644 index bc878b7..0000000 --- a/src/pages/refundPage/components/refundItemList/index.module.scss +++ /dev/null @@ -1,221 +0,0 @@ -.itemBox { - margin-top: 38px; - overflow: hidden; - margin: 24px; - // height: 416px; - padding-bottom: 20px; - background: #ffffff; - border-radius: 16px; - margin-left: 24px; - - .topItem { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 24px; - - .orderNo { - font-size: 28px; - font-weight: 550; - color: #000000; - margin-left: 32px; - } - - .status { - margin-right: 32px; - font-size: 28px; - font-weight: 500; - color: #0d7cff; - } - } - - .pussName { - margin-left: 32px; - font-size: 28px; - font-weight: 550; - color: #505050; - } - - .line { - margin-left: 32px; - margin-right: 32px; - // width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-top: 16px; - margin-bottom: 24px; - } - - .contBox { - // width: 638px; - margin-left: 32px; - display: flex; - justify-content: space-between; - - .leftCont { - // min-width: 24%; - width: 134px; - height: 134px; - // background: #000000; - border-radius: 8px; - position: relative; - - .leftContNums { - width: 134px; - height: 39px; - background: #000000; - border-radius: 0px 0px 8px 8px; - opacity: 0.5; - position: absolute; - bottom: 0; - font-size: 20px; - font-weight: 400; - color: #ffffff; - text-align: center; - line-height: 39px; - } - } - - .rightCont { - margin-left: 24px; - min-width: 76%; - - .rightTop { - min-width: 76%; - display: flex; - align-items: center; - justify-content: space-between; - // width: 480px; - margin-bottom: 32px; - - .productBox { - display: flex; - align-items: center; - - .productName { - max-width: 285px; - height: 34px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-right: 8px; - font-size: 28px; - font-weight: 400; - color: #000000; - } - - } - - .shipMode { - font-size: 28px; - font-weight: 400; - color: #000000; - margin-right: 60px; - } - } - - .colorsBox { - padding-right: 60px; - display: flex; - align-items: center; - // width: 480px; - margin-bottom: 8px; - - .colorNameOne { - flex: 1; - font-size: 24px; - font-weight: 400; - color: #000000; - width: 133px; - height: 30px; - text-align: left; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .colorName { - flex: 1; - font-size: 24px; - font-weight: 400; - color: #000000; - text-align: center; - } - - .colorNameTwo { - flex: 1; - font-size: 24px; - font-weight: 400; - color: #000000; - text-align: right; - } - } - } - } - - .lineOne { - // width: 638px; - height: 1px; - margin-right: 32px; - background: #000000; - opacity: 0.1; - margin-left: 32px; - margin-top: 24px; - } - - .bottomMsg { - margin-top: 16px; - display: flex; - align-items: center; - justify-content: space-between; - color: #a8a8a8; - .msgLeft { - margin-left: 32px; - font-size: 24px; - font-weight: 400; - } - - .msgRight { - margin-right: 32px; - font-size: 24px; - font-weight: 400; - } - - .msgRightOne { - margin-right: 32px; - font-size: 28px; - font-weight: 500; - color: #f64861; - } - } - - .bottomBox { - margin-top: 10px; - display: flex; - justify-content: flex-end; - - .seeButon { - margin-right: 30px; - width: 160px; - height: 72px; - border-radius: 40px; - opacity: 0.6; - border: 1px solid #000000; - font-size: 28px; - font-weight: 400; - color: #000000; - text-align: center; - line-height: 72px; - } - } -} -.tag { - display: flex; - justify-content: center; - align-items: center; - width: 60px; - font-size: 20px; - padding: 0; - margin: 0 16px; -} diff --git a/src/pages/refundPage/components/refundItemList/index.tsx b/src/pages/refundPage/components/refundItemList/index.tsx deleted file mode 100644 index 1ad417a..0000000 --- a/src/pages/refundPage/components/refundItemList/index.tsx +++ /dev/null @@ -1,215 +0,0 @@ -import { Image, ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -// import BottomBtns from '@/components/BottomBtns' -import { formatPriceDiv } from '@/common/format' -import LabAndImg from '@/components/LabAndImg' -import SaleModeTag from '@/components/saleModeTag' - -enum ReturnEnum { - Refunded = 3, // 已退款 - RefundedBefore = 5, // 待退款-确认单 - RefundedAfter = 6, // 待退款 -} - -enum ReturnType { - TypeOne = 2, // 预收退款 -} -interface propsObj { - obj: any - cancle?: (arg: any, obj: any) => void - nextBuy?: (arg: any, obj: any) => void - toPay?: (arg: any, obj: any) => void - handSee?: (any) => void -} -const ItemList = (props: propsObj) => { - const navTo = (e) => { - if (e.type == 1) { - Taro.navigateTo({ - url: `/pages/refundDetail/index?id=${props?.obj?.id}`, - }) - } - else { - Taro.navigateTo({ - url: `/pages/refundMoneyDetail/index?id=${props?.obj?.id}`, - }) - } - } - - // 根据退款状态判断使用数组 - const refundArr = useMemo(() => { - // let booll = false - // let arr: any[] = [] - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.quality_check_pass_product - } - else { - return props?.obj.product_list - } - // if (booll) { - // arr = props?.obj.quality_check_pass_product - // } - // else { - // arr = props?.obj.product_list - // } - // return arr - }, [props?.obj]) - - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - - // 待退款和已退款需要变更字段 - const totalGoods = useMemo(() => { - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.quality_check_pass_fabrics - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.total_fabrics - } - if (props?.obj.type == ReturnType.TypeOne) { - return props?.obj.total_fabrics - } - }, [props?.obj]) - // 待退款和已退款需要变更字段 - const totalColors = useMemo(() => { - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.quality_check_pass_colors - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.total_colors - } - if (props?.obj.type == ReturnType.TypeOne) { - return props?.obj.total_colors - } - }, [props?.obj]) - // 待退款和已退款需要变更字段 - const totalNums = useMemo(() => { - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.quality_check_pass_number - } - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode != 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.quality_check_pass_number / 100 - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.total_number - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.sale_mode != 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj.total_number / 100 - } - if (props?.obj.type == ReturnType.TypeOne) { - return props?.obj.total_number / 100 - } - }, [props?.obj]) - - // 注意这些判断都是要配合后端一起判断的恶心代码 - // 证明不是前端的问题 - // 列表条数 - const itemOneNums = useMemo(() => { - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.quality_check_pass_product[0]?.product_colors[0]?.return_roll - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.product_list[0]?.product_colors[0]?.roll - } - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode != 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.quality_check_pass_product[0]?.product_colors[0]?.length / 100 - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.sale_mode != 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.product_list[0]?.product_colors[0]?.length / 100 - } - if (props?.obj.type == ReturnType.TypeOne) { - return props?.obj?.product_list[0]?.product_colors[0]?.length / 100 - } - }, [props?.obj]) - - const itemTwoNums = useMemo(() => { - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.quality_check_pass_product[0]?.product_colors[1]?.return_roll - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.sale_mode == 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.product_list[0]?.product_colors[1]?.roll - } - if ((props?.obj.stage == ReturnEnum.Refunded || props?.obj.stage == ReturnEnum.RefundedBefore || props?.obj.stage == ReturnEnum.RefundedAfter) && props?.obj.sale_mode != 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.quality_check_pass_product[0]?.product_colors[1]?.length / 100 - } - if ((props?.obj.stage != ReturnEnum.Refunded || props?.obj.stage != ReturnEnum.RefundedBefore || props?.obj.stage != ReturnEnum.RefundedAfter) && props?.obj.sale_mode != 0 && props?.obj.type != ReturnType.TypeOne) { - return props?.obj?.product_list[0]?.product_colors[1]?.length / 100 - } - if (props?.obj.type == ReturnType.TypeOne) { - return props?.obj?.product_list[0]?.product_colors[1]?.length / 100 - } - }, [props?.obj]) - console.log(refundArr, 'wwww') - return ( - - navTo(props.obj)}> - - 单号:{props?.obj?.order_no} - {props?.obj?.stage_name} - - {props?.obj?.purchaser_name} - - - - - { - props?.obj?.product_list[0]?.texture_url === '' - && - } - { - props?.obj?.product_list[0]?.texture_url !== '' - && <> - - - } - 颜色 ({props?.obj?.total_colors}) - - - - - - {props?.obj?.product_list[0]?.code} {props?.obj?.product_list[0]?.name} - - - {props?.obj?.shipment_mode_name} - - - {refundArr[0]?.product_colors[0]?.code} {refundArr[0]?.product_colors[0]?.name} - x{ itemOneNums } {props?.obj?.sale_mode === 0 ? '条' : 'm'} - ¥ {refundArr[0]?.product_colors[0]?.sale_price / 100}/kg - - { - refundArr[0]?.product_colors?.length > 1 && <> - - {refundArr[0]?.product_colors[1]?.code} {refundArr[0]?.product_colors[1]?.name} - x{ itemTwoNums } {props?.obj?.sale_mode === 0 ? '条' : 'm'} - ¥ {refundArr[0]?.product_colors[1]?.sale_price / 100}/kg - - - } - - - - - 布料信息: - {totalGoods} 种面料,{totalColors} 种颜色,共 {totalNums} {props?.obj?.sale_mode === 0 ? '条' : 'm'} - - { - (props?.obj.stage == 3) && - 退款金额: - - ¥{formatPriceDiv(props?.obj?.refund_amount)} - - } - { - (props.obj.sale_mode == 0 && props?.obj.stage == 3 && (props?.obj.type == 1 || props?.obj.type == 3)) && - { props?.handSee?.(e) }}>查看码单 - - } - - ) -} -export default memo(ItemList) diff --git a/src/pages/refundPage/components/tabs/index.module.scss b/src/pages/refundPage/components/tabs/index.module.scss deleted file mode 100644 index fdee9f6..0000000 --- a/src/pages/refundPage/components/tabs/index.module.scss +++ /dev/null @@ -1,40 +0,0 @@ -.flexBox { - width: 100%; - height: 102px; - background: #ffffff; - display: flex; - position: sticky; - top: 80px; - .itemBox { - position: relative; - flex: 1; - min-width: 138px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - height: 102px; - - .itemFont { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .activeItems { - font-size: 28px; - font-weight: 550; - color: #337fff; - } - - .borderBox { - position: absolute; - bottom: 0; - width: 138px; - height: 6px; - background: #337fff; - border-radius: 4px; - } - } -} diff --git a/src/pages/refundPage/components/tabs/index.tsx b/src/pages/refundPage/components/tabs/index.tsx deleted file mode 100644 index 6269478..0000000 --- a/src/pages/refundPage/components/tabs/index.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Button, Input, View } from '@tarojs/components' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' - -interface Props { - list: any[] - handChose?: (any) => void -} -const Tabs = (props: Props) => { - const { list = [], handChose } = props - - return ( - - { - list.map((item, index) => { - return ( - handChose?.(item)}> - {item?.name} - { - item.showBorder && - } - - ) - }) - } - - ) -} -export default memo(Tabs) diff --git a/src/pages/refundPage/index.config.ts b/src/pages/refundPage/index.config.ts deleted file mode 100644 index 9889566..0000000 --- a/src/pages/refundPage/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '退款/售后', - // enablePullDownRefresh: true, - // "backgroundTextStyle": "dark" -} diff --git a/src/pages/refundPage/index.module.scss b/src/pages/refundPage/index.module.scss deleted file mode 100644 index fc0916d..0000000 --- a/src/pages/refundPage/index.module.scss +++ /dev/null @@ -1,175 +0,0 @@ -page { - height: 100%; -} -.refundPage { - display: flex; - flex-flow: column nowrap; - height: 100%; - overflow: hidden; -} -.flexBox { - display: flex; - align-items: center; - justify-content: flex-end; - margin-left: 20px; -} - -.icon_shaixuan { - color: #0d7cff; - font-size: 35px !important; - margin-right: 10px; -} - -.activeshaixuan { - color: #000; - font-size: 35px !important; - margin-right: 10px; -} - -.shaixuan { - margin-right: 32px; - font-size: 28px; - font-weight: 400; - color: #000; -} - -.activeshai { - color: #0d7cff; - margin-right: 32px; - font-size: 28px; - font-weight: 400; -} - -.order_list { - flex: 1 1 auto; - background: #f7f7f7; - overflow: hidden; - .bigBpx { - height: 200px; - } -} - -.scrllStyle { - flex: 1 1 auto; -} - -.safeBox { - height: 100px; -} - -.popupBox { - display: flex; - flex-flow: column nowrap; - height: 75vh; - width: 100%; - - .thirdBox { - margin-top: 20px; - padding-left: 48px; - - .thirdTopfont { - font-size: 28px; - font-weight: 500; - color: #000000; - } - - .timeBox2 { - display: flex; - justify-content: center; - align-items: center; - margin-top: 24px; - height: 68px; - background: #e9e9e9; - border-radius: 8px; - margin-right: 48px; - text-align: center; - line-height: 68px; - position: relative; - font-size: 28px; - color: #848484; - } - - .flexModebox { - margin-top: 24px; - display: flex; - flex-wrap: wrap; - - .modeBox { - margin-bottom: 16px; - margin-right: 16px; - min-width: 152px; - padding: 17px 34px 17px 34px; - color: #848484; - background: #f6f6f6; - border-radius: 8px; - font-size: 28px; - font-weight: 400; - border: 1px solid #f6f6f6; - text-align: center; - box-sizing: border-box; - } - } - } - - .bottomBox { - width: 100%; - // width: 750px; - height: 160px; - background: #ffffff; - display: flex; - padding-top: 16px; - align-items: center; - justify-content: space-between; - - .resetBox { - margin-left: 48px; - width: 311px; - height: 80px; - border-radius: 44px; - border: 1px solid #087eff; - font-size: 28px; - font-weight: 500; - color: #337fff; - text-align: center; - line-height: 80px; - background-color: #fff; - } - - .button2 { - margin-right: 32px; - width: 311px; - height: 80px; - background: #68b4ff; - border-radius: 44px; - font-size: 28px; - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - } - - .activeButton { - margin-right: 32px; - width: 311px; - height: 80px; - background: #337fff; - border-radius: 44px; - font-size: 32px; - font-weight: 500; - color: #fff; - text-align: center; - line-height: 80px; - } - } - - // .areaBox { - // height: calc($customTabBarHeight + env(safe-area-inset-bottom)); - // width: 100%; - // } -} -.activemodeBox { - background: rgba(51, 127, 255, 0.1) !important; - color: #337fff !important; - font-weight: 550 !important; - border: 1px solid #337fff !important; -} diff --git a/src/pages/refundPage/index.tsx b/src/pages/refundPage/index.tsx deleted file mode 100644 index 23a8726..0000000 --- a/src/pages/refundPage/index.tsx +++ /dev/null @@ -1,419 +0,0 @@ -import { Button, Input, ScrollView, View } from '@tarojs/components' -import Taro, { faceVerifyForPay, useDidShow } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import ItemList from './components/refundItemList' -import Tabs from './components/tabs' -import Search from '@/components/search' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import Popup from '@/components/popup' -import InfiniteScroll from '@/components/infiniteScroll' -import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' -import { - MpEnumReturnStage, - MpEnumReturnType, - MpReturnApplyOrderList, -} from '@/api/refound' -import TimePickerPopup from '@/components/timePickerPopup' -import IconFont from '@/components/iconfont/iconfont' -import RefundCodelist from '@/components/RefundCodelist' - -const RefundPage = () => { - // 页码和页数 - - const [searchField, setSearchField] = useState< - { - status: number | unknown - page: number - size: number - name: string - sale_mode: number | string - stage: number | string - return_type: number | string - sale_start_time: number | string - sale_end_time: number | string - }>({ - status: 1, - page: 1, - size: 10, - name: '', - sale_mode: '不限', - stage: '不限', - return_type: '不限', - sale_start_time: '', - sale_end_time: '', - }) - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - - // 获取订单列表 - const { fetchData: listFetchData, state: orderState } = MpReturnApplyOrderList() - const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - // 输入了搜索关键字 - const getSearchData = useCallback((e) => { - pageNum.current.page = 1 - setOrderData(() => ({ list: [], total: 0 })) - setSearchField(val => ({ ...val, name: e, size: 10 })) - }, []) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading! }) - }, [orderData, orderState]) - - // 上拉加载数据 - const getScrolltolower = useCallback(() => { - if (orderData.list.length < orderData.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [orderData]) - - // 顶部栏 - const [TarBarList, setTarBarList] = useState([{ id: 1, name: '售后申请', showBorder: true }, { id: 2, name: '申请记录', showBorder: false }]) - const handChose = (item) => { - if (item.id === searchField.status) { return } - TarBarList.forEach((it) => { - if (it.id === item.id) { - it.showBorder = true - } - else { - it.showBorder = false - } - setTarBarList([...TarBarList]) - pageNum.current.page = 1 - setOrderData(() => ({ list: [], total: 0 })) - setSearchField(val => ({ ...val, size: 10, status: item.id })) - // getOrderList() - }) - } - - // 筛选内容展示 - const [showPopup, setshowPopup] = useState(false) - const showSelctPopup = () => { - setshowPopup(true) - } - - // 关闭筛选内容展示 - const closePopup = () => { - setshowPopup(false) - } - - // 订单类型 - const [modeList, setModeList] = useState([{ id: '', name: '不限' }, { id: 0, name: '大货' }, { id: 1, name: '剪版' }, { id: 2, name: '散剪' }]) - // 选择订单类型 - const handCheckMode = (item) => { - modeList.map((it) => { - if (it.id === item.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setModeList([...modeList]) - setSearchField(e => ({ ...e, sale_mode: item.id })) - } - - // 售后状态 - const [stageList, setStageList] = useState([]) - const { fetchData: stageFetch } = MpEnumReturnStage() - const getStagelist = async() => { - const res = await stageFetch() - if (res.data) { - res.data.list.unshift({ id: '', name: '不限', checked: false }) - res.data.list.map((it) => { - it.checked = false - return it - }) - setStageList([...res.data.list]) - } - } - - // 选择售后状态 - const handCheckStange = (item) => { - stageList.map((it) => { - if (it.id === item.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setStageList([...stageList]) - setSearchField(val => ({ ...val, stage: item.id })) - } - - // 退款类型 - const [typeList, setTypeList] = useState([]) - const { fetchData: typeFetch } = MpEnumReturnType() - const getTypeList = async() => { - const res = await typeFetch() - if (res.data) { - res.data.list.unshift({ id: '', name: '不限', checked: false }) - res.data.list.map((it) => { - it.checked = false - return it - }) - setTypeList([...res.data.list]) - } - } - - // 选择售后类型 - const handType = (item) => { - typeList.map((it) => { - if (it.id === item.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setTypeList([...typeList]) - setSearchField(val => ({ ...val, return_type: item.id })) - } - - // 是否不允许确认筛选 - const isDisabled = useMemo(() => { - if (searchField.stage !== '不限' - || searchField.sale_mode !== '不限' - || searchField.return_type !== '不限' - || searchField.sale_start_time !== '' - || searchField.sale_end_time !== '' - ) { - return false - } - else { - return true - } - }, [searchField]) - - // 数组重置 - const resetArr = (arr) => { - arr.map((it) => { - it.checked = false - return it - }) - return arr - } - - // 展示时间筛选 - const [showTime, setShowTime] = useState(false) - // 关闭时间筛选 - const handClose = () => { - setShowTime(false) - } - const myDate = new Date() - const [start, setStart] = useState(myDate.toLocaleDateString()) - const [end, setEnd] = useState('') - // 选择时间 - const handTime = (eq) => { - // 直接进来点确定的时候做处理 - if (Object.keys(eq).length === 0) { - const obj = { - start: '', - end: '', - } - obj.start = `${dayjs(new Date(`${myDate?.toLocaleDateString()} ` + '00:00:00')).format('YYYY-MM-DD')} 00:00:00` - obj.end = `${dayjs(new Date(obj?.start)).add(1, 'day').format('YYYY-MM-DD')} 00:00:00` - eq.value = obj - } - setSearchField(val => ({ ...val, sale_start_time: eq?.value?.start, sale_end_time: eq?.value?.end, size: 10 })) - setStart(eq?.value?.start) - setEnd(eq?.value?.end) - setShowTime(false) - console.log(eq, 6666) - } - const getOrderList = async() => { - const res = await listFetchData({ - ...searchField, - // ...getFilterData(searchField), - // ...getFilterData(searchObj) - }) - setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - // setshowPopup(false) - setRefresherTriggeredStatus(false) - } - const timeArea = useMemo(() => { - if (end !== '') { - return `${start} ` + '-' + ` ${end}` - } - else { - return '自定义起始时间' - } - }, [end]) - // 重置 - const handReset = () => { - const arrOne = resetArr(modeList) - setModeList([...arrOne]) - const arrTwo = resetArr(typeList) - setTypeList([...arrTwo]) - const arrThree = resetArr(stageList) - setStageList([...arrThree]) - setSearchField(e => ({ - ...e, - sale_mode: '不限', - stage: '不限', - return_type: '不限', - sale_start_time: '', - sale_end_time: '', - })) - setStart(myDate.toLocaleDateString()) - setEnd('') - closePopup() - // getOrderList() - } - const handSure = () => { - pageNum.current.page = 1 - setSearchField(val => ({ ...val, size: 10 })) - setshowPopup?.(false) - getOrderList() - } - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - getOrderList() - } - useEffect(() => { - setSearchField(searchField) - }, [searchField]) - - const [ShowCode, setShowCode] = useState(false) - const [ItemInfo, setItemInfo] = useState({}) - const handSee = (e, item) => { - e.stopPropagation() - setItemInfo(item) - setShowCode(true) - } - useEffect(() => { - getStagelist() - getTypeList() - }, []) - // 监听筛选条件变化 - useEffect(() => { - getOrderList() - }, [searchField.size, - searchField.name, - searchField.status, - searchField.sale_start_time, - searchField.sale_end_time, - searchField.sale_mode, - searchField.return_type, - searchField.stage, - ]) - return ( - - - - showSelctPopup()}> - - 筛选 - - - - handChose?.(item)}> - - - {orderData?.list?.map((item, index) => { - return ( - - handSee(e, item)} - > - - ) - })} - - - - - - - 售后状态 - - { - stageList.map((item, index) => { - return ( - { handCheckStange(item) }} className={classnames(styles.modeBox, item.checked && styles.activemodeBox)} key={index}>{item.name} - ) - }) - } - - - - 订单类型 - - { - modeList.map((item, index) => { - return ( - { handCheckMode(item) }} className={classnames(styles.modeBox, item.checked && styles.activemodeBox)} key={index}>{item.name} - ) - }) - } - - - - 退款类型 - - { - typeList.map((item, index) => { - return ( - { handType(item) }} className={classnames(styles.modeBox, item.checked && styles.activemodeBox)} key={index}>{item.name} - ) - }) - } - - - - 售后时间 - { setShowTime(true) }}>{timeArea} - - { - timeArea == '自定义起始时间' && - } - - - - - - - - - - - handTime(e)} - > - setShowCode(false)} - > - - ) -} - -export default RefundPage diff --git a/src/pages/saleStatistic/config.ts b/src/pages/saleStatistic/config.ts deleted file mode 100644 index 81c58b6..0000000 --- a/src/pages/saleStatistic/config.ts +++ /dev/null @@ -1,180 +0,0 @@ -// 订单 -export const OrderForm = { - summary: { - summaryTitle: '订单总数', - tips: '已成功下单的总单数', - value: { - num: '', - cls: '', - }, - total: { - num: '', - cls: '', - }, - }, - form: { - processing_order_number: { - cellTitle: '待配布订单', - tips: '已经预约和正在配布的订单数', - value: { - num: '', - cls: '', - }, - }, - processed_order_number: { - cellTitle: '已配布订单', - tips: '所有配完布、已批准发货、已经发货的订单总单数', - value: { - num: '', - cls: '', - }, - }, - }, -} -// 配布 -export const ArrangedForm = { - summary: { - summaryTitle: '已配布匹数', - tips: '所有配完布、已批准发货、已经发货的订单总匹数', - value: { - num: '', - cls: '', - }, - total: { - num: '', - cls: '', - }, - }, - form: { - wait_collect_order_number: { - cellTitle: '待收款单数', - tips: '已配完布但未批准发货的所有订单总单数', - value: { - num: '', - cls: '', - }, - }, - wait_collect_number: { - cellTitle: '待收款匹数', - tips: '已配完布但未批准发货的所有订单总匹数', - value: { - num: '', - cls: '', - }, - }, - wait_collect_amount_sum: { - cellTitle: '待收款金额', - tips: '已配完布但未批准发货的所有订单总金额', - value: { - num: '', - cls: '', - }, - }, - not_shipped_order_number: { - cellTitle: '待发货单数', - tips: '已批准发货但未发货出库的所有订单总单数', - value: { - num: '', - cls: '', - }, - }, - not_shipped_number: { - cellTitle: '待发货匹数', - tips: '已批准发货但未发货出库的所有订单总匹数', - value: { - num: '', - cls: '', - }, - }, - not_shipped_amount_sum: { - cellTitle: '待发货金额', - tips: '已批准发货但未发货出库的所有订单总金额', - value: { - num: '', - cls: '', - }, - }, - shipped_order_number: { - cellTitle: '已发货单数', - tips: '已经发货出库的所有订单总单数', - value: { - num: '', - cls: '', - }, - }, - shipped_number: { - cellTitle: '已发货匹数', - tips: '已经发货出库的所有订单总匹数', - value: { - num: '', - cls: '', - }, - }, - shipped_amount_sum: { - cellTitle: '已发货金额', - tips: '已经发货出库的所有订单总金额', - value: { - num: '', - cls: '', - }, - }, - }, -} -// 货款 -export const PaymentAmountForm = { - summary: { - summaryTitle: '货款金额', - tips: '已经发货出库的所有订单总金额', - value: { - num: '', - cls: '', - }, - }, - form: { - amount_unreceived_sum: { - cellTitle: '未收金额', - tips: '已经批准发货出库但未收到货款的所有订单总金额', - value: { - num: '', - cls: '', - }, - }, - amount_received_sum: { - cellTitle: '已收金额', - tips: '已收且已经发货出库的所有订单总金额', - value: { - num: '', - cls: '', - }, - }, - }, -} -// 退货 -export const ReturnGoodsOrderForm = { - summary: { - summaryTitle: '退货单数', - tips: '已经完成退货入库的退货单总单数', - value: { - num: '', - cls: '', - }, - }, - form: { - return_goods_number: { - cellTitle: '退货匹数', - tips: '已经完成退货入库的退货单总匹数', - value: { - num: '', - cls: '', - }, - }, - return_amount_sum: { - cellTitle: '退货金额', - tips: '已经完成退货入库的退货单总金额', - value: { - num: '', - cls: '', - }, - }, - }, -} diff --git a/src/pages/saleStatistic/index.config.ts b/src/pages/saleStatistic/index.config.ts deleted file mode 100644 index 1d79a3d..0000000 --- a/src/pages/saleStatistic/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '销售统计', - enablePullDownRefresh: false, -} diff --git a/src/pages/saleStatistic/index.module.scss b/src/pages/saleStatistic/index.module.scss deleted file mode 100644 index 135c5e9..0000000 --- a/src/pages/saleStatistic/index.module.scss +++ /dev/null @@ -1,92 +0,0 @@ -page { - height: 100%; - overflow: hidden; -} -.saleStatistic { - display: flex; - flex-flow: column nowrap; - height: 100%; - &--filterBar { - display: flex; - flex-flow: row nowrap; - justify-content: space-evenly; - align-items: center; - width: 100%; - background-color: white; - } - &--content { - flex: 1 1 auto; - padding-top: 24px; - overflow-y: scroll; - } -} -.title { - font-size: $font_size; - color: $color_font_one; - font-weight: bold; -} -.cell-desc { - font-weight: 550; - color: $color_font_one; - font-size: 34px; - padding: 6px 0; -} -.totalSummary { - display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; - padding: 12px 0 24px 0; - &--title { - font-size: $font_size; - margin: 0 10px; - color: $color_font_three; - } - &--current { - color: $color_main; - font-size: 42px; - font-weight: 550; - } - &--totalNum { - color: $color_font_three; - font-size: $font_size; - } -} - -.rankingIndicatorTitle { - position: 'relative'; - padding: 0 32px; -} - -.rankingTabs { - position: relative; - background-color: #f5f5f5; - box-sizing: border-box; - border-radius: 8px; - margin-bottom: 24px; - width: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - .rankingTab { - flex: 1; - padding: 15px; - color: $color_font_one; - background-color: transparent; - text-align: center; - font-size: $font_size; - transition: all 0.1s; - } - .active { - color: white; - border-radius: 8px; - background-color: $color_main; - } -} - -.amount { - color: $color_main; -} - - diff --git a/src/pages/saleStatistic/index.tsx b/src/pages/saleStatistic/index.tsx deleted file mode 100644 index bc2eb38..0000000 --- a/src/pages/saleStatistic/index.tsx +++ /dev/null @@ -1,609 +0,0 @@ -import { Text, View } from '@tarojs/components' -import classnames from 'classnames' -import dayjs from 'dayjs' -import { memo, useCallback, useEffect, useRef, useState } from 'react' -import styles from './index.module.scss' -import { ArrangedForm, OrderForm, PaymentAmountForm, ReturnGoodsOrderForm } from './config' -import { ProductRankApi, PurchaserRankApi, SaleOrderDataFormApi, SalesmanRankApi } from '@/api/statistic/saleStatistic' -import { dataUnit, formatHashTag, formatPriceDiv, setPriceUnit } from '@/common/format' -import { getFilterData } from '@/common/util' -import Cell from '@/components/cell' -import Divider from '@/components/Divider' -import Iconfont from '@/components/iconfont/iconfont' -import LayoutBlock from '@/components/layoutBlock' -import SelectMarketingDepartment from '@/components/SelectMarketingDepartment' -import SelectSaleRankingIndicators from '@/components/SelectSaleRankingIndicators' -import SelectSaleType from '@/components/SelectSaleType' -import type { ChangedValue } from '@/components/SelectTimePicker' -import SelectTimePicker from '@/components/SelectTimePicker' -import type { ColumnsType, TablePropsType } from '@/components/table' -import Table from '@/components/table' -import ToolTip from '@/components/toolTips' -import IconText from '@/components/iconText' -import SelectGroup from '@/components/SelectGroup' - -// 处理金额(后端单位分,转元) 兼容负数 -const priceformat = (val: number) => { - const stringVal = String(val) - return stringVal[0] === '-' ? `-${dataUnit(Number(stringVal.slice(1)) / 100)}` : dataUnit(val / 100) -} - -const defaultLimit = 10 - -const FilterTimeOptions = { - 0: { - name: '今天', - date_min: `${dayjs(new Date()) - .add(0, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()) - .add(1, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - }, - 1: { - name: '昨日', - date_min: `${dayjs(new Date()) - .add(-1, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()) - .add(0, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - }, - 2: { - name: '近7日', - date_min: `${dayjs(new Date()) - .add(-7, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()) - .add(0, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - }, - 3: { - name: '近30日', - date_min: `${dayjs(new Date()) - .add(-30, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()) - .add(0, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - }, - 4: { - name: '近90日', - date_min: `${dayjs(new Date()) - .add(-90, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()) - .add(0, 'day') - .format('YYYY-MM-DD')} 00:00:00`, - }, -} - -// 需要传进来的数据示例 - -// 需要传进来的表头数据示例 -const productRankingColumns = [ - { - key: 'index', - title: '编号', - dataIndex: 'index', - width: '10%', - }, - { - key: 'product_name', - title: '面料名称', - dataIndex: 'product_name', - width: '45%', - ellipsis: { - isEllipsis: true, - rows: 1, - }, - showTipsConfig: { - tips: (text: string) => text, - isShowTips: true, - }, - }, - { - key: 'roll', - title: '匹数', - dataIndex: 'roll', - width: '20%', - }, - { - key: 'sales_amount', - title: '交易金额', - dataIndex: 'sales_amount', - width: '25%', - render: (text: string) => {text}, - }, -] - -// 需要传进来的表头数据示例 -const purchaserRankingColumns = [ - { - key: 'index', - title: '编号', - dataIndex: 'index', - width: '10%', - }, - { - key: 'purchaser_name', - title: '客户名称', - dataIndex: 'purchaser_name', - width: '45%', - ellipsis: { - isEllipsis: true, - rows: 2, - }, - }, - { - key: 'roll', - title: '交易匹数', - dataIndex: 'roll', - width: '20%', - }, - { - key: 'sales_amount', - title: '交易金额', - dataIndex: 'sales_amount', - width: '25%', - render: (text: string) => {text}, - }, -] - -// 需要传进来的表头数据示例 -const salesmanRankingColumns = [ - { - key: 'index', - title: '编号', - dataIndex: 'index', - width: '10%', - }, - { - key: 'sale_user_name', - title: '业务员名称', - dataIndex: 'sale_user_name', - width: '45%', - ellipsis: { - isEllipsis: true, - rows: 2, - }, - }, - { - key: 'roll', - title: '销售匹数', - dataIndex: 'roll', - width: '20%', - }, - { - key: 'sales_amount', - title: '销售金额', - dataIndex: 'sales_amount', - width: '25%', - render: (text: string) => {text}, - }, -] - -const tabsConfig = [ - { - name: '面料', - key: 0, - }, - { - name: '客户', - key: 1, - }, - { - name: '业务员', - key: 2, - }, -] - -interface RankingBlockPropsType { - saleType?: number | null - saleDepartmentId?: number | null - date_min?: string - date_max?: string -} -// 销售排行 -const RankingBlock = (props: RankingBlockPropsType) => { - const { saleType, saleDepartmentId, date_min, date_max } = props - - const { fetchData: fetchProductRank } = ProductRankApi() - const { fetchData: fetchPurchaserRank } = PurchaserRankApi() - const { fetchData: fetchSalesmanRank } = SalesmanRankApi() - - const [limit, setLimit] = useState(defaultLimit) - - const [indicator, setIndicator] = useState(1) - - // 切换排行指标 - const onChangeIndicators = useCallback((indicators: number) => { - console.log('indicators', indicators) - if (indicators === -1) { - setIndicator(null) - } - else { - setIndicator(indicators) - } - }, []) - - const [currentKey, setCurrentKey] = useState(tabsConfig[0].key) - - const handleClickTab = (event) => { - const key = event.target.dataset.key - if (key === currentKey) { return } - setCurrentKey(key) - setLimit(defaultLimit) - } - const [currentTable, setCurrentTable] = useState({ - columns: productRankingColumns, - }) - const getData = useCallback( - async(tabKey: number) => { - let res: any - const payload = { - limit, - sale_type: saleType, - sale_department_id: saleDepartmentId, - date_min, - date_max, - data_form_status: indicator, - } - if (tabKey === 0) { - res = await fetchProductRank(getFilterData(payload)) - } - else if (tabKey === 1) { - res = await fetchPurchaserRank(getFilterData(payload)) - } - else { - res = await fetchSalesmanRank(getFilterData(payload)) - } - if (res.data) { - console.log('排名', res.data) - if (tabKey === 0) { - setCurrentTable(() => ({ - columns: productRankingColumns, - dataSource: { - list: res.data.list.map((item, index: number) => ({ - key: index, - index: index + 1, - product_name: formatHashTag(item.product_code, item.product_name) || '--', - sales_amount: `¥${priceformat(item.sales_amount)}`, - roll: dataUnit(item.roll), - })), - total: res.data.total, - }, - })) - } - else if (tabKey === 1) { - setCurrentTable(() => ({ - columns: purchaserRankingColumns, - dataSource: { - list: res.data.list.map((item, index: number) => ({ - key: index, - index: index + 1, - purchaser_name: item.purchaser_name || '--', - sales_amount: `¥${priceformat(item.sales_amount)}`, - roll: dataUnit(item.roll), - })), - total: res.data.total, - }, - })) - } - else { - setCurrentTable(() => ({ - columns: salesmanRankingColumns, - dataSource: { - list: res.data.list.map((item, index: number) => ({ - key: index, - index: index + 1, - sale_user_name: item.sale_user_name || '--', - sales_amount: `¥${priceformat(item.sales_amount)}`, - roll: dataUnit(item.roll), - })), - total: res.data.total, - }, - })) - } - } - }, - [limit, saleType, saleDepartmentId, date_min, date_max, indicator], - ) - - useEffect(() => { - getData(currentKey) - }, [currentKey, getData]) - - const handleLoadMore = () => { - console.log('loadmore') - // TODO(优化):结合接口的offset 和 limit 分段请求接口然后通过 push 将旧数据和新数据拼接起来 - setLimit(v => v + defaultLimit) - } - - return ( - <> - {/* 销售排行 */} - - - - - 销售排行 - - - - - - - - - {tabsConfig.map((item) => { - return ( - - {item.name} - - ) - })} - -
-
-
- - ) -} -const RankingBlockWithMemo = memo(RankingBlock) - -// 销售统计 -const SaleStatistic = () => { - const { fetchData } = SaleOrderDataFormApi() - - const [saleType, setSaleType] = useState(null) - const [saleDepartmentId, setSaleDepartmentId] = useState(null) - const [dateRange, setDateRange] = useState({ - date_min: FilterTimeOptions[0].date_min, - date_max: FilterTimeOptions[0].date_max, - }) - - const getData = async() => { - const res = await fetchData( - getFilterData({ - sale_type: saleType, - sale_department_id: saleDepartmentId, - date_min: dateRange.date_min, - date_max: dateRange.date_max, - }), - ) - if (res.data) { - // 订单 - OrderForm.summary.value = setPriceUnit(res.data.order_number) - OrderForm.summary.total = setPriceUnit(res.data.total_roll) - OrderForm.form.processed_order_number.value = setPriceUnit(res.data.processed_order_number) - OrderForm.form.processing_order_number.value = setPriceUnit(res.data.processing_order_number) - // 配布 - ArrangedForm.summary.total = setPriceUnit(formatPriceDiv(res.data.arranged_amount_sum)) - ArrangedForm.summary.value = setPriceUnit(res.data.arranged_number) - ArrangedForm.form.not_shipped_amount_sum.value = setPriceUnit(formatPriceDiv(res.data.not_shipped_amount_sum) as number) - ArrangedForm.form.not_shipped_number.value = setPriceUnit(res.data.not_shipped_number) - ArrangedForm.form.not_shipped_order_number.value = setPriceUnit(res.data.not_shipped_order_number) - ArrangedForm.form.shipped_amount_sum.value = setPriceUnit(formatPriceDiv(res.data.shipped_amount_sum) as number) - ArrangedForm.form.shipped_number.value = setPriceUnit(res.data.shipped_number) - ArrangedForm.form.shipped_order_number.value = setPriceUnit(res.data.shipped_order_number) - ArrangedForm.form.wait_collect_amount_sum.value = setPriceUnit(formatPriceDiv(res.data.wait_collect_amount_sum) as number) - ArrangedForm.form.wait_collect_number.value = setPriceUnit(res.data.wait_collect_number) - ArrangedForm.form.wait_collect_order_number.value = setPriceUnit(res.data.wait_collect_order_number) - // 货款 - PaymentAmountForm.summary.value = setPriceUnit(formatPriceDiv(res.data.payment_amount_sum) as number) - PaymentAmountForm.form.amount_received_sum.value = setPriceUnit(formatPriceDiv(res.data.amount_received_sum) as number) - PaymentAmountForm.form.amount_unreceived_sum.value = setPriceUnit(formatPriceDiv(res.data.amount_unreceived_sum) as number) - // 退货 - ReturnGoodsOrderForm.summary.value = setPriceUnit(res.data.return_goods_order_number) - ReturnGoodsOrderForm.form.return_amount_sum.value = setPriceUnit(formatPriceDiv(res.data.return_amount_sum) as number) - ReturnGoodsOrderForm.form.return_goods_number.value = setPriceUnit(res.data.return_goods_number) - console.log(res.data) - } - } - - const onChangeTimePicker = useCallback((value: ChangedValue) => { - console.log(value) - setDateRange({ - date_max: value[1], - date_min: value[0], - }) - }, []) - - const onChangeSaleType = useCallback((saleType: number) => { - console.log('saleType', saleType) - // 全部 - if (saleType === -1) { - setSaleType(null) - } - else { - setSaleType(saleType) - } - }, []) - - const onChangeDepartment = useCallback((department: number) => { - console.log('department', department) - // 全部 - if (department === -1) { - setSaleDepartmentId(null) - } - else { - setSaleDepartmentId(department) - } - }, []) - - const selectSaleTypeRef = useRef(null) - const selectMarketingDepartmentRef = useRef(null) - const selectTimePickerRef = useRef(null) - useEffect(() => { - getData() - }, [saleType, saleDepartmentId, dateRange]) - return ( - - - - true} ref={selectSaleTypeRef}> - true} ref={selectMarketingDepartmentRef}> - true} defaultValue={0} timeOptions={FilterTimeOptions} ref={selectTimePickerRef}> - - - - - - - - - - {OrderForm.summary.summaryTitle} - {/* - - {OrderForm.summary.summaryTitle} - - - */} - {OrderForm.summary.value.num} - - (共 {OrderForm.summary.total.num} - 匹) - - - {Object.entries(OrderForm.form).map(([key, value]) => { - return ( - {value.cellTitle} - // - // - // {value.cellTitle} - // - // - // - } - desc={value.value.num} - customDescClassName={value.value.cls} - customClassName={styles['cell-desc']} - > - ) - })} - - - - - - - - {ArrangedForm.summary.summaryTitle} - {/* - - {ArrangedForm.summary.summaryTitle} - - - */} - {ArrangedForm.summary.value.num} - - (共计 {ArrangedForm.summary.total.num}) - - - {Object.entries(ArrangedForm.form).map(([key, value], index) => { - return ( - <> - {value.cellTitle} - // - // - // {value.cellTitle} - // - // - // - } - desc={value.value.num} - customDescClassName={value.value.cls} - customClassName={styles['cell-desc']} - > - {((index + 1) % 3 === 0 && (index + 1) !== 9) ? : null} - - ) - })} - - - - - - - - {PaymentAmountForm.summary.summaryTitle} - {/* - - {PaymentAmountForm.summary.summaryTitle} - - - */} - {PaymentAmountForm.summary.value.num} - - {Object.entries(PaymentAmountForm.form).map(([key, value]) => { - return ( - {value.cellTitle} - // - // - // {value.cellTitle} - // - // - // - } - desc={value.value.num} - customDescClassName={value.value.cls} - customClassName={styles['cell-desc']} - > - ) - })} - - - - - - - - {ReturnGoodsOrderForm.summary.summaryTitle} - {/* - - {ReturnGoodsOrderForm.summary.summaryTitle} - - - */} - - {ReturnGoodsOrderForm.summary.value.num} - - - {Object.entries(ReturnGoodsOrderForm.form).map(([key, value]) => { - return ( - {value.cellTitle} - // - // - // {value.cellTitle} - // - // - // - } - desc={value.value.num} - customDescClassName={value.value.cls} - customClassName={styles['cell-desc']} - > - ) - })} - - - - - ) -} - -export default SaleStatistic diff --git a/src/pages/saleuserPage/index.config.ts b/src/pages/saleuserPage/index.config.ts deleted file mode 100644 index f43056d..0000000 --- a/src/pages/saleuserPage/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '选择业务员', -} diff --git a/src/pages/saleuserPage/index.module.scss b/src/pages/saleuserPage/index.module.scss deleted file mode 100644 index ada2c52..0000000 --- a/src/pages/saleuserPage/index.module.scss +++ /dev/null @@ -1,112 +0,0 @@ -page { - background: #f7f7f7; -} - -.cussBox { - - .searchBox { - position: sticky; - top: 0; - width: 100%; - height: 96px; - background: #FFFFFF; - display: flex; - align-items: center; - - .two { - width: 702px; - height: 72px; - margin-left: 24px; - } - } - - .listBox { - height: calc(100vh - 96px); - } - - .itemBox { - margin-left: 24px; - margin-right: 24px; - // width: 702px; - height: 104px; - background: #FFFFFF; - border-radius: 16px; - display: flex; - align-items: center; - margin-top: 24px; - box-sizing: border-box; - - .cussName { - margin-left: 48px; - width: 168px; - height: 34px; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .phone { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .woker { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } - - .acticveitemBox { - margin-left: 24px; - margin-right: 24px; - // width: 702px; - height: 104px; - background: #FFFFFF; - border-radius: 16px; - display: flex; - align-items: center; - margin-top: 24px; - box-sizing: border-box; - - border: 1px solid #337FFF; - - .cussName { - margin-left: 48px; - width: 168px; - height: 34px; - font-size: 28px; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - .phone { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - - .woker { - margin-left: 88px; - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - } - } -} \ No newline at end of file diff --git a/src/pages/saleuserPage/index.tsx b/src/pages/saleuserPage/index.tsx deleted file mode 100644 index 5701065..0000000 --- a/src/pages/saleuserPage/index.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import { Button, Image, Input, ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Search from '@/components/search' -import { MpEnumSaleUserList } from '@/api/order' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, getFilterData } from '@/common/util' - -const SaleUserPage = () => { - const [search, setSearch] = useState({ - name: null, - page: 1, - size: 10, - }) - const [clentList, setClientlist] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const { fetchData: clitentFetch, state: orderState } = MpEnumSaleUserList() - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: clentList.list, total: clentList.total, status: orderState.loading! }) - }, [clentList, orderState]) - - const [clientObj, setclientObj] = useState({ - saleuserId: null, - saleuserName: '', - }) - - const pageNum = useRef({ size: search.size, page: search.page }) - // 输入了搜索关键字 - const getSearchData = useCallback((eq) => { - pageNum.current.page = 1 - setClientlist(() => ({ list: [], total: 0 })) - setSearch(e => ({ ...e, name: eq, size: 10 })) - }, []) - - const router = useRouter() - - // 上拉加载数据 - const getScrolltolower = useCallback(() => { - if (clentList.list.length < clentList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearch(e => ({ ...e, size })) - console.log(search, 11111) - } - }, [clentList]) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearch(val => ({ ...val, size: 10 })) - } - const getCuss = async() => { - const res = await clitentFetch({ name: search.name === null ? '' : search.name, page: search.page, size: search.size }) - if (router?.params.clientId) { - res.data.list.map((item) => { - if (item.id == router?.params.clientId) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - } - setClientlist(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(() => false) - } - // 选择业务员 - const selectClient = (item) => { - clentList.list.map((it) => { - if (item.id === it.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - prevPage.setData({ // 设置上一个页面的值 - saleuserId: item.id, - saleuserName: item.name, - }) - setClientlist(e => ({ ...e, list: clentList?.list, total: clentList?.total })) - setclientObj(item) - Taro.navigateBack({ - delta: 1, - }) - } - useEffect(() => { - if (clientObj?.saleuserId !== null) { - setclientObj(clientObj) - } - else { - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - prevPage.setData({ // 设置上一个页面的值 - saleuserId: '', - saleuserName: '', - }) - } - }, [clientObj]) - - useEffect(() => { - if (search.name === '') { - setSearch(e => ({ ...e, name: null })) - } - if (search.name !== '') { getCuss() } - }, [search]) - return ( - - - - - - - - - - { - clentList.list.map((item, index) => { - return ( - { selectClient(item) }}> - {item.name} - {item.phone} - {item.sale_user_name} - - ) - }) - } - - - - - ) -} - -export default SaleUserPage diff --git a/src/pages/sampleCutting/addSampleCutting/index.config.ts b/src/pages/sampleCutting/addSampleCutting/index.config.ts deleted file mode 100644 index 835f5c2..0000000 --- a/src/pages/sampleCutting/addSampleCutting/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '领取剪样', - disableSwipeBack: true, - navigationStyle: 'custom', -} diff --git a/src/pages/sampleCutting/addSampleCutting/index.module.scss b/src/pages/sampleCutting/addSampleCutting/index.module.scss deleted file mode 100644 index a18b03d..0000000 --- a/src/pages/sampleCutting/addSampleCutting/index.module.scss +++ /dev/null @@ -1,137 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.backIcon { - transform: rotate(180deg); -} -.layoutBlock { - padding: 24px 34px; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.context { - flex: 1 1 auto; - height: 100%; - overflow-y: scroll; -} -.addButton { - margin: 24px; - font-size: 28px; -} -.customerTop { - color: #333333; - font-size: 28px; -} -.customerBottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - color: #9b9b9b; - font-size: 28px; -} - -.colorCardTop { - font-size: 28px; - font-weight: 550; -} -.colorCardBottom { - width: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - overflow: hidden; - margin-bottom: 24px; - .leftCont { - width: 134px; - height: 134px; - border-radius: 8px; - margin-right: 24px; - } - .rightCont { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - &__top { - font-size: 28px; - @include common_ellipsis(1); - } - &__bottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - width: 100%; - align-items: flex-end; - } - &__left { - flex: 1 1 auto; - overflow: hidden; - } - &__right { - width: 35%; - } - } -} -.paymentMethod { - text-align: right; - font-size: 28px; - font-weight: 550; - color: #f64861; -} - -.remarkTop { - display: flex; - justify-content: space-between; - .remarkTitle { - font-size: 28px; - font-weight: 500; - color: #393939; - } - .remarkTag { - display: flex; - flex-flow: row nowrap; - font-size: 24px; - color: #626262; - } -} - -.remarkBottom { - .remarkContent { - font-size: 28px; - color: #999999; - } -} - -.bottomBar { - .bottomTotal { - color: #aeaeae; - font-size: 24px; - } - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); -} -.bottomBar__button { - padding: 0 70px; - font-size: 28px; -} diff --git a/src/pages/sampleCutting/addSampleCutting/index.tsx b/src/pages/sampleCutting/addSampleCutting/index.tsx deleted file mode 100644 index cf38f9c..0000000 --- a/src/pages/sampleCutting/addSampleCutting/index.tsx +++ /dev/null @@ -1,459 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro, { useDidShow, useUnload } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useState } from 'react' -import type { SampleCuttingCache } from '../sampleCuttingList' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import NormalButton from '@/components/normalButton' -import Divider from '@/components/Divider' -import IconFont from '@/components/iconfont/iconfont' -import LabAndImg from '@/components/LabAndImg' -import Counter from '@/components/counter' -import { alert, goLink } from '@/common/common' -import { ClientListApi } from '@/api/order' -import AddressDetailBox from '@/pages/orderDetails/components/addressDetailBox' -import Popup from '@/components/popup' -import Remark from '@/pages/orderDetails/components/remark' -import { formatRemoveHashTag } from '@/common/format' -import { SubmitCutSampleOrder } from '@/api/sampleCutting' -import NavBar from '@/pages/order/components/NavBar' -import { MpPurchaserAddressList } from '@/api/addressList' -import { debounce } from '@/common/util' - -const AddColorCard = () => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - const [addressInfo, setAddressInfo] = useState({}) - - // 获取客户 - const [clientList, setClientList] = useState([]) - const { fetchData: fetchClientData } = ClientListApi() - - const [order, setOrder] = useState([]) - - useDidShow(() => { - const sampleCuttingCache = Taro.getStorageSync('sampleCuttingCache') - if (sampleCuttingCache) { - console.log('sampleCuttingCache', JSON.parse(sampleCuttingCache)) - setOrder(JSON.parse(sampleCuttingCache)) - } - }) - - const [clientInfo, setClientInfo] = useState({ - clientId: -1, - clientName: '', - clientPhone: '', - }) - - const getClient = async() => { - const res = await fetchClientData({ - page: 1, size: 10, - }) - if (!res.success) { - return alert.error(res.msg) - } - currPage.data.clientId = res.data.list.length > 0 ? res.data.list[0]?.id : -1 - currPage.data.clientName = res.data.list.length > 0 ? res.data.list[0]?.name : '' - currPage.data.clientPhone = res.data.list.length > 0 ? res.data.list[0]?.phone : '' - const { - clientId, - clientName, - clientPhone, - } = currPage.data - setClientInfo({ - clientId, - clientName, - clientPhone, - }) - setClientList([...res.data.list]) - } - - useEffect(() => { - getClient() - }, []) - - useUnload(() => { - Taro.removeStorageSync('sampleCuttingCache') - }) - - // 选择客户 - const handleSelectCustomer = () => { - goLink(`/pages/customerPage/index?clientId=${clientInfo?.clientId}`) - } - // 添加剪样 - const handleAddColorCard = () => { - Taro.setStorageSync('sampleCuttingCache', JSON.stringify(order)) - - goLink('/pages/sampleCutting/sampleCuttingList/index', { isGoBack: true, isAddSampleCutIdList: order.map(item => item.product_id) }) - } - - const { fetchData, state } = SubmitCutSampleOrder() - // 提交订单 - const handleSubmitOrder = debounce(async() => { - if (!addressInfo.address_id) { - return alert.none('请选择地址') - } - if (!clientInfo.clientId) { - return alert.none('请选择客户') - } - const productColorList: any[] = [] - order.forEach((item) => { - item.multipleSelection.forEach((mul) => { - productColorList.push({ - product_color_id: mul.product_color_id, - color_num: mul.count, - }) - }) - }) - // 请求数据 - const res = await fetchData({ - address_id: addressInfo.address_id, - cut_sample_order_product_color_list: productColorList, - purchaser_id: clientInfo.clientId, - remark, - shipment_mode: 2, // 物流 - }) - if (res.success) { - Taro.showToast({ - title: '提交成功', - icon: 'success', - duration: 2000, - }) - Taro.removeStorageSync('sampleCuttingCache') - goLink('/pages/sampleCutting/sampleCuttingDetail/index', { id: res.data.id }, 'redirectTo') - } - }, 300) - - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - - const deleteColorCard = (productId: number, colorId: number) => { - setOrder((prev) => { - let newOlder: SampleCuttingCache[] = [] - const targetProductIndex = prev.findIndex(item => item.product_id === productId) - console.log('multipleSelection', prev) - if (prev[targetProductIndex].multipleSelection.length === 1) { - prev.splice(targetProductIndex, 1) - newOlder = [...prev] - } - else { - newOlder = prev.map((item) => { - if (item.product_id === productId) { - item.multipleSelection = item.multipleSelection.filter(mul => mul.product_color_id !== colorId) - } - return item - }) - } - Taro.setStorageSync('sampleCuttingCache', JSON.stringify(newOlder)) - return newOlder - }) - } - - const handleCountChange = (value: number, productId: number, colorId: number) => { - console.log('value', value, order) - const targetProductIndex = order.findIndex(item => item.product_id === productId) - if (order.length === 1 && order[targetProductIndex].multipleSelection.length === 1 && value === 0) { - return alert.none('最后一个剪样不能删除') - } - if (value === 0) { - Taro.showModal({ - content: '确认删除所选剪样?', - confirmText: '删除', - confirmColor: '#337fff', - success(res) { - if (res.confirm) { - deleteColorCard(productId, colorId) - } - }, - }) - return - } - setOrder((prev) => { - const newOlder = prev.map((item) => { - if (item.product_id === productId) { - item.multipleSelection = item.multipleSelection.map((mul) => { - if (mul.product_color_id === colorId) { - mul.count = value - } - return mul - }) - } - return item - }) - Taro.setStorageSync('sampleCuttingCache', JSON.stringify(newOlder)) - return newOlder - }) - } - - const handSelect = () => { - goLink(`/pages/addressManager/index?purchaser_id=${clientInfo.clientId}`) - } - // 接受选择客户页面传递过来的数据 - useDidShow(() => { - // 判断是否有跳转选择客户 - if (currPage.data?.clientId && currPage.data?.clientId !== '') { - setClientInfo({ - clientId: currPage.data?.clientId, - clientName: currPage.data?.clientName, - clientPhone: currPage.data?.clientPhone, - }) - if (clientInfo.clientId !== currPage.data?.clientId) { - getDefaultAddressList(currPage.data?.clientId) - } - } - // 默认客户 - if (currPage.data?.clientId == null) { - setClientInfo(() => { - return { - clientId: clientList.length > 0 ? clientList[0]?.id : -1, - clientName: clientList.length > 0 ? clientList[0]?.name : '', - clientPhone: clientList.length > 0 ? clientList[0]?.phone : '', - } - }) - if (clientList.length > 0) { - getDefaultAddressList(clientList[0]?.id) - } - } - }) - - const initAddressInfo = () => { - setAddressInfo(val => ({ - ...val, - province_name: '', - address_id: '', - city_name: '', - address_detail: '', - district_name: '', - target_user_name: '', - purchaser_phone: '', - })) - } - - useDidShow(() => { - // 获取选择的地址 - console.log('addressObj', currPage.data?.addressObj, clientInfo.clientId, currPage.data?.clientId) - if (!currPage.data?.addressObj) { return initAddressInfo() } - const { - purchaser_id, - province_name, - id, - city_name, - address_detail, - district_name, - name, - phone, - } = currPage.data?.addressObj - if (purchaser_id === currPage.data?.clientId) { - setAddressInfo(val => ({ - ...val, - province_name: province_name || '', - address_id: id || '', - city_name: city_name || '', - address_detail: address_detail || '', - district_name: district_name || '', - target_user_name: name || '', - purchaser_phone: phone || '', - })) - } - else { - initAddressInfo() - } - const selectId = id - const obj = currPage?.data?.ids?.filter((item) => { return item == selectId }) - console.log('ids', currPage?.data?.ids) - if (currPage?.data?.ids && obj.length === 0) { - initAddressInfo() - } - }) - - // 备注操作 - const [showDesc, setShowDesc] = useState(false) - const [remark, setRemark] = useState('') - const handleShowDesc = () => { - setShowDesc(true) - } - - const getRemark = useCallback((value: string) => { - setShowDesc(false) - console.log('remark', value) - setRemark(value) - }, []) - - const totalColorNumber = useMemo(() => { - return order.reduce((prev, curr) => { - return prev + curr.multipleSelection.length - }, 0) - }, [order]) - - const totalColorCount = useMemo(() => { - return order.reduce((prev, curr) => { - return prev + curr.multipleSelection.reduce((subPrev, subCurr) => { - return subPrev + subCurr.count - }, 0) - }, 0) - }, [order]) - - const onClickBack = () => { - Taro.showModal({ - content: '返回后页面数据将不回保留,确认返回?', - confirmColor: '#4a8dff', - success: ({ confirm }) => { - if (confirm) { - Taro.navigateBack({ - delta: 1, - }) - } - }, - }) - } - - const { fetchData: addressListApi } = MpPurchaserAddressList() - const getDefaultAddressList = async(purchaser_id: number) => { - const res = await addressListApi({ purchaser_id }) - if (res.success) { - const { list } = res.data - let defaultAddress = list?.find((item) => { return item.is_default }) - if (!defaultAddress) { - defaultAddress = list?.[0] - } - setAddressInfo(val => ({ - ...val, - province_name: defaultAddress.province_name || '', - address_id: defaultAddress.id || '', - city_name: defaultAddress.city_name || '', - address_detail: defaultAddress.address_detail || '', - district_name: defaultAddress.district_name || '', - target_user_name: defaultAddress.name || '', - purchaser_phone: defaultAddress.phone || '', - })) - currPage.data.addressObj = defaultAddress - } - } - - return - - - - } title="领取剪样" - > - - {/* 客户信息 */} - - - 客户信息 - - - - { - clientInfo.clientId !== -1 - ? (<> - - {clientInfo.clientName} - - - {clientInfo.clientPhone} - - - ) - : 选择领取客户 - } - - - - { - clientInfo.clientId !== -1 && } - > - } - - 添加剪样 - { - order.map((item, index) => { - return - {item.product_code_and_name} - - { - item.multipleSelection.map((mul) => { - return ( - - - - - - - - - {`#${formatRemoveHashTag(mul.product_color_code)} ${mul.product_color_name}`} - - - {/* 占位元素:使counter居右 暂时先这样写吧 */} - - - handleCountChange(e, item.product_id, mul.product_color_id)} - unit="份" - minNum={0} - maxNum={999} - /> - - - - - - ) - }) - } - 快递到付 - - }) - } - - {/* 备注信息 */} - - - 备注信息 - - 填写/修改备注 - - - - - - { remark || '尚未备注信息' } - - - - - - - 当前共 {order.length} 种面料, {totalColorNumber || 0} 种色号,共 {totalColorCount || 0} 份 - - - 提交订单 - - - - setShowDesc(false)}> - { - showDesc && - } - - -} -export default AddColorCard diff --git a/src/pages/sampleCutting/components/itemList/index.module.scss b/src/pages/sampleCutting/components/itemList/index.module.scss deleted file mode 100644 index 40a40fc..0000000 --- a/src/pages/sampleCutting/components/itemList/index.module.scss +++ /dev/null @@ -1,138 +0,0 @@ -.topItem { - display: flex; - align-items: center; - justify-content: space-between; - - .orderNo { - font-size: 28px; - font-weight: 550; - color: #000000; - } - - .status { - font-size: 28px; - font-weight: 550; - color: #0d7cff; - } -} -.flexBox { - display: flex; - align-items: center; - .pussName { - margin-right: 10px; - font-size: 28px; - font-weight: 500; - color: #666666; - } - .tag { - background-color: #e3ecff; - border-color: transparent; - color: #337fff; - } -} - -.contBox { - width: 100%; - display: flex; - justify-content: space-between; - overflow: hidden; - .leftCont { - width: 134px; - height: 134px; - border-radius: 8px; - position: relative; - } - - .rightCont { - width: calc(100% - 134px); - flex: 1 1 auto; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - margin-left: 24px; - justify-content: space-between; - .rightTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 12px; - - .productName { - width: 70%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-right: 8px; - font-size: 28px; - color: #000000; - } - - .shipMode { - width: 25%; - font-size: 28px; - color: #000000; - text-align: right; - } - } - - .colorsBox { - display: flex; - align-items: center; - justify-content: space-between; - font-size: 24px; - .colorName { - flex: 1 1 auto; - color: #797979; - @include common_ellipsis(1); - } - .colorCount { - color: #797979; - } - } - } -} - -.lineOne { - // width: 638px; - margin-right: 32px; - height: 1px; - background: #e7e7e7; - // opacity: 0.1; - margin-left: 32px; - margin-top: 24px; -} - -.bottomMsg { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 16px; - - .msgLeft { - font-size: 24px; - font-weight: 400; - color: #a1a1a1; - } - - .msgRight { - font-size: 24px; - font-weight: 400; - color: #a1a1a1; - } -} -.paymentMethod { - display: flex; - justify-content: flex-end; - .msgRightOne { - font-size: 28px; - font-weight: 500; - color: #f64861; - align-self: flex-end; - } -} - -.bottomBox { - display: flex; - justify-content: flex-end; - margin-top: 32px; -} diff --git a/src/pages/sampleCutting/components/itemList/index.tsx b/src/pages/sampleCutting/components/itemList/index.tsx deleted file mode 100644 index 153b6d9..0000000 --- a/src/pages/sampleCutting/components/itemList/index.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import type { ITouchEvent } from '@tarojs/components' -import { ScrollView, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import BottomBtns from '@/components/BottomBtns' -import { formatHashTag, formatPriceDiv } from '@/common/format' -import LabAndImg from '@/components/LabAndImg' -import NormalButton from '@/components/normalButton' -import Divider from '@/components/Divider' -import Tag from '@/components/tag' -import LayoutBlock from '@/components/layoutBlock' -import { goLink } from '@/common/common' - -interface PropsType { - data?: any - cancel?: (e: ITouchEvent) => void -} -const ItemList = (props: PropsType) => { - const { data, cancel } = props - - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - // 进入详情页 - const navTo = () => { - goLink('/pages/sampleCutting/sampleCuttingDetail/index', { id: data.order_id }) - } - - return ( - - - 单号:{data.order_no} - {data.mp_cut_sample_audit_status_name} - - - {data.purchaser_name} - { - data.sale_user_name && - {data.sale_user_name} - - } - - - - - - - - - - - - {data.cut_sample_order_product_list?.[0].name} - {data.shipment_mode_name} - - { - data.cut_sample_order_product_list?.[0].product_colors?.map((item, index) => { - if (index < 2) { - return - {formatHashTag(item.code, item.name)} - x{item.color_num || 0}份 - - } - else { - return null - } - }) - } - - - - - 剪样信息: - {data?.total_fabrics || 0} 种面料,{data?.total_colors || 0} 种剪样,共 {data?.total_number || 0} 份 - - - 快递到付 - - - { - data.mp_cut_sample_audit_status === 1 && - 取消订单 - - } - - - - ) -} -export default memo(ItemList) diff --git a/src/pages/sampleCutting/components/productColorPopup/index.tsx b/src/pages/sampleCutting/components/productColorPopup/index.tsx deleted file mode 100644 index c8ee469..0000000 --- a/src/pages/sampleCutting/components/productColorPopup/index.tsx +++ /dev/null @@ -1,4 +0,0 @@ -const ProductColorPopup = (props) => { - -} -export default ProductColorPopup diff --git a/src/pages/sampleCutting/index.config.ts b/src/pages/sampleCutting/index.config.ts deleted file mode 100644 index 70948c5..0000000 --- a/src/pages/sampleCutting/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '领取剪样', -} diff --git a/src/pages/sampleCutting/index.module.scss b/src/pages/sampleCutting/index.module.scss deleted file mode 100644 index b6ba5a5..0000000 --- a/src/pages/sampleCutting/index.module.scss +++ /dev/null @@ -1,66 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - - .search { - width: 100%; - display: flex; - justify-content: space-between; - padding: 20px; - box-sizing: border-box; - align-items: center; - background-color: #fff; - border-bottom: 1px solid #e5e5e5; - } - .tab_bar{ - position: relative; - z-index: 99; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding: 20px; - background-color: white; - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - } - .color_card_list{ - flex: 1 1 auto; - height: 100%; - overflow: hidden; - .order_item{ - margin: 20px 0; - } - } - .bottomBar { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - } -} -.tab_bar .button{ - padding: 0 60px; -} -.bottomBar__button{ - width: 100%; - font-size: 28px; -} diff --git a/src/pages/sampleCutting/index.tsx b/src/pages/sampleCutting/index.tsx deleted file mode 100644 index 642ace0..0000000 --- a/src/pages/sampleCutting/index.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import type { ITouchEvent } from '@tarojs/components' -import { View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from './index.module.scss' -import ItemList from './components/itemList/index' -import Search from '@/components/search' -import NormalButton from '@/components/normalButton' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { alert, goLink } from '@/common/common' -import Empty from '@/components/empty' -import { COLOR_CARD_LIST_EMPTY_IMAGE } from '@/common/constant' -import { CancelCutSampleOrder, GetCutSampleOrderList } from '@/api/sampleCutting' -import SelectSampleCuttingStatus from '@/components/SelectSampleCuttingStatus' - -const GetSampleCutting = () => { - const { fetchData, state } = GetCutSampleOrderList() - const getData = async() => { - const res = await fetchData(getFilterData(searchField)) - if (!res.success) { - return alert.error(res.msg) - } - setSampleCuttingList({ list: res.data.list, total: res.data.total }) - setRefresherTriggeredStatus(false) - } - - // status 1 申请中 2 已完成 - // 页码和页数 - const [searchField, setSearchField] = useState<{ purchaser_and_sale_user?: string; mp_cut_sample_audit_status?: number; page: number; size: number }>({ - purchaser_and_sale_user: '', - mp_cut_sample_audit_status: 0, - page: 1, - size: 10, - }) - const [sampleCuttingList, setSampleCuttingList] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: sampleCuttingList?.list, total: sampleCuttingList.total, status: state.loading! }) - }, [sampleCuttingList, state.loading]) - // 筛选参数 - // 上拉加载数据 - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - const getScrollToLower = useCallback(() => { - if (sampleCuttingList.list?.length < sampleCuttingList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField({ ...searchField, size }) - } - }, [sampleCuttingList]) - - // 领取剪样 - const getSampleCutting = () => { - goLink('/pages/sampleCutting/sampleCuttingList/index') - } - - // 搜索 - const getSearchData = debounce((value: string) => { - setSearchField(e => ({ ...e, purchaser_and_sale_user: value })) - }, 300) - - const handleClickFilter = (value) => { - if (searchField.mp_cut_sample_audit_status === value) { return } - setSearchField(e => ({ ...e, mp_cut_sample_audit_status: value })) - } - - useEffect(() => { - getData() - }, [searchField]) - - const { fetchData: cancelOrderApi } = CancelCutSampleOrder() - - const cancelOrder = async(id: number) => { - const res = await cancelOrderApi({ id }) - if (res.success) { - getData() - } - } - - // 取消订单 - const handleCancel = (e: ITouchEvent, id: number) => { - e.stopPropagation() - Taro.showModal({ - content: '确定取消该订单?', - confirmColor: '#337fff', - confirmText: '确认', - success: (res) => { - if (res.confirm) { - cancelOrder(id) - console.log('用户点击确定') - } - }, - }) - } - - // 监听选择的类型 - // useEffect(() => { - // setSearchObj(search) - // if (search.goodsId) { getGoodList() } - // }, [search]) - - return - - - - - - } - statusMore={statusMore} - selfonScrollToLower={getScrollToLower} - refresherEnabled - refresherTriggered={refresherTriggeredStatus} - selfOnRefresherRefresh={getRefresherRefresh} - safeAreaInsetBottom={false} - > - {sampleCuttingList?.list?.map((item, index) => { - return ( - - handleCancel(e, item.order_id)}> - - ) - })} - - - - - 领取剪样 - - - -} - -export default GetSampleCutting diff --git a/src/pages/sampleCutting/sampleCuttingDetail/index.config.ts b/src/pages/sampleCutting/sampleCuttingDetail/index.config.ts deleted file mode 100644 index b2291d2..0000000 --- a/src/pages/sampleCutting/sampleCuttingDetail/index.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - navigationBarTitleText: '剪样订单详情', - enablePullDownRefresh: true, - backgroundTextStyle: 'dark', -} diff --git a/src/pages/sampleCutting/sampleCuttingDetail/index.module.scss b/src/pages/sampleCutting/sampleCuttingDetail/index.module.scss deleted file mode 100644 index c35163e..0000000 --- a/src/pages/sampleCutting/sampleCuttingDetail/index.module.scss +++ /dev/null @@ -1,241 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - .context { - flex: 1 1 auto; - height: 100%; - overflow-y: scroll; - } - .orderProcess { - font-size: 28px; - } - .orderInfoTop { - font-size: 28px; - color: $color_font_one; - } - .customerTop { - color: #333333; - font-size: 28px; - } - .customerBottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - color: #343434; - font-size: 28px; - } - - .colorCardTop { - font-size: 28px; - } - .colorCardBottom { - width: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - overflow: hidden; - margin-bottom: 24px; - .colorCardImage { - margin-right: 30px; - margin-bottom: 24px; - } - .leftCont { - width: 134px; - height: 134px; - border-radius: 8px; - margin-right: 24px; - } - .rightCont { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - &__top { - font-size: 28px; - @include common_ellipsis(1); - } - &__bottom { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - width: 100%; - } - &__container { - display: flex; - flex-flow: row nowrap; - } - &__left { - flex: 1 1 auto; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - } - &__right { - font-size: 28px; - } - } - } - .paymentMethod { - text-align: right; - font-size: 28px; - color: #f64861; - } -} -.address_box { - display: flex; - .address_box_left { - margin-right: 24px; - .cirle { - border-radius: 50%; - width: 64px; - height: 64px; - background: #4a7fff; - display: flex; - align-items: center; - justify-content: center; - } - } - .address_box_right { - flex: 1 1 auto; - .address { - height: 78px; - font-size: 28px; - font-weight: 500; - @include common_ellipsis(2); - color: #000000; - margin-right: 41px; - display: flex; - align-items: center; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; /*这里设置几行*/ - overflow: hidden; - } - .bottom { - display: flex; - align-items: center; - justify-content: space-between; - .reatName { - font-size: 28px; - font-weight: 500; - color: #337fff; - margin-right: 32px; - } - .leftbottom { - display: flex; - align-items: center; - .name { - line-height: 34px; - width: 84px; - height: 34px; - @include common_ellipsis(); - font-size: 28px; - font-weight: 400; - color: #343434; - margin-right: 16px; - } - - .phone { - height: 34px; - font-size: 28px; - font-weight: 400; - color: #343434; - } - } - } - } -} - -.bottomBar { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); -} -.bottomBar__button { - font-size: 28px; - margin-left: 20px; -} -.remark { - font-size: 28px; - color: #9b9b9b; -} - -.step-title { - display: flex; - flex-flow: row nowrap; - font-size: 28px; - align-items: center; - color: #9c9c9c; -} -.step-status { - font-weight: 550; - color: inherit; - margin-right: 40px; -} -.current-status { - color: #393939 !important; -} -.attachment { - display: flex; - flex-flow: row wrap; - .step-url-container { - margin-right: 16px; - margin-top: 16px; - width: 128px; - height: 128px; - } - .step-url { - width: 100%; - height: 100%; - border-radius: 8px; - } -} -.popup { - padding: 0 30px; - .title { - font-weight: 500; - font-size: 24px; - margin: 20px 0; - } - .textarea { - background-color: #f3f3f3; - border-radius: 10px; - width: 100%; - height: 260px; - padding: 20px; - padding-bottom: 50px; - box-sizing: border-box; - font-size: $font_size; - border: 2px solid #e6e6e6; - } - .picBtn { - margin-top: 30px; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - } - .button { - width: 48%; - } -} diff --git a/src/pages/sampleCutting/sampleCuttingDetail/index.tsx b/src/pages/sampleCutting/sampleCuttingDetail/index.tsx deleted file mode 100644 index 2fafbc1..0000000 --- a/src/pages/sampleCutting/sampleCuttingDetail/index.tsx +++ /dev/null @@ -1,341 +0,0 @@ -import { Image, Text, Textarea, View } from '@tarojs/components' -import Taro, { usePullDownRefresh, useRouter } from '@tarojs/taro' -import { useCallback, useEffect, useRef, useState } from 'react' -import classNames from 'classnames' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import Divider from '@/components/Divider' -import LabAndImg from '@/components/LabAndImg' -import Tag from '@/components/tag' -import Cell from '@/components/cell' -import { formatDateTime, formatHashTag, formatRemoveHashTag, formatUrl } from '@/common/format' -import NormalButton from '@/components/normalButton' -import Steps from '@/components/steps' -import Step from '@/components/steps/components/step' -import { alert, checkKey } from '@/common/common' -import IconFont from '@/components/iconfont/iconfont' -import { - AuditPassCutSampleOrder, CancelCutSampleOrder, GetCutSampleOrderDetail, - RefuseCutSampleOOrder, -} from '@/api/sampleCutting' -import Popup from '@/components/popup' -import UploadImage from '@/components/uploadImage' - -const SampleCuttingDetail = () => { - const { fetchData } = GetCutSampleOrderDetail() - - const router = useRouter() - - const getData = async() => { - console.log('id', router.params.id) - const res = await fetchData({ id: Number(router.params.id) }) - if (!res.success) { - return alert.error(res.msg) - } - setOrder(res.data) - // 小程序提供的api,通知页面停止下拉刷新效果 - Taro.stopPullDownRefresh() - } - - // 页面下拉刷新 - usePullDownRefresh(() => { - getData() - }) - - const [order, setOrder] = useState({}) - - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - // 复制 - const handleCopy = (data: string) => { - Taro.setClipboardData({ - data, - success() { - Taro.showToast({ - title: '复制成功', - }) - }, - }) - } - - const { fetchData: cancelOrderApi } = CancelCutSampleOrder() - - const cancelOrder = async(id: number) => { - const res = await cancelOrderApi({ id }) - if (res.success) { - getData() - alert.success('取消成功') - } - else { - alert.error(res.msg) - } - } - - // 取消订单 - const handleCancel = () => { - Taro.showModal({ - content: '确定取消该订单?', - confirmColor: '#337fff', - confirmText: '确认', - success: (res) => { - if (res.confirm) { - cancelOrder(Number(router.params.id)) - console.log('用户点击确定') - } - }, - }) - } - - useEffect(() => { - getData() - }, []) - - const handleClickImagePreview = (imageList: any[], index: number) => { - Taro.previewImage({ - current: formatUrl(imageList[index]), - urls: imageList.map(item => formatUrl(item)), - }) - } - - // 查看图片 - const [ShowPic, setShowPic] = useState(false) - const [PicList, setPicList] = useState([]) - // 获取图片列表 - const picUrl = useRef([]) - const getImageList = useCallback((list) => { - console.log('list', list) - picUrl.current = list - }, []) - // 色卡审批 - const handleAudit = () => { - setShowPic(true) - } - - const [remarkValue, setRemarkValue] = useState('') - const getDesc = (e) => { - console.log('getDesc', e.detail.value) - setRemarkValue(e.detail.value) - } - const onBlur = (e) => { - console.log('onBlur', e.detail.value) - setRemarkValue(e.detail.value) - } - - const handleRefuseSubmit = async() => { - if (!remarkValue) { - return alert.error('请输入拒绝原因') - } - const res = await refuseApi({ - cut_sample_order_id: Number(router.params.id), - order_remark: order?.order_remark, - audit_remark: remarkValue, - delivery_appendix_url: picUrl.current, - }) - if (res.success) { - getData() - alert.success('拒绝成功') - setShowPic(false) - } - else { - alert.error(res.msg) - } - } - const handleAuditSubmit = async() => { - if (picUrl.current.length === 0) { - return alert.error('请上传图片') - } - const res = await auditApi({ - cut_sample_order_id: Number(router.params.id), - order_remark: order?.order_remark, - audit_remark: remarkValue, - delivery_appendix_url: picUrl.current, - }) - if (res.success) { - getData() - alert.success('审核成功') - setShowPic(false) - } - else { - alert.error(res.msg) - } - } - - const { fetchData: auditApi } = AuditPassCutSampleOrder() - const { fetchData: refuseApi } = RefuseCutSampleOOrder() - - return - - - 订单进程 - - - - {/* - 申请中5 -> 已完成 6 - 申请中5 -> 已取消 3 - 申请中5 -> 已拒绝 4 - */} - { - order.order_form?.map((item, index) => { - return - {item.order_status_name} - {formatDateTime(item.order_time)} - - } description={ - <> - { - item.audit_remark && {item.audit_remark} - } - { - item.delivery_appendix_url - && - { - item.delivery_appendix_url?.map((url, index) => { - return handleClickImagePreview(item.delivery_appendix_url, index)}> - - - }) - } - - } - - } - /> - }) - } - - - - - - 客户信息 - - - {order?.purchaser_name} - {order?.phone} - {/* 占位作用勿删除 */} - - - - - - - - - - - - - {order?.province_name}{order?.city_name}{order?.district_name}{order?.address_detail} - - - - {order.target_user_name} - {order.target_user_phone} - - {order.shipment_mode_name} - - - - - { - order.cut_sample_order_product_list?.map((item, index) => { - return - {formatHashTag(item.code, item.name)} - - { - item.product_colors?.map((mul) => { - return ( - - - - - - - - - - - {`#${formatRemoveHashTag(mul.code)} ${mul.name}`} - - - {/* { - item.affiliation_product?.map((product_color, index) => { - return {formatRemoveHashTag(product_color)} - }) - } */} - - - - x{mul.color_num}份 - - - - - - ) - }) - } - 快递到付 - - }) - } - - - 订单信息 - - - - {order?.order_no} - handleCopy(order?.order_no)}>复制 - - } - > - - - - - - 备注信息 - - {order?.order_remark || '暂无备注信息'} - - - - { - order.order_form?.[0].order_status === 1 - ? <> - - 取消订单 - - { - checkKey('receive_sample_cutting_audit') - ? - 剪样审批 - - : null - } - - : null - } - - setShowPic(false)}> - - 发货物流凭证 - - 审核备注 - - - - - 拒绝 - 同意 - - - - -} -export default SampleCuttingDetail diff --git a/src/pages/sampleCutting/sampleCuttingList/index.config.ts b/src/pages/sampleCutting/sampleCuttingList/index.config.ts deleted file mode 100644 index 2b97086..0000000 --- a/src/pages/sampleCutting/sampleCuttingList/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '添加剪样', -} diff --git a/src/pages/sampleCutting/sampleCuttingList/index.module.scss b/src/pages/sampleCutting/sampleCuttingList/index.module.scss deleted file mode 100644 index a394e7c..0000000 --- a/src/pages/sampleCutting/sampleCuttingList/index.module.scss +++ /dev/null @@ -1,181 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} -.main { - background-color: $color_bg_one; - height: 100%; - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.search { - width: 100%; - display: flex; - justify-content: space-between; - padding: 20px; - box-sizing: border-box; - align-items: center; - background-color: #fff; - border-bottom: 1px solid #e5e5e5; - &__cancel { - margin: 0 32px; - color: #727272; - font-size: 28px; - } -} - -.context { - flex: 1 1 auto; - height: 100%; - overflow: hidden; - background-color: white; -} - -.bottomBar { - position: relative; - z-index: 99; - box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 0.1), 0 -2px 4px -2px rgb(0 0 0 / 0.1); - flex: none; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - padding-left: 20px; - padding-right: 20px; - padding-top: 24px; - background-color: white; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); -} -.bottomBar__button { - width: 100%; - font-size: 28px; -} - -.colorCard { - padding: 24px 0; - border-bottom: 1px solid #f6f6f6; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - &__image { - width: 144px; - height: 144px; - border-radius: 8px; - margin-right: 24px; - overflow: hidden; - position: relative; - } - &__title { - font-size: 28px; - color: #383838; - @include common_ellipsis(2); - } - &__code { - font-size: 24px; - color: #b3b3b3; - } - &__content { - flex: 1 1 auto; - display: flex; - flex-flow: column nowrap; - } - .addButton { - width: 250px; - display: flex; - justify-content: flex-end; - align-items: center; - } -} -.imageTag { - width: 50%; - background-color: #000; - box-sizing: border-box; - position: absolute; - padding: 7px; - bottom: 0px; - right: 0px; - opacity: 0.55; - color: #ffffff; - text-align: center; - font-size: 22px; - z-index: 1; - border-top-left-radius: 16px; - transform: perspective(1em) scale(1, 1.1) rotateX(5deg); - /* 镜头距离元素表面的位置为8px,x轴为1.1倍y轴为1.3倍,绕x轴旋转-5度 */ - transform-origin: bottom right; -} - -.collection_con { - display: flex; - flex-flow: column nowrap; - max-height: 75vh; - - .header { - padding: 32px 48px; - .title { - font-size: 32px; - @include common_ellipsis; - color: #3d3d3d; - font-weight: 500; - } - .sub_title { - font-size: 28px; - color: #b6b6b6; - margin-top: 8px; - } - } - .productList { - flex: 1 1 auto; - overflow-y: scroll; - padding: 0 48px; - display: grid; - grid-template-columns: 25% 25% 25% 25%; - justify-content: space-between; - .item { - width: 100%; - margin-bottom: 28px; - display: flex; - flex-direction: column; - align-items: center; - box-sizing: border-box; - .item_color { - box-sizing: border-box; - width: 136px; - height: 136px; - border-radius: 50%; - } - .item_name { - text-align: center; - margin-top: 10px; - font-size: 24px; - color: #666666; - - @include common_ellipsis; - } - } - } -} -.popup_bottom { - padding: 12px; - padding-bottom: 0; -} -.productColorActive { - border: 4px solid $color_main; - position: relative; - .activeIcon { - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - position: absolute; - top: -2px; - right: -2px; - box-sizing: border-box; - border-radius: 50%; - z-index: 99; - } -} diff --git a/src/pages/sampleCutting/sampleCuttingList/index.tsx b/src/pages/sampleCutting/sampleCuttingList/index.tsx deleted file mode 100644 index 873d6bc..0000000 --- a/src/pages/sampleCutting/sampleCuttingList/index.tsx +++ /dev/null @@ -1,364 +0,0 @@ -import { ScrollView, Text, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter, useUnload } from '@tarojs/taro' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classNames from 'classnames' -import styles from './index.module.scss' -import Search from '@/components/search' -import NormalButton from '@/components/normalButton' -import LabAndImg from '@/components/LabAndImg2' -import Tag from '@/components/tag' -import MCheckbox from '@/components/checkbox' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { alert, goLink } from '@/common/common' -import { formatHashTag, formatRemoveHashTag } from '@/common/format' -import Popup from '@/components/popup' -import IconFont from '@/components/iconfont/iconfont' -import { GetCutSampleOrderColorList, GetCutSampleOrderProducts } from '@/api/sampleCutting' -import Empty from '@/components/empty' - -export interface SampleCuttingCache { - product_id: number - product_code_and_name: string - multipleSelection: { - product_color_id: number - product_color_code: string - product_color_name: string - lab: { - l: number - a: number - b: number - } - rgb: { - r: number - g: number - b: number - } - texture_url: string - count: number - }[] -} -const SampleCuttingList = () => { - const router = useRouter() - const isAdd = router?.params?.isAddSampleCutIdList - - const { fetchData, state } = GetCutSampleOrderProducts() - - const [orderList, setOrderList] = useState<{ list: any[]; total: number }>({ - list: [], - total: 0, - }) - const multipleSelection = useRef([]) - // 搜索 - const getSearchData = debounce((value: string) => { - console.log('search', value) - setSearchField(val => ({ ...val, product_code_and_name: value, page: 1, size: 10 })) - }, 300) - // 取消 - const handleCancel = () => { - Taro.navigateBack() - } - - // redirectTo 会触发 onLoad 事件 - let isRedirect = false - // 确认 - const handleSubmit = () => { - Taro.setStorageSync('sampleCuttingCache', JSON.stringify(multipleSelection.current)) - if (router?.params.isGoBack) { - isRedirect = true - Taro.navigateBack({ - delta: 1, - }) - } - else { - isRedirect = true - // 携带id跳转 - goLink('/pages/sampleCutting/addSampleCutting/index', null, 'redirectTo') - } - } - - const labAndImgObj = useCallback((item) => { - return { lab: item?.lab, rgb: item?.rgb, texture_url: item?.texture_url } - }, []) - // 页码和页数 - const [searchField, setSearchField] = useState<{ product_code_and_name?: string; product_ids?: string; page: number; size: number }>({ - product_code_and_name: '', - product_ids: '', - page: 1, - size: 10, - }) - - const getData = async() => { - console.log('searchField==>', searchField) - const res = await fetchData(getFilterData(searchField)) - if (!res.success) { - return alert.error(res.msg) - } - setOrderList({ list: res.data.list, total: res.data.total }) - setRefresherTriggeredStatus(false) - } - - useEffect(() => { - getData() - }, [searchField]) - - useDidShow(() => { - const cache = Taro.getStorageSync('sampleCuttingCache') - if (cache) { - multipleSelection.current = JSON.parse(cache) as SampleCuttingCache[] - } - - if (isAdd) { - console.log('isAdd', isAdd) - // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain - setSearchField(val => ({ ...val, product_ids: isAdd })) - } - }) - - // 上拉加载数据 - const pageNum = useRef({ size: searchField.size, page: searchField.page }) - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - // 下拉刷新 - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearchField(val => ({ ...val, size: 10 })) - } - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: orderList.list, total: orderList.total, status: state.loading! }) - }, [orderList, state.loading]) - - const getScrollToLower = useCallback(() => { - if (orderList.list.length < orderList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchField(prev => ({ ...prev, size })) - } - }, [orderList]) - - const { fetchData: getColorList } = GetCutSampleOrderColorList() - const currentSelect = useRef({}) - const handleClickAddButton = async(item: any) => { - currentSelect.current = item - const res = await getColorList({ id: item.id }) - if (res.success) { - setProductList(res.data.list) - const index = multipleSelection.current.findIndex(val => val.product_id === item.id) - if (index !== -1) { - setProductMultipleSelection(multipleSelection.current[index].multipleSelection) - } - else { - setProductMultipleSelection([]) - } - setShow(true) - } - else { - return alert.error(res.msg) - } - } - - useUnload(() => { - console.log('onUnload', isRedirect) - if (!isRedirect) { - Taro.removeStorageSync('sampleCuttingCache') - } - }) - - const [show, setShow] = useState(false) - - const onClose = () => { - const index = multipleSelection.current.findIndex(mul => mul.product_id === currentSelect.current.id) - if (index !== -1) { - multipleSelection.current[index].multipleSelection = productMultipleSelection - // 检查是否有数据 - if (multipleSelection.current[index].multipleSelection.length === 0) { - multipleSelection.current.splice(index, 1) - } - } - console.log('multipleSelection==>', multipleSelection.current) - setShow(false) - setProductMultipleSelection([]) - } - - const [productList, setProductList] = useState([]) - // 点击产品颜色 - const handleClickProductColor = (item: any) => { - const index = productMultipleSelection.findIndex(val => val.product_color_id === item.product_color_id) - console.log(index, productMultipleSelection) - if (index !== -1) { - setProductMultipleSelection((prev) => { - prev.splice(index, 1) - return [...prev] - }) - } - else { - setProductMultipleSelection(prev => [...prev, { - product_color_id: item.product_color_id, - product_color_code: item.product_color_code, - product_color_name: item.product_color_name, - lab: item.lab, - rgb: item.rgb, - texture_url: item.texture_url, - count: 1, - }]) - } - } - - const handleAddProduct = () => { - const index = multipleSelection.current.findIndex(mul => mul.product_id === currentSelect.current.id) - if (index !== -1) { - multipleSelection.current[index].multipleSelection = productMultipleSelection - } - else { - multipleSelection.current.push({ - product_id: currentSelect.current.id, - product_code_and_name: formatHashTag(currentSelect.current.code, currentSelect.current.name) as string, - multipleSelection: productMultipleSelection, - }) - } - setShow(false) - setProductMultipleSelection([]) - } - const [productMultipleSelection, setProductMultipleSelection] = useState([]) - - return - - - 取消 - - - - - { - orderList.list.map((item) => { - return - - - - - { - item.is_multiple_product ? 24色 : null - } - - - - {formatHashTag(item.code, item.name)} - - {item.width} - {item.weight_density} - - - {item.component} - - - - handleClickAddButton(item)} - > - { - multipleSelection.current.find(mul => mul.product_id === item.id)?.multipleSelection.length ? '继续添加' : '添加' - } - - - - - }) - } - - - - - - { - multipleSelection.current.length ? `确认(已选 ${multipleSelection.current.length} 个)` : '确认' - } - - - - - - - {formatHashTag(currentSelect.current.code, currentSelect.current.name)}( {productList.length} ) - - 剪样大小为A4,大约22cm*30cm - - - { - productList.length - ? - - { - productList?.map((item, index) => { - const isChecked = productMultipleSelection.some(mul => mul.product_color_id === item.product_color_id) - return handleClickProductColor(item)}> - - { - isChecked - ? - - - : null - } - - - {item.product_color_name} - - }) - } - - - : - } - - - - - 取消 - - - 领取剪样({productMultipleSelection.length}) - - - - - -} -export default SampleCuttingList diff --git a/src/pages/searchPage/components/goods/index.module.scss b/src/pages/searchPage/components/goods/index.module.scss deleted file mode 100644 index 6fdeb36..0000000 --- a/src/pages/searchPage/components/goods/index.module.scss +++ /dev/null @@ -1,125 +0,0 @@ -.itemBox { - width: 686px; - padding-bottom: 18px; - border-bottom: 1px solid #e7e7e7; - display: flex; - margin-left: 32px; - margin-bottom: 24px; - - .picBox { - margin-right: 24px; - width: 144px; - height: 144px; - border-radius: 8px; - position: relative; - - .pic { - width: 144px; - height: 144px; - border-radius: 8px; - } - - .posBox { - position: absolute; - bottom: 0px; - right: 0px; - width: 69px; - height: 29px; - background: #000000; - border-radius: 15px 0px 8px 0px; - font-size: 18px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #FFFFFF; - text-align: center; - line-height: 29px; - - opacity: 0.55; - } - } - - - .leftBox { - width: 144px; - height: 144px; - border-radius: 8px; - position: relative; - margin-right: 24px; - - .pic { - width: 144px; - height: 144px; - border-radius: 8px; - } - - .posBox { - position: absolute; - bottom: 0px; - right: 0px; - width: 69px; - height: 29px; - background: #000000; - border-radius: 15px 0px 8px 0px; - font-size: 18px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #FFFFFF; - text-align: center; - line-height: 29px; - - opacity: 0.55; - } - } - - .rightBox { - .productName { - font-size: 28px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #000000; - margin-bottom: 6px; - } - - .tips { - font-size: 24px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #a6a6a6; - margin-bottom: 17px; - } - - .flexTag { - display: flex; - - .tagOne { - padding-left: 8px; - padding-right: 8px; - padding-top: 3px; - padding-bottom: 3px; - background: #e3ecff; - border-radius: 8px; - font-size: 22px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #4581FF; - text-align: center; - margin-right: 16px; - } - - .tagTwo { - padding-left: 8px; - padding-right: 8px; - padding-top: 3px; - padding-bottom: 3px; - background: #ffeedb; - border-radius: 8px; - font-size: 22px; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #FE8E0F; - text-align: center; - } - } - } - -} \ No newline at end of file diff --git a/src/pages/searchPage/components/goods/index.tsx b/src/pages/searchPage/components/goods/index.tsx deleted file mode 100644 index 7eee85c..0000000 --- a/src/pages/searchPage/components/goods/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Image, View } from '@tarojs/components' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import styles from '../goods/index.module.scss' -import LabAndImg from '@/components/LabAndImg' -import { formatDateTime, formatHashTag, formatPriceDiv, formatRemoveHashTag, formatWeightDiv } from '@/common/format' - -const Goods = (props: any) => { - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - return ( - props?.clickItem?.()}> - { - props.data?.texture_url === '' && <> - - - - {props.data?.product_color_count}色 - - - } - { - props.data?.texture_url !== '' - && <> - - - {/* */} - {props.data?.product_color_count}色 - - - } - - {formatHashTag(props.data?.code, props.data?.name)} - {props.data?.component} - - {props.data?.width} - {props.data?.weight_density} - - - - ) -} -export default memo(Goods) diff --git a/src/pages/searchPage/index.config.ts b/src/pages/searchPage/index.config.ts deleted file mode 100644 index 6241274..0000000 --- a/src/pages/searchPage/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '搜索', -} diff --git a/src/pages/searchPage/index.module.scss b/src/pages/searchPage/index.module.scss deleted file mode 100644 index ed24d85..0000000 --- a/src/pages/searchPage/index.module.scss +++ /dev/null @@ -1,76 +0,0 @@ -page { - background: #ffff; -} - -.main { - background: #ffff; - - .cancelFont { - width: 76px; - font-size: 28px; - color: #000000; - margin-left: 32px; - } - - .line { - width: 750px; - height: 1px; - background: #000000; - opacity: 0.05; - margin-top: 16px; - margin-bottom: 32px; - } - - .topBox { - display: flex; - padding: 0 24px; - align-items: center; - justify-content: space-between; - margin-bottom: 32px; - - .histroyLeft { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - overflow: hidden; - - .histroyFonts { - margin-left: 32px; - font-size: 28px; - color: #000000; - } - - .back { - margin-right: 32px; - font-size: 28px; - color: #000000; - } - } - - .icon_delect { - margin-right: 45px; - color: #f7f7f7; - } - } - - .bigBox { - display: flex; - flex-wrap: wrap; - padding-left: 32px; - - .itemBox { - background: #f7f7f7; - border-radius: 8px; - text-align: center; - padding-top: 12px; - padding-bottom: 12px; - padding-left: 17px; - padding-right: 17px; - font-size: 24px; - color: #000000; - margin-right: 16px; - margin-bottom: 16px; - } - } -} diff --git a/src/pages/searchPage/index.tsx b/src/pages/searchPage/index.tsx deleted file mode 100644 index 0f686ac..0000000 --- a/src/pages/searchPage/index.tsx +++ /dev/null @@ -1,260 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow } from '@tarojs/taro' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Goods from './components/goods' -import Search from '@/components/search' -import Empty from '@/components/empty' -import { MpProductList } from '@/api/search' -import { debounce, getFilterData } from '@/common/util' -import ShopCart from '@/components/shoppingCart' -import { - ClientListApi, - DeleteSearchHistoryList, - MpSearchHistory, - MpSearchHistoryList, -} from '@/api/order' -import IconFont from '@/components/iconfont/iconfont' -import { alert } from '@/common/common' - -const SearchPage = () => { - const [clientObj, setclientObj] = useState({ - clientId: -1, - clientName: '', - }) - - // 获取客户 - const [clienList, setclienList] = useState([]) - const { fetchData: listFetchData } = ClientListApi() - const getClient = async() => { - const res = await listFetchData({ - page: 1, size: 10, - }) - setclientObj({ - clientId: res.data.list.length > 0 ? res.data.list[0]?.id : -1, - clientName: res.data.list.length > 0 ? res.data.list[0]?.name : '', - }) - setclienList([...res.data.list]) - } - - useEffect(() => { - getClient() - }, []) - - useDidShow(() => { - // 获取选择的客户 - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - // 判断是否有跳转选择客户 - if (currPage.data?.clientId && currPage.data?.clientId !== '') { - setclientObj({ - clientId: currPage.data?.clientId, - clientName: currPage.data?.clientName, - }) - ShopCartRef.current.setSearchObj(val => ({ ...val, purchaser_id: currPage.data?.clientId })) - } - // 默认客户 - if (currPage.data?.clientId == null) { - setclientObj({ - clientId: clienList.length > 0 ? clienList[0]?.id : -1, - clientName: clienList.length > 0 ? clienList[0]?.name : '', - }) - } - }) - - const [showShopCart, setShowShopCart] = useState(false) - - const [goodObj, setGoodsobj] = useState({}) - const ShopCartRef = useRef() - // 点击对应商品显示购物车 - const showCart = async(item) => { - ShopCartRef.current.setSearchObj(e => ({ ...e, goodsId: item.id, purchaser_id: clientObj?.clientId, code_or_name: '' })) - ShopCartRef.current.SearchRef.current.setInputCon('') - setShowShopCart(true) - setGoodsobj(item) - } - - // 关闭弹窗 - const closePoup = () => { - setShowShopCart(false) - } - - // 获取关键字数据 - const [histroyList, setHistroyList] = useState([]) - const { fetchData: historyFetch } = MpSearchHistoryList() - const getHistory = async() => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - const res = await historyFetch() - if (res.data) { - setHistroyList([...res?.data?.list]) - Taro.hideLoading() - } - } - - // 搜索商品的数组 - const [searchList, setSearchList] = useState([]) - // 是否有值输入框 - const [hasFonts, setHasFonts] = useState(false) - useEffect(() => { - getHistory() - }, []) - - // 搜索获取商品数据 - const { fetchData: productFetch } = MpProductList() - const { fetchData: historyputFetch } = MpSearchHistory() - const getProduct = debounce(async(e) => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - await historyputFetch({ key: e, scene: 0 }).then((res) => { - if (res.data) { - getHistory() - } - }) - productFetch({ code_or_name: e }).then((res) => { - if (res.data) { - Taro.hideLoading() - setSearchList([...res?.data?.list]) - } - }) - }, 300) - - // 输入了搜索关键字 - const getSearchData = useCallback((e) => { - if (!e) { - setHasFonts(false) - setSearchList([]) - } - setdefaultvalue(e) - }, []) - - // 搜索 - const onSearch = () => { - if (defaultvalue) { - setHasFonts(true) - getProduct(defaultvalue) - } - } - - // 选择中后的值到输入框 - const [defaultvalue, setdefaultvalue] = useState('') - - // 点击关键字搜索内容 - const handItem = (item) => { - Taro.showLoading({ - title: '加载中...', - mask: true, - }) - productFetch({ code_or_name: item.search_key }).then((res) => { - if (res.data) { - setHasFonts(true) - setSearchList([...res.data.list]) - Taro.hideLoading() - } - }) - setdefaultvalue(item.search_key) - } - // 点击返回文字 - const handBack = () => { - setHasFonts(false) - setSearchList([]) - } - - // 删除历史搜索 - const { fetchData: deleteHistoryApi } = DeleteSearchHistoryList() - const handDelete = async() => { - Taro.showModal({ - title: '确定删除历史搜索记录吗?', - async success(res) { - if (res.confirm) { - const result = await deleteHistoryApi() - if (result.success) { - Taro.showLoading({ - title: '请稍等...', - }) - alert.success('删除成功') - getHistory() - Taro.hideLoading() - } - else { - alert.error('删除失败') - Taro.hideLoading() - } - } - else if (res.cancel) { - console.log('用户点击取消') - } - }, - }) - } - - return ( - - - - - - - { - !hasFonts && <> - - 历史搜索 - { - histroyList.length > 0 - && handDelete()}> - } - - {!!histroyList.length - && - {histroyList.map((item, index) => { - return ( - handItem(item)} key={index} className={styles.itemBox}>{item.search_key} - ) - })} - - } - { - !histroyList.length && - } - - } - { - hasFonts && <> - - - 搜索结果 - handBack()}>返回 - - - { - !!searchList.length && searchList.map((item, index) => { - return ( - showCart(item)} key={index} data={item}> - ) - }) - } - { - !searchList.length && - } - - } - - - - - ) -} -export default memo(SearchPage) -// oninputEvent={(e, item) => { onInputEven?.(e, item) }} diff --git a/src/pages/shopping/README.md b/src/pages/shopping/README.md deleted file mode 100644 index a5eeaa6..0000000 --- a/src/pages/shopping/README.md +++ /dev/null @@ -1,16 +0,0 @@ -购物页面的 组件结构 - -> Shopping -> -> > ShoppingProvider -> > -> > > ShoppingCartContainer -> > > -> > > > ShoppingCartItem -> > > > -> > > > > GoodsList -> > > > > -> > > > > > ColorKindItem - -还用到发布订阅者模式 通知祖先组件请求接口更新数据 - diff --git a/src/pages/shopping/components/bottomEditBar/index.module.scss b/src/pages/shopping/components/bottomEditBar/index.module.scss deleted file mode 100644 index 8678f19..0000000 --- a/src/pages/shopping/components/bottomEditBar/index.module.scss +++ /dev/null @@ -1,29 +0,0 @@ -.bottomBar { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-between; - background-color: white; - padding: 16px 24px; - box-shadow: 0 1px 2px 1px #c2c2c2; - .bottomLeft { - margin-left: 12px; - .moneyText { - font-size: 24px; - font-family: $font_family; - font-weight: 400; - color: rgba($color: #000000, $alpha: 0.6); - } - .moneyNumber { - font-size: 28px; - font-family: $font_family; - font-weight: 500; - color: $color_money; - } - } - .bottomRight { - display: flex; - flex-flow: row nowrap; - align-items: center; - } -} diff --git a/src/pages/shopping/components/bottomEditBar/index.tsx b/src/pages/shopping/components/bottomEditBar/index.tsx deleted file mode 100644 index 12fd75d..0000000 --- a/src/pages/shopping/components/bottomEditBar/index.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { Text, View } from '@tarojs/components' -import { ShoppingDispatchType, useShoppingDispatch } from '../../context' -import styles from './index.module.scss' -import NormalButton from '@/components/normalButton' -import MCheckbox from '@/components/checkbox' -import { usePropsValue } from '@/use/useCommon' - -interface PropsType { - onDelete?: Function - onSelectCheckbox?: (bool: boolean) => void - disabled?: boolean - isSelectAll?: boolean -} -const BottomEditBar = (props: PropsType) => { - const { onDelete, onSelectCheckbox, disabled = false, isSelectAll: selectAll = false } = props - const dispatch = useShoppingDispatch() - console.log('isSelectAll==>', selectAll) - const handleDelete = () => { - onDelete && onDelete() - } - - const selectCallBack = () => { - onSelectCheckbox && onSelectCheckbox(true) - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: true }) - } - const closeCallBack = () => { - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: false }) - onSelectCheckbox && onSelectCheckbox(false) - } - - const [isSelectAll, setSelectAll] = usePropsValue({ - value: selectAll, - defaultValue: false, - }) - - return ( - - - - 全选 - - - - - 删除 - - - - ) -} - -export default BottomEditBar diff --git a/src/pages/shopping/components/bottomSettleBar/index.module.scss b/src/pages/shopping/components/bottomSettleBar/index.module.scss deleted file mode 100644 index 13ba2bc..0000000 --- a/src/pages/shopping/components/bottomSettleBar/index.module.scss +++ /dev/null @@ -1,38 +0,0 @@ -.bottomBar { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-between; - background-color: white; - padding: 16px 24px; - box-shadow: 0 1px 2px 1px #c2c2c2; - .bottomLeft { - margin-left: 12px; - .moneyText { - font-size: 28px; - font-family: $font_family; - font-weight: 400; - color: rgba($color: #000000, $alpha: 0.6); - } - .moneyNumber { - font-size: 28px; - font-family: $font_family; - font-weight: 550; - color: $color_money; - } - } - .bottomRight { - } - - .bottomButton { - } -} - -.unit { - font-size: 22px; - transform: scale(0.7); - margin-right: 10px; -} -.money { - font-size: 36px; -} diff --git a/src/pages/shopping/components/bottomSettleBar/index.tsx b/src/pages/shopping/components/bottomSettleBar/index.tsx deleted file mode 100644 index 7e5cc13..0000000 --- a/src/pages/shopping/components/bottomSettleBar/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Text, View } from '@tarojs/components' -import { memo } from 'react' -import styles from './index.module.scss' -import NormalButton from '@/components/normalButton' -import { formatMillionYuan, formatPriceDiv, toDecimal2 } from '@/common/format' - -interface PropsType { - amount?: number - onSettleAccount?: Function -} -const BottomSettleBar = (props: PropsType) => { - const { onSettleAccount, amount = 0 } = props - - const handleSettle = () => { - onSettleAccount && onSettleAccount() - } - - return ( - - - 预估金额: - - ¥ - {formatPriceDiv(amount, 1, true)} - - - - - 结算 - - - - ) -} - -export default BottomSettleBar diff --git a/src/pages/shopping/components/colorKindItem/index.module.scss b/src/pages/shopping/components/colorKindItem/index.module.scss deleted file mode 100644 index 2f97825..0000000 --- a/src/pages/shopping/components/colorKindItem/index.module.scss +++ /dev/null @@ -1,80 +0,0 @@ -.container{ - display: flex; - flex-flow: row nowrap; - justify-content: space-between; -} -.colorKindItem { - width: 100%; - height: 100%; - margin-left: 24px; - padding: 16px 0; - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-between; - &__left { - flex: none; - width: 120px; - height: 120px; - border-radius: 8px; - margin-right: 24px; - &--image { - width: 100%; - height: 100%; - } - } - &__center { - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - align-self: stretch; - flex: 1 1 auto; - &--title { - color: $color_font_one; - font-size: 28px; - @include common_ellipsis(2); - } - &--detail { - } - &--ID { - color: rgba($color: #000000, $alpha: 0.4); - font-size: 24px; - @include common_ellipsis(); - } - &--description { - color: rgba($color: #000000, $alpha: 0.4); - font-size: 24px; - @include common_ellipsis(); - } - } - &__right { - flex: none; - display: flex; - flex-flow: column nowrap; - align-items: flex-end; - justify-content: space-between; - align-self: stretch; - padding-right: 24px; - - &--price { - color: $color_money; - font-weight: 550; - font-size: 28px; - } - &--yuanPrice { - font-size: 26px; - font-weight: 500; - text-decoration: line-through; - color: #7f7f7f; - } - &--counter { - } - } -} -.checkbox { - // padding-left: 24px; - padding: 0 24px; -} -.selected { - background-color: #f8faff; -} diff --git a/src/pages/shopping/components/colorKindItem/index.tsx b/src/pages/shopping/components/colorKindItem/index.tsx deleted file mode 100644 index d193df4..0000000 --- a/src/pages/shopping/components/colorKindItem/index.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import type { FC } from 'react' -import { forwardRef, memo, useCallback, useEffect, useRef, useState } from 'react' -import classnames from 'classnames' -import type { ShoppingStateContextValue } from '../../context' -import { Goods, ShoppingDispatchType, useShoppingDispatch, useShoppingState } from '../../context' -import type { ShoppingStore } from '../../context/shoppingStore' -import { events } from '../../context/shoppingStore' -import styles from './index.module.scss' -import MCheckbox from '@/components/checkbox' -import Counter from '@/components/counter' -import { debounce } from '@/common/util' -import { formatImgUrl, formatMeterDiv, formatMeterMul, formatPriceDiv } from '@/common/format' -import { EnumSaleMode } from '@/common/Enumerate' -import { AdjestShoppingCartApi } from '@/api/shopping/index' -import LabAndImg from '@/components/LabAndImg' -import { usePropsValue } from '@/use/useCommon' -import { selectList } from '@/common/Enumerate/BaseEnum' - -interface PropsType { - // state?: { - // Observer: ShoppingStore - // } - purchaserId: number - itemData: Record & object - checked?: boolean - // onChange?: (isChecked: boolean, goodsId: number) => void -} - -const ColorKindItem: FC = (props) => { - console.log('rerender component ColorKindItem', props) - const { purchaserId, itemData, checked } = props - - const [isChecked, setCheck] = usePropsValue({ - defaultValue: checked, - value: checked, - // onChange: (value) => { - // setCheck(value) - // }, - }) - - const currentCount = useRef({ - roll: itemData.roll, - length: itemData.length, - }) - // 格式化数量 - const formatCount = (itemData) => { - return itemData.sale_mode == EnumSaleMode.Bulk ? itemData.roll : formatMeterDiv(itemData.length) - } - - const [count, setCount] = useState(formatCount(itemData)) - - // 格式化金额 - const formatPrice = (price: number) => { - return Number(formatPriceDiv(price)) - } - - const handleCountChange = (nextValue: number) => { - setCount(nextValue) - } - - // 格式化单位 - const formatUnit = (itemData) => { - return itemData.sale_mode == EnumSaleMode.Bulk ? '条' : '米' - } - // 选中 - const handleSelect = () => { - console.log('currentCount==>', currentCount.current, itemData) - const payload = { - id: itemData?.id, - estimate_amount: itemData.estimate_amount, - product_code: itemData.product_code, - product_color_code: itemData.product_color_code, - sale_mode: itemData.sale_mode, - count: itemData.sale_mode === EnumSaleMode.Bulk ? currentCount.current.roll : Number(formatMeterDiv(currentCount.current.length)), - } - events.trigger('updatePurchaserMultipleSelection', purchaserId, payload, 'add', itemData?.id) - setCheck(true) - } - // 未选中 - const handleClose = () => { - events.trigger('updatePurchaserMultipleSelection', purchaserId, null, 'delete', itemData.id) - setCheck(false) - } - const { fetchData } = AdjestShoppingCartApi() - - // 调整条数/米数的接口 并在调整完成后重新请求整个购物车页面 - const getInputValue = useCallback(debounce(async(num) => { - console.log('num===>', num) - if (num < selectList[itemData.sale_mode].minNum) { - return - } - const targetColor = { - roll: 0, - length: 0, - } - if (itemData.sale_mode === EnumSaleMode.Bulk) { - targetColor.roll = Math.trunc(num) - } - else { - targetColor.length = formatMeterMul(num) - } - const res = await fetchData({ - id: itemData.id, - roll: targetColor.roll, - length: targetColor.length, - }) - if (res.success) { - currentCount.current = targetColor - events.trigger('FetchSpecificPurchaser', purchaserId) - } - else { - // 请求失败,赋值回初始数量 - setCount(formatCount(itemData)) - } - }, 300), [itemData]) - - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.product_color_texture_url } - }, []) - - useEffect(() => { - console.log('itemData==>', itemData) - setCount(formatCount(itemData)) - }, [itemData.roll, itemData.length]) - - return ( - - - - - - - {itemData.product_code}# {itemData.product_name} - - - {itemData.product_color_code} - {itemData.product_color_name} - - - - ¥ {formatPrice(itemData.sale_price)}/{itemData.sale_mode == EnumSaleMode.Plate ? '米' : 'kg'} - { - itemData.sale_mode === EnumSaleMode.Bulk && itemData?.standard_sale_price !== itemData?.sale_price && ¥ {formatPrice(itemData?.standard_sale_price)}/{itemData.sale_mode == EnumSaleMode.Plate ? '米' : 'kg'} - } - - - - - - ) -} - -export default memo(ColorKindItem) diff --git a/src/pages/shopping/components/shoppingCart/index.tsx b/src/pages/shopping/components/shoppingCart/index.tsx deleted file mode 100644 index 12d2700..0000000 --- a/src/pages/shopping/components/shoppingCart/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { FC, ReactNode } from 'react' -import { useEffect, useMemo, useReducer, useRef } from 'react' -import type { - ColorStore, - ShoppingAction, - ShoppingStateContextValue, -} from '../../context' -import { - ShoppingDispatchContext, - ShoppingDispatchType, - ShoppingStateContext, - shoppingReducer, throwError, -} from '../../context' -import { ShoppingStore } from '../../context/shoppingStore' - -export interface ShoppingCartPropsType { - initialValues?: ColorStore - children?: ReactNode -} -// 购物车上下文组件 -export const ShoppingProvider: FC = (props) => { - const { children, initialValues } = props - - // const onTriggerCheckboxRef = useRef(onTriggerCheckbox) - // onTriggerCheckboxRef.current = onTriggerCheckbox - // 发布订阅 - const Observer = useMemo(() => new ShoppingStore(), []) - - const [state, dispatch] = useReducer<(state: ShoppingStateContextValue, action: ShoppingAction) => ShoppingStateContextValue>(shoppingReducer, { - colorStore: initialValues || {}, - currentCheckedPurchaserId: -1, - isManageStatus: false, - isMultipleSelection: false, - selectedAmount: 0, - Observer, - }) - - return ( - - {children} - - ) -} diff --git a/src/pages/shopping/components/shoppingCartItem/index.module.scss b/src/pages/shopping/components/shoppingCartItem/index.module.scss deleted file mode 100644 index d02aa57..0000000 --- a/src/pages/shopping/components/shoppingCartItem/index.module.scss +++ /dev/null @@ -1,128 +0,0 @@ -.layout { - margin: 24px; - margin-top: 16px; - margin-bottom: 16px; - padding: 24px 0; - padding-bottom: 0; - border: 1px solid transparent; - overflow: hidden; - .checkbox { - padding: 0 24px; - box-sizing: border-box; - &--text { - width: 100%; - margin-left: 20px; - } - } -} - -.selected { - border-color: $color_main; -} - -.line { - margin-top: 20px; - margin-bottom: 0; -} - -.topItem { - display: flex; - flex-flow: column nowrap; - align-items: flex-start; - justify-content: space-around; - - .topTitle { - font-size: 32px; - font-family: $font_family; - font-weight: 550; - line-height: 2; - color: rgba($color: #000000, $alpha: 0.8); - margin-right: 16px; - } - // 汇总 - .summary { - color: rgba($color: #000000, $alpha: 0.4); - font-size: 24px; - } -} - -.detailBox { - box-sizing: border-box; - overflow: hidden; - .orderTitle { - display: flex; - align-items: center; - color: $color_font_one; - font-weight: 550; - font-size: 28px; - line-height: 2.5; - } - .orderType { - padding: 0 24px; - margin-top: 16px; - .orderTypeDetail { - display: flex; - gap: 0 16px; - } - } - .orderColor { - padding: 0 24px; - } -} - -.bottomBox { - margin-top: 40px; -} - -.drawerButton { - display: flex; - justify-content: center; - align-items: center; -} - -.drawerOpen { - height: auto; -} -.drawerClose { - height: 0; -} - -.saleModeButton { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: center; - padding: 0 20px; - box-sizing: border-box; - border: 0 solid transparent; - background-color: #f6f6f6; - border-radius: 8px; - font-size: 28px; - height: 72px; - &--text { - color: #909090; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - } - &:hover { - opacity: 0.7; - } - &--active { - border: 1px solid $color_main; - background-color: #eaf2ff; - .saleModeButton--text { - color: $color_main; - } - } -} -.noList { - margin: 100px 0; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - color: #707070; - font-size: 26px; -} diff --git a/src/pages/shopping/components/shoppingCartItem/index.tsx b/src/pages/shopping/components/shoppingCartItem/index.tsx deleted file mode 100644 index e865120..0000000 --- a/src/pages/shopping/components/shoppingCartItem/index.tsx +++ /dev/null @@ -1,570 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { FC } from 'react' -import { forwardRef, memo, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import ColorKindItem from '../colorKindItem' -import type { Goods, GoodsMeta, ShoppingStateContextValue } from '../../context' -import { ShoppingDispatchType, useShoppingDispatch, useShoppingState } from '../../context' -import { events } from '../../context/shoppingStore' -import styles from './index.module.scss' -import { formatMeterDiv, formatPriceDiv } from '@/common/format' -import LayoutBlock from '@/components/layoutBlock' -import Tag from '@/components/tag' -import Divider from '@/components/Divider' -import { EnumSaleMode } from '@/common/Enumerate' -import IconFont from '@/components/iconfont/iconfont' -import { alert, goLink, isEmptyObject } from '@/common/common' -import { ShoppingCartDeleteApi, ShoppingCartListApi } from '@/api' -import { usePropsValue } from '@/use/useCommon' -import { selectList } from '@/common/Enumerate/BaseEnum' - -export enum BackEndSaleModeListFieldMap { - bulk_color_list = 0, - length_cut_color_list = 1, - weight_cut_color_list = 2, -} -export const BackEndSaleModeListField: BackEndSaleModeListFieldMap[] = [ - BackEndSaleModeListFieldMap.bulk_color_list, - BackEndSaleModeListFieldMap.length_cut_color_list, - BackEndSaleModeListFieldMap.weight_cut_color_list, -] -interface ButtonPropsType { - isActive: boolean - onClick?: Function - children?: React.ReactNode - customStyle?: React.CSSProperties -} -type OperationType = 'add' | 'delete' -// 订单类型 -const SaleModeButton: FC = (props) => { - const { onClick, children, isActive = false, customStyle } = props - const handleClick = () => { - onClick?.() - } - return ( - - {children} - - ) -} - -const DrawerButton = ({ isOpen }: { isOpen: boolean }) => { - return ( - - {isOpen ? : } - - ) -} -const DrawerButtonWithMemo = memo(DrawerButton) - -const ColorKindItemContainer = (props: { id: number; item: any; purchaser_id: number; checked: boolean }) => { - const { id, item, purchaser_id, checked } = props - return -} -const ColorKindItemContainerWithMemo = memo(ColorKindItemContainer) - -interface GoodsListPropType { - itemData?: ShoppingCartData - multipleSelection?: GoodsMeta['multipleSelection'] - selected: EnumSaleMode -} -const GoodsList = (props: GoodsListPropType) => { - const { itemData, selected, multipleSelection } = props - console.log('rerender component GoodsList', props, props.itemData?.purchaser_name) - - return ( - <> - {itemData?.[BackEndSaleModeListFieldMap[selected]].length !== 0 - ? ( - itemData?.[BackEndSaleModeListFieldMap[selected]].map((item) => { - console.log('item===>', item, multipleSelection?.hasOwnProperty(item.id)) - return - }) - ) - : ( - 暂无数据 - )} - - ) -} -const GoodsListWithMemo = memo(GoodsList) - -interface PropsType { - itemData?: ShoppingCartData - onDeleteItem: () => void - state?: { - // colorStore?: ColorStore - // multipleSelection?: GoodsMeta['multipleSelection'] - currentCheckedPurchaserId?: number - isMultipleSelection?: ShoppingStateContextValue['isMultipleSelection'] - } -} - -const ShoppingCartItem = (props: PropsType) => { - const { state } = props - console.log('rerender component ShoppingCartItem', props, props.itemData?.purchaser_name) - - const currentItemData = useRef(props.itemData) - // 及时更新 useRef 的数据 不然拿到的还是旧数据 - currentItemData.current = props.itemData - - const [itemData, setItemData] = usePropsValue({ - value: currentItemData.current, - defaultValue: props.itemData, - }) - - const [multipleSelection, setMultipleSelection] = useState([]) - console.log('rerender multipleSelection', multipleSelection, props.itemData?.purchaser_name) - - const { currentCheckedPurchaserId, isMultipleSelection } = state! - - const dispatch = useShoppingDispatch() - - const [openDetail, setOpenDetail] = useState(false) - - const [selected, setSelect] = useState(0) - - useEffect(() => { - if (currentCheckedPurchaserId === itemData?.purchaser_id) { - console.log('isMultipleSelection', isMultipleSelection, currentCheckedPurchaserId, itemData?.purchaser_id) - if (isMultipleSelection) { - setMultipleSelection(Object.fromEntries( - itemData?.[BackEndSaleModeListFieldMap[selected]].map(item => [ - item?.id, - { - id: item?.id, - estimate_amount: item.estimate_amount, - product_code: item.product_code, - product_color_code: item.product_color_code, - sale_mode: item.sale_mode, - count: selected === EnumSaleMode.Bulk ? item.roll : Number(formatMeterDiv(item.length)), - }, - ]), - )) - } - } - }, [isMultipleSelection, itemData, selected, currentCheckedPurchaserId]) - - const cleanMultiSelection = () => { - if (currentCheckedPurchaserId === itemData?.purchaser_id) { - setMultipleSelection({}) - } - } - - // const [isPending, startTransition] = useTransition() - const onSelectOrderType = (type: EnumSaleMode) => { - // if (isPending) { return } - if (selected !== type) { - cleanMultiSelection() - } - setSelect(type) - // 重置预估金额 - dispatch({ type: ShoppingDispatchType.UPDATE_SELECTED_AMOUNT, data: 0 }) - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: false }) - } - - const handleClickLayout = () => { - if (currentCheckedPurchaserId === props.itemData?.purchaser_id) { - return - } - currentItemData.current = props.itemData - setItemData(props.itemData) - dispatch({ type: ShoppingDispatchType.UPDATE_SELECTED_AMOUNT, data: 0 }) - dispatch({ - type: ShoppingDispatchType.UPDATE_CURRENT_CHECKED_PURCHASERID, - data: props.itemData?.purchaser_id as number, - }) - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: Object.values(multipleSelection!).length === itemData?.[BackEndSaleModeListFieldMap[selected]].length }) - } - const handleOpenDetail = () => { - setOpenDetail(isOpen => !isOpen) - handleClickLayout() - } - // 统计已选面料 - const materialChecked = useMemo(() => { - // const multipleSelection = colorStore?.[itemData!.purchaser_id]?.multipleSelection - console.log('materialChecked', multipleSelection) - if (!multipleSelection || isEmptyObject(multipleSelection)) { return 0 } - return new Set( - Object.values(multipleSelection)?.reduce((prev, item: Goods) => { - if (item.sale_mode === selected) { - return [...prev, item.product_code] - } - return prev - }, []), - ).size - }, [multipleSelection, currentCheckedPurchaserId, selected]) - - // 统计已选颜色 - const colorChecked = useMemo(() => { - // const multipleSelection = colorStore?.[itemData!.purchaser_id]?.multipleSelection - console.log('colorChecked item', multipleSelection) - if (!multipleSelection || isEmptyObject(multipleSelection)) { return 0 } - return new Set( - Object.values(multipleSelection).reduce((prev, item: Goods) => { - if (item.sale_mode === selected) { - return [...prev, item.product_color_code] - } - return prev - }, []), - ).size - }, [multipleSelection, currentCheckedPurchaserId, selected]) - - // 统计已选条数 / 米数 - const lengthOrRollChecked = useMemo(() => { - // const multipleSelection = colorStore?.[itemData!.purchaser_id]?.multipleSelection - console.log('lengthOrRollChecked item', multipleSelection, currentCheckedPurchaserId) - if (!multipleSelection || isEmptyObject(multipleSelection)) { return 0 } - return ( - Object.values(multipleSelection).reduce((prev, item: Goods) => { - return prev + item.count - }, 0) || 0 - ) - }, [multipleSelection, currentCheckedPurchaserId, selected]) - - const { fetchData } = ShoppingCartListApi() - - // 更新当前客户的多选项 - const updatePurchaserMultipleSelection = (purchaserId: number, payload: Goods, operationType: OperationType, goodsId: number) => { - if (itemData?.purchaser_id === purchaserId) { - console.log('updatePurchaserMultipleSelection', purchaserId) - if (operationType === 'add') { - const nextMultipleSelection = { - ...multipleSelection, - [goodsId]: payload, - } - - console.log('nextMultipleSelection', nextMultipleSelection) - setMultipleSelection(nextMultipleSelection) - // 全选标识 - if (itemData?.[BackEndSaleModeListFieldMap[selected]].length === Object.keys(nextMultipleSelection).length) { - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: true }) - } - } - else if (operationType === 'delete') { - const temp = { ...multipleSelection } - delete temp?.[goodsId] - - setMultipleSelection(temp) - if (isMultipleSelection) { - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: false }) - } - } - } - } - - const handleOtherHighLight = (purchaserId: number, deletedItemData: any) => { - if (purchaserId === itemData?.purchaser_id) { - // 当前订单类型还有数据,跳过 - if (deletedItemData?.[BackEndSaleModeListFieldMap[selected]].length !== 0) { return } - // 当前订单类型没有数据,高亮其他订单类型 - for (let i = 0; i < BackEndSaleModeListField.length; i++) { - if (deletedItemData?.[BackEndSaleModeListFieldMap[i]].length !== 0) { - // 控制高亮 - onSelectOrderType(i) - return - } - } - } - } - - useEffect(() => { - events.on('handleOtherHighLight', handleOtherHighLight) - return () => { - events.off('handleOtherHighLight', handleOtherHighLight) - } - }, [handleOtherHighLight]) - - // 发布订阅 - useEffect(() => { - events.on('updatePurchaserMultipleSelection', updatePurchaserMultipleSelection) - return () => { - events.off('updatePurchaserMultipleSelection', updatePurchaserMultipleSelection) - } - }, [updatePurchaserMultipleSelection]) - - const fetchSpecificPurchaser = async(id: number) => { - if (itemData?.purchaser_id !== id) { return } - console.log('request new data start run') - const res = await fetchData({ - purchaser_id: id, - }) - console.log('res===>', res) - if (res.success) { - // 转成 对象形式 - // 4562: { - // id: 4562, - // ... - // } - if (!res.data.list.length) { return alert.error('修改数量失败') } - - const newGoodsKind = Object.fromEntries( - res.data.list[0]?.[BackEndSaleModeListFieldMap[selected]].map(item => [ - item?.id, - { - id: item?.id, - estimate_amount: item.estimate_amount, - product_code: item.product_code, - product_color_code: item.product_color_code, - sale_mode: item.sale_mode, - count: selected === EnumSaleMode.Bulk ? item.roll : Number(formatMeterDiv(item.length)), - }, - ]), - ) - - setMultipleSelection(prev => Object.fromEntries( - Object.keys(prev!) - .map(id => [ - id, - { - id: Number(id), - estimate_amount: newGoodsKind[id].estimate_amount, - product_code: newGoodsKind[id].product_code, - product_color_code: newGoodsKind[id].product_color_code, - sale_mode: newGoodsKind[id].sale_mode, - count: newGoodsKind[id].count, - }, - ]), - )) - currentItemData.current = res.data.list[0] - setItemData(() => res.data.list[0]) - } - else { - alert.error('请求失败') - } - } - - const { fetchData: deleteApi } = ShoppingCartDeleteApi() - // 批量某个客户的删除商品 - const handleDelete = async(id: number) => { - console.log('handleDelete', itemData?.purchaser_id, id) - if (id !== itemData?.purchaser_id) { return } - console.log('multipleSelection', multipleSelection) - const checked: Goods[] = Object.values(multipleSelection!) - if (checked.length === 0) { - return alert.error('请选择商品') - } - console.log('checked==>', checked) - Taro.showModal({ - title: '要删除这些商品吗?', - async success(res) { - if (res.confirm) { - alert.showLoading('删除中') - const checkedIds = checked.map(item => item.id) - const res = await deleteApi({ - ids: checkedIds.join(','), - }) - if (res.success) { - alert.hideLoading() - alert.success('删除成功') - cleanMultiSelection() - // const deleted = await fetchData(searchOptions) - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: false }) - - // handleOtherHighLight(currentCheckedPurchaserId!, deleted.data.list.find(item => item.purchaser_id === currentCheckedPurchaserId)) - props?.onDeleteItem() - // Observer.notify(currentCheckedPurchaserId) - } - else { - alert.hideLoading() - alert.none(res.msg) - } - } - }, - }) - } - const handleSettleAccount = (id: number) => { - console.log('handleSettleAccount', itemData?.purchaser_id, id) - if (id !== itemData?.purchaser_id) { return } - if (!multipleSelection) { return alert.error('请先选择客户') } - const checkedGoodsKind = Object.values(multipleSelection).reduce((prev, item: Goods) => { - return [...prev, item.id] - }, []) - if (checkedGoodsKind.length === 0) { return alert.error('请先选择商品') } - goLink('/pages/submitOrder/index', { - purchaser_id: currentCheckedPurchaserId, - sale_mode: selected, - shopping_cart_product_color_list: JSON.stringify(checkedGoodsKind), - purchaser_name: itemData?.purchaser_name, - isBuyNew: false, - }) - } - - // 发布订阅 - useEffect(() => { - events.on('FetchSpecificPurchaser', fetchSpecificPurchaser) - events.on('DeleteSpecificItem', handleDelete) - events.on('SettleAccount', handleSettleAccount) - events.on('CleanMultiSelection', cleanMultiSelection) - // 取消订阅 - return () => { - events.off('FetchSpecificPurchaser', fetchSpecificPurchaser) - events.off('DeleteSpecificItem', handleDelete) - events.off('SettleAccount', handleSettleAccount) - events.off('CleanMultiSelection', cleanMultiSelection) - } - }, [fetchSpecificPurchaser, handleDelete, handleSettleAccount]) - - useEffect(() => { - if (itemData?.purchaser_id === currentCheckedPurchaserId) { - const multipleSelectionArr = Object.values(multipleSelection!) - console.log('shoppingCartItem multipleSelection change', multipleSelection, itemData?.purchaser_name) - if (multipleSelectionArr.length > 0) { - const result = multipleSelectionArr.reduce((prev: number, value: Goods) => { - return prev + Number(formatPriceDiv(value.estimate_amount)) - }, 0) as number - // 同步修改上下文的 预估金额 - dispatch({ type: ShoppingDispatchType.UPDATE_SELECTED_AMOUNT, data: result }) - } - else { - dispatch({ type: ShoppingDispatchType.UPDATE_SELECTED_AMOUNT, data: 0 }) - } - } - }, [multipleSelection]) - - return ( - - - - - {itemData?.purchaser_name} - { - itemData?.sale_user_name && - {itemData?.sale_user_name} - - } - - - - 已选 {materialChecked} 种面料,{colorChecked} 个颜色,共{' '} - {selected === EnumSaleMode.Bulk ? `${lengthOrRollChecked} 条` : `${(lengthOrRollChecked).toLocaleString()} 米`} - - - - - - {/* 减少节点渲染 */} - {openDetail && ( - <> - - {/* - - */} - - {/* 订单类型 */} - - onSelectOrderType(EnumSaleMode.Bulk)} - > - 大货 - - onSelectOrderType(EnumSaleMode.Plate)} - > - 剪板 - - onSelectOrderType(EnumSaleMode.BulkCut)} - > - 散剪 - - - - - - - 布料颜色 - - {selectList[selected].title}单位:{selectList[selected].unit} - - - - - - - - - )} - - ) -} - -// State 分割组件 思路就是把 context 直接通过 props 的形式传给组件,这样的话就解决了 context 强制刷新 memo 的问题了 -// 那么当 context 内的 value 被更新的时候,react 只会强制渲染 Wrapper -const withStateSlice = (comp, slice: (state: ShoppingStateContextValue, props: PropsType) => any) => { - const MemoComp = memo(comp) - // const MemoComp = memo(comp, (prevProps, nextProps) => { - // let needMemo = true - // if (prevProps.itemData !== nextProps.itemData) { - // console.log('itemData 有变化') - // needMemo = false - // } - // if (prevProps.state !== nextProps.state) { - // console.log('state 有变化') - // needMemo = false - // } - // // if (JSON.stringify(prevProps.itemData) !== JSON.stringify(nextProps.itemData)) { - // // console.log('itemData 有变化') - // // needMemo = false - // // } - // if (prevProps.state.currentCheckedPurchaserId !== nextProps.state.currentCheckedPurchaserId) { - // console.log('currentCheckedPurchaserId 有变化') - // needMemo = false - // } - // if (prevProps.state.isMultipleSelection !== nextProps.state.isMultipleSelection) { - // console.log('isMultipleSelection 有变化') - // needMemo = false - // } - // if (prevProps.itemData.purchaser_name === '孜然烤鱿鱼') { - // console.log('更新 孜然烤鱿鱼', !needMemo) - // console.log('------withStateSlice props-------') - // console.log('withStateSlice props prevProps', prevProps) - // console.log('withStateSlice props prevProps comparison itemData', prevProps.itemData === nextProps.itemData) - // console.log('withStateSlice props nextProps', nextProps) - // console.log('withStateSlice props prevProps comparison currentCheckedPurchaserId', prevProps.state.currentCheckedPurchaserId === nextProps.state.currentCheckedPurchaserId) - // console.log('withStateSlice props prevProps comparison state', prevProps.state === nextProps.state) - // console.log('------withStateSlice props-------') - // } - // return needMemo - // }) - const Wrapper = (props: PropsType, ref) => { - const state = useShoppingState() - // console.log('Wrapper colorStore', state.colorStore) - const sliced = useMemo(() => { - return { - currentCheckedPurchaserId: state.currentCheckedPurchaserId, - isMultipleSelection: state.isMultipleSelection, - } - }, [state.currentCheckedPurchaserId, state.isMultipleSelection]) - return - } - return memo(forwardRef(Wrapper)) -} - -const ShoppingCartItemWithStateSlice = withStateSlice(ShoppingCartItem, (state: ShoppingStateContextValue) => ({ - // colorStore: state.colorStore, - // multipleSelection: state.colorStore?.[props.itemData!.purchaser_id]?.multipleSelection, - currentCheckedPurchaserId: state.currentCheckedPurchaserId, - isMultipleSelection: state.isMultipleSelection, -})) - -export default ShoppingCartItemWithStateSlice diff --git a/src/pages/shopping/config.ts b/src/pages/shopping/config.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/shopping/context/index.ts b/src/pages/shopping/context/index.ts deleted file mode 100644 index 1f27795..0000000 --- a/src/pages/shopping/context/index.ts +++ /dev/null @@ -1,166 +0,0 @@ -import produce from 'immer' -import type { Dispatch } from 'react' -import React, { useContext } from 'react' -import type { ShoppingStore } from './shoppingStore' -import type { EnumSaleMode } from '@/common/Enumerate' - -/** - * 尝试使用weakmap来作为第一层的数据结构 - * 456: { - * purchaserId: 456, - * colorKind: { - * 4562: { - * id: 4562, - * ... - * } - * }, - * multipleSelection: { - * 4562: { - * id: 4562, - * ... - * } - * } - * }, - * 457: { - * purchaserId: 457, - * colorKind: { - * 4562: { - * id: 4562, - * ... - * } - * } - * } - */ -export type ColorStore = Record - -export interface Goods { - id: number - product_code: number // 面料编号 - product_color_code: number // 颜色编号 - estimate_amount: number // 预估金额 - count: number // 已选的条数或米数 - sale_mode: EnumSaleMode - roll?: number - length?: number -} -// 分组 -export interface GoodsMeta { - purchaserId: number - goodsKind?: Record - multipleSelection?: GoodsMeta['goodsKind'] -} - -export interface ShoppingStateContextValue { - isManageStatus: boolean // 管理按钮的状态 - isMultipleSelection: boolean // 全选按钮的状态 - currentCheckedPurchaserId: number // 当前高亮的客户ID - colorStore: ColorStore - selectedAmount: number - Observer: ShoppingStore -} - -export enum ShoppingDispatchType { - UPDATE_MANAGE_STATUS = 'UPDATE_MANAGE_STATUS', - UPDATE_MULTIPLE_SELECTION_STATUS = 'UPDATE_MULTIPLE_SELECTION_STATUS', - UPDATE_CURRENT_CHECKED_PURCHASERID = 'UPDATE_CURRENT_CHECKED_PURCHASERID', - UPDATE_COLOR_STORE = 'UPDATE_COLOR_STORE', - UPDATE_SELECTED_AMOUNT = 'UPDATE_SELECTED_AMOUNT', - UPDATE_CHANGED_CHECKBOX = 'UPDATE_CHANGED_CHECKBOX', -} - -export interface ShoppingDispatchContextValue { - [ShoppingDispatchType.UPDATE_MANAGE_STATUS]: (isManageStatus: ShoppingStateContextValue['isManageStatus']) => void - [ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS]: (isMultipleSelection: ShoppingStateContextValue['isMultipleSelection']) => void - [ShoppingDispatchType.UPDATE_CURRENT_CHECKED_PURCHASERID]: (purchaserId: ShoppingStateContextValue['currentCheckedPurchaserId']) => void - [ShoppingDispatchType.UPDATE_COLOR_STORE]: (colorStore: React.SetStateAction) => void - [ShoppingDispatchType.UPDATE_SELECTED_AMOUNT]: (amount: React.SetStateAction) => void - [ShoppingDispatchType.UPDATE_CHANGED_CHECKBOX]: (amount: React.SetStateAction) => void -} - -export interface ShoppingAction { - type: ShoppingDispatchType - data?: any -} - -export const shoppingReducer = produce((draft: ShoppingStateContextValue, action: ShoppingAction) => { - const { type, data } = action - switch (type) { - case ShoppingDispatchType.UPDATE_MANAGE_STATUS: { - draft.isManageStatus = data - break - } - case ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS: { - draft.isMultipleSelection = data - break - } - case ShoppingDispatchType.UPDATE_CURRENT_CHECKED_PURCHASERID: { - draft.currentCheckedPurchaserId = data - break - } - case ShoppingDispatchType.UPDATE_COLOR_STORE: { - draft.colorStore = data - break - } - case ShoppingDispatchType.UPDATE_SELECTED_AMOUNT: { - draft.selectedAmount = data - break - } - case ShoppingDispatchType.UPDATE_CHANGED_CHECKBOX: { - if (!draft.colorStore[data.purchaserId]) { - draft.colorStore[data.purchaserId] = { - purchaserId: data.purchaserId, - goodsKind: data.goodsKind, - multipleSelection: data.multipleSelection, - } - } - else { - draft.colorStore[data.purchaserId] = produce(draft.colorStore[data.purchaserId], (purchaserDraft) => { - purchaserDraft.purchaserId = data.purchaserId - purchaserDraft.goodsKind = { ...purchaserDraft.goodsKind, ...data.goodsKind } - purchaserDraft.multipleSelection = data.multipleSelection ? data.multipleSelection : purchaserDraft?.multipleSelection - }) - } - break - } - default: - throwError() - } -}) - -export const ShoppingStateContext = React.createContext(null) - -export const ShoppingDispatchContext = React.createContext | null>(null) - -export function useShoppingState() { - const ctx = useContext(ShoppingStateContext) - if (!ctx) { - throw new Error('没有获取到shopping context') - } - return ctx -} - -export function useShoppingDispatch() { - const ctx = useContext(ShoppingDispatchContext) - if (!ctx) { - throw new Error('没有获取到shopping dispatch') - } - return ctx -} - -export function useWatch(purchaserId: GoodsMeta['purchaserId'], id: number) { - const { colorStore } = useShoppingState() - return id ? colorStore[purchaserId].goodsKind![id] : colorStore[purchaserId].goodsKind -} - -export interface ShoppingCartAction { - setManageStatus: (manageStatus: boolean) => void - getManageStatus: () => boolean -} - -export interface InternalShoppingCartAction extends ShoppingCartAction { - __INTERNAL__: React.MutableRefObject -} - -export function throwError(): never { - throw new Error('没有这个action.type') -} diff --git a/src/pages/shopping/context/shoppingStore.ts b/src/pages/shopping/context/shoppingStore.ts deleted file mode 100644 index 110c3eb..0000000 --- a/src/pages/shopping/context/shoppingStore.ts +++ /dev/null @@ -1,44 +0,0 @@ - -// 用于优化数据流 结合发布订阅 更新组件内部状态可以组件自己处理 - -import { Events } from '@tarojs/taro' -import type { ColorStore } from '.' - -export const events = new Events() - -export type SubscribeCallback = (changedGoods: any) => void - -export class ShoppingStore { - // 全局缓存 - private store: ColorStore = {} - // 监听器数组 - private observers: SubscribeCallback[] = [] - - constructor(initialValue?: any) { - initialValue && this.updateStore(initialValue) - } - - // 更新全局缓存 - private updateStore(nextStore: ColorStore) { - this.store = nextStore - } - - // 订阅 - subscribe(callback: SubscribeCallback) { - this.observers.push(callback) - // 取消订阅 - return () => { - this.observers = this.observers.filter((fn: SubscribeCallback) => { - return callback !== fn // 引用地址 - }) - } - } - - // 通知 - notify(changedGoods: any) { - // 循环调用 - this.observers.forEach((callback) => { - callback(changedGoods) - }) - } -} diff --git a/src/pages/shopping/index.config.ts b/src/pages/shopping/index.config.ts deleted file mode 100644 index 1f72589..0000000 --- a/src/pages/shopping/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '购物页面', - -} diff --git a/src/pages/shopping/index.module.scss b/src/pages/shopping/index.module.scss deleted file mode 100644 index 0e604e7..0000000 --- a/src/pages/shopping/index.module.scss +++ /dev/null @@ -1,31 +0,0 @@ -.shopping { - width: 100%; - height: 100%; - background-color: $color_bg_one; - &--topBar { - background: #ffffff; - padding: 16px 24px; - } - &--context { - justify-content: space-between; - overflow: hidden; - height: 100%; - .shopping__list__container { - flex: 0 1 auto; - overflow: hidden; - } - } - .bottomBar{ - position: relative; - z-index: 999; - } -} -.flexBox { - display: flex; - margin-left: 24px; - align-items: center; - justify-content: flex-end; -} -.icon--manage--cancel { - color: $color_main; -} diff --git a/src/pages/shopping/index.tsx b/src/pages/shopping/index.tsx deleted file mode 100644 index 220a07b..0000000 --- a/src/pages/shopping/index.tsx +++ /dev/null @@ -1,236 +0,0 @@ -import { View } from '@tarojs/components' -import Taro, { useDidShow } from '@tarojs/taro' -import type { FC } from 'react' -import { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useTransition } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import ItemList, { BackEndSaleModeListField, BackEndSaleModeListFieldMap } from './components/shoppingCartItem/index' -import BottomSettleBar from './components/bottomSettleBar' -import BottomEditBar from './components/bottomEditBar' -import { ShoppingProvider } from './components/shoppingCart/index' -import type { Goods } from './context' -import { ShoppingDispatchType, useShoppingDispatch, useShoppingState } from './context' -import { events } from './context/shoppingStore' -import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' -import { ShoppingCartDeleteApi, ShoppingCartListApi } from '@/api/index' -import { formatMeterDiv, formatPriceDiv } from '@/common/format' -import InfiniteScroll from '@/components/infiniteScroll' -import IconText from '@/components/iconText' -import Search from '@/components/search' -import { alert, goLink, isEmptyObject } from '@/common/common' -import { EnumSaleMode } from '@/common/Enumerate' -import { useCheckTabBarSelectStatus } from '@/use/useCommon' -import { TabBarIndex } from '@/reducers/tabBar' - -interface SearchOptions { - short_name_or_phone?: string - page: number - size: number -} - -const ShoppingCartContainer: FC = () => { - const isFirst = useRef(true) - - console.log('rerender component ShoppingCartContainer') - - const { isMultipleSelection, isManageStatus, selectedAmount, currentCheckedPurchaserId } = useShoppingState() - console.log('rerender selectedAmount', selectedAmount) - - const dispatch = useShoppingDispatch() - - // 管理 - const onStartToManage = () => { - dispatch({ type: ShoppingDispatchType.UPDATE_MANAGE_STATUS, data: !isManageStatus }) - } - - const listHeightRef = useRef('auto') - - const { fetchData, state } = ShoppingCartListApi() - - const [searchOptions, setSearchOptions] = useState({ - page: 1, - size: 10, - }) - - const pageNum = useRef({ size: searchOptions.size, page: searchOptions.page }) - const getData = async() => { - const res = await fetchData(getFilterData(searchOptions)) - // clearMultiSelection() - if (!res.success) { - alert.error('请求失败') - setRefreshStatus(false) - } - setRefreshStatus(false) - } - - useDidShow(async() => { - // 第二次进入该页面时触发 - if (!isFirst.current) { - console.log('重新刷新') - // 重新刷新 - getData() - } - }) - - useEffect(() => { - console.log('useEffect fetchData', getFilterData(searchOptions)) - if (!isFirst.current) { - getData() - } - }, [searchOptions]) - - // 输入了搜索关键字 - const getSearchData = useCallback(debounce((e) => { - console.log('getSearchData===>', e) - setSearchOptions({ short_name_or_phone: e, size: 10, page: 1 }) - }, 300), []) - - const [shoppingCartData, setShoppingCartData] = useState<{ - list: ShoppingCartData[] - total: number - }>({ list: [], total: 0 }) - - // 数据加载状态 - const statusMore = useMemo(() => { - console.log('shoppingCartData==>', shoppingCartData, state) - const status = dataLoadingStatus({ - list: shoppingCartData.list, - total: shoppingCartData.total, - status: state.loading!, - }) - console.log('status==>', status) - return status - }, [shoppingCartData, state]) - - // useLayoutEffect 执行在DOM更新之后,浏览器绘制之前 如果放在 useEffect 里面会产生多一次不必要的回流和重绘,可能会引起视图闪现 - useLayoutEffect(() => { - (async() => { - console.log('useLayoutEffect') - await fetchData(getFilterData(searchOptions)) - isFirst.current = false - })() - }, []) - - useEffect(() => { - if (state.success) { - console.log('fetch success', state) - setShoppingCartData({ list: state.data.list, total: state.data.total }) - } - }, [state]) - - // 结算 - const handleSettleAccount = debounce(() => { - events.trigger('SettleAccount', currentCheckedPurchaserId) - }, 400) - - // const { fetchData: deleteApi } = ShoppingCartDeleteApi() - - const onDeleteItem = useCallback(async() => { - const deleted = await fetchData(searchOptions) - console.log('onDeleteItem') - events.trigger('handleOtherHighLight', currentCheckedPurchaserId, deleted.data.list.find(item => item.purchaser_id === currentCheckedPurchaserId)) - }, []) - - // 批量某个客户的删除商品 - const handleDelete = () => { - console.log('handleDelete') - events.trigger('DeleteSpecificItem', currentCheckedPurchaserId) - } - // 全选 - const handleSelectAllCheckbox = (isSelectAll: boolean) => { - if (!currentCheckedPurchaserId) { return alert.error('请先选择客户') } - - if (isSelectAll) { - dispatch({ type: ShoppingDispatchType.UPDATE_MULTIPLE_SELECTION_STATUS, data: isSelectAll }) - } - else { - events.trigger('CleanMultiSelection', currentCheckedPurchaserId) - } - } - - // 加载刷新数据 - const [refreshStatus, setRefreshStatus] = useState(false) - - // 下拉刷新 - const handleRefresh = async() => { - pageNum.current.page = 1 - setRefreshStatus(true) - setSearchOptions(e => ({ ...e, size: 10 })) - // const res = await fetchData(getFilterData(searchOptions)) - // if (res.success) { - // // clearMultiSelection() - // setRefreshStatus(false) - // alert.success('刷新成功') - // } - // else { - // alert.error('刷新失败') - // setRefreshStatus(false) - // } - } - // const [isPending, startTransition] = useTransition() - - useCheckTabBarSelectStatus(TabBarIndex.SHOPPING) - - const getScrolltolower = useCallback(() => { - if (shoppingCartData.list.length < shoppingCartData.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearchOptions(e => ({ ...e, size })) - } - }, [shoppingCartData]) - - return ( - - - - - {isManageStatus - ? ( - - ) - : ( - - )} - - - - - - - { - !!shoppingCartData?.list?.length - && shoppingCartData?.list?.map((item, index) => { - return - }) - } - - - - {isManageStatus - ? ( - handleSelectAllCheckbox(isAll)} - > - ) - : ( - - )} - - - - ) -} -export const Shopping: FC = () => { - // 计算总的预估金额 - - return ( - - - - ) -} - -export default memo(Shopping) diff --git a/src/pages/shopping/types.ts b/src/pages/shopping/types.ts deleted file mode 100644 index 99a41be..0000000 --- a/src/pages/shopping/types.ts +++ /dev/null @@ -1,33 +0,0 @@ -type ProductImageUrl = string -interface ShoppingCartData { - purchaser_code: string - purchaser_id: number - purchaser_name: string - purchaser_short_name: string - sale_user_id: number - sale_user_name: string - bulk_color_list: ColorList - length_cut_color_list: ColorList // 剪板 - weight_cut_color_list: ColorList // 散剪 - [Property: string]: any -} -interface ColorList { - estimate_amount: number - estimate_weight: number - id: number - length: number - product_code: string - product_color_code: string - product_color_id: number - product_color_name: string - product_color_texture_url: ProductImageUrl - product_id: number - product_name: string - roll: number - sale_mode: number - sale_mode_name: string - sale_offset: number - sale_price: number - standard_price: number - [Property: string]: any -} diff --git a/src/pages/submitOrder/index.config.ts b/src/pages/submitOrder/index.config.ts deleted file mode 100644 index f26d28a..0000000 --- a/src/pages/submitOrder/index.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - navigationBarTitleText: '确认订单', - -} diff --git a/src/pages/submitOrder/index.module.scss b/src/pages/submitOrder/index.module.scss deleted file mode 100644 index df9a02f..0000000 --- a/src/pages/submitOrder/index.module.scss +++ /dev/null @@ -1,458 +0,0 @@ -page { - background: #f7f7f7; - height: 100vh; -} - -.mainBox { - height: 100%; - overflow: hidden; - display: flex; - flex-flow: column nowrap; - justify-content: space-between; - .content { - flex: 1 1 auto; - overflow-y: scroll; - } - .pussBox { - margin-top: 24px; - display: flex; - align-items: center; - - .pussName { - font-size: 28px; - - font-weight: 400; - color: #000000; - } - - .pussPhone { - margin-left: 88px; - font-size: 28px; - - font-weight: 400; - color: #000000; - } - } - - .total { - margin-top: 44px; - font-size: 24px; - - font-weight: 400; - color: #000000; - margin-left: 32px; - margin-bottom: 8px; - } - - .productBox { - border-radius: 16px; - overflow: hidden; - - .flexMoney { - display: flex; - margin: 0 24px; - padding-bottom: 24px; - background-color: white; - align-items: center; - justify-content: space-between; - border-bottom-left-radius: 20px; - border-bottom-right-radius: 20px; - - .flexTotalBox { - display: flex; - align-items: center; - - .totalFont { - margin-left: 32px; - margin-right: 8px; - font-size: 28px; - - font-weight: 400; - color: #000000; - } - - .tishi { - font-size: 28px; - } - } - - .shoudPay { - font-size: 28px; - - font-weight: 500; - color: #f64861; - margin-right: 32px; - } - } - } -} - -.titleBox { - width: 638px; - display: flex; - justify-content: space-between; - align-items: center; - - .title { - font-size: 28px; - - font-weight: 500; - color: #000000; - } - - .modeName { - font-size: 28px; - - font-weight: 500; - color: #337fff; - } -} - -.modeLine { - margin-top: 24px; - width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; -} - -.goodsProduct { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - font-weight: 500; - color: #000000; - .goodsTitle { - flex: 1 1 auto; - font-size: 28px; - @include common_ellipsis(2); - } - .goodsEditIcon { - flex-shrink: 0; - } -} - -.goodsLine { - width: 638px; - height: 1px; - background: #000000; - opacity: 0.1; - margin-left: 32px; - margin-top: 24px; -} - -.itemGoods { - display: flex; - - .itemPic { - margin-right: 42px; - width: 108px; - height: 108px; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - - .flexBox { - display: flex; - align-items: center; - .itemMoney { - font-size: 28px; - margin-right: 10px; - font-weight: 400; - color: #000000; - } - .lastBox { - font-size: 28px; - font-weight: 400; - text-decoration: line-through; - color: #7f7f7f; - } - } - - .itemMoneyOne { - font-size: 28px; - - font-weight: 500; - color: #000000; - } - } - } -} - -.itemGoods:last-child { - display: flex; - - .itemPic { - margin-right: 42px; - width: 108px; - height: 108px; - // background: #322F2F; - border-radius: 8px; - } - - .itemRight { - padding-bottom: 24px; - width: 495px; - border-bottom: none; - - .item_right_top { - margin-bottom: 41px; - display: flex; - align-items: center; - justify-content: space-between; - - .itemName { - font-size: 28px; - - font-weight: 400; - color: #000000; - } - - .itemNums { - font-size: 28px; - - font-weight: 400; - color: #000000; - } - } - - .item_right_Bottom { - display: flex; - align-items: center; - justify-content: space-between; - .flexBox { - display: flex; - .itemMoney { - font-size: 28px; - margin-right: 10px; - font-weight: 400; - color: #000000; - } - .lastBox { - font-size: 28px; - font-weight: 400; - text-decoration: line-through; - color: #7f7f7f; - } - } - - .itemMoneyOne { - font-size: 28px; - - font-weight: 500; - color: #000000; - } - } - } -} - -.goodsBox:last-child { - border-bottom: none; -} - -.detailBox { - display: flex; - margin-top: 24px; - align-items: center; - justify-content: space-between; - - .detailRightFlex { - display: flex; - align-items: center; - - .detailRight { - font-size: 28px; - font-weight: 400; - color: #000000; - } - - .detailBtn { - margin-left: 16px; - width: 65px; - height: 32px; - border-radius: 8px; - border: 1px solid #337fff; - font-size: 24px; - font-weight: 400; - color: #337fff; - text-align: center; - line-height: 32px; - } - } - - .detailFont { - font-size: 28px; - - font-weight: 400; - color: #000000; - } -} - -.remarkFont { - margin-top: 24px; - font-size: 28px; - font-weight: 400; - color: #000000; -} - -.layoutBlock { - margin-bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} -.bottomBox { - width: 100%; - height: 160px; - background: #ffffff; - display: flex; - position: relative; - z-index: 99; - box-shadow: 6px 0px 12px 0px rgba(0, 0, 0, 0.16); - justify-content: space-between; - padding-bottom: constant(safe-area-inset-bottom); - padding-bottom: env(safe-area-inset-bottom); - .leftBottom { - margin-top: 22px; - - .topFlex { - margin-left: 48px; - display: flex; - align-items: center; - margin-bottom: 14px; - - .topFont { - font-size: 28px; - - font-weight: 400; - color: #000000; - margin-right: 10px; - } - - .topTotal { - font-size: 24px; - - font-weight: 500; - color: #f64861; - } - } - - .bottomFlex { - margin-left: 48px; - font-size: 24px; - - font-weight: 400; - color: #000000; - } - } - - .rightBottom { - margin-top: 16px; - width: 224px; - height: 80px; - background: #4581ff; - border-radius: 40px; - font-size: 32px; - - font-weight: 500; - color: #ffffff; - text-align: center; - line-height: 80px; - margin-right: 24px; - } -} - -.modal { - width: 80vw; - background-color: white; - border-radius: 16px; - overflow: hidden; - .modalTitle { - box-sizing: border-box; - width: 100%; - text-align: center; - padding: 32px 48px; - font-size: 32px; - color: #333333; - font-weight: 500; - } - .modalContainer { - padding: 0 40px; - padding-bottom: 44px; - .inputBar { - margin-bottom: 24px; - .input { - border-radius: 16px; - background-color: #f5f5f5; - font-size: 32px; - padding: 20px 0; - padding-left: 32px; - } - } - .tips { - font-size: 24px; - color: #747474; - } - } - .modalButton { - display: flex; - flex-flow: row nowrap; - justify-content: space-around; - font-size: 36px; - &--cancel { - width: 50%; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - color: #333333; - font-weight: 500; - } - &--confirm { - width: 50%; - display: flex; - font-weight: 500; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - color: $color_main; - } - .disabled { - opacity: 0.5; - } - } -} -.errorMsg { - color: $color_danger; - font-size: 24px; - margin-top: 8px; -} diff --git a/src/pages/submitOrder/index.tsx b/src/pages/submitOrder/index.tsx deleted file mode 100644 index 144866f..0000000 --- a/src/pages/submitOrder/index.tsx +++ /dev/null @@ -1,647 +0,0 @@ -import type { CommonEvent } from '@tarojs/components' -import { Input, Text, View } from '@tarojs/components' -import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' -import Big from 'big.js' -import type { ReactNode } from 'react' -import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import AddressDetailBox from '../orderDetails/components/addressDetailBox' -import Remark from '../orderDetails/components//remark' -import styles from './index.module.scss' -import Popup from '@/components/popup' -import { debounce } from '@/common/util' -import { UseSubscriptionMessage } from '@/use/useCommon' -import { - MpSaleOrderPost, - MpSaleOrderPreview, - SaleOrderPreViewBuyNow, - SaleOrderSubmitBuyNow, -} from '@/api/order' -import { alert } from '@/common/common' -import { formatDateTime, formatMeterDiv, formatPriceDiv, formatPriceMul, formatRemoveHashTag, formatWeightDiv } from '@/common/format' -import IconFont from '@/components/iconfont/iconfont' -import { MpPurchaserAddressList } from '@/api/addressList' -import LabAndImg from '@/components/LabAndImg' -import { EnumSaleMode } from '@/common/Enumerate' -import Divider from '@/components/Divider' -import LayoutBlock from '@/components/layoutBlock' -import IconText from '@/components/iconText' -import Dialog from '@/components/Dialog' -import InputX from '@/components/InputX' - -interface ExtendEvent { - target: { - value: string | number - } -} - -// 卡片盒子元素 -interface Obs { - title?: string - modeName?: string - showMode?: boolean - children?: ReactNode - clickNode?: () => void -} - -const DefaultBox = (props: Obs) => { - const { - title = '标题', - modeName = '大货', - showMode = false, - children, - clickNode, - } = props - - return ( - - - {title} - { - showMode && clickNode?.()}>{modeName} - } - - - {children} - - ) -} -const DefaultBoxWithMemo = memo(DefaultBox) - -// 产品商品元素 -interface PropGoods { - list: any[] - obj: { - sale_mode?: number | string - } - updateData: (data: Record) => void -} -const GoodsItem = (props: PropGoods) => { - const { list = [], obj = {}, updateData } = props - - const [goodsList, setGoodsList] = useState(list) - - useEffect(() => { - setGoodsList(list) - }, [list]) - - const labAndImgObj = useCallback((item) => { - return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url } - }, []) - - // 长度为2 单价调整,长度为1 批量调整 - const editPayload = useRef([]) - - // 批量调整 - const handleClickBulkEdit = (parentId: number) => { - editPayload.current = [parentId] - setShowBulkPopup(true) - } - - // 单价调整 - const handleEdit = (subId: number, parentId: number) => { - editPayload.current = [subId, parentId] - setShowPopup(true) - } - - const [showBulkPopup, setShowBulkPopup] = useState(false) - const handleBulkPopupChange = (bool) => { - setShowBulkPopup(bool) - } - const [showPopup, setShowPopup] = useState(false) - const handleChange = (bool) => { - setShowPopup(bool) - } - - const handleCancel = () => { - setShowPopup(false) - setShowBulkPopup(false) - } - // 单价调整点击确认 - const handleConfirm = () => { - if (errorMsg) { return } - const res = list.map((item) => { - if (item.id === editPayload.current[1]) { - item.product_colors = item.product_colors.map((it) => { - if (it.id === editPayload.current[0]) { - it.sale_price = Big(it.origin_price).add(formatPriceMul(value)) - if (obj?.sale_mode === EnumSaleMode.Bulk) { - // 计算金额 - it.estimate_amount = formatPriceMul(Number(formatPriceDiv(it.sale_price)) * formatWeightDiv(it.estimate_weight) * it.roll) - } - else if (obj?.sale_mode === EnumSaleMode.Plate) { - // 剪板 - it.estimate_amount = formatPriceMul(Number(formatPriceDiv(it.sale_price)) * formatMeterDiv(it.length)) - } - else { - // 散剪 - it.estimate_amount = formatPriceMul(Number(formatPriceDiv(it.sale_price)) * formatMeterDiv(it.length) / formatMeterDiv(it.length_to_weight_rate)).toFixed(0) - console.log('estimate_amount', it.estimate_amount, formatPriceDiv(it.estimate_amount, 100, true)) - } - } - return it - }) - } - return item - }) - setGoodsList(res) - handleCancel() - updateData({ - product_list: res, - // 计算总金额 - estimate_amount: res.reduce((acc, cur) => acc + cur.product_colors.reduce((a, c) => a + c.estimate_amount, 0), 0), - }) - } - - // 批量调整点击确认 - const handleBulkConfirm = () => { - if (errorMsg) { return } - const res = list.map((item) => { - if (item.id === editPayload.current[0]) { - item.product_colors = item.product_colors.map((it) => { - it.sale_price = Big(it.origin_price).add(formatPriceMul(value)) - if (obj?.sale_mode === EnumSaleMode.Bulk) { - // 计算金额 - it.estimate_amount = formatPriceMul(Number(formatPriceDiv(it.sale_price)) * formatWeightDiv(it.estimate_weight) * it.roll) - } - else if (obj?.sale_mode === EnumSaleMode.Plate) { - // 剪板 - it.estimate_amount = formatPriceMul(Number(formatPriceDiv(it.sale_price)) * formatMeterDiv(it.length)) - } - else { - // 散剪 - it.estimate_amount = formatPriceMul(Number(formatPriceDiv(it.sale_price)) * formatMeterDiv(it.length) / formatMeterDiv(it.length_to_weight_rate)) - } - return it - }) - } - return item - }) - setGoodsList(res) - handleCancel() - updateData({ - product_list: res, - // 计算总金额 - estimate_amount: res.reduce((acc, cur) => acc + cur.product_colors.reduce((a, c) => a + c.estimate_amount, 0), 0), - }) - } - // 批量调整 - const defaultValue = '-1.5' - // 单价调整 - const [value, setValue] = useState(defaultValue) - - const handleInput = (e: CommonEvent & ExtendEvent) => { - const res = e.detail.value - setValue(res) - return res - } - - const errorMsg = useMemo(() => { - let msg = '' - console.log('errorMsg', value) - if (/[a-zA-Z]/.test(value) || Number.isNaN(Number(value))) { - msg = '请填写数字' - } - else if (Number(value) < -3) { - msg = '不能小于-3' - } - else { - msg = '' - } - return msg - }, [value]) - - return ( - - { - goodsList.map((item, index) => { - return ( - - - {formatRemoveHashTag(item.code)}# {item.name} - handleClickBulkEdit(item.id)}> - - - - - { - item.product_colors.map((it, inx) => { - return ( - - - - - - - - {formatRemoveHashTag(it.code)}# {it.name} - x{obj?.sale_mode === EnumSaleMode.Bulk ? it.roll : formatMeterDiv(it.length)}{obj?.sale_mode === 0 ? '条' : '米'} - - - - ¥{formatPriceDiv(it.sale_price, 100, true)}/{obj?.sale_mode === EnumSaleMode.Plate ? 'm' : 'kg'} - { - (obj?.sale_mode === EnumSaleMode.Bulk && it?.sale_price !== it?.standard_price) - ? - ¥{formatPriceDiv(it?.standard_price, 100, true)}/kg - - : null - } - { - (obj?.sale_mode === EnumSaleMode.Plate && it?.sale_price !== it?.standard_price) - ? - ¥{formatPriceDiv(it?.standard_price, 100, true)}/m - - : null - } - { - (obj?.sale_mode === EnumSaleMode.BulkCut && it?.sale_price !== it?.standard_price) - ? - ¥{formatPriceDiv(it?.standard_price, 100, true)}/kg - - : null - } - handleEdit(it.id, item.id)}> - - - - ¥{formatPriceDiv(it.estimate_amount)} - - - - - - ) - }) - } - - ) - }) - } - - - 批量调整 - - - - - {errorMsg && {errorMsg}} - 批量调价是在标准报价基础上调整,增加价格则输入正数,减少则输入负数 - - - - 取消 - - 确认 - - - - - - 单价调整 - - - - - {errorMsg && {errorMsg}} - 调价是在标准报价基础上调整,增加价格则输入正数,减少则输入负数 - - - - 取消 - - 确认 - - - - - - ) -} -const GoodsItemWithMemo = memo(GoodsItem) - -const SubmitOrder = () => { - const addrssRef = useRef([]) - const pages = Taro.getCurrentPages() - const currPage = pages[pages.length - 1] // 获取当前页面 - const { fetchData: addressFetch } = MpPurchaserAddressList() - const router: any = useRouter() - const [infoObj, setInfoObj] = useState({}) - let selectId = -1 - - const isBuyNew = useRef(false) - - // 收货方法,1:自提,2物流 - const [receivingStatus, setReceivingStatus] = useState(null) - // 切换自提或者物流 - const onReceivingStatus = debounce(async(e, value) => { - e.stopPropagation() - if (receivingStatus == value) { - alert.error('不能选择相同的方式') - return false - } - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - // 判断是否有默认地址 - if (value === 2 && addrssRef.current.length > 0 && !currPage.data?.addressObj) { - setInfoObj(val => ({ - ...val, - province_name: addrssRef.current[0]?.province_name, - address_id: addrssRef.current[0]?.id, - city_name: addrssRef.current[0]?.city_name, - address_detail: addrssRef.current[0]?.address_detail, - district_name: addrssRef.current[0]?.district_name, - target_user_name: addrssRef.current[0]?.name, - purchaser_phone: addrssRef.current[0]?.phone, - })) - } - // 没有默认地址提示进去选择地址 - if (value === 2 && !addrssRef.current.length && !infoObj?.province_name) { - alert.error('请选择地址') - } - setReceivingStatus(value) - Taro.hideLoading() - }, 300) - - const { fetchData: infoFetch } = MpSaleOrderPreview() - const [pussName, setPusername] = useState('') - // 获取订单详情 - const getDetail = async() => { - let arr: any[] = [] - console.log('purchaser_name', router.params.purchaser_name) - arr = JSON.parse(decodeURIComponent(router.params.shopping_cart_product_color_list)) - const list: any[] = [] - arr?.forEach((item) => { - list.push({ - shopping_cart_product_color_id: parseInt(item), - sale_price: 0, - }) - }) - const query = { - purchaser_id: Number(router.params.purchaser_id), - sale_mode: Number(router.params.sale_mode), - shopping_cart_product_color_list: list, - } - const res = await infoFetch(query) - setInfoObj({ - ...res.data, - product_list: res.data.product_list.map((item) => { - item.product_colors = item.product_colors.map((it) => { - // 用于存储原始价格,(单价/批量)调整价格 - it.origin_price = it.standard_price - return it - }) - return item - }), - }) - } - - const { fetchData } = SaleOrderPreViewBuyNow() - // 立即购买 - const getOnceDetail = async() => { - const sale_order_product_color_list = JSON.parse(router?.params?.sale_order_product_color_list as string) || [] - if (sale_order_product_color_list?.length > 0) { - const arr: any[] = [] - const sale_mode = Number(router?.params.sale_mode) - sale_order_product_color_list.forEach((item) => { - arr.push({ - length: item?.length || 0, - roll: item.roll, - product_color_id: item.id, - sale_price: sale_mode === EnumSaleMode.Bulk ? item.bulk_price : sale_mode === EnumSaleMode.Plate ? item.length_cut_price : item.weight_cut_price, - }) - }) - const res = await fetchData({ - sale_mode, - sale_order_product_color_list: arr, - purchaser_id: Number(router?.params.purchaser_id), - }) - setInfoObj({ - ...res.data, - product_list: res.data.product_list?.map((item) => { - item.product_colors = item.product_colors.map((it) => { - // 用于存储原始价格,(单价/批量)调整价格 - it.origin_price = it.standard_price - return it - }) - return item - }), - }) - } - } - - // 备注操作 - const [showDesc, setShowDesc] = useState(false) - const getRemark = useCallback(async(e) => { - setShowDesc(false) - setInfoObj(val => ({ ...val, remark: e })) - }, []) - - const handSelect = (obj) => { - if (receivingStatus == 1) { return false } - Taro.navigateTo({ - url: '/pages/addressManager/index?orderId=' + '-100' + `&purchaser_id=${router.params.purchaser_id}`, - }) - } - const { openSubscriptionMessage } = UseSubscriptionMessage() - - // 提交订单 - const { fetchData: postFetch } = MpSaleOrderPost() - const { fetchData: postOnceFetch } = SaleOrderSubmitBuyNow() - const handSure = () => { - if (receivingStatus == 2 && !infoObj.address_id) { - return alert.error('请选择地址') - } - const list: any[] = [] - if (!isBuyNew.current) { - infoObj.product_list.forEach((item) => { - item.product_colors.forEach((it) => { - list.push({ - sale_price: Number(it.sale_price), - shopping_cart_product_color_id: Number(it.id), - }) - }) - }) - } - else { - infoObj.product_list.forEach((item) => { - item.product_colors.forEach((it) => { - list.push({ - length: it.length, - roll: it.roll, - sale_price: Number(it.sale_price), - product_color_id: Number(it.id), - }) - }) - }) - } - const query = { - address_id: Number(infoObj.address_id) ? Number(infoObj.address_id) : 0, - list, - physical_warehouse: infoObj.physical_warehouse, - purchaser_id: Number(router.params.purchaser_id), - remark: infoObj.remark, - sale_mode: infoObj.sale_mode, - shipment_mode: receivingStatus, - } - Taro.showModal({ - content: '确认提交吗?', - confirmText: '确认', - cancelText: '取消', - async success(res) { - if (res.confirm) { - await openSubscriptionMessage({ scenes: 5 }) - Taro.showLoading({ - title: '请稍等...', - mask: true, - }) - let res - if (isBuyNew.current) { - res = await postOnceFetch(query) - } - else { - res = await postFetch(query) - } - if (res?.msg === 'success') { - Taro.showToast({ - title: '成功', - }) - Taro.hideLoading() - Taro.redirectTo({ - url: `/pages/orderDetails/index?id=${res.data.id}`, - }) - } - else { - Taro.hideLoading() - Taro.showToast({ - title: res?.msg, - icon: 'error', - }) - } - } - }, - }) - } - - // 获取地址 - const getAddress = async() => { - const result = await addressFetch({ purchaser_id: router.params.purchaser_id }) - addrssRef.current = result?.data?.list.filter((item) => { return item.is_default }) - } - - useEffect(() => { - setInfoObj(infoObj) - }, [infoObj]) - useDidShow(() => { - // 获取选择的地址 - - setInfoObj(val => ({ - ...val, - sale_mode: Number(router.params.sale_mode), - province_name: currPage.data?.addressObj?.province_name ? currPage.data?.addressObj?.province_name : '', - address_id: currPage.data?.addressObj?.id ? currPage.data?.addressObj?.id : '', - city_name: currPage.data?.addressObj?.city_name ? currPage.data?.addressObj?.city_name : '', - address_detail: currPage.data?.addressObj?.address_detail ? currPage.data?.addressObj?.address_detail : '', - district_name: currPage.data?.addressObj?.district_name ? currPage.data?.addressObj?.district_name : '', - target_user_name: currPage.data?.addressObj?.name ? currPage.data?.addressObj?.name : '', - purchaser_phone: currPage.data?.addressObj?.phone ? currPage.data?.addressObj?.phone : '', - })) - selectId = currPage.data?.addressObj?.id - const obj = currPage?.data?.ids?.filter((item) => { return item == selectId }) - if (currPage?.data?.ids && obj.length === 0) { - setInfoObj(val => ({ - ...val, - sale_mode: Number(router.params.sale_mode), - province_name: '', - address_id: '', - city_name: '', - address_detail: '', - district_name: '', - target_user_name: '', - purchaser_phone: '', - })) - } - if (!currPage.data?.addressObj) { - setReceivingStatus(1) - } - else { - setReceivingStatus(2) - } - }) - - useEffect(() => { - getAddress() - console.log('isBuyNew', router.params.isBuyNew) - setPusername(decodeURIComponent(router.params.purchaser_name)) - isBuyNew.current = JSON.parse(router.params.isBuyNew) - // 判断立即购买 - if (isBuyNew.current) { - getOnceDetail() - } - else { - getDetail() - } - }, []) - - const updateData = (data: Record) => { - setInfoObj(val => ({ - ...val, - ...data, - })) - } - - return ( - - - - handSelect(obj)} - obj={infoObj} - receivingStatus={receivingStatus} - onReceivingStatus={(e, value) => onReceivingStatus(e, value)} - > - - - {pussName} - - - - - - - 合计金额 - - - ¥{formatPriceDiv(infoObj.estimate_amount, 100, true)} - - - `} clickNode={() => setShowDesc(true)}> - {!infoObj.remark ? '暂无' : infoObj.remark} - - - - - - 预估金额: - ¥{formatPriceDiv(infoObj.estimate_amount, 100, true)} - - {infoObj.product_list?.length} 种面料,{infoObj.total_colors} 种颜色,共 {infoObj.sale_mode === 0 ? infoObj.total_number : infoObj.total_number / 100} {infoObj.sale_mode === 0 ? '条' : 'm'} - - 提交订单 - - - setShowDesc(false)}> - { - showDesc && getRemark(e)} defaultValue={infoObj.remark} /> - } - - - ) -} -export default SubmitOrder diff --git a/src/pages/takeDelivery/components/DeliveryStatusList/index.module.scss b/src/pages/takeDelivery/components/DeliveryStatusList/index.module.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/takeDelivery/components/DeliveryStatusList/index.tsx b/src/pages/takeDelivery/components/DeliveryStatusList/index.tsx deleted file mode 100644 index 9784613..0000000 --- a/src/pages/takeDelivery/components/DeliveryStatusList/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { FC, memo, useCallback, useEffect, useState } from 'react' -import SegmentedControl from '@/components/SegmentedControl' -import { EnumTakeGoodsOrderStatus } from '@/api/index' - -interface PropsType { - onChangeStatus?: (data: { id: number; name: string }) => void -} - -const DeliveryStatusList = (props: PropsType) => { - const { onChangeStatus } = props - const { fetchData } = EnumTakeGoodsOrderStatus() - const [statusList, setStatusList] = useState([ - // { - // id: -1, - // name: '全部', - // }, - ]) - const [defaultId, setDefaultId] = useState(0) - // 请求 - const getDeliveryStatusList = async() => { - const res = await fetchData() - console.log(res.data.list) - const list = res.data.list.filter((item) => { - return item.id === 0 || item.id === 1 // 提货中 已收货 - }) - setStatusList(list) - setDefaultId(list[0].id) - } - - useEffect(() => { - getDeliveryStatusList() - }, []) - - // //状态改变 - const changeStatus = useCallback( - (data: { id: number; name: string }) => { - onChangeStatus && onChangeStatus({ id: data.id, name: data.name }) - }, - [onChangeStatus], - ) - return -} -export default memo(DeliveryStatusList) diff --git a/src/pages/takeDelivery/components/Filter/index.module.scss b/src/pages/takeDelivery/components/Filter/index.module.scss deleted file mode 100644 index b42bac0..0000000 --- a/src/pages/takeDelivery/components/Filter/index.module.scss +++ /dev/null @@ -1,55 +0,0 @@ -.filterItem { - margin: 24px 48px; - &--title { - font-size: 28px; - font-weight: 550; - line-height: 1.5; - } - &--wrapper { - margin-top: 24px; - display: grid; - grid-gap: 16px 16px; - } -} -.filter { - &--time { - grid-template-columns: 1fr 1fr 1fr 1fr; - } - &--inputBar { - } - &--type { - grid-template-columns: 1fr 1fr; - } -} - -.filterTimeButton { - grid-column-start: span 2; -} -.selected { - background-color: #eaf2ff; -} - -.filterController { - margin-top: 60px; - width: 100%; - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-around; - padding-bottom: constant(safe-area-inset-bottom); - padding-bottom: env(safe-area-inset-bottom); - - .btn { - width: 40%; - &:hover { - filter: blur(0.7); - } - } - - .rest_btn { - font-size: 28px; - } - .verify_btn { - font-size: 28px; - } -} diff --git a/src/pages/takeDelivery/components/Filter/index.tsx b/src/pages/takeDelivery/components/Filter/index.tsx deleted file mode 100644 index a724a7b..0000000 --- a/src/pages/takeDelivery/components/Filter/index.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import { View } from '@tarojs/components' -import classnames from 'classnames' -import React, { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import dayjs from 'dayjs' -import styles from './index.module.scss' -import NormalButton from '@/components/normalButton' -import Search from '@/components/search' -import IconFont from '@/components/iconfont/iconfont' -import { EnumTakeGoodsOrderTypeList } from '@/api/index' -import { getFilterData } from '@/common/util' -import FilterButton from '@/components/filterButton' - -interface SearchFilter { - take_goods_order_type?: number - timeKey?: string -} - -export interface SearchField extends Omit { - date_min?: string - date_max?: string -} - -interface DeliveryPropsType { - onSearchTime?: () => void - onConfirm?: (searchField: SearchField, timeKey?: Pick['timeKey']) => void - onCancal?: () => void - onReset?: () => void -} - -export const filterTimeOptions = { - 0: { - name: '不限', - date_min: undefined, - date_max: undefined, - }, - 1: { - name: '今天', - date_min: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(1, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 2: { - name: '昨日', - date_min: `${dayjs(new Date()).add(-1, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 3: { - name: '近7日', - date_min: `${dayjs(new Date()).add(-7, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 4: { - name: '近30日', - date_min: `${dayjs(new Date()).add(-30, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, - 5: { - name: '近90日', - date_min: `${dayjs(new Date()).add(-90, 'day').format('YYYY-MM-DD')} 00:00:00`, - date_max: `${dayjs(new Date()).add(0, 'day').format('YYYY-MM-DD')} 00:00:00`, - }, -} as const - -const DeliveryFilter = (props: DeliveryPropsType) => { - const { onSearchTime, onConfirm, onCancal, onReset } = props - - const { fetchData, state } = EnumTakeGoodsOrderTypeList() - - const [searchFilter, setSearchFilter] = useState({ - take_goods_order_type: undefined, - timeKey: '0', - }) - const handleSelectedType = (type: string | number) => { - console.log('type==>', type) - if (typeof type === 'string' && type === 'default') { - setSearchFilter(e => ({ ...e, take_goods_order_type: undefined })) - } - else { - setSearchFilter(e => ({ ...e, take_goods_order_type: type as number })) - } - } - - const typeList = useMemo<{ id: number; name: string }[]>(() => { - return state.data.list - }, [state]) - - const getEnumData = async() => { - await fetchData() - } - useEffect(() => { - if (!typeList?.length) { - getEnumData() - console.log('getEnumData') - } - }, [typeList]) - const [customTime, setCustomTime] = useState({ - date_min: undefined, - date_max: undefined, - }) - - const handleSelectedTime = (timeOptionId) => { - setSearchFilter(e => ({ ...e, timeKey: timeOptionId })) - // 不是设置了自定义时间 - if (timeOptionId !== '6') { - setCustomTime({ - date_min: filterTimeOptions[timeOptionId].date_min, - date_max: filterTimeOptions[timeOptionId].date_max, - }) - return - } - onSearchTime?.() - } - - const handleReset = () => { - setSearchFilter({ take_goods_order_type: undefined, timeKey: '0' }) - onReset?.() - } - const handleConfirm = () => { - const changedField = { - take_goods_order_type: searchFilter.take_goods_order_type, - date_min: customTime.date_min, - date_max: customTime.date_max, - } - console.log('changedField==>', changedField) - onConfirm?.(changedField, searchFilter.timeKey) - } - - return ( - <> - - 提货类型 - - handleSelectedType('default')}> - 不限 - - {!!typeList?.length - && typeList?.map((item, key) => { - return ( - handleSelectedType(item?.id)}> - {item.name} - - // handleSelectedType(item?.id)}> - // {item.name} - // - ) - })} - - - - - 查询日期 - - {Object.entries(filterTimeOptions).map(([key, value], index) => { - return ( - handleSelectedTime(key)}> - {value.name} - - ) - })} - handleSelectedTime('6')}> - 自定义时间 - - - - - - 重置 - - - 确认 - - - - ) -} - -export default memo(DeliveryFilter) diff --git a/src/pages/takeDelivery/components/ItemList/index.module.scss b/src/pages/takeDelivery/components/ItemList/index.module.scss deleted file mode 100644 index 76db77d..0000000 --- a/src/pages/takeDelivery/components/ItemList/index.module.scss +++ /dev/null @@ -1,66 +0,0 @@ -.layoutBlock{ - margin: 20px; - padding: 24px; -} -.topBar { - font-size: 28px; - &__orderNo { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - color: $color_font_one; - .orderNo{ - font-weight: bold; - } - } - &__orderType { - color: rgba($color: #000000, $alpha: 0.6); - font-weight: bold; - } - &__orderStatus { - font-weight: bold; - &--finished{ - color: $color_font_three; - } - &--takingGoods{ - color: $color_main; - } - } -} -.content { - &__row { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - margin: 16px 0; - font-size: 28px; - color: rgba($color: #000000, $alpha: 0.4); - &__left { - min-width: 140px; - } - &__right { - @include common_ellipsis(2); - } - } -} -.bottomBar { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-items: center; - margin-top: 10px; - &__button { - margin: 0 24px; - font-size: 28px; - padding: 0 26px; - } - &__button:last-child { - margin: 0; - } -} -.bord { - color: $color_font_one; -} -.tag{ - margin: 0 16px; -} diff --git a/src/pages/takeDelivery/components/ItemList/index.tsx b/src/pages/takeDelivery/components/ItemList/index.tsx deleted file mode 100644 index a434291..0000000 --- a/src/pages/takeDelivery/components/ItemList/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -/* eslint-disable @typescript-eslint/indent */ -import { Text, View } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { FC } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import Divider from '@/components/Divider' -import Tag from '@/components/tag' -import NormalButton from '@/components/normalButton' -import { EnumSaleMode } from '@/common/Enumerate' -import { formatDateTime, formatMeterDiv } from '@/common/format' -import { goLink } from '@/common/common' -import { TakeGoodsOrderAudit } from '@/api/index' -import SaleModeTag from '@/components/saleModeTag' - -interface PropsType { - itemData: Record - onSuccess?: Function -} - -const ItemList: FC = (props) => { - const { itemData, onSuccess } = props - console.log('itemData', itemData) - // 查看详情 - const handleDetail = (e) => { - e?.stopPropagation() - goLink('/pages/takeDeliveryDetail/index', { - id: itemData.id, - }) - } - - const { fetchData } = TakeGoodsOrderAudit() - - // 确认审核 - const handleAudit = (id: number) => { - Taro.showModal({ - content: '确认要提货吗?', - confirmColor: '#337FFF', - success: async(res) => { - if (res.confirm) { - const res = await fetchData({ take_goods_order_id: [id] }) - if (res.success) { - Taro.showToast({ title: '提货成功', icon: 'success' }) - onSuccess?.() - } - else { - Taro.showToast({ title: '操作失败', icon: 'error' }) - } - } - }, - }) - } - - return ( - - - - 单号:{itemData?.take_goods_order_no} - {itemData?.take_goods_status === 0 && ( - 提货中 - )} - {itemData?.take_goods_status === 1 && 已收货} - - {itemData?.take_goods_order_type_name} - - - - - 货品信息: - - - {itemData.product_count}种面料,{itemData.product_color_count}种颜色,共 - {itemData?.sale_mode === EnumSaleMode.Bulk ? `${itemData?.take_roll}条` : `${formatMeterDiv(itemData?.take_meters)}米`} - - - - 供应信息: - {itemData?.supplier_name || '空'} - - - 创建时间: - {formatDateTime(itemData?.take_goods_order_create_time) || '空'} - - - - {itemData?.take_goods_status !== 1 - ? - 查看详情 - - : null} - {itemData?.take_goods_order_status === 0 && ( - handleAudit(itemData?.id)}> - 确认审核 - - )} - - - ) -} -export default ItemList diff --git a/src/pages/takeDelivery/components/TakeGoodsItem/index.module.scss b/src/pages/takeDelivery/components/TakeGoodsItem/index.module.scss deleted file mode 100644 index 20539a1..0000000 --- a/src/pages/takeDelivery/components/TakeGoodsItem/index.module.scss +++ /dev/null @@ -1,79 +0,0 @@ -.layout { - padding: 24px 32px; - background-color: #ffffff; - .title_bar { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - font-size: 28px; - margin-bottom: 24px; - .title { - display: flex; - font-weight: 500; - color: #3f3f3f; - } - .status { - color: #0d7cff; - font-weight: 500; - } - } - .order_list { - max-height: 300px; - overflow: hidden; - } - .showAll { - max-height: unset; - overflow: unset; - } - .more { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: center; - font-size: 26px; - color: #d2d2d2; - height: 40px; - } - .item { - display: flex; - justify-content: space-between; - align-items: center; - background-color: #f6f7fb; - padding: 30px 24px; - margin-bottom: 16px; - border-radius: 16px; - .item_left { - flex: 1 1 auto; - .detail_row { - display: flex; - flex-flow: row; - align-items: center; - justify-content: space-between; - font-size: 26px; - color: #727374; - margin-bottom: 16px; - &:last-child { - margin-bottom: 0; - } - .order_no { - color: #353536; - } - } - } - .item_right { - margin-left: 10px; - } - } - .button { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: space-between; - .total { - color: #424242; - font-size: 26px; - } - .takeout { - } - } -} diff --git a/src/pages/takeDelivery/components/TakeGoodsItem/index.tsx b/src/pages/takeDelivery/components/TakeGoodsItem/index.tsx deleted file mode 100644 index c31adf9..0000000 --- a/src/pages/takeDelivery/components/TakeGoodsItem/index.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { Text, View } from '@tarojs/components' -import classNames from 'classnames' -import { useState } from 'react' -import styles from './index.module.scss' -import LayoutBlock from '@/components/layoutBlock' -import IconFont from '@/components/iconfont/iconfont' -import SaleModeTag from '@/components/saleModeTag' -import { EnumSaleMode } from '@/common/Enumerate' -import NormalButton from '@/components/normalButton' -import { goLink } from '@/common/common' - -interface PropsType { - -} -const TakeGoodsItem = (props: PropsType) => { - const handleClickAllTake = () => { - - } - - const handleClickItem = (id) => { - goLink('/pages/takeDeliveryDetail/index', { - id, - }) - } - - const [showMore, setShowMore] = useState(false) - const [dataList, setDataList] = useState([ - { - id: 1, - order_no: 'XS-LY-2208220092', - sale_mode: EnumSaleMode.Bulk, - color: 2, - fabric: 1, - total: 5, - }, - { - id: 2, - order_no: 'XS-LY-2208220092', - sale_mode: EnumSaleMode.Bulk, - color: 2, - fabric: 1, - total: 5, - }, - { - id: 3, - order_no: 'XS-LY-2208220092', - sale_mode: EnumSaleMode.Bulk, - color: 2, - fabric: 1, - total: 5, - }, - { - id: 4, - order_no: 'XS-LY-2208220092', - sale_mode: EnumSaleMode.Bulk, - color: 2, - fabric: 1, - total: 5, - }, - { - id: 5, - order_no: 'XS-LY-2208220092', - sale_mode: EnumSaleMode.Bulk, - color: 2, - fabric: 1, - total: 5, - }, - ]) - - const handleChangeMore = () => { - setShowMore(prev => !prev) - } - - return - - - - 永川纺织有限公司 - - 采购提货 - - - { - dataList.map((item) => { - return handleClickItem(1)}> - - - 单号编号: - {item.order_no} - - - 货品信息: - {item.fabric}种面料,{item.color}种颜色,共{item.total}条 - - - - - }) - } - - {(dataList.length > 2) && - {showMore ? '收起详情' : '点击查看详情'} - { - showMore ? : - } - } - - 2种面料,4种颜色,共5条 - 确认提货 - - -} -export default TakeGoodsItem diff --git a/src/pages/takeDelivery/components/remark/index.module.scss b/src/pages/takeDelivery/components/remark/index.module.scss deleted file mode 100644 index a1320be..0000000 --- a/src/pages/takeDelivery/components/remark/index.module.scss +++ /dev/null @@ -1,48 +0,0 @@ -.order_popup { - display: flex; - flex-direction: column; - align-items: center; - padding: 20px 0; - .order_popup_title { - color: $font_size_big; - font-weight: 700; - color: #000000; - padding-bottom: 20px; - } - .order_popup_input { - width: 100%; - padding: 0 25px; - box-sizing: border-box; - margin-top: 43px; - position: relative; - .descDataNum { - position: absolute; - right: 40px; - bottom: 10px; - height: 39px; - font-size: $font_size_medium; - color: $color_font_two; - } - textarea { - background-color: white; - border-radius: 10px; - width: 100%; - height: 313px; - padding: 20px; - padding-bottom: 50px; - box-sizing: border-box; - font-size: $font_size; - border: 2px solid #e6e6e6; - } - } - .order_save_address { - height: 82px; - background: #007aff; - border-radius: 40px; - width: 668px; - text-align: center; - line-height: 82px; - color: #fff; - margin-top: 60px; - } -} diff --git a/src/pages/takeDelivery/components/remark/index.tsx b/src/pages/takeDelivery/components/remark/index.tsx deleted file mode 100644 index c4a1d9d..0000000 --- a/src/pages/takeDelivery/components/remark/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { Textarea, View } from '@tarojs/components' -import { useCallback, useEffect, useState } from 'react' -import styles from './index.module.scss' -import Popup from '@/components/popup' - -interface Param { - onBlur?: (val: any) => void - onSave?: (val: string) => void - defaultValue?: string -} -const Remark = ({ onBlur, onSave, defaultValue = '' }: Param) => { - const [descData, setDescData] = useState({ - number: 0, - value: '', - count: 200, - }) - - const getDesc = (value) => { - let res = value - if (value.length > descData.count) { - res = value.slice(0, descData.count) - } - setDescData({ ...descData, number: res.length, value: res }) - } - - const setSave = () => { - onSave?.(descData.value) - } - useEffect(() => { - getDesc(defaultValue) - }, [defaultValue]) - return ( - - 编辑备注 - - - {descData.number}/{descData.count} - - setSave()}>保存 - - ) -} - -export default Remark diff --git a/src/pages/takeDelivery/index.config.ts b/src/pages/takeDelivery/index.config.ts deleted file mode 100644 index 5a2ecc1..0000000 --- a/src/pages/takeDelivery/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '提货列表', -} diff --git a/src/pages/takeDelivery/index.module.scss b/src/pages/takeDelivery/index.module.scss deleted file mode 100644 index 21414fd..0000000 --- a/src/pages/takeDelivery/index.module.scss +++ /dev/null @@ -1,52 +0,0 @@ -page { - background: #f7f7f7; - height: 100%; - display: flex; - flex-flow: column nowrap; -} - -.delivery { - position: relative; - display: flex; - flex-flow: column nowrap; - overflow: hidden; - .searchBox { - display: flex; - align-items: center; - background: #ffffff; - padding: 8px 24px; - flex: none; - } - - .listBox { - flex: 1 1 auto; - background-color: #f7f7f7; - height: 100%; - overflow: hidden; - // .product_class { - // width: 100%; - // position: absolute; - // top: 0; - // z-index: 999; - // } - &--total { - display: block; - margin-top: 20px; - padding: 0 24px; - font-size: 24px; - color: #9d9d9d; - } - } -} -.scanHandler { - width: 40px; - height: 40px; -} - -.icon__filter { - padding: 0 20px; - padding-right: 10px; -} -.active { - color: #337fff; -} diff --git a/src/pages/takeDelivery/index.tsx b/src/pages/takeDelivery/index.tsx deleted file mode 100644 index 4e33405..0000000 --- a/src/pages/takeDelivery/index.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import type { FC } from 'react' -import { memo, useCallback, useEffect, useMemo, useRef, useState, useTransition } from 'react' -import classNames from 'classnames' -import ProductClass from '../index/components/productClass' -import styles from './index.module.scss' -import ItemList from './components/ItemList' -import DeliveryStatusList from './components/DeliveryStatusList' -import type { SearchField } from './components/Filter' -import DeliveryFilter from './components/Filter' -import TakeGoodsItem from './components/TakeGoodsItem' -import Search from '@/components/search' -import { TakeGoodsOrderList } from '@/api/index' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import IconText from '@/components/iconText' -import IconFont from '@/components/iconfont/iconfont' -import Popup from '@/components/popup' -import TimePickerPopup from '@/components/timePickerPopup' -import Empty from '@/components/empty' -import { LIST_EMPTY_IMAGE } from '@/common/constant' -import LoadingCard from '@/components/loadingCard' - -interface SearchData { - take_goods_order_no?: string // 提货单号 - take_goods_status?: number | string // 提货状态 - date_min?: string // 开始时间 - date_max?: string // 结束时间 - take_goods_order_type?: number // 提货类型 - page: number - size: number -} - -const defaultSearchFields = { - take_goods_status: 0, // 待提货 - page: 1, - size: 10, -} - -// 提货列表 -const Delivery: FC = () => { - const [search, setSearch] = useState(defaultSearchFields) - const [takeDeliveryOrderList, setDeliveryOrderList] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const isFirst = useRef(true) - - const { fetchData: FetchDeliveryOrderList, state: orderState } = TakeGoodsOrderList() - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: takeDeliveryOrderList.list, total: takeDeliveryOrderList.total, status: orderState.loading! }) - }, [takeDeliveryOrderList, orderState]) - - // 输入搜索关键字 - const getSearchData = useCallback((searchValue: string) => { - setSearch(prevProps => ({ ...prevProps, take_goods_order_no: searchValue })) - console.log('searchValue==>', searchValue) - }, []) - - // 上拉加载数据 - const pageNum = useRef({ size: search.size, page: search.page }) - - const getScrollToLower = useCallback(() => { - if (takeDeliveryOrderList.list.length < takeDeliveryOrderList.total) { - pageNum.current.page++ - const size = pageNum.current.size * pageNum.current.page - setSearch(e => ({ ...e, size })) - } - }, [takeDeliveryOrderList]) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - - const getRefresherRefresh = async() => { - pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearch(val => ({ ...val, size: 10 })) - } - // 请求数据 - const getData = async() => { - const res = await FetchDeliveryOrderList(getFilterData(search)) - - setDeliveryOrderList(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(() => false) - } - - const [currentStatus, setCurrentStatus] = useState('提货中') - - const handleChangeStatus = ({ id: statusId, name: statusName }) => { - setCurrentStatus(statusName) - setSearch(e => ({ ...e, take_goods_status: statusId, size: 10, page: 1 })) - } - - const handleAuditSuccess = () => { - getData() - } - - const [showFilter, setShowFilter] = useState(false) - // 筛选列表 - const onShowFilter = () => { - setShowFilter(true) - } - // 点击关闭筛选列表框 - const handlePopupClose = () => { - setShowFilter(false) - } - - // 展示时间筛选 - const [showTime, setShowTime] = useState(false) - - // 点击关闭时间筛选 - const handClose = () => { - setShowTime(false) - } - const [start, setStart] = useState(new Date().toLocaleDateString()) - const [end, setEnd] = useState('') - // 选择时间 - const handTime = (event) => { - console.log(event?.value, 'event?.value?.start') - setStart(event?.value?.start) - setEnd(event?.value?.end) - setShowTime(false) - console.log(search, 8888) - } - // 显示时间选择器 - const handleSearchTime = () => { - setShowTime(true) - } - // 筛选框点击确认 - const handleConfirm = (changedFields: SearchField, timeKey) => { - console.log('changedFields==>changedFields', changedFields) - // 自定义时间 - if (timeKey === '6') { - setSearch(prevProps => ({ ...prevProps, ...changedFields, date_min: start, date_max: end })) - } - else { - setSearch(prevProps => ({ ...prevProps, ...changedFields })) - } - handlePopupClose() - } - // 筛选框点击重置 - const handleReset = () => { - setSearch(defaultSearchFields) - handlePopupClose() - } - - const scanIcon = () => { - // 扫描 - const handleScan = () => { - Taro.scanCode({ - success(res) { - setSearch(e => ({ ...e, take_goods_order_no: res.result })) - }, - fail(res) { - console.log(res) - }, - }) - } - return ( - - - - ) - } - useEffect(() => { - console.log('useEffect ===> search', search) - // 已经不是第一次加载该页面了 - if (!isFirst.current) { - getData() - } - }, [search]) - - useDidShow(() => { - getData() - isFirst.current = false - }) - - const isActive = useMemo(() => { - console.log('search', search) - if (search.take_goods_order_type != null || search.date_max != null || search.date_min != null) { - return true - } - else { - return false - } - }, [search]) - - const [openClass, setOpenClass] = useState(false) - - const [classId, setClassId] = useState(1) - - const getSelectClass = (id) => { - // selectClass?.(id) - setClassId(() => id) - } - const [classList, setClassList] = useState([ - { - id: 1, - name: '全部98', - }, - { - id: 2, - name: '合生82', - }, - { - id: 3, - name: '万丰园81', - }, - { - id: 4, - name: '永川55', - }, - { - id: 5, - name: '永川55', - }, - { - id: 6, - name: '永川55', - }, - { - id: 7, - name: '永川55', - }, - ]) - - return ( - - - - - - - - - {/* 状态栏 */} - - - { - search.take_goods_status === 0 && setOpenClass(val)} onSelect={getSelectClass} defaultSelectId={classId} /> - } - {/* */} - } - statusMore={statusMore} - selfonScrollToLower={getScrollToLower} - refresherEnabled - refresherTriggered={refresherTriggeredStatus} - selfOnRefresherRefresh={getRefresherRefresh} - > - { - search.take_goods_status === 1 - && - {currentStatus}共 {takeDeliveryOrderList.total} 单 - - } - { - search.take_goods_status === 1 - ? takeDeliveryOrderList.list.map((item) => { - return - }) - : takeDeliveryOrderList.list.map((item) => { - return - }) - } - {takeDeliveryOrderList.list.map((item) => { - if (search.take_goods_status === 1) { - return - } - else { - return - } - })} - - - - - - - handTime(e)}> - - ) -} - -export default Delivery diff --git a/src/pages/takeDeliveryDetail/index.config.ts b/src/pages/takeDeliveryDetail/index.config.ts deleted file mode 100644 index 381c573..0000000 --- a/src/pages/takeDeliveryDetail/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '提货详情', -} diff --git a/src/pages/takeDeliveryDetail/index.module.scss b/src/pages/takeDeliveryDetail/index.module.scss deleted file mode 100644 index b71fdbf..0000000 --- a/src/pages/takeDeliveryDetail/index.module.scss +++ /dev/null @@ -1,116 +0,0 @@ -page { - display: flex; - flex-flow: column nowrap; - height: 100%; -} -.deliveryDetail { - display: flex; - flex-flow: column nowrap; - height: 100%; - .content { - padding-top: 24px; - flex: 1 1 auto; - overflow: scroll; - .detailTop { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - font-size: 28px; - } - .topBar__orderType { - color: #6e6e6e; - font-size: 28px; - font-weight: 550; - } - } - .bottomBar { - flex: none; - margin: 0 24px; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - padding-top: 24px; - padding-bottom: calc(20px + constant(safe-area-inset-bottom)); - padding-bottom: calc(20px + env(safe-area-inset-bottom)); - } -} -.detailInfo { - .detailInfoItem { - &--title { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - font-size: 28px; - font-weight: bold; - color: #424242; - padding: 10px 0; - } - &--detail { - display: flex; - flex-flow: column nowrap; - &--row { - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 0; - font-size: 28px; - color: #6e6e6e; - } - &--name { - flex: 2; - } - &--count { - flex: 1; - } - &--weight { - flex: 1; - text-align: right; - } - } - } -} -.orderInfoTop { - font-size: 28px; - color: $color_font_one; - font-weight: 550; -} - -.orderNo { - font-size: 28px; - color: #424242; - font-weight: 550; -} -.status { - font-size: 28px; - &--takingGoods { - font-weight: bold; - color: $color_main; - } - &--finished { - font-weight: bold; - color: $color_font_three; - } -} - -.divider { - margin: 20px 0 10px 0; -} -.total { - margin-top: 24px; - padding: 15px 24px; - font-size: 24px; - line-height: 30px; - font-weight: 600; - color: #f79b31; - background: #fef9f4; - border-radius: 8px; - display: flex; - .totalContent { - flex: 1 1 auto; - display: inline-block; - text-align: right; - } -} diff --git a/src/pages/takeDeliveryDetail/index.tsx b/src/pages/takeDeliveryDetail/index.tsx deleted file mode 100644 index ae934c7..0000000 --- a/src/pages/takeDeliveryDetail/index.tsx +++ /dev/null @@ -1,246 +0,0 @@ -import { Text, View } from '@tarojs/components' -import Taro, { useRouter } from '@tarojs/taro' -import type { FC } from 'react' -import { useCallback, useEffect, useMemo, useState } from 'react' -import Remark from '../takeDelivery/components/remark' -import styles from './index.module.scss' -import { TakeGoodsOrder, TakeGoodsOrderAudit, TakeGoodsOrderRefuse } from '@/api' -import { formatDateTime, formatMeterDiv, formatWeightDiv } from '@/common/format' -import Cell from '@/components/cell' -import Divider from '@/components/Divider' -import LayoutBlock from '@/components/layoutBlock' -import NormalButton from '@/components/normalButton' -import SaleModeTag from '@/components/saleModeTag' -import UploadImage from '@/components/uploadImage' -import { alert } from '@/common/common' -import Popup from '@/components/popup' -import { EnumSaleMode } from '@/common/Enumerate' - -const TakeDeliveryDetail: FC = () => { - const router = useRouter() - - const { fetchData } = TakeGoodsOrder() - - const [detailInfo, setDetailInfo] = useState>({}) - - const getData = async() => { - const { id } = router.params - const res = await fetchData({ - id, - }) - console.log('res==>', res.data) - setDetailInfo(res.data) - // 动态设置标题 - Taro.setNavigationBarTitle({ - title: res.data.take_goods_order_type_name, - }) - } - - useEffect(() => { - getData() - }, []) - - const groups = useMemo(() => { - const temp: Record = {} - detailInfo?.dyelot_number_list?.forEach((weightItem) => { - const name = `${weightItem.product_code}# ${weightItem.product_name}` - temp.hasOwnProperty(name) ? temp[name].push(weightItem) : temp[name] = [weightItem] - }) - return temp - }, [detailInfo]) - - const formatUnit = (saleMode: EnumSaleMode) => { - return saleMode === EnumSaleMode.Bulk ? '条' : '米' - } - - const { fetchData: FetchAudit } = TakeGoodsOrderAudit() - - const DetailItem = useMemo(() => { - const element = Object.entries(groups).map(([name, group], index) => { - let total = 0 - if (group[0]?.sale_mode === EnumSaleMode.Bulk) { - total = group.reduce((acc, cur) => acc + cur.sale_roll, 0) - } - else { - total = group.reduce((acc, cur) => acc + formatMeterDiv(cur.sale_length), 0) - } - return ( - - - - - - - {name} - - - - 共 {total} {formatUnit(group[0]?.sale_mode)} - - - { - group?.map((weightItem, key) => { - return - - {weightItem.product_color_code}# {weightItem.product_color_name} - - - x{weightItem?.sale_mode === 0 ? `${weightItem.sale_roll} 条` : `${formatMeterDiv(weightItem?.sale_length || 0)} 米`} - - {formatWeightDiv(weightItem.weight)}kg - - }) - } - - - - ) - }) - return <>{element} - }, [detailInfo]) - - const [readyToUploadList, setReadyToUploadList] = useState([]) - - const handleUploadChange = (imageList: string[]) => { - console.log('imageList===>', imageList) - setReadyToUploadList(prev => [...prev, ...imageList]) - } - - const { fetchData: refuseOrder } = TakeGoodsOrderRefuse() - - const [showRemarkModal, setShowRemarkModal] = useState(false) - - const handleRefuseOrder = async(remark: string) => { - const res = await refuseOrder({ - id: Number(router.params.id), - remark, - }) - if (res.success) { - alert.success('拒收成功') - getData() - } - else { - alert.error('该操作失败') - } - } - - const onRemarkSave = async(remark: string) => { - handleRefuseOrder(remark) - } - - // 拒收 - const handleRefuse = useCallback(() => { - setShowRemarkModal(true) - }, []) - - // 审核 - const handleAudit = useCallback(() => { - Taro.showModal({ - confirmColor: '#337FFF', - title: '确定要提货?', - async success(res) { - if (res.confirm) { - const res = await FetchAudit({ take_goods_order_id: [Number(router.params.id)] }) - if (res.success) { - alert.success('提货成功') - getData() - } - else { - alert.error('请求失败') - } - } - }, - }) - }, [readyToUploadList]) - - // 底部按钮栏 - const BottomBar = useMemo(() => { - if (detailInfo?.take_goods_order_type !== 0) { - // 采购提货 - return ( - - - 确认提货 - - - ) - } - else { - // 退货提货 - return ( - - - 拒收 - - - 确认提货 - - - ) - } - }, [handleRefuse, handleAudit]) - return ( - - - - - 提货单号:{detailInfo?.take_order_no} - {detailInfo?.take_goods_status === 0 - ? ( - {detailInfo?.take_goods_status_name} - ) - : ( - {detailInfo?.take_goods_status_name} - )} - - {detailInfo?.take_goods_order_type === 0 && 供应信息:{detailInfo?.supplier_name}} - {DetailItem} - - 汇总: - - 共{detailInfo?.product_count || 0}种面料,{detailInfo?.product_color_count || 0}种颜色,共 - {detailInfo?.sale_mode === 0 ? `${detailInfo?.take_roll}条` : `${formatMeterDiv(detailInfo?.take_meters).toLocaleString()}米`} - ,重量{formatWeightDiv(detailInfo?.total_take_weight).toLocaleString()}kg - - - - {detailInfo?.take_goods_order_type !== 0 && ( - <> - - 退货布匹附件 - - - - - 退货物流附件 - - - - - )} - - - 订单信息 - - - - - - - - {detailInfo?.take_goods_order_type !== 0 && ( - - 备注信息 - - {detailInfo?.remark} - - )} - - {detailInfo?.take_goods_status === 0 && BottomBar} - setShowRemarkModal(false)}> - - - - ) -} -export default TakeDeliveryDetail diff --git a/src/pages/user/index.config.ts b/src/pages/user/index.config.ts deleted file mode 100644 index 5531ea2..0000000 --- a/src/pages/user/index.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '我的', - navigationBarTextStyle: 'white', - navigationBarBackgroundColor: '#4581FF', - backgroundColor: '#4581FF', - backgroundColorTop: '#4581FF', - enablePullDownRefresh: true, -}) diff --git a/src/pages/user/index.module.scss b/src/pages/user/index.module.scss deleted file mode 100644 index 77861cc..0000000 --- a/src/pages/user/index.module.scss +++ /dev/null @@ -1,113 +0,0 @@ -page { - position: relative; -} -.main { - background: linear-gradient(to bottom, $color_main 25%, $color_bg_one 42%); - padding-bottom: 0; - box-sizing: border-box; - overflow-y: scroll; - height: 100%; -} -.userAvatar { - position: relative; - width: 122px; - height: 122px; - border-radius: 50%; - background-color: #fff; - overflow: hidden; - &-text { - display: block; - width: 100%; - position: absolute; - left: 0; - bottom: 0; - height: 31px; - color: #fff; - text-align: center; - line-height: 31px; - font-size: 20px; - background-color: rgba($color: #000000, $alpha: 0.33); - } -} -.topBar { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; - .left { - } - .middle { - max-width: 40%; - padding: 0 40px; - flex: 1 1 auto; - } - .right { - } -} -.bottomBar { - display: flex; - flex-flow: row nowrap; - align-items: center; - border-radius: 16px; - background-color: #f6f6f6; - margin-top: 20px; - padding: 10px 15px; -} -.username { - display: block; - font-size: 36px; - font-weight: 600; - @include common_ellipsis(); -} -.userno { - display: block; - font-size: 28px; - color: $color_font_two; - @include common_ellipsis(); -} -.flexBox { - min-width: 80%; - justify-content: space-between; - display: flex; - align-items: center; - .userTitle { - color: #626262; - font-weight: 600; - font-size: $font_size; - margin-left: 20px; - } - .receiveBox { - border: 2px solid #2596fe; - width: 108px; - text-align: center; - line-height: 32px; - height: 32px; - border-radius: 10px; - color: #1890ff; - font-size: 22px; - } -} - -.grid-container { - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - grid-column-gap: 32px; - grid-row-gap: 32px; -} -.layoutTabBar { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - align-items: center; -} -.layoutTitle { - padding-left: 16px; - font-size: 32px; - font-weight: 600; - color: $color_font_one; - margin-bottom: 20px; -} -.layoutDescription { - font-size: 24px; - color: $color_main; -} diff --git a/src/pages/user/index.tsx b/src/pages/user/index.tsx deleted file mode 100644 index 10a2e53..0000000 --- a/src/pages/user/index.tsx +++ /dev/null @@ -1,312 +0,0 @@ -import { Image, Text, View } from '@tarojs/components' -import { useDidShow } from '@tarojs/taro' -import type { FC } from 'react' -import { useEffect, useState } from 'react' -import { useDispatch } from 'react-redux' -import type { Dispatch } from 'redux' -import defaultAvatar from '../../styles/image/defaultAvatar.png' -import styles from './index.module.scss' -import { checkKey, goLink } from '@/common/common' -import type { TabBarAction } from '@/reducers/tabBar' -import { TabBarIndex } from '@/reducers/tabBar' -import { TabBarType } from '@/constants/tabbar' -import NormalButton from '@/components/normalButton' -import Tag from '@/components/tag' -import Divider from '@/components/Divider' -import LayoutBlock from '@/components/layoutBlock' -import IconCard from '@/components/iconCard' -import type { IconNames } from '@/components/iconfont/iconfont' -import useUserInfo from '@/use/useUserInfo' -import { useSelector } from '@/reducers/hooks' -import { BASE_URL } from '@/common/constant' -import useGetCode from '@/use/useGetCode' -import { UseSubscriptionMessage, useCheckTabBarSelectStatus } from '@/use/useCommon' - -// 用户头像 -const UserAvatar = ({ src }: { src?: string }) => { - return ( - - - {src ? null : 编辑} - - ) -} -interface IconCardType { - id: number - jurisdiction?: string // 权限key值 - iconName: IconNames - name: string - path: string -} - -const feature: IconCardType[] = [ - { - id: 1, - iconName: 'icon-pandiansaoma', - name: '盘点扫码', - path: '', - jurisdiction: 'counting_scanning_code_page', - }, - { - id: 2, - iconName: 'icon-fahuoliebiao', - name: '发货列表', - path: '/pages/delivery/index', - jurisdiction: 'shipping_list_page', - }, - { - id: 3, - iconName: 'icon-yaoqingma', - name: '邀请码', - path: '/pages/inviteCode/index', - jurisdiction: 'invitation_code_page', - }, - { - id: 4, - iconName: 'icon-tihuoliebiao', - name: '提货列表', - path: '/pages/takeDelivery/index', - jurisdiction: 'picking_list_module_page', - }, - { - id: 5, - iconName: 'icon-shouhouzhongxin', - name: '退货退款', - path: '/pages/refundPage/index', - jurisdiction: 'return_and_refund_page', - }, - { - id: 6, - iconName: 'icon-shoukuanliebiao', - name: '收款列表', - path: '/pages/newCollection/index', - jurisdiction: 'collection_list_page', - }, - { - id: 7, - iconName: 'icon-kehuxinxi', - name: '客户列表', - path: '/pages/customerManagement/index', - jurisdiction: 'customer_list_page', - }, - { - id: 8, - iconName: 'icon-lingquseka', - name: '领取色卡', - path: '/pages/getColorCard/index', - jurisdiction: 'receive_color_card_page', - }, - { - id: 9, - iconName: 'icon-jianyang', - name: '领取剪样', - path: '/pages/sampleCutting/index', - jurisdiction: 'receive_sample_cutting_page', - }, -] - -const fabric: IconCardType[] = [ - { - id: 10, - iconName: 'icon-yansequyang', - name: '颜色取样', - path: '/pages/colorRelated/takeColor/index', - jurisdiction: 'color_sampling_page', - }, - { - id: 11, - iconName: 'icon-qusechazhao', - name: '取色查找', - path: '/pages/colorRelated/findColor/index', - jurisdiction: 'color_search_page', - }, - { - id: 12, - iconName: 'icon-yangpinduibi', - name: '样品对比', - path: '/pages/colorRelated/sampleComparison/index', - jurisdiction: 'sample_comparison_page', - }, -] - -const statisticAnalysis: IconCardType[] = [ - { - id: 13, - iconName: 'icon-xiaoshou', - name: '销售', - path: '/pages/saleStatistic/index', - jurisdiction: 'sales_page', - }, - { - id: 14, - iconName: 'icon-dingdanyujing', - name: '订单预警', - path: '/pages/orderWarningAnalysis/index', - jurisdiction: 'order_warning_analysis_page', - }, - { - id: 15, - iconName: 'icon-duizhang', - name: '对账', - path: '', - jurisdiction: 'reconciliation_page', - }, - { - id: 16, - iconName: 'icon-yuncangkucun', - name: '云仓库存', - path: '', - jurisdiction: 'cloud_warehouse_inventory_page', - }, - { - id: 17, - iconName: 'icon-qianzhicangkucun', - name: '前置仓库存', - path: '', - jurisdiction: 'front_warehouse_page', - }, -] - -// 用户信息 -const UserInfo: FC = () => { - const { removeToken, removeUserInfo, userInfo } = useUserInfo() - - const dispatch = useDispatch>() - const { openSubscriptionMessage } = UseSubscriptionMessage() - - console.log('userInfo==>', userInfo) - // const [userInfo, setUserInfo] = useState({ - // avatarUrl: '', - // username: '', - // userno: '', - // }) - - // 退出登录 - const handleLogout = () => { - removeToken() - removeUserInfo() - dispatch({ type: TabBarType.SET_SELECTED, data: { selectedId: TabBarIndex.INDEX } }) - goLink('/pages/login/index', {}, 'reLaunch') - } - - const handleClickIconCard = async(item: IconCardType) => { - console.log('item==>', item) - if (item.id === 6) { - await openSubscriptionMessage({ scenes: 3 }) - } - if (item.id === 14) { - await openSubscriptionMessage({ scenes: 4 }) - // return - } - goLink(item.path, {}, 'navigateTo') - } - - const [Features, setFeatures] = useState([]) - const [Coloring, setColoring] = useState([]) - const [Statistics, setStatistics] = useState([]) - useDidShow(() => { - let arr: any[] = [] - let arrOne: any[] = [] - let arrTwo: any[] = [] - arr = feature.filter(item => checkKey(item.jurisdiction) && item.path) - arrOne = fabric.filter(item => checkKey(item.jurisdiction) && item.path) - arrTwo = statisticAnalysis.filter(item => checkKey(item.jurisdiction) && item.path) - setFeatures([...arr]) - setColoring([...arrOne]) - setStatistics([...arrTwo]) - }) - - useCheckTabBarSelectStatus(TabBarIndex.USER) - - // 微信授权获取code - const { UseGetCode } = useGetCode() - const handReceive = async() => { - try { - await UseGetCode() - } - catch (err) { - console.log(err, 'err') - } - } - - return ( - <> - - - - - - - {userInfo.userInfo?.user_name} - {userInfo.userInfo.user_code} - - - - 退出登录 - - - - - {/* 部门 */} - - {userInfo.userInfo.department_name} - - - {/* 职责 */} - - {userInfo.userInfo.duty_name} - handReceive()}>接收消息 - - - - { - !!Features.length && - 功能特色 - - {Features.map((item, key) => { - return item.path ? handleClickIconCard(item)}> : null - })} - - - } - { - !!Coloring.length && - 布料取色 - - {Coloring.map((item, key) => { - return item.path ? handleClickIconCard(item)}> : null - })} - - - } - { - !!Statistics.length && - 统计分析 - - {Statistics.map((item, key) => { - return item.path ? handleClickIconCard(item)}> : null - })} - - - } - - - ) -} - -// 我的 -const User = () => { - const [current_env, _] = useState(CURRENT_ENV) - const [current_version, __] = useState(CURRENT_VERSION) - return ( - - - - {/* 测试暂时添加 */} - {current_version} - {current_env !== 'production' && {BASE_URL}} - - ) -} - -export default User diff --git a/src/pages/wareHousePage/index.config.ts b/src/pages/wareHousePage/index.config.ts deleted file mode 100644 index d354ef0..0000000 --- a/src/pages/wareHousePage/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '选择仓库', -} diff --git a/src/pages/wareHousePage/index.module.scss b/src/pages/wareHousePage/index.module.scss deleted file mode 100644 index 534b51b..0000000 --- a/src/pages/wareHousePage/index.module.scss +++ /dev/null @@ -1,64 +0,0 @@ -page { - background: #f7f7f7; -} - -.cussBox { - .searchBox { - position: sticky; - top: 0; - width: 100%; - height: 96px; - background: #ffffff; - display: flex; - align-items: center; - - .two { - width: 702px; - height: 72px; - margin-left: 24px; - } - } - - .listBox { - height: calc(100vh - 170px); - } - - .itemBox { - margin-left: 24px; - margin-right: 24px; - padding: 0 36px; - height: 104px; - background: #ffffff; - border-radius: 16px; - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 24px; - box-sizing: border-box; - - .cussName { - flex: 1; - height: 34px; - font-size: 28px; - font-weight: 500; - color: #000000; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - } - - .acticveitemBox { - border: 1px solid #337fff; - } -} -.platform_name { - background: #ecf2ff; - border-radius: 6px; - margin-left: 10px; - font-size: 20px; - border: none !important; - text-align: center; - color: #007aff; - padding: 4px 10px; -} diff --git a/src/pages/wareHousePage/index.tsx b/src/pages/wareHousePage/index.tsx deleted file mode 100644 index c6dcca7..0000000 --- a/src/pages/wareHousePage/index.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { Button, Image, Input, ScrollView, View } from '@tarojs/components' -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import classnames from 'classnames' -import styles from './index.module.scss' -import Search from '@/components/search' -import InfiniteScroll from '@/components/infiniteScroll' -import { dataLoadingStatus, getFilterData } from '@/common/util' -import Tag from '@/components/tag' -import { GetWarehouseList } from '@/api/refound' - -const WareHousePage = () => { - const [search, setSearch] = useState({ - name: '', - }) - const [clentList, setClientlist] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) - - const { fetchData: clitentFetch, state: orderState } = GetWarehouseList() - // 数据加载状态 - const statusMore = useMemo(() => { - return dataLoadingStatus({ list: clentList.list, total: clentList.total, status: orderState.loading! }) - }, [clentList, orderState]) - - const [clientObj, setclientObj] = useState({ - clientId: null, - clientName: '', - }) - // 上拉加载数据 - // const pageNum = useRef({ size: search.size, page: search.page }) - // 输入了搜索关键字 - const getSearchData = useCallback((eq) => { - // pageNum.current.page = 1 - setClientlist(() => ({ list: [], total: 0 })) - setSearch(e => ({ ...e, name: eq })) - }, []) - - const router = useRouter() - - // const getScrolltolower = useCallback(() => { - // if (clentList.list.length < clentList.total) { - // pageNum.current.page++ - // const size = pageNum.current.size * pageNum.current.page - // setSearch(e => ({ ...e, size })) - // console.log(search, 11111) - // } - // }, [clentList]) - - // 列表下拉刷新 - const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) - const getRefresherRefresh = async() => { - // pageNum.current.page = 1 - setRefresherTriggeredStatus(true) - setSearch(val => ({ ...val })) - } - const getCuss = async() => { - const res = await clitentFetch(getFilterData({ name: search.name })) - if (router?.params.clientId) { - res.data.list.map((item) => { - if (item.id == router?.params.clientId) { - item.checked = true - } - else { - item.checked = false - } - return item - }) - } - setClientlist(e => ({ ...e, list: res.data?.list, total: res.data?.total })) - setRefresherTriggeredStatus(false) - } - useEffect(() => { - getCuss() - }, [search]) - // 选择客户 - const selectClient = (item) => { - clentList.list.map((it) => { - if (item.id === it.id) { - it.checked = true - } - else { - it.checked = false - } - return it - }) - setclientObj(item) - const pages = Taro.getCurrentPages() // 获取当前的页面栈 - const prevPage = pages[pages.length - 2] - console.log('prevPage', prevPage) - prevPage.setData({ // 设置上一个页面的值 - clientId: item.id, - clientName: item.name, - }) - setClientlist(e => ({ ...e, list: clentList?.list, total: clentList?.total })) - Taro.navigateBack({ - delta: 1, - }) - } - useEffect(() => { - if (clientObj?.clientId !== null) { - setclientObj(clientObj) - } - }, [clientObj]) - return ( - - - - - - - - - - { - clentList.list.map((item, index) => { - return ( - { selectClient(item) }}> - - { item.name } - - - ) - }) - } - - - - - ) -} - -export default WareHousePage diff --git a/src/reducers/commonData.ts b/src/reducers/commonData.ts deleted file mode 100644 index de72640..0000000 --- a/src/reducers/commonData.ts +++ /dev/null @@ -1,34 +0,0 @@ -// 公共数据,什么都可往里面传,可用于临时传参 -import Taro from '@tarojs/taro' -import { - CLEAR_SHOPCOUNT, - SET_SHOPCOUNT, - STORAGE_SHOPCOUNT, -} from '../constants/common' - -export interface DataParam { - shopCount: number // 购物车数量 -} - -interface Action { - type?: string - data?: DataParam -} - -const INIT = { - shopCount: Taro.getStorageSync(STORAGE_SHOPCOUNT) ? JSON.parse(Taro.getStorageSync(STORAGE_SHOPCOUNT)).shopCount : 0, -} - -export default (state = INIT, action: Action) => { - const { type, data } = action - switch (type) { - case SET_SHOPCOUNT: - Taro.setStorageSync(STORAGE_SHOPCOUNT, JSON.stringify(data?.shopCount)) - return { ...state, ...data } - case CLEAR_SHOPCOUNT: - Taro.removeStorageSync(STORAGE_SHOPCOUNT) - return { ...state, shopCount: 0 } - default: - return state - } -} diff --git a/src/reducers/hooks.ts b/src/reducers/hooks.ts deleted file mode 100644 index b3ceae4..0000000 --- a/src/reducers/hooks.ts +++ /dev/null @@ -1,14 +0,0 @@ - -// 该方法纯粹只是个Ts类型定义文件 -import type { TypedUseSelectorHook } from 'react-redux' -import { useSelector as useReduxSelector } from 'react-redux' -import type { DataParam as userInfoParam } from './userInfo' -import type { DataParam as commonDataParam } from './commonData' -import type { TabBarData as tabbarDataParam } from './tabBar' - -interface Params { - userInfoData: userInfoParam - commonData: commonDataParam - tabBarData: tabbarDataParam -} -export const useSelector: TypedUseSelectorHook = useReduxSelector diff --git a/src/reducers/index.ts b/src/reducers/index.ts deleted file mode 100644 index 20ef466..0000000 --- a/src/reducers/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { combineReducers } from 'redux' -import userInfoData from './userInfo' -import commonData from './commonData' -import tabBarReducer from './tabBar' - -export interface Reducers { - userInfoData: typeof userInfoData - commonData: typeof commonData - tabBarData: typeof tabBarReducer -} - -export type ReducersKey = keyof Reducers - -export default combineReducers({ - userInfoData, - commonData, - tabBarData: tabBarReducer, -}) diff --git a/src/reducers/tabBar.ts b/src/reducers/tabBar.ts deleted file mode 100644 index 6afe102..0000000 --- a/src/reducers/tabBar.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { TabBarType } from '../constants/tabbar' -import { checkKey } from '@/common/common' -import type IconFont from '@/components/iconfont/iconfont' - -type IconfontName = Parameters['0']['name'] - -interface TabBarItem { - id: TabBarIndex - pagePath: string - text: string - iconPath: IconfontName - selectedIconPath: IconfontName - key: string -} - -type TabBarIndexMap = Record - -export enum TabBarIndex { - INDEX = 1, - SHOPPING = 2, - ORDER = 3, - USER = 4, -} - -export const INITIAL_STATE = { - selectedId: TabBarIndex.INDEX, - tabItem: [ - { - id: TabBarIndex.INDEX, - pagePath: '/pages/index/index', - text: '首页', - iconPath: 'icon-shouye1', - selectedIconPath: 'icon-shouye', - key: 'index_page', - }, - { - id: TabBarIndex.SHOPPING, - pagePath: '/pages/shopping/index', - text: '购物', - iconPath: 'icon-gouwu1', - selectedIconPath: 'icon-gouwu', - key: 'shopping_cart_page', - }, - { - id: TabBarIndex.ORDER, - pagePath: '/pages/order/index', - text: '订单', - iconPath: 'icon-dingdan1', - selectedIconPath: 'icon-dingdan', - key: 'order_page', - }, - { - id: TabBarIndex.USER, - pagePath: '/pages/user/index', - text: '我的', - iconPath: 'icon-gerenzhongxin1', - selectedIconPath: 'icon-gerenzhongxin', - key: 'user_page', - }, - ] as TabBarItem[], -} - -export interface TabBarData { - selectedId?: number - tabItem?: TabBarIndexMap[number][] -} - -export interface TabBarAction { - type: TabBarType - data: TabBarData -} -// TabBarReducer -export default (state = INITIAL_STATE, action: TabBarAction) => { - const { type, data } = action - switch (type) { - case TabBarType.SET_SELECTED: - return { - ...state, - selectedId: data.selectedId, - } - case TabBarType.SET_TAB_ITEM: - return { - ...state, - tabItem: data.tabItem, - } - default: - return { - ...state, - tabItem: INITIAL_STATE.tabItem.filter(item => checkKey(item.key)), - } - } -} diff --git a/src/reducers/userInfo.ts b/src/reducers/userInfo.ts deleted file mode 100644 index d874a87..0000000 --- a/src/reducers/userInfo.ts +++ /dev/null @@ -1,111 +0,0 @@ - -import Taro from '@tarojs/taro' -import { UserInfoActionType } from '../constants/userInfo' - -export interface UserParam { - department_code?: string - department_id?: string - department_name?: string - duty_name?: string - physical_warehouse?: number - physical_warehouse_name?: string - token?: string - user_code?: number - user_id?: number - user_name?: string - avatar_url?: string - phone?: string -} - -export interface UserAdminParam { - avatar_url?: string - open_id?: string - physical_warehouse?: number - physical_warehouse_name?: string - union_id?: string - user_code?: string - user_id?: number - user_name?: string - wechat_user_open_id?: number - is_authorize_name?: boolean - is_authorize_phone?: boolean - phone?: string - authentication_status?: number - authentication_status_name: string - company_id?: number - company_name?: string - founder_user_id?: string - founder_user_name?: string - order_access_status?: number - order_access_status_name?: string - purchaser_type?: number - purchaser_type_name?: string -} - -export interface SortCodeParam { - shareShortDetail?: { title: string; code: string; img: string } // 详情分享页面短码 - shareShortPage?: { title: string; code: string; img: string } // 右上角分享页面短码 -} - -export interface DataParam { - token?: string - session_key?: string - userInfo: UserParam - adminUserInfo: UserAdminParam - sort_code: SortCodeParam - logingStatus?: boolean // 登录状态 true 正在登录 -} - -export interface UserInfoAction { - type: UserInfoActionType - data?: DataParam -} - -const INIT_USER = { - userInfo: Taro.getStorageSync('userInfo') ? JSON.parse(Taro.getStorageSync('userInfo')) : null, - adminUserInfo: Taro.getStorageSync('adminUserInfo') ? JSON.parse(Taro.getStorageSync('adminUserInfo')) : null, - token: Taro.getStorageSync('token') || '', - session_key: Taro.getStorageSync('session_key') || '', - sort_code: Taro.getStorageSync('sort_code') ? JSON.parse(Taro.getStorageSync('sort_code')) : null, - logingStatus: false, -} - -export default (state = INIT_USER, action: UserInfoAction) => { - const { type, data } = action - switch (type) { - case UserInfoActionType.SET_USERINFO: - Taro.setStorageSync('userInfo', JSON.stringify(data?.userInfo)) - return { ...state, ...data } - case UserInfoActionType.SET_ADMINUSERINFO: - Taro.setStorageSync('adminUserInfo', JSON.stringify(data?.adminUserInfo)) - return { ...state, ...data } - case UserInfoActionType.SET_TOKEN: - Taro.setStorageSync('token', data?.token) - return { ...state, ...data } - case UserInfoActionType.SET_SESSIONKEY: - Taro.setStorageSync('session_key', data?.session_key) - return { ...state, ...data } - case UserInfoActionType.SET_SORTCODE: - Taro.setStorageSync('sort_code', JSON.stringify(data?.sort_code)) - return { ...state, ...data } - case UserInfoActionType.CLEAR_TOKEN: - Taro.removeStorageSync('token') - return { ...state, token: '' } - case UserInfoActionType.CLEAR_SESSIONKEY: - Taro.removeStorageSync('session_key') - return { ...state, session_key: '' } - case UserInfoActionType.CLEAR_USERINFO: - Taro.removeStorageSync('userInfo') - return { ...state, userInfo: null } - case UserInfoActionType.CLEAR_ADMINUSERINFO: - Taro.removeStorageSync('adminUserInfo') - return { ...state, adminUserInfo: null } - case UserInfoActionType.CLEAR_SORTCODE: - Taro.removeStorageSync('sort_code') - return { ...state, sortCode: null } - case UserInfoActionType.LOGIN_STATUS: - return { ...state, ...data } - default: - return state - } -} diff --git a/src/store/index.ts b/src/store/index.ts deleted file mode 100644 index 578c8a5..0000000 --- a/src/store/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { applyMiddleware, compose, createStore } from 'redux' -import thunkMiddleware from 'redux-thunk' -import rootReducer from '@/reducers' - -const composeEnhancers - = typeof window === 'object' - && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ - ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ - // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize... - }) - : compose - -const middlewares = [ - thunkMiddleware, -] - -if (process.env.NODE_ENV === 'development' && process.env.TARO_ENV !== 'quickapp') { - // eslint-disable-next-line @typescript-eslint/no-var-requires - middlewares.push(require('redux-logger').createLogger()) -} - -const enhancer = composeEnhancers( - applyMiddleware(...middlewares), -) - -export default function configStore() { - const store = createStore(rootReducer, enhancer) - return store -} diff --git a/src/styles/common.scss b/src/styles/common.scss deleted file mode 100644 index e4a224b..0000000 --- a/src/styles/common.scss +++ /dev/null @@ -1,102 +0,0 @@ -$color_bg_one: #f8f8f8; -$color_font_one: rgba($color: #000000, $alpha: 0.8); -$color_font_two: #ababab; -$color_font_three: #707070; - -$color_main: #4581ff; -$color_danger: #e64340; -$color_warning: #e6a23c; -$color_money: #F64861; -$color_info: #909090; - -$color_bulk: #0D7CFF; // 大货 -$color_plate: #F79B31; // 剪板 -$color_bulkCut: #0AC76F; // 散剪 - -$opacity-disabled: 0.3; -$borderStyle: solid; -$borderColor: #ebebeb; - -$font_size_big: 32px; -$font_size: 28px; -$font_size_medium: 24px; -$font_size_min: 22px; - -$font_family: PingFangSC-Regular, PingFang SC; - -$customTabBarHeight: 100px; - - -//安全底部距离 -.common_safe_area_y { - width: 100%; - height: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */ - height: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */ - background-color: transparent; -} - -//省略号 -@mixin common_ellipsis($params: 1) { - overflow: hidden; - display: -webkit-box; - white-space: normal; - text-overflow: ellipsis; - word-break: break-all; - -webkit-box-orient: vertical; - -webkit-line-clamp: $params; -} - -.flex-col { - display: flex; - flex-flow: column nowrap; -} -.flex-row { - display: flex; - flex-flow: row nowrap; -} -.justify-between { - justify-content: space-between -} -.justify-center { - justify-content: center -} -.items-center{ - align-items: center; -} - -.flex-item { - flex: 1 1 auto; -} - -.full-100 { - width: 100%; - height: 100%; -} - -.color-blue{ - color: #3287EC; -} -.color-yellow{ - color: #FF9100; -} -.color-green{ - color: #00B837; -} -.color-grey{ - color: #707070; -} -.color-white{ - color: white; -} - -.s-w::after { - content: 'W'; - font-size: $font_size; -} -.s-e::after { - content: 'E'; - font-size: $font_size; -} -.filter{ - filter: blur(1); -} diff --git a/src/styles/iconfont.scss b/src/styles/iconfont.scss deleted file mode 100644 index b109443..0000000 --- a/src/styles/iconfont.scss +++ /dev/null @@ -1,299 +0,0 @@ -@font-face { - font-family: "iconfont"; - /* Project id 3619513 */ - // url('/src/styles/iconfont.ttf') format('truetype'); - src: - url('/src/styles/iconfont.ttf?t=1663556335905') format('truetype'); -} - -.iconfont { - font-family: "iconfont" !important; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-shouhou1:before { - content: "\e641"; -} - -.icon-cangku1:before { - content: "\e642"; -} - -.icon-saoma:before { - content: "\e643"; -} - -.icon-dizhi1:before { - content: "\e644"; -} - -.icon-huodaofukuan:before { - content: "\e645"; -} - -.icon-yufukuan1:before { - content: "\e646"; -} - -.icon-yue:before { - content: "\e647"; -} - -.icon-zidingyi:before { - content: "\e648"; -} - -.icon-jinetiaozheng:before { - content: "\e649"; -} - -.icon-tuikuan1:before { - content: "\e64a"; -} - -.icon-zhankai:before { - content: "\e63f"; -} - -.icon-shouqi:before { - content: "\e640"; -} - -.icon-lujing:before { - content: "\e63e"; -} - -.icon-jizhumima:before { - content: "\e63c"; -} - -.icon-a-jizhumima:before { - content: "\e63d"; -} - -.icon-weixindenglu:before { - content: "\e63b"; -} - -.icon-kehuxinxi:before { - content: "\e63a"; -} - -.icon-yewuyuanqizi:before { - content: "\e639"; -} - -.icon-chakanquanbukehu:before { - content: "\e638"; -} - -.icon-biyan:before { - content: "\e637"; -} - -.icon-bianji:before { - content: "\e61e"; -} - -.icon-daikuan:before { - content: "\e61f"; -} - -.icon-cangku:before { - content: "\e620"; -} - -.icon-guanlidingdan:before { - content: "\e621"; -} - -.icon-mima:before { - content: "\e622"; -} - -.icon-guanbi:before { - content: "\e623"; -} - -.icon-jianshao:before { - content: "\e624"; -} - -.icon-dingwei:before { - content: "\e625"; -} - -.icon-saomiao:before { - content: "\e626"; -} - -.icon-peihuo:before { - content: "\e627"; -} - -.icon-shaixuan:before { - content: "\e628"; -} - -.icon-paiming:before { - content: "\e629"; -} - -.icon-shanchusousuoxinxi:before { - content: "\e62a"; -} - -.icon-shijian:before { - content: "\e62b"; -} - -.icon-sousuo:before { - content: "\e62c"; -} - -.icon-shouhou:before { - content: "\e62d"; -} - -.icon-sousuofanhui:before { - content: "\e62e"; -} - -.icon-sousuoshanchu:before { - content: "\e62f"; -} - -.icon-tuikuan:before { - content: "\e630"; -} - -.icon-tishi:before { - content: "\e631"; -} - -.icon-xianxiahuizong:before { - content: "\e632"; -} - -.icon-xinzeng:before { - content: "\e633"; -} - -.icon-yonghuming:before { - content: "\e634"; -} - -.icon-yanjing:before { - content: "\e635"; -} - -.icon-yufukuan:before { - content: "\e636"; -} - -.icon-wodekefu:before { - content: "\e60c"; -} - -.icon-dizhi:before { - content: "\e60d"; -} - -.icon-shouhouzhongxin:before { - content: "\e60e"; -} - -.icon-wodeshoucang:before { - content: "\e60f"; -} - -.icon-shoukuanliebiao:before { - content: "\e610"; -} - -.icon-madanguanli:before { - content: "\e611"; -} - -.icon-qusechazhao:before { - content: "\e612"; -} - -.icon-pandiansaoma:before { - content: "\e613"; -} - -.icon-yaoqingma:before { - content: "\e614"; -} - -.icon-duizhang:before { - content: "\e615"; -} - -.icon-tihuoliebiao:before { - content: "\e616"; -} - -.icon-yangpinduibi:before { - content: "\e617"; -} - -.icon-yansequyang:before { - content: "\e618"; -} - -.icon-fahuoliebiao:before { - content: "\e619"; -} - -.icon-yuncangkucun:before { - content: "\e61a"; -} - -.icon-xiaoshou:before { - content: "\e61b"; -} - -.icon-qianzhicangkucun:before { - content: "\e61c"; -} - -.icon-lingquseka:before { - content: "\e61d"; -} - -.icon-gouwu1:before { - content: "\e608"; -} - -.icon-dingdan1:before { - content: "\e609"; -} - -.icon-gerenzhongxin1:before { - content: "\e60a"; -} - -.icon-shouye1:before { - content: "\e60b"; -} - -.icon-gerenzhongxin:before { - content: "\e604"; -} - -.icon-dingdan:before { - content: "\e605"; -} - -.icon-shouye:before { - content: "\e606"; -} - -.icon-gouwu:before { - content: "\e607"; -} diff --git a/src/styles/iconfont.ttf b/src/styles/iconfont.ttf deleted file mode 100644 index 611546f..0000000 Binary files a/src/styles/iconfont.ttf and /dev/null differ diff --git a/src/styles/image/defaultAvatar.png b/src/styles/image/defaultAvatar.png deleted file mode 100644 index d55d148..0000000 Binary files a/src/styles/image/defaultAvatar.png and /dev/null differ diff --git a/src/styles/image/hdfk.png b/src/styles/image/hdfk.png deleted file mode 100644 index ce2400f..0000000 Binary files a/src/styles/image/hdfk.png and /dev/null differ diff --git a/src/styles/image/seven.png b/src/styles/image/seven.png deleted file mode 100644 index 2d6691b..0000000 Binary files a/src/styles/image/seven.png and /dev/null differ diff --git a/src/styles/mixins/index.scss b/src/styles/mixins/index.scss deleted file mode 100644 index e0a243b..0000000 --- a/src/styles/mixins/index.scss +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Mixins - */ - -/* library */ -// @import './libs/absolute-center'; -// @import './libs/clearfix'; -// @import './libs/line'; -// @import './libs/overlay'; -// @import './libs/shade'; -@import './libs/tint'; -@import './libs/flex'; -// @import './libs/border'; -// @import './libs/active'; -// @import './libs/disabled'; -// @import './libs/placeholder'; -// @import './libs/alignhack'; -// @import './libs/hairline'; diff --git a/src/styles/mixins/libs/flex.scss b/src/styles/mixins/libs/flex.scss deleted file mode 100644 index 576204a..0000000 --- a/src/styles/mixins/libs/flex.scss +++ /dev/null @@ -1,50 +0,0 @@ -@mixin display-flex { - display: flex; -} - -@mixin flex-wrap($value: nowrap) { - flex-wrap: $value; -} - -@mixin align-items($value: stretch) { - align-items: $value; - @if $value == flex-start { - -webkit-box-align: start; - } @else if $value == flex-end { - -webkit-box-align: end; - } @else { - -webkit-box-align: $value; - } -} - -@mixin align-content($value: flex-start) { - align-content: $value; -} - -@mixin justify-content($value: flex-start) { - justify-content: $value; - @if $value == flex-start { - -webkit-box-pack: start; - } @else if $value == flex-end { - -webkit-box-pack: end; - } @else if $value == space-between { - -webkit-box-pack: justify; - } @else { - -webkit-box-pack: $value; - } -} - -/* Flex Item */ -@mixin flex($fg: 1, $fs: null, $fb: null) { - flex: $fg $fs $fb; - -webkit-box-flex: $fg; -} - -@mixin flex-order($n) { - order: $n; - -webkit-box-ordinal-group: $n; -} - -@mixin align-self($value: auto) { - align-self: $value; -} diff --git a/src/styles/mixins/libs/tint.scss b/src/styles/mixins/libs/tint.scss deleted file mode 100644 index 31d6970..0000000 --- a/src/styles/mixins/libs/tint.scss +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Mixes a color with white. It's different from lighten() - * - * @param {color} $color - * @param {number (percentage)} $percent [The amout of white to be mixed in] - * @return {color} - * - * @example - * .element { - * background-color: tint(#6ecaa6 , 40%); - * } - * - * // CSS Output - * .element { - * background-color: #a8dfc9; - * } - */ -// @function tint( -// $color, -// $percent -// ) { -// @return mix(#FFF, $color, $percent); -// } diff --git a/src/styles/svg/wpassword.svg b/src/styles/svg/wpassword.svg deleted file mode 100644 index f0b7dee..0000000 --- a/src/styles/svg/wpassword.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 切片 - - - - - - - - - \ No newline at end of file diff --git a/src/styles/variables/default.scss b/src/styles/variables/default.scss deleted file mode 100644 index 8ef0cb5..0000000 --- a/src/styles/variables/default.scss +++ /dev/null @@ -1,457 +0,0 @@ -/** - * Default variables - */ - -@import '../mixins/libs/tint'; - -$hd: 2 !default; // 基本单位 - -/* The Color of O2Team Brand */ -$color-brand: #337fff !default; -$color-brand-light: #78A4F4 !default; -$color-brand-dark: #346FC2 !default; - -/* Color */ -$color-success: #13CE66 !default; -$color-error: #FF4949 !default; -$color-warning: #FFC82C !default; -$color-info: #78A4FA !default; - -/* Color Palette */ -$color-black-0: #000 !default; -$color-black-1: #333 !default; -$color-black-2: #7F7F7F !default; -$color-black-3: #B2B2B2 !default; - -$color-grey-0: #333 !default; -$color-grey-1: #666 !default; -$color-grey-2: #999 !default; -$color-grey-3: #CCC !default; -$color-grey-4: #E5E5E5 !default; -$color-grey-5: #F0F0F0 !default; -$color-grey-6: #F7F7F7 !default; - -$color-white: #FFF !default; - -/* Text Color */ -$color-text-base: #333 !default; // 文字的基本色 -$color-text-base-inverse: #FFF !default; // 反色 -$color-text-secondary: #36D57D !default; // 辅助色 -$color-text-placeholder: #C9C9C9 !default; -$color-text-disabled: #CCC !default; -$color-text-title: #2C405A !default; // 文章标题 -$color-text-paragraph: #3F536E !default; // 文章段落 - -/* Link */ -$color-link: #6190E8 !default; -$color-link-hover: #79A1EB !default; -$color-link-active: #4F7DE2 !default; -$color-link-disabled: #BFBFBF !default; - -/* 背景色 */ -$color-bg: #FFF !default; -$color-bg-base: #FAFBFC !default; -$color-bg-light: #ECF5FD !default; -$color-bg-lighter: tint($color-bg-light, 50%) !default; -$color-bg-grey: #F7F7F7 !default; - -/* 边框颜色 */ -$color-border-base: #C5D9E8 !default; -$color-border-split: tint($color-border-base, 20%) !default; // 分割线 -$color-border-light: tint($color-border-base, 30%) !default; -$color-border-lighter: tint($color-border-base, 50%) !default; -$color-border-lightest: tint($color-border-base, 80%) !default; -$color-border-grey: #CCC !default; - -/* 图标颜色 */ -$color-icon-base: #CCC !default; - -/* Border Radius */ -$border-radius-sm: 2px * $hd !default; -$border-radius-md: 4px * $hd !default; -$border-radius-lg: 6px * $hd !default; -$border-radius-circle: 50% !default; - -/* 透明度 */ -$opacity-active: 0.6 !default; // Button 等组件点击态额透明度 -$opacity-disabled: 0.3 !default; // Button 等组件禁用态的透明度 - -/* Font */ -$font-size-xs: 10px * $hd !default; // 非常用字号,用于标签 -$font-size-sm: 12px * $hd !default; // 用于辅助信息 -$font-size-base: 14px * $hd !default; // 常用字号 -$font-size-lg: 16px * $hd !default; // 常规标题 -$font-size-xl: 18px * $hd !default; // 大标题 -$font-size-xxl: 20px * $hd !default; // 用于大号的数字 - -/* Line Height */ -$line-height-base: 1 !default; // 单行 -$line-height-en: 1.3 !default; // 英文多行 -$line-height-zh: 1.5 !default; // 中文多行 - -/* 水平间距 */ -$spacing-h-sm: 5px * $hd !default; -$spacing-h-md: 8px * $hd !default; -$spacing-h-lg: 12px * $hd !default; -$spacing-h-xl: 16px * $hd !default; - -/* 垂直间距 */ -$spacing-v-xs: 3px * $hd !default; -$spacing-v-sm: 6px * $hd !default; -$spacing-v-md: 9px * $hd !default; -$spacing-v-lg: 12px * $hd !default; -$spacing-v-xl: 15px * $hd !default; - -/* 图标尺寸 */ -$icon-size-sm: 18px * $hd !default; -$icon-size-md: 22px * $hd !default; -$icon-size-lg: 36px * $hd !default; - -/* z-index */ -$zindex-divider: 100 !default; -$zindex-steps: 500 !default; -$zindex-tab: 600 !default; -$zindex-form: 700 !default; -$zindex-nav: 800 !default; -$zindex-search-bar: 800 !default; -$zindex-indexes: 805 !default; -$zindex-flot-layout: 810 !default; -$zindex-drawer: 900 !default; -$zindex-modal: 1000 !default; -$zindex-action-sheet: 1010 !default; -$zindex-picker: 1010 !default; -$zindex-curtain: 1080 !default; -$zindex-message: 1090 !default; -$zindex-toast: 1090 !default; - -/* timing function */ -$timing-func: cubic-bezier(0.36, 0.66, 0.04, 1) !default; - -/** -* CSS cubic-bezier timing functions -* http://bourbon.io/docs/#timing-functions -*/ -$ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530) !default; -$ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190) !default; -$ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220) !default; -$ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060) !default; -$ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715) !default; -$ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035) !default; -$ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335) !default; -$ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045) !default; - -$ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940) !default; -$ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000) !default; -$ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000) !default; -$ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000) !default; -$ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000) !default; -$ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000) !default; -$ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000) !default; -$ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275) !default; - -$ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955) !default; -$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000) !default; -$ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000) !default; -$ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000) !default; -$ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950) !default; -$ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000) !default; -$ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860) !default; -$ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550) !default; - -/** - * 组件变量 - */ - -/* Accordion */ -$at-accordion-color-arrow: $color-grey-3 !default; - -/* Activity Indicator */ -$at-activity-indicator-font-size: 28px !default; -$at-activity-indicator-font-color: $color-grey-2 !default; - -/* Avatar */ -$at-avatar-color: $color-white !default; -$at-avatar-bg-color: $color-grey-4 !default; -$at-avatar-size-sm: 80px !default; -$at-avatar-size-md: 100px !default; -$at-avatar-size-lg: 120px !default; - -/* Badge */ -$at-badge-color: $color-white !default; -$at-badge-bg-color: $color-error !default; -$at-badge-bg: $at-badge-bg-color !default; -$at-badge-font-size: $font-size-xs !default; -$at-badge-dot-size: 20px !default; - -/* Button */ -$at-button-height: 92px !default; -$at-button-height-sm: 60px !default; -$at-button-color: $color-brand !default; -$at-button-border-color-primary: $color-brand !default; -$at-button-border-color-secondary: $color-brand !default; -$at-button-bg: $at-button-color !default; - -/* Float Button */ -$at-fab-size: 56px * $hd !default; -$at-fab-size-sm: 40px * $hd !default; -$at-fab-icon-size: 24px * $hd !default; -$at-fab-bg-color: $color-brand; -$at-fab-bg-color-active: $color-brand-dark; -$at-fab-box-shadow: - 0 6px 10px -2px rgba(0, 0, 0, 0.2), - 0 12px 20px 0 rgba(0, 0, 0, 0.14), - 0 2px 36px 0 rgba(0, 0, 0, 0.12) !default; -$at-fab-box-shadow-active: - 0 14px 16px -8px rgba(0, 0, 0, 0.2), - 0 24px 34px 4px rgba(0, 0, 0, 0.14), - 0 10px 44px 8px rgba(0, 0, 0, 0.12) !default; - -/* Calendar */ -$at-calendar-day-size: 72px !default; -$at-calendar-mark-size: 8px !default; -$at-calendar-header-color: #B8BFC6 !default; -$at-calendar-main-color: $color-brand !default; -$at-calendar-day-color: #7C86A2 !default; - -/* Card */ -$at-card-thumb-size: 32px !default; -$at-card-icon-size: 32px !default; -$at-card-title-color: $color-text-title !default; -$at-card-extra-color: $color-text-title !default; -$at-card-info-color: $color-text-base !default; -$at-card-note-color: $color-grey-2 !default; - -/* Checkbox */ -$at-checkbox-circle-size: 40px !default; -$at-checkbox-icon-size: $font-size-sm !default; -$at-checkbox-icon-color: $color-brand !default; -$at-checkbox-icon-color-checked: $color-white !default; -$at-checkbox-title-color: $color-text-base !default; -$at-checkbox-title-font-size: $font-size-lg !default; -$at-checkbox-desc-font-size: $font-size-sm !default; -$at-checkbox-desc-color: $color-grey-2 !default; - -/* Countdown */ -$at-countdown-font-size: $font-size-lg !default; -$at-countdown-num-color: $color-text-base !default; -$at-countdown-card-num-color: #FF4949 !default; -$at-countdown-card-num-bg-color: $color-white !default; - -/* Curtain */ -$at-curtain-btn-color: $color-white !default; - -/* Divider */ -$at-divider-height: 112px; -$at-divider-content-color: $color-brand !default; -$at-divider-font-size: $font-size-lg !default; -$at-divider-line-color: $color-grey-3 !default; - -/* Drawer */ -$at-drawer-content-width: 460px !default; - -/* FloatLayout */ -$float-layout-height-min: 600px !default; -$float-layout-height-max: 950px !default; -$float-layout-header-bg-color: $color-bg-grey !default; -$float-layout-title-color: $color-text-base !default; -$float-layout-title-font-size: $font-size-lg !default; -$float-layout-btn-color: $color-grey-3 !default; - -/* Grid */ -$at-grid-text-color: $color-text-base !default; -$at-grid-font-size: $font-size-lg !default; -$at-grid-img-size: 80px !default; -$at-gird-img-size-sm: 50px !default; - -/* ImagePicker */ -$at-image-picker-btn-add-color: $color-grey-3 !default; -$at-image-picker-btn-remove-color: $color-white !default; -$at-image-picker-btn-remove-bg-color: $color-grey-2 !default; - -/* Indexes */ -$at-indexes-nav-color: $color-link !default; -$at-indexes-nav-font-size: $font-size-sm !default; -$at-indexes-title-color: $color-black-2 !default; -$at-indexes-title-font-size: $font-size-sm !default; -$at-indexes-title-bg-color: $color-grey-6 !default; - -/* InputNumber */ -$at-input-number-text-color: $color-text-base !default; -$at-input-number-font-size: $font-size-base !default; -$at-input-number-font-size-lg: $font-size-xl !default; -$at-input-number-btn-color: $color-brand !default; -$at-input-number-btn-size: 30px !default; -$at-input-number-btn-size-lg: 36px !default; -$at-input-number-width-min: 80px !default; -$at-input-number-width-min-lg: 120px !default; - -/* Input */ -$at-input-label-color: $color-text-base !default; -$at-input-text-color: $color-text-base !default; -$at-input-font-size: $font-size-lg !default; -$at-input-placeholder-color: $color-grey-3 !default; - -/* List */ -$at-list-thumb-size: 56px !default; -$at-list-arrow-color: $color-grey-3 !default; -$at-list-text-color: $color-text-base !default; -$at-list-content-color: $color-grey-2 !default; -$at-list-extra-color: $color-grey-2 !default; -$at-list-extra-width: 235px !default; - -/* LoadMore */ -$at-load-more-height: 80PX !default; -$at-load-more-tips-color: $color-grey-1 !default; -$at-load-more-tips-size: $font-size-lg !default; - -/* Loading */ -$at-loading-size: 36px !default; -$at-loading-color: $color-brand !default; - -/* Message */ -$at-message-color: $color-white !default; -$at-message-font-size: $font-size-base !default; -$at-message-bg-color: $color-info !default; - -/* Modal */ -$at-modal-width: 540px !default; -$at-modal-header-text-color: $color-text-base !default; -$at-modal-content-text-color: $color-text-base !default; -$at-modal-btn-default-color: $color-text-base !default; -$at-modal-btn-confirm-color: $color-brand !default; -$at-modal-bg-color: $color-white !default; - -/* NavBar */ -$at-nav-bar-title-color: $color-text-base !default; -$at-nav-bar-link-color: $color-brand !default; - -/* NoticeBar */ -$at-noticebar-text-color: #DE8C17 !default; -$at-noticebar-bg-color: #FCF6ED !default; -$at-noticebar-font-size: $font-size-sm !default; -$at-noticebar-icon-size: 30px !default; -$at-noticebar-btn-close-size: 32px !default; -$at-noticebar-btn-close-color: $color-grey-3 !default; - -/* Pagination */ -$at-pagination-margin: 40px !default; -$at-pagination-num-color: $color-text-base !default; -$at-pagination-num-font-size: $font-size-base !default; -$at-pagination-current-num-color: $color-brand !default; -$at-pagination-icon-color: $color-text-base !default; -$at-pagination-icon-font-size: 32px !default; - -/* Progress */ -$at-progress-height: 16px !default; -$at-progress-text-size: $font-size-sm !default; -$at-progress-icon-size: $font-size-xl !default; -$at-progress-inner-bg-color: $color-grey-6 !default; -$at-progress-bar-bg-color: $color-brand-light !default; -$at-progress-bar-bg-color-active: $color-white !default; - -/* Radio */ -$at-radio-title-color: $color-text-base !default; -$at-radio-title-size: $font-size-lg !default; -$at-radio-desc-color: $color-grey-2 !default; -$at-radio-desc-size: $font-size-sm !default; -$at-radio-check-color: $color-brand !default; - -/* Range */ -$at-range-slider-size: 28PX !default; -$at-range-rail-height: 2PX !default; -$at-range-rail-bg-color: #E9E9E9 !default; -$at-range-track-bg-color: $color-brand !default; -$at-range-slider-color: $color-white !default; -$at-range-slider-shadow: 0 0 4PX 0 rgba(0, 0, 0, 0.2) !default; - -/* Rate */ -$at-rate-icon-size: 20PX !default; -$at-rate-star-color: #ECECEC !default; -$at-rate-star-color-on: #FFCA3E !default; - -/* SearchBar */ -$at-search-bar-btn-color: $color-white !default; -$at-search-bar-btn-bg-color: $color-brand !default; - -/* SegmentedControl */ -$at-segmented-control-color: $color-brand !default; -$at-segmented-control-color-active: $color-white !default; -$at-segmented-control-bg-color: transparent !default; -$at-segmented-control-font-size: $font-size-base !default; - -/* Slider */ -$at-slider-text-color: $color-grey-2 !default; -$at-slider-text-size: $font-size-base !default; - -/* Steps */ -$at-steps-circle-size: 56px !default; -$at-steps-icon-size: $font-size-sm !default; -$at-steps-color: $color-white !default; -$at-steps-color-active: $color-grey-2 !default; -$at-steps-bg-color: $color-grey-4 !default; -$at-steps-bg-color-active: $color-brand !default; -$at-steps-line-color: $color-grey-3 !default; -$at-steps-title-color: $color-black-0 !default; -$at-steps-title-size: $font-size-lg !default; -$at-steps-desc-color: $color-grey-3 !default; -$at-steps-desc-size: $font-size-sm !default; - -/* SwipeAction */ -$at-swipe-action-color: $color-white !default; -$at-swipe-action-font-size: $font-size-base !default; -$at-swipe-action-bg-color: $color-white !default; -$at-swipe-action-option-bg-color: $color-grey-2 !default; - -/* Switch */ -$at-switch-title-color: $color-text-base !default; -$at-switch-title-size: $font-size-base !default; - -/* TabBar */ -$at-tab-bar-bg-color: $color-white !default; -$at-tab-bar-color: $color-text-base !default; -$at-tab-bar-color-active: $color-brand !default; -$at-tab-bar-font-size: $font-size-base !default; -$at-tab-bar-icon-color: $color-grey-0 !default; -$at-tab-bar-icon-font-size: 48px !default; -$at-tab-bar-icon-image-size: 50px !default; - -/* Tabs */ -$at-tabs-color: $color-text-base !default; -$at-tabs-color-active: $color-brand !default; -$at-tabs-font-size: $font-size-base !default; -$at-tabs-line-height: 1PX !default; -$at-tabs-underline-color: $color-grey-5 !default; -$at-tabs-bg-color: $color-bg !default; - -/* Tag */ -$at-tag-height: 60px !default; -$at-tag-height-sm: 40px !default; -$at-tag-color: $color-grey-1 !default; -$at-tag-color-primary: $color-grey-1 !default; -$at-tag-color-active: $color-brand-light !default; -$at-tag-color-primary-active: $color-text-base-inverse !default; -$at-tag-font-size: $font-size-base !default; -$at-tag-font-size-sm: $font-size-xs !default; -$at-tag-bg-color: $color-bg-grey !default; -$at-tag-bg-color-primary: $color-bg-grey !default; -$at-tag-bg-color-active: $color-white !default; -$at-tag-bg-color-primary-active: $at-tag-color-active !default; -$at-tag-border-color: $at-tag-bg-color !default; -$at-tag-border-color-primary: $at-tag-bg-color !default; -$at-tag-border-color-active: $at-tag-color-active !default; - -/* Textarea */ -$at-textarea-font-size: $font-size-lg !default; -$at-textarea-tips-color: $color-text-placeholder !default; -$at-textarea-tips-size: $font-size-base !default; - -/* Timeline */ -$at-timeline-offset-left: 40px !default; -$at-timeline-title-color: $color-grey-0 !default; -$at-timeline-title-font-size: $font-size-base !default; -$at-timeline-desc-color: $color-grey-1 !default; -$at-timeline-desc-font-size: $font-size-sm !default; -$at-timeline-dot-size: 24px !default; -$at-timeline-dot-color: $color-bg !default; -$at-timeline-dot-border-color: $color-brand-light !default; -$at-timeline-line-color: $color-border-lighter !default; diff --git a/src/types/calendar.d.ts b/src/types/calendar.d.ts deleted file mode 100644 index 2705b47..0000000 --- a/src/types/calendar.d.ts +++ /dev/null @@ -1,225 +0,0 @@ -import type dayjs from 'dayjs' -import type { BaseEvent } from '@tarojs/components/types/common' - -// #region Calendar -declare namespace Calendar { - export type DateArg = string | number | Date - - export type classNameType = - | string - | Array - | Record - - export interface Mark { - value: DateArg - } - - export interface ValidDate { - value: DateArg - } - - export interface Item { - value: string - - _value: dayjs.Dayjs - - text: number - - type: number - - marks: Array - - isActive?: boolean - - isToday?: boolean - - isBeforeMin?: boolean - - isAfterMax?: boolean - - isDisabled?: boolean - - isSelected?: boolean - - isSelectedHead?: boolean - - isSelectedTail?: boolean - } - - export interface GroupOptions { - validDates: Array - - marks: Array - - format: string - - selectedDates: Array - - minDate?: DateArg - - maxDate?: DateArg - } - - export type List = Array - - export interface ListInfo { - value: number - - list: List - } - - export interface SelectedDate { - end?: Calendar.DateArg - - start: Calendar.DateArg - } -} - -export default Calendar -export { Calendar } -// #endregion - -// #region AtCalendar -export interface AtCalendarPropsBase { - format?: string - - validDates?: Array - - minDate?: Calendar.DateArg - - maxDate?: Calendar.DateArg - - isSwiper?: boolean - - marks?: Array - - monthFormat?: string - - hideArrow?: boolean - - isVertical?: boolean - - className?: Calendar.classNameType - - onClickPreMonth?: () => void - - onClickNextMonth?: () => void - - onSelectDate?: (item: { value: Calendar.SelectedDate }) => void - - onDayClick?: (item: { value: string }) => void - - onDayLongClick?: (item: { value: string }) => void - - onMonthChange?: (value: string) => void -} - -export interface AtCalendarSingleSelectedProps extends AtCalendarPropsBase { - isMultiSelect?: false - - currentDate?: Calendar.DateArg -} - -export interface AtCalendarMutilSelectedProps extends AtCalendarPropsBase { - isMultiSelect?: true - - currentDate?: Calendar.SelectedDate -} - -export type AtCalendarProps = - | AtCalendarSingleSelectedProps - | AtCalendarMutilSelectedProps - -export interface AtCalendarDefaultProps { - format: string - - isSwiper: boolean - - validDates: Array - - marks: Array - - currentDate: Calendar.DateArg | Calendar.SelectedDate - - monthFormat: string - - hideArrow: boolean - - isVertical: boolean - - isMultiSelect: boolean - - selectedDates: Array -} - -export interface AtCalendarState { - generateDate: number - - selectedDate: Calendar.SelectedDate -} - -export type AtCalendarPropsWithDefaults = AtCalendarProps & -AtCalendarDefaultProps -// #endregion - -// #region AtCalendarController -export interface AtCalendarControllerProps { - generateDate: Calendar.DateArg - - minDate?: Calendar.DateArg - - maxDate?: Calendar.DateArg - - hideArrow: boolean - - monthFormat: string - - onPreMonth: () => void - - onNextMonth: () => void - - onSelectDate: (e: BaseEvent) => void -} - -export interface AtCalendarControllerState {} -// #endregion - -// #region AtCalendarBody -export type AtCalendarBodyListGroup = Array> - -export interface AtCalendarBodyProps { - format: string - - validDates: Array - - marks: Array - - isSwiper: boolean - - minDate?: Calendar.DateArg - - maxDate?: Calendar.DateArg - - isVertical: boolean - - generateDate: number - - selectedDate: Calendar.SelectedDate - - selectedDates: Array | [] - - onDayClick: (item: Calendar.Item) => void - - onSwipeMonth: (vectorCount: number) => void - - onLongClick: (item: Calendar.Item) => void -} - -export interface AtCalendarBodyState { - isAnimate: boolean - - offsetSize: number - - listGroup: AtCalendarBodyListGroup -} -// #endregion diff --git a/src/use/BlueToothCopy.tsx b/src/use/BlueToothCopy.tsx deleted file mode 100644 index 60b76b9..0000000 --- a/src/use/BlueToothCopy.tsx +++ /dev/null @@ -1,489 +0,0 @@ -import Taro from '@tarojs/taro' -import React, { useRef, useState } from 'react' -import { Command } from '@/common/bluetooth/command' -import { uint8ArrayToFloat32, uint8ArrayToHex, waitFor } from '@/common/bluetooth/utils' - -interface params { - init: () => void - state: Object - startScan: () => void - measureAndGetLab: () => any - getAdapterState: () => void - connect: (any) => void - disconnect: () => void -} -const Context = React.createContext(null) - -interface stateStype { - listeners: any - discovering: boolean - available: boolean - connected: any - connecting: any - serviceRule: any - serviceId: any - characteristicRule: any - characteristicId: any - - /** 正在执行的命令 */ - command: any - responseResolve: any - responseReject: any - responseTimer: any - - /** 是否显示蓝牙调试信息 */ - debug: any - // 搜索到的设备 - devices: any - // 取色仪主动返回的数据 - deviceLab: any -} - -const stateObj: stateStype = { - /** 事件监听器 */ - listeners: new Set(), - /** 正在扫描设备 */ - discovering: false, - /** 蓝牙是否可用 */ - available: true, - /** 当前连接的设备 */ - connected: null, - /** 正在连接的设备 */ - connecting: null, - - serviceRule: /^0000FFE0/, - serviceId: null, - characteristicRule: /^0000FFE1/, - characteristicId: null, - - /** 正在执行的命令 */ - command: null, - responseResolve: null, - responseReject: null, - responseTimer: null, - - /** 是否显示蓝牙调试信息 */ - debug: true, - // 搜索到的设备 - devices: [], - // 取色仪主动返回的数据 - deviceLab: null, -} -interface PropsType { - children?: React.ReactNode -} -const BlueToothCopy = (props: PropsType) => { - const refStatus = useRef(stateObj) - const [state, setState] = useState(refStatus.current) - - const changeStatus = (obj: Object): void => { - refStatus.current = { ...refStatus.current, ...obj } - setState({ ...refStatus.current }) - } - /** 打开蓝牙适配器 */ - const openAdapter = () => { - return new Promise((resolve, reject) => { - Taro.openBluetoothAdapter({ - success: resolve, - fail: reject, - }) - }) - } - const subscribe = (cb) => { - if (cb) { - changeStatus({ - listeners: refStatus.current.listeners.add(cb), - }) - } - } - /** - * 推送事件 - * @param {{type: string; data: any}} event - */ - const emit = (event) => { - refStatus.current.listeners.forEach((cb) => { - cb && cb(event) - }) - } - - const init = async() => { - try { - await openAdapter() - } - catch (e) { - changeStatus({ available: false }) - } - - // 绑定事件通知 - Taro.onBluetoothAdapterStateChange((res) => { - emit({ type: 'stateUpdate', detail: res }) - }) - Taro.onBLEConnectionStateChange((res) => { - emit({ type: res.connected ? 'connected' : 'disconnect', detail: res }) - }) - Taro.onBLECharacteristicValueChange(({ value }) => notifySubscriber(value)) - subscribe(async(ev) => { - if (ev.type === 'stateUpdate') { - // 蓝牙状态发生的变化 - changeStatus({ discovering: ev.detail.discovering, available: ev.detail.available }) - } - else if (ev.type === 'disconnect' && refStatus.current.connected && refStatus.current.connected.deviceId === ev.detail.deviceId) { - // 断开连接 - changeStatus({ - connected: null, - serviceId: null, - characteristicId: null, - deviceLab: null, - devices: [], - }) - Taro.showToast({ icon: 'none', title: '蓝牙连接已断开' }) - } - else if (ev.type === 'connected' && refStatus.current.connecting) { - // 连接成功 - changeStatus({ connected: refStatus.current.connecting, connecting: null }) - Taro.showToast({ title: '蓝牙已连接' }) - } - else if (ev.type === 'measure') { - // 监听取色仪主动推送lab - await measureAndGetLab() - } - }) - } - - /** - * 获取蓝牙适配器状态 - * @returns {Promise<{discovering: boolean; available: boolean}>} - */ - const getAdapterState = () => { - return new Promise((resolve, reject) => { - Taro.getBluetoothAdapterState({ - success: resolve, - fail: reject, - }) - }) - } - - // 获取搜索到的设备 - const getDevices = (res) => { - res.devices.forEach((device) => { - // 排除掉已搜索到的设备和名称不合法的设备, 将新发现的设备添加到列表中 - if (/^CM/.test(device.name) && !refStatus.current.devices.find(i => i.deviceId === device.deviceId)) { - changeStatus({ devices: [...refStatus.current.devices, device] }) - } - }) - } - /** - * 启动设备扫描 - * @param {(res: { devices: { name: string, deviceId: string, RSSI: number }[] }) => void} cb - * @param {number} duration - */ - const startScan = (duration = 30000) => { - console.log('开始寻找') - changeStatus({ devices: [] }) - Taro.onBluetoothDeviceFound(getDevices) - return new Promise((resolve, reject) => { - Taro.startBluetoothDevicesDiscovery({ - allowDuplicatesKey: true, - success: resolve, - fail: reject, - }) - - if (duration > 0) { - setTimeout(() => { - Taro.offBluetoothDeviceFound(getDevices) - Taro.stopBluetoothDevicesDiscovery() - console.log('停止搜索') - }, duration) - } - }) - } - /** - * 连接设备 - * @param {{ name: string, deviceId: string, RSSI: number }} device - */ - const connect = async(device) => { - try { - changeStatus({ connecting: device }) - console.log('connecting::', device) - await createConnection(device.deviceId) - await discoverService(device.deviceId) - await discoverCharacteristic(device.deviceId) - await notifyCharacteristicValueChange(device.deviceId) - } - catch (e) { - changeStatus({ connecting: null }) - Taro.showToast({ icon: 'none', title: '蓝牙连接失败' }) - throw e - } - } - - /** 断开当前连接的设备 */ - const disconnect = async() => { - if (!refStatus.current.connected && !refStatus.current.connecting) { return } - if (refStatus.current.connected) { - await closeConnection(refStatus.current.connected.deviceId) - resetCommand() - changeStatus({ - connected: null, - serviceId: null, - characteristicId: null, - devices: [], - deviceLab: null, - }) - } - - if (refStatus.current.connecting) { - await closeConnection(refStatus.current.connecting.deviceId) - changeStatus({ connecting: null }) - } - } - - /** 创建 BLE 连接 */ - function createConnection(deviceId) { - return new Promise((resolve, reject) => { - Taro.createBLEConnection({ - deviceId, - timeout: 2000, - success: resolve, - fail: reject, - }) - }) - } - - /** 关闭 BLE 连接 */ - function closeConnection(deviceId) { - return new Promise((resolve, reject) => { - Taro.closeBLEConnection({ - deviceId, - success: resolve, - fail: reject, - }) - }) - } - - /** 搜索服务 */ - function discoverService(deviceId) { - return new Promise((resolve, reject) => { - Taro.getBLEDeviceServices({ - deviceId, - success: ({ services }) => { - const service = services.find(i => refStatus.current.serviceRule.test(i.uuid)) - if (!service) { - reject(new Error('服务不可用')) - } - else { - changeStatus({ serviceId: service.uuid }) - resolve(service) - } - }, - fail: reject, - }) - }) - } - - /** 搜索特征 */ - function discoverCharacteristic(deviceId) { - return new Promise((resolve, reject) => { - Taro.getBLEDeviceCharacteristics({ - deviceId, - serviceId: refStatus.current.serviceId, - success: ({ characteristics }) => { - const characteristic = characteristics.find(i => refStatus.current.characteristicRule.test(i.uuid)) - if (!characteristic) { - reject(new Error('特征不可用')) - } - else { - changeStatus({ characteristicId: characteristic.uuid }) - resolve(characteristic) - } - }, - fail: reject, - }) - }) - } - - /** 启动特征通知 */ - function notifyCharacteristicValueChange(deviceId, stateParm = true) { - return new Promise((resolve, reject) => { - Taro.notifyBLECharacteristicValueChange({ - deviceId, - serviceId: refStatus.current.serviceId, - characteristicId: refStatus.current.characteristicId, - state: stateParm, - success: resolve, - fail: reject, - }) - }) - } - - /** - * 通知订阅器 - * @param {ArrayBuffer} buffer - */ - function notifySubscriber(buffer) { - if (refStatus.current.command) { - if (refStatus.current.debug) { - console.log(`[BLE RESP] ${uint8ArrayToHex(new Uint8Array(buffer))}`) - } - refStatus.current.command.fillResponse(buffer) - if (refStatus.current.command.isComplete) { - if (refStatus.current.command.isValid && refStatus.current.responseResolve) { - refStatus.current.responseResolve(refStatus.current.command.response) - } - else if (!refStatus.current.command.isValid) { - refStatus.current.responseReject(new Error('无效数据')) - } - resetCommand() - } - } - else { - const uint8Array = new Uint8Array(buffer) - if (uint8Array[0] === 0xBB && uint8Array[1] === 1 && uint8Array[3] === 0) { - const ev = { type: 'measure', detail: { mode: uint8Array[2] } } - emit(ev) - } - } - } - - /** - * 发送命令 - * @param {Command}} command - * @returns {Promise} - */ - function exec(command) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve, reject) => { - if (refStatus.current.command) { - reject(new Error('正在执行其他命令')) - } - else { - try { - refStatus.current.command = command - const data = command.data - for (let i = 0; i < data.length; i++) { - await sendData(data[i]) - } - - if (command.responseSize <= 0) { - resolve(true) - resetCommand() - } - else { - refStatus.current.responseReject = reject - refStatus.current.responseResolve = resolve - refStatus.current.responseTimer = setTimeout(() => { - reject(new Error('命令响应超时')) - resetCommand() - }, command.timeout) - } - } - catch (e) { - reject(e) - } - } - }) - } - - /** - * 发送命令 - * @param {ArrayBuffer} buffer - */ - function sendData(buffer) { - if (refStatus.current.debug) { - console.log(`[BLE SEND] ${uint8ArrayToHex(new Uint8Array(buffer))}`) - } - return new Promise((resolve, reject) => { - console.log('current:::', refStatus.current) - Taro.writeBLECharacteristicValue({ - deviceId: refStatus.current.connected.deviceId, - serviceId: refStatus.current.serviceId, - characteristicId: refStatus.current.characteristicId, - value: buffer, - success: resolve, - fail: reject, - }) - }) - } - - function resetCommand() { - if (refStatus.current.responseTimer) { - clearTimeout(refStatus.current.responseTimer) - } - changeStatus({ - command: null, - responseResolve: null, - responseReject: null, - responseTimer: null, - }) - } - - /** - * 测量 - * @param {number} mode - * @returns {Promise} - */ - async function measure(mode = 0) { - console.log('current1:::', Command.WakeUp) - await exec(Command.WakeUp) - console.log('current2:::', Command.WakeUp) - await waitFor(50) - console.log('current3:::', Command.WakeUp) - return await exec(Command.measure(mode)) - } - - /** - * 获取测量的 lab 值 - * @param {number} mode - * @returns {Promise<{ L: number, a: number, b: number }>} - */ - async function getLab(mode = 0) { - await exec(Command.WakeUp) - await waitFor(50) - const data: any = await exec(Command.getLab(mode)) - return { - L: uint8ArrayToFloat32(data.slice(5, 9)), - a: uint8ArrayToFloat32(data.slice(9, 13)), - b: uint8ArrayToFloat32(data.slice(13, 17)), - } - } - - /** - * 测量并获取 lab 值 - * @param {number} mode - * @returns {Promise<{L: number, a: number, b: number}>} - */ - async function measureAndGetLab(mode = 0) { - await measure(mode) - await waitFor(50) - const lab = await getLab(mode) - console.log('lab2::', lab) - changeStatus({ deviceLab: lab }) - return lab - } - - return ( - - ) -} -export default BlueToothCopy - -export const useBluetoothTwo = () => { - const res = React.useContext(Context) - if (res) { - return { ...res } - } - else { - return {} - } -} diff --git a/src/use/contextBlueTooth.tsx b/src/use/contextBlueTooth.tsx deleted file mode 100644 index 355f7cf..0000000 --- a/src/use/contextBlueTooth.tsx +++ /dev/null @@ -1,492 +0,0 @@ -import Taro from '@tarojs/taro' -import React, { useRef, useState } from 'react' -import { Command } from '@/common/bluetooth/command' -import { uint8ArrayToFloat32, uint8ArrayToHex, waitFor } from '@/common/bluetooth/utils' - -interface params { - init: () => void - state: Object - startScan: () => void - measureAndGetLab: () => any - getAdapterState: () => void - connect: (any) => void - disconnect: () => void -} -const Context = React.createContext(null) - -export interface BluetoothStateType { - listeners: any - discovering: boolean - available: boolean - connected: any - connecting: any - serviceRule: any - serviceId: any - characteristicRule: any - characteristicId: any - - /** 正在执行的命令 */ - command: any - responseResolve: any - responseReject: any - responseTimer: any - - /** 是否显示蓝牙调试信息 */ - debug: any - // 搜索到的设备 - devices: any - // 取色仪主动返回的数据 - deviceLab: any -} - -const stateObj: BluetoothStateType = { - /** 事件监听器 */ - listeners: new Set(), - /** 正在扫描设备 */ - discovering: false, - /** 蓝牙是否可用 */ - available: true, - /** 当前连接的设备 */ - connected: null, - /** 正在连接的设备 */ - connecting: null, - - serviceRule: /^0000FFE0/, - serviceId: null, - characteristicRule: /^0000FFE1/, - characteristicId: null, - - /** 正在执行的命令 */ - command: null, - responseResolve: null, - responseReject: null, - responseTimer: null, - - /** 是否显示蓝牙调试信息 */ - debug: true, - // 搜索到的设备 - devices: [], - // 取色仪主动返回的数据 - deviceLab: null, -} -interface PropsType { - children?: React.ReactNode -} -const ContextBlueTooth = (props: PropsType) => { - const refStatus = useRef(stateObj) - const [state, setState] = useState(refStatus.current) - - const changeStatus = (obj: Object): void => { - refStatus.current = { ...refStatus.current, ...obj } - setState({ ...refStatus.current }) - } - - /** 打开蓝牙适配器 */ - const openAdapter = () => { - return new Promise((resolve, reject) => { - Taro.openBluetoothAdapter({ - success: resolve, - fail: reject, - }) - }) - } - - /** - * 推送事件 - * @param {{type: string; data: any}} event - */ - const emit = (event) => { - refStatus.current.listeners.forEach((cb) => { - cb && cb(event) - }) - } - - const subscribe = (cb) => { - if (cb) { - changeStatus({ - listeners: refStatus.current.listeners.add(cb), - }) - } - } - - const init = async() => { - try { - await openAdapter() - } - catch (e) { - changeStatus({ available: false }) - } - - // 绑定事件通知 - Taro.onBluetoothAdapterStateChange((res) => { - emit({ type: 'stateUpdate', detail: res }) - }) - Taro.onBLEConnectionStateChange((res) => { - emit({ type: res.connected ? 'connected' : 'disconnect', detail: res }) - }) - Taro.onBLECharacteristicValueChange(({ value }) => notifySubscriber(value)) - subscribe(async(ev) => { - if (ev.type === 'stateUpdate') { - // 蓝牙状态发生的变化 - changeStatus({ discovering: ev.detail.discovering, available: ev.detail.available }) - } - else if (ev.type === 'disconnect' && refStatus.current.connected && refStatus.current.connected.deviceId === ev.detail.deviceId) { - // 断开连接 - changeStatus({ - connected: null, - serviceId: null, - characteristicId: null, - deviceLab: null, - devices: [], - }) - Taro.showToast({ icon: 'none', title: '蓝牙连接已断开' }) - } - else if (ev.type === 'connected' && refStatus.current.connecting) { - // 连接成功 - changeStatus({ connected: refStatus.current.connecting, connecting: null }) - Taro.showToast({ title: '蓝牙已连接' }) - } - else if (ev.type === 'measure') { - // 监听取色仪主动推送lab - await measureAndGetLab() - } - }) - } - - /** - * 获取蓝牙适配器状态 - * @returns {Promise<{discovering: boolean; available: boolean}>} - */ - const getAdapterState = () => { - return new Promise((resolve, reject) => { - Taro.getBluetoothAdapterState({ - success: resolve, - fail: reject, - }) - }) - } - - // 获取搜索到的设备 - const getDevices = (res) => { - res.devices.forEach((device) => { - // 排除掉已搜索到的设备和名称不合法的设备, 将新发现的设备添加到列表中 - if (/^CM/.test(device.name) && !refStatus.current.devices.find(i => i.deviceId === device.deviceId)) { - changeStatus({ devices: [...refStatus.current.devices, device] }) - } - }) - } - /** - * 启动设备扫描 - * @param {(res: { devices: { name: string, deviceId: string, RSSI: number }[] }) => void} cb - * @param {number} duration - */ - const startScan = (duration = 30000) => { - console.log('开始寻找') - changeStatus({ devices: [] }) - Taro.onBluetoothDeviceFound(getDevices) - return new Promise((resolve, reject) => { - Taro.startBluetoothDevicesDiscovery({ - allowDuplicatesKey: true, - success: resolve, - fail: reject, - }) - - if (duration > 0) { - setTimeout(() => { - Taro.offBluetoothDeviceFound(getDevices) - Taro.stopBluetoothDevicesDiscovery() - console.log('停止搜索') - }, duration) - } - }) - } - /** - * 连接设备 - * @param {{ name: string, deviceId: string, RSSI: number }} device - */ - const connect = async(device) => { - try { - changeStatus({ connecting: device }) - console.log('connecting::', device) - await createConnection(device.deviceId) - await discoverService(device.deviceId) - await discoverCharacteristic(device.deviceId) - await notifyCharacteristicValueChange(device.deviceId) - } - catch (e) { - changeStatus({ connecting: null }) - Taro.showToast({ icon: 'none', title: '蓝牙连接失败' }) - throw e - } - } - - /** 断开当前连接的设备 */ - const disconnect = async() => { - if (!refStatus.current.connected && !refStatus.current.connecting) { return } - if (refStatus.current.connected) { - await closeConnection(refStatus.current.connected.deviceId) - resetCommand() - changeStatus({ - connected: null, - serviceId: null, - characteristicId: null, - devices: [], - deviceLab: null, - }) - } - - if (refStatus.current.connecting) { - await closeConnection(refStatus.current.connecting.deviceId) - changeStatus({ connecting: null }) - } - } - - /** 创建 BLE 连接 */ - function createConnection(deviceId) { - return new Promise((resolve, reject) => { - Taro.createBLEConnection({ - deviceId, - timeout: 2000, - success: resolve, - fail: reject, - }) - }) - } - - /** 关闭 BLE 连接 */ - function closeConnection(deviceId) { - return new Promise((resolve, reject) => { - Taro.closeBLEConnection({ - deviceId, - success: resolve, - fail: reject, - }) - }) - } - - /** 搜索服务 */ - function discoverService(deviceId) { - return new Promise((resolve, reject) => { - Taro.getBLEDeviceServices({ - deviceId, - success: ({ services }) => { - const service = services.find(i => refStatus.current.serviceRule.test(i.uuid)) - if (!service) { - reject(new Error('服务不可用')) - } - else { - changeStatus({ serviceId: service.uuid }) - resolve(service) - } - }, - fail: reject, - }) - }) - } - - /** 搜索特征 */ - function discoverCharacteristic(deviceId) { - return new Promise((resolve, reject) => { - Taro.getBLEDeviceCharacteristics({ - deviceId, - serviceId: refStatus.current.serviceId, - success: ({ characteristics }) => { - const characteristic = characteristics.find(i => refStatus.current.characteristicRule.test(i.uuid)) - if (!characteristic) { - reject(new Error('特征不可用')) - } - else { - changeStatus({ characteristicId: characteristic.uuid }) - resolve(characteristic) - } - }, - fail: reject, - }) - }) - } - - /** 启动特征通知 */ - function notifyCharacteristicValueChange(deviceId, stateParm = true) { - return new Promise((resolve, reject) => { - Taro.notifyBLECharacteristicValueChange({ - deviceId, - serviceId: refStatus.current.serviceId, - characteristicId: refStatus.current.characteristicId, - state: stateParm, - success: resolve, - fail: reject, - }) - }) - } - - /** - * 通知订阅器 - * @param {ArrayBuffer} buffer - */ - function notifySubscriber(buffer) { - if (refStatus.current.command) { - if (refStatus.current.debug) { - console.log(`[BLE RESP] ${uint8ArrayToHex(new Uint8Array(buffer))}`) - } - refStatus.current.command.fillResponse(buffer) - if (refStatus.current.command.isComplete) { - if (refStatus.current.command.isValid && refStatus.current.responseResolve) { - refStatus.current.responseResolve(refStatus.current.command.response) - } - else if (!refStatus.current.command.isValid) { - refStatus.current.responseReject(new Error('无效数据')) - } - resetCommand() - } - } - else { - const uint8Array = new Uint8Array(buffer) - if (uint8Array[0] === 0xBB && uint8Array[1] === 1 && uint8Array[3] === 0) { - const ev = { type: 'measure', detail: { mode: uint8Array[2] } } - emit(ev) - } - } - } - - /** - * 发送命令 - * @param {Command}} command - * @returns {Promise} - */ - function exec(command) { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve, reject) => { - if (refStatus.current.command) { - reject(new Error('正在执行其他命令')) - } - else { - try { - refStatus.current.command = command - const data = command.data - for (let i = 0; i < data.length; i++) { - await sendData(data[i]) - } - - if (command.responseSize <= 0) { - resolve(true) - resetCommand() - } - else { - refStatus.current.responseReject = reject - refStatus.current.responseResolve = resolve - refStatus.current.responseTimer = setTimeout(() => { - reject(new Error('命令响应超时')) - resetCommand() - }, command.timeout) - } - } - catch (e) { - reject(e) - } - } - }) - } - - /** - * 发送命令 - * @param {ArrayBuffer} buffer - */ - function sendData(buffer) { - if (refStatus.current.debug) { - console.log(`[BLE SEND] ${uint8ArrayToHex(new Uint8Array(buffer))}`) - } - return new Promise((resolve, reject) => { - console.log('current:::', refStatus.current) - Taro.writeBLECharacteristicValue({ - deviceId: refStatus.current.connected.deviceId, - serviceId: refStatus.current.serviceId, - characteristicId: refStatus.current.characteristicId, - value: buffer, - success: resolve, - fail: reject, - }) - }) - } - - function resetCommand() { - if (refStatus.current.responseTimer) { - clearTimeout(refStatus.current.responseTimer) - } - changeStatus({ - command: null, - responseResolve: null, - responseReject: null, - responseTimer: null, - }) - } - - /** - * 测量 - * @param {number} mode - * @returns {Promise} - */ - async function measure(mode = 0) { - console.log('current1:::', Command.WakeUp) - await exec(Command.WakeUp) - console.log('current2:::', Command.WakeUp) - await waitFor(50) - console.log('current3:::', Command.WakeUp) - return await exec(Command.measure(mode)) - } - - /** - * 获取测量的 lab 值 - * @param {number} mode - * @returns {Promise<{ L: number, a: number, b: number }>} - */ - async function getLab(mode = 0) { - await exec(Command.WakeUp) - await waitFor(50) - const data: any = await exec(Command.getLab(mode)) - return { - L: uint8ArrayToFloat32(data.slice(5, 9)), - a: uint8ArrayToFloat32(data.slice(9, 13)), - b: uint8ArrayToFloat32(data.slice(13, 17)), - } - } - - /** - * 测量并获取 lab 值 - * @param {number} mode - * @returns {Promise<{L: number, a: number, b: number}>} - */ - async function measureAndGetLab(mode = 0) { - await measure(mode) - await waitFor(50) - const lab = await getLab(mode) - console.log('lab2::', lab) - changeStatus({ deviceLab: lab }) - return lab - } - - return ( - - ) -} -export default ContextBlueTooth - -export const useBluetooth = () => { - const res = React.useContext(Context) - if (res) { - return { ...res } - } - else { - return {} - } -} diff --git a/src/use/useCheckAuthorize.tsx b/src/use/useCheckAuthorize.tsx deleted file mode 100644 index 49df196..0000000 --- a/src/use/useCheckAuthorize.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import Taro from '@tarojs/taro' -import { memo, useCallback, useState } from 'react' -import { alert } from '@/common/common' - -type Scope = - | 'scope.userLocation' - | 'scope.userLocation' - | 'scope.record' - | 'scope.camera' - | 'scope.bluetooth' - | 'scope.writePhotosAlbum' - | 'scope.addPhoneContact' - | 'scope.addPhoneCalendar' - | 'scope.werun' - | 'scope.address' - | 'scope.invoiceTitle' - | 'scope.invoice' - | 'scope.userInfo' -interface Param { - scope: Scope - msg: string // 检查不通过时警告 -} -export default ({ scope, msg }: Param) => { - // 这个hook微信授权检查授权 - const check = useCallback(() => { - return new Promise((resolve, reject) => { - Taro.getSetting({ - success: (res) => { - if (res.authSetting[scope]) { - resolve(true) - } - else if (res.authSetting[scope] === undefined) { - Taro.authorize({ - scope, - success() { - resolve(true) - }, - fail() { - alert.none(msg) - // eslint-disable-next-line prefer-promise-reject-errors - reject(false) - }, - }) - } - else { - Taro.openSetting({ - success(res) { - if (res.authSetting[scope]) { - resolve(true) - } - else { - alert.none(msg) - // eslint-disable-next-line prefer-promise-reject-errors - reject(false) - } - }, - }) - } - }, - }) - }) - }, [scope]) - - return { - check, - } -} diff --git a/src/use/useCommon.ts b/src/use/useCommon.ts deleted file mode 100644 index 4a08a57..0000000 --- a/src/use/useCommon.ts +++ /dev/null @@ -1,227 +0,0 @@ -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import dayjs from 'dayjs' -import type { SetStateAction } from 'react' -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import { useDispatch } from 'react-redux' -import type { Dispatch } from 'redux' -import { useSelector } from '@/reducers/hooks' -import { SubscriptionMessageApi } from '@/api/index' -import type { TabBarAction, TabBarIndex } from '@/reducers/tabBar' -import { TabBarType } from '@/constants/tabbar' -// 倒计时hook -export const useTimeCountDown = () => { - const [showTime, setShowTime] = useState({ - DD: '', - HH: '', - MM: '', - SS: '', - }) - const [timeStatus, setTimeStatus] = useState<0 | 1 | 2>(0) // 倒计时状体 0:倒计时未开始 1:倒计时中, 2:倒计时已结束 - const timeObj: any = useRef() - const endTime = useRef('') - const count_down = () => { - const startData = dayjs() - const endDate = dayjs(endTime.current) - setTimeStatus(() => 1) - if (startData >= endDate) { - clearInterval(timeObj.current) - setShowTime(e => ({ ...e, DD: '00', HH: '00', MM: '00', SS: '00' })) - setTimeStatus(() => 2) - return false - } - const _dd = endDate.diff(startData, 'day') - const _hh = endDate.diff(startData, 'hour') - const _mm = endDate.diff(startData, 'minute') - const _ss = endDate.diff(startData, 'second') - // 转换 - const hh = _hh - _dd * 24 - const mm = _mm - _hh * 60 - const ss = _ss - _mm * 60 - // 格式化 - const DD = (`00${_dd}`).slice(-2) - const HH = (`00${hh}`).slice(-2) - const MM = (`00${mm}`).slice(-2) - const SS = (`00${ss}`).slice(-2) - // console.log('endTime::', `${DD}-${HH}-${MM}-${SS}`) - setShowTime(e => ({ ...e, DD, HH, MM, SS })) - } - const onStart = (val = '') => { - // console.log('time:::', val) - endTime.current = val - if (endTime.current) { - clearInterval(timeObj.current) - timeObj.current = setInterval(() => { - count_down() - }, 1000) - } - } - useEffect(() => { - return () => { - clearInterval(timeObj.current) - } - }, []) - - return { - showTime, - onStart, - timeStatus, - } -} - -// 订阅消息hook -export const UseSubscriptionMessage = () => { - const { fetchData: fetchDataMessage } = SubscriptionMessageApi() - const openSubscriptionMessage = ({ orderId = 0, scenes = 0 }: { orderId?: number; scenes: number }) => { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve) => { - const params: { sale_order_id?: number; scenes?: number } = {} - orderId && (params.sale_order_id = orderId) - params.scenes = scenes - const res = await fetchDataMessage(params) - if (res.success && res.data.TemplateID && res.data.TemplateID.length > 0) { - Taro.requestSubscribeMessage({ - tmplIds: res.data.TemplateID, - success: (res) => { - console.log('success res', res) - if (CURRENT_ENV !== 'production') { - Taro.showToast({ - title: '订阅成功', - icon: 'success', - }) - } - }, - complete(res) { - resolve(res) - }, - }) - } - else { - resolve(true) - } - }) - } - - return { - openSubscriptionMessage, - } -} - -type NormalPropsType = Record -interface Options { - deep?: boolean -} - -const defaultOptions = { - deep: false, -} -/** - * 适用于 memo 第二个入参 手动触发渲染 - * 目前是判断 引用地址 是否相同 TODO: 判断值是否相同 - * @param options 配置 - * @returns {(prevProps: NormalPropsType, nextProps: NormalPropsType) => boolean} 回调函数 - */ -export const useNeedMemoCallback = (options: Options = defaultOptions) => { - return (prevProps: NormalPropsType, nextProps: NormalPropsType) => { - // console.log(options) - // console.log('memo==>', prevProps, nextProps) - let needMemoized = true - // 引用类型 - // function array object - // 基本类型 - // number boolean string number symbol null undefined - - // 循环props对象 - const handleDiff = () => { - for (const [key, value] of Object.entries(prevProps)) { - if (!Object.is(value, nextProps[key])) { - // console.log('函数不相等',value === nextProps[key]) - // console.log('asdfasdf',value) - needMemoized = false - break - } - } - // Object.entries(prevProps).forEach(([key, value]) => { - // if (!nextProps.hasOwnProperty(key)) { - // needMemoized = false - // // 新增的属性 - // if (Object.prototype.toString.call(value) === '[object Object]') { - // parent[key] = {} - // } else if (Object.prototype.toString.call(value) === '[object Array]') { - // parent[key] = [] - // } - // } - // if (typeof data[key] === 'object') { - // o[key] = internalSetData(parent[key], data[key]) - // } else { - // // 核心处理逻辑 - // // key == data第一层 如果要做到data第二层呢?所以需要递归 - // if (parent[key] != data[key]) { - // o[key] = data[key] - // changed = true - // } - // } - // }) - } - handleDiff() - return needMemoized - } -} - -interface UsePropsValueOptions { - value?: T - defaultValue: T - onChange?: (v: T) => void -} - -export function usePropsValue(options: UsePropsValueOptions) { - const { value, defaultValue, onChange } = options - - const [, setForceUpdate] = useState({}) - - const stateRef = useRef(value !== undefined ? value : defaultValue) - if (value !== undefined) { - stateRef.current = value - } - - const setState = useCallback((v: SetStateAction, forceTrigger = false) => { - // `forceTrigger` 意思是 触发 `onChange` 不管 `v` 是否和 `stateRef.current` 相等 - const nextValue = typeof v === 'function' ? (v as (prevState: T) => T)(stateRef.current) : v - if (!forceTrigger && nextValue === stateRef.current) { return } - stateRef.current = nextValue - setForceUpdate({}) - return onChange?.(nextValue) - }, []) - return [stateRef.current, setState] as const -} - -// 点击自定义 tab 时触发。 -export function useCustomTabItemTap(callback) { - const { selectedId, tabItem } = useSelector((state) => { - return state.tabBarData - }) - const targetPagePayload = tabItem?.find(item => item.id === selectedId) - callback({ - index: targetPagePayload?.id, - pagePath: targetPagePayload?.pagePath, - text: targetPagePayload?.text, - }) -} -export const useCheckTabBarSelectStatus = (tabBarIndex: TabBarIndex) => { - const dispatch = useDispatch>() - - useDidShow(() => { - checkTabBarSelectStatus() - }) - - const { selectedId, tabItem } = useSelector(state => state.tabBarData) - - const checkTabBarSelectStatus = () => { - if (selectedId !== tabBarIndex) { - dispatch({ type: TabBarType.SET_SELECTED, data: { selectedId: tabBarIndex } }) - } - } - return { - selectedId, - checkTabBarSelectStatus, - } -} diff --git a/src/use/useCommonData.ts b/src/use/useCommonData.ts deleted file mode 100644 index 0c87b2a..0000000 --- a/src/use/useCommonData.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { useDispatch } from 'react-redux' -import { useCallback, useState } from 'react' -import { CLEAR_SHOPCOUNT, SET_SHOPCOUNT } from '@/constants/common' -import { DataParam } from '@/reducers/commonData' -// import { GetShoppingCartApi } from '@/api/shopCart' -import { useSelector } from '@/reducers/hooks' - -export default () => { - const commonData = useSelector(state => state.commonData) - const dispatch = useDispatch() - - const setShopCount = (shopCount: number) => { - dispatch({ type: SET_SHOPCOUNT, data: { shopCount } }) - } - - const removeShopCount = () => { - dispatch({ type: CLEAR_SHOPCOUNT }) - } - - // const { fetchData: fetchDataShopCount } = GetShoppingCartApi() - const getShopCount = async() => { - // 获取购物车数据数量 - // const { data } = await fetchDataShopCount() - const color_list = data.color_list || [] - setShopCount(color_list.length) - } - - return { - setShopCount, - removeShopCount, - getShopCount, - commonData, - } -} diff --git a/src/use/useGetCode.ts b/src/use/useGetCode.ts deleted file mode 100644 index a1b8013..0000000 --- a/src/use/useGetCode.ts +++ /dev/null @@ -1,38 +0,0 @@ -import Taro, { useRouter } from '@tarojs/taro' -import { alert } from '@/common/common' -import { MpuserwechatBinding } from '@/api/login/login' -import useUserInfo from '@/use/useUserInfo' - -export default () => { - const { fetchData: loginFetch } = MpuserwechatBinding() - const { setToken, setSessionKey, setUserInfo, userInfo } = useUserInfo() - - const UseGetCode = () => { - Taro.login({ - async success(res) { - const code = res.code - if (code) { - console.log(`获取用户登录凭证:${code}`) - const state = await loginFetch({ js_code: code, user_id: userInfo.userInfo.user_id }) - if (state.data) { - // setToken(state.data.token) - setSessionKey(state.data.session_key) - // setUserInfo({ ...userInfo.userInfo, token: state?.data?.token || '' }) - alert.none('链接成功,可开始接收服务信息啦!') - } - else { - return alert.none(`${state?.msg}`) - } - } - else { - console.log(`获取用户登录态失败:${res.errMsg}`) - return alert.error(`${res?.errMsg}`) - } - }, - }) - } - - return { - UseGetCode, - } -} diff --git a/src/use/useHttp.ts b/src/use/useHttp.ts deleted file mode 100644 index f97184a..0000000 --- a/src/use/useHttp.ts +++ /dev/null @@ -1,224 +0,0 @@ -import Taro, { useRouter } from '@tarojs/taro' -import { useEffect, useRef, useState } from 'react' -import qs from 'qs' -import useUserInfo from './useUserInfo' -import useLogin from './useLogin' -import useLoginRequest from './useLoginRequest' -import { BASE_URL, WX_APPID } from '@/common/constant' - -interface Params { - code: string | null - success: boolean - data: any - msg: string - loading: boolean | null - error: any - query: any - filter: any - sort: any - total: number - multiple: boolean // 请求多次 - count: number // 第几次请求 - token: string // token - page?: number - pageSize?: number -} -type OptionData = Record | any[] | null -interface option { - url?: string - method?: 'get' | 'post' | 'put' | 'delete' - type?: string - data?: OptionData - page?: number - pageSize?: number - pagination?: boolean - base_url?: string - apiMsgStatus?: boolean -} - -/** - * 返回状态信息,根据 http 状态错 - * @param {Number} status - * @returns - */ -const showStatus = (status) => { - let message = '' - switch (status) { - case 400: - message = '请求错误(400)' - break - case 401: - message = '未授权,请重新登录(401)' - break - case 403: - message = '拒绝访问(403)' - break - case 404: - message = '请求出错(404)' - break - case 408: - message = '请求超时(408)' - break - case 500: - message = '服务器错误(500)' - break - case 501: - message = '服务未实现(501)' - break - case 502: - message = '网络错误(502)' - break - case 503: - message = '服务不可用(503)' - break - case 504: - message = '网络超时(504)' - break - case 505: - message = 'HTTP版本不受支持(505)' - break - default: - message = `连接出错(${status})!` - } - return `${message},请检查网络或联系管理员!` -} - -/** - * axios 请求状态封装,返回响应式数据 fetch(), loading, error, code, msg 等常用方法/状态 - * @param {Object} options 对象 - * @param {String} options.url 请求的URL - * @param {String} options.method 请求的方法 - * @param {Object} options.data 请求的参数 - * @returns {Object} 返回fetch(), loading, error, code, msg - */ -export const useRequest = ( - options: option = { - url: '/', - method: 'get', - type: 'json', - data: {}, - page: 1, - pageSize: 24, - pagination: false, // 是否分页 - base_url: '', - apiMsgStatus: true, // 是否直接弹出后端错误 - }, -) => { - options.url = `${options.base_url || BASE_URL}${options.url}` - const params: Params = { - code: null, // 业务码 - success: false, // 请求是否成功 - data: {}, - msg: '', - loading: null, - error: null, - query: {}, - filter: null, - sort: '', - page: options.page || 1, - pageSize: options.pageSize || 24, - total: 0, - multiple: true, // 请求多次 - count: 0, // 第几次请求 - token: '', // token - } - - const stateRef = useRef({ ...params }) - const [state, setState] = useState({ ...stateRef.current }) - const { removeToken, removeSessionKey, removeUserInfo } = useUserInfo() - const { login } = useLoginRequest() - - // 请求函数 - const fetchData = async(sub_options?: any) => { - stateRef.current.loading = true - setState(e => ({ ...e, loading: true })) - stateRef.current.query = { - ...sub_options, - ...(options.pagination && { - page: stateRef.current.page, - size: stateRef.current.pageSize, - }), - ...stateRef.current.filter, - ...stateRef.current.sort, - } - try { - const token = Taro.getStorageSync('token') - const q = { - ...options, - ...{ - header: { - Platform: 3, - Appid: WX_APPID, - Authorization: token || stateRef.current.token, - }, - }, - ...(options.method?.toUpperCase() == 'GET' - ? { - data: stateRef.current.query, - } - : { - data: options.type?.toUpperCase() == 'FORMDATA' ? qs.stringify(stateRef.current.query) : stateRef.current.query, - }), - } - const result = await Taro.request(q as any) - const { statusCode } = result - const { code, msg, data } = result.data - if (statusCode === 200) { - stateRef.current.success = code === 0 - stateRef.current.code = code - stateRef.current.msg = msg - stateRef.current.data = data - stateRef.current.total = data?.list ? data?.total : 0 - if (code !== 0) { - options.apiMsgStatus !== false - && Taro.showToast({ - title: `${msg}`, - icon: 'none', - }) - console.log('错误::', msg) - } - } - else { - if (statusCode === 401) { - removeToken() - // removeSessionKey() - removeUserInfo() - // 跳转回登录页面 - Taro.reLaunch({ - url: '/pages/login/index', - }) - // 这一步是微信授权登录的步骤,如果执行通过了就不需要重定向到login页面了 - // 但是因为现在还没有规划微信授权登录这一步所以注释掉,直接重定向到login页面 - // 2022-11-22 - // login().catch((err)=>{ - // if (err){ - // Taro.reLaunch({ - // url: '/pages/login/index', - // }) - // } - // }) - } - else { - Taro.showToast({ - title: `错误:${showStatus(statusCode)}`, - icon: 'none', - }) - } - } - } - catch (e) { - stateRef.current.success = false - stateRef.current.error = true - stateRef.current.msg = e.errMsg - console.log('后台错误信息::', e.errMsg) - } - stateRef.current.error = false - stateRef.current.loading = false - setState(() => ({ ...stateRef.current })) - return stateRef.current - } - return { - fetchData, - state, - } -} diff --git a/src/use/useLogin.ts b/src/use/useLogin.ts deleted file mode 100644 index 254361d..0000000 --- a/src/use/useLogin.ts +++ /dev/null @@ -1,136 +0,0 @@ -import Taro, { useDidShow, useRouter } from '@tarojs/taro' -import useUserInfo from './useUserInfo' -import useLoginRequest from './useLoginRequest' -import { BindingCompanyApi, GetAdminUserInfoApi, GetPhoneNumberApi, GetWxUserInfoApi } from '@/api/user' -import { SHARE_SCENE } from '@/common/enum' -import { GetShortCodeApi } from '@/api/share' -import { alert } from '@/common/common' -import { LoginApi } from '@/api/login' -import { IMG_CND_Prefix } from '@/common/constant' - -export default () => { - const { setUserInfo, setAdminUserInfo, setSortCode, userInfo } = useUserInfo() - // 获取分享码(右上角分享码) - const { SharePage } = SHARE_SCENE - const { fetchData: fetchDataShortCode } = GetShortCodeApi() - const getShortCode = async(user_id) => { - const { data: resPage } = await fetchDataShortCode({ share_user_id: user_id, type: SharePage.value }) - setSortCode({ ...userInfo.sort_code, shareShortPage: { title: '打造面料爆品 专注客户服务', code: resPage.md5_key, img: `${IMG_CND_Prefix}/mall/share_img_01.png` } }) - } - - // 获取用户信息 - const { fetchData: FetchData } = GetAdminUserInfoApi() - const getAdminUserInfo = async() => { - const res = await FetchData() - setAdminUserInfo({ ...res.data }) - getShortCode(res.data.user_id) - } - // 登录请求 - const { login } = useLoginRequest() - // const {fetchData:login} = LoginApi() - const wxLogin = async() => { - try { - await login() - getAdminUserInfo() - } - catch (e) { - console.log('登录失败::', e) - } - } - - // 登录加checkLogin检查 - const checkLogin = () => { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve) => { - if (!userInfo.token) { - await wxLogin() - resolve(true) - } - else { - // 这个东西不要打开,checkSession有调用频率问题 - // Taro.checkSession({ - // success: async () => { - // resolve(true) - // if(!userInfo.adminUserInfo) getAdminUserInfo() - // }, - // fail: async () => { - // await wxLogin() - // resolve(true) - // } - // }) - } - }) - } - - // 获取用户头像等信息数据 - const { fetchData: fetchDataUserInfo } = GetWxUserInfoApi() - const getSelfUserInfo = async() => { - return new Promise((resolve, reject) => { - if (userInfo.adminUserInfo?.is_authorize_name) { - resolve(true) - return true - } - Taro.getUserProfile({ - desc: '用于完善会员资料', - success: async(res) => { - if (!userInfo.session_key) { - await wxLogin() - } - const user_res = await fetchDataUserInfo({ - session_key: userInfo.session_key, - raw_data: res.rawData, - signature: res.signature, - encrypted_data: res.encryptedData, - iv: res.iv, - }) - if (user_res.success) { - setUserInfo({ ...user_res.data }) - getAdminUserInfo() - resolve(true) - } - else { - reject(user_res.msg) - } - }, - fail: (e) => { - console.log('授权失败::', e) - reject(e.errMsg) - }, - }) - }) - } - - // 获取手机号码 - const { fetchData: fetchDataUserPhone } = GetPhoneNumberApi() - const { fetchData: fetchBindingCompany } = BindingCompanyApi() - const getPhoneNumber = (code) => { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve, reject) => { - if (userInfo.adminUserInfo?.is_authorize_phone) { - resolve(true) - return true - } - const res = await fetchDataUserPhone({ code }) - if (res.success) { - setUserInfo({ ...userInfo.userInfo, phone: res.data.phone_number }) - await fetchBindingCompany() - getAdminUserInfo() - resolve(res.data) - } - else { - reject(res.msg) - } - }) - } - useDidShow(() => { - checkLogin() - }) - return { - checkLogin, - wxLogin, - getSelfUserInfo, - getPhoneNumber, - userInfo, - getAdminUserInfo, - } -} diff --git a/src/use/useLoginRequest.ts b/src/use/useLoginRequest.ts deleted file mode 100644 index a4b7605..0000000 --- a/src/use/useLoginRequest.ts +++ /dev/null @@ -1,115 +0,0 @@ -import Taro, { useRouter } from '@tarojs/taro' -import { useRef } from 'react' -import qs from 'qs' -import useUserInfo from './useUserInfo' -// eslint-disable-next-line import/first -import { BASE_URL, WX_APPID } from '@/common/constant' - -// 开这个hook 主要是为了让useHttp 能够调用 - -interface Param { success: boolean; data: any; msg: string; code: null | number; loading: boolean } -let loginStatus = false // 登录状态,true登录中 -export default () => { - const initData = { - success: false, - data: null, - msg: '', - code: null, - loading: false, - } - const loginData = useRef(initData) - const { setToken, setSessionKey } = useUserInfo() - const router = useRouter() - // 微信登录请求v2 - const fetchDataLogin = async(login_code) => { - const q = { - url: `${BASE_URL}/v2/mp/login`, - header: { - Platform: 3, - Appid: WX_APPID, - // Authorization: token || stateRef.current.token, - }, - method: 'post', - data: { js_code: login_code }, - } - try { - const result = await Taro.request(q as any) - const { code, data, msg } = result.data - if (result.statusCode === 200) { - loginData.current.success = code === 0 - loginData.current.code = code - loginData.current.msg = msg - loginData.current.data = data - } - else { - Taro.showToast({ - title: '错误:登录失败', - icon: 'none', - }) - console.log('登录错误:', result.errMsg) - } - } - catch (e) { - Taro.showToast({ - title: '错误:登录失败', - icon: 'none', - }) - console.log('登录错误:', e.errMsg) - } - return loginData.current - } - - // 微信登录 - const login = () => { - return new Promise((resolve, reject) => { - // eslint-disable-next-line prefer-promise-reject-errors - if (loginStatus) { return reject(false) } - loginStatus = true - Taro.login({ - success: async(res) => { - if (res.code) { - const { data, success, msg } = await fetchDataLogin(res.code) - if (success) { - setToken(data.token) - setSessionKey(data.session_key) - resolve(data) - const params = router.params - delete params.$taroTimestamp - if (router.path === '/pages/index/index' || router.path === '/pages/user/index') { - Taro.reLaunch({ - url: `${router.path}?${qs.stringify(params)}`, - }) - } - else { - Taro.redirectTo({ - url: `${router.path}?${qs.stringify(params)}`, - }) - } - } - else { - Taro.showToast({ - title: '登录失败', - icon: 'none', - }) - reject(msg) - } - } - else { - console.log(`登录失败!${res.errMsg}`) - reject(res.errMsg) - } - loginStatus = false - }, - fail(e) { - console.log('登录失败!::', e) - reject(e) - loginStatus = false - }, - }) - }) - } - - return { - login, - } -} diff --git a/src/use/useUploadImage.ts b/src/use/useUploadImage.ts deleted file mode 100644 index 658bcfb..0000000 --- a/src/use/useUploadImage.ts +++ /dev/null @@ -1,203 +0,0 @@ -import Taro from '@tarojs/taro' -import { UPLOAD_CDN_URL } from '@/common/constant' -import { GetSignApi } from '@/api/cdn' - -export default () => { - const { fetchData: GetSign } = GetSignApi() - - // 上传图片 获取auth,Policy - /* - scene 场景值,区分上传文件的根路径 - type 类型值,区分上传业务bucket - */ - const getSecret = (scene, type) => { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async(resolve, reject) => { - const SAVE_PATH = `/${scene}/{filemd5}{day}{hour}{min}{sec}{.suffix}` - - const params = { - method: 'post', - save_key: SAVE_PATH, - } - // 获取签名 - const res = await GetSign(params) - if (res.success) { - resolve(res.data) - } - else { - // eslint-disable-next-line prefer-promise-reject-errors - reject({ - code: res.code || '9999', - msg: res.msg, - }) - } - }) - } - const getFileType = (name) => { - if (!name) { return false } - const imgType = ['gif', 'jpeg', 'jpg', 'bmp', 'png'] - const videoType = ['avi', 'wmv', 'mkv', 'mp4', 'mov', 'rm', '3gp', 'flv', 'mpg', 'rmvb', 'quicktime'] - - if (RegExp(`.?(${imgType.join('|')})$`, 'i').test(name.toLowerCase())) { - return 'image' - } - else if (RegExp(`.(${videoType.join('|')})$`, 'i').test(name.toLowerCase())) { - return 'video' - } - else { - return false - } - } - - /** - * - * @param {*} file 传入文件 - * @param {String} secene 传入 'product' - * @param {String} type 传入 'product' - * @returns - */ - const uploadCDNImg = (file, secene, type) => { - const filetype = file.path - console.log('filetype::', filetype) - if (!getFileType(filetype)) { - Taro.showToast({ - title: '上传文件类型错误', - icon: 'none', - duration: 3800, - }) - return false - } - - return new Promise>((resolve, reject) => { - getSecret(secene, type) - .then((result) => { - const res: any = result - console.log('bucket', res.bucket) - const formdata = { - authorization: res.authorization, - policy: res.policy, - } - - const uploadTask = Taro.uploadFile({ - url: `${UPLOAD_CDN_URL}${res.bucket}`, - formData: formdata, - filePath: file.path, - name: 'file', - success: (res) => { - resolve(JSON.parse(`${res.data}`)) - }, - fail: (err) => { - console.log(err) - reject(err) - }, - }) - - uploadTask.progress((res) => { - console.log('上传进度', res.progress) - if (res.progress < 100) { - Taro.showLoading({ - title: '上传中...', - }) - } - else { - Taro.hideLoading() - } - }) - }) - .catch((result) => { - reject(result) - Taro.showToast({ - title: '获取密钥失败!', - icon: 'none', - duration: 3800, - }) - }) - }) - } - - // product 产品相关,图片、纹理图等 全平台 - // after-sale 售后(申请退货、退款)相关的、图片、视频 全平台 - // mall 电子商城相关的 全平台 - // logistics 物流(发货、提货)相关的、图片、视频 全平台 - type cdn_upload_type_Param = 'product' | 'after-sale' | 'mall' | 'logistics' - /** - * 上传手机图片 - * @param cdn_upload_type 场景值 - * @param count // 1时返回一张图片信息, 大于1时返回图片数组 - * @returns - */ - const getWxPhoto = (cdn_upload_type: cdn_upload_type_Param, count = 1) => { - return new Promise((resolve, reject) => { - const list: any[] = [] - Taro.chooseImage({ - count, - sizeType: ['original', 'compressed'], - sourceType: ['album', 'camera'], - async success(res) { - try { - if (count > 1) { - for (let i = 0; i < res.tempFiles.length; i++) { - const data = await uploadCDNImg(res.tempFiles[i], cdn_upload_type, cdn_upload_type) - list.push(data) - } - resolve(list) - } - else { - // 兼容以前上传一张的情况 - const data = await uploadCDNImg(res.tempFiles[0], cdn_upload_type, cdn_upload_type) - resolve(data) - } - } - catch (res) { - reject(res) - } - }, - }) - }) - } - - // product 产品相关,图片、纹理图等 全平台 - // after-sale 售后(申请退货、退款)相关的、图片、视频 全平台 - // mall 电子商城相关的 全平台 - // logistics 物流(发货、提货)相关的、图片、视频 全平台 - /** - * 上传聊天记录图片 - * @param cdn_upload_type 场景值 - * @param count // 1时返回一张图片信息, 大于1时返回图片数组 - * @returns - */ - const getChatPhoto = (cdn_upload_type: cdn_upload_type_Param, count = 1) => { - return new Promise((resolve, reject) => { - const list: any[] = [] - Taro.chooseMessageFile({ - count, - type: 'image', - async success(res) { - try { - if (count > 1) { - for (let i = 0; i < res.tempFiles.length; i++) { - const data = await uploadCDNImg(res.tempFiles[i], cdn_upload_type, cdn_upload_type) - list.push(data) - } - resolve(list) - } - else { - // 兼容以前上传一张的情况 - const data = await uploadCDNImg(res.tempFiles[0], cdn_upload_type, cdn_upload_type) - resolve(data) - } - } - catch (res) { - reject(res) - } - }, - }) - }) - } - - return { - uploadCDNImg, - getWxPhoto, - getChatPhoto, - } -} diff --git a/src/use/useUserInfo.ts b/src/use/useUserInfo.ts deleted file mode 100644 index 0b949b4..0000000 --- a/src/use/useUserInfo.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { useDispatch } from 'react-redux' -import type { Dispatch } from 'redux' -import { UserInfoActionType } from '@/constants/userInfo' -import type { SortCodeParam, UserAdminParam, UserInfoAction, UserParam } from '@/reducers/userInfo' -import { useSelector } from '@/reducers/hooks' - -export default () => { - const userInfo = useSelector(state => state.userInfoData) - const dispatch = useDispatch>() - - const setToken = (token: string) => { - // @ts-expect-error data 类型没有约束好 - dispatch({ type: UserInfoActionType.SET_TOKEN, data: { token } }) - } - - const setSessionKey = (sessionkey: string) => { - // @ts-expect-error data 类型没有约束好 - dispatch({ type: UserInfoActionType.SET_SESSIONKEY, data: { session_key: sessionkey } }) - } - - const setUserInfo = (userInfoProp: UserParam) => { - // @ts-expect-error data 类型没有约束好 - dispatch({ type: UserInfoActionType.SET_USERINFO, data: { userInfo: userInfoProp } }) - } - - const setAdminUserInfo = (adminUserInfo: UserAdminParam) => { - // @ts-expect-error data 类型没有约束好 - dispatch({ type: UserInfoActionType.SET_ADMINUSERINFO, data: { adminUserInfo } }) - } - - const setSortCode = (sortCode: SortCodeParam) => { - // @ts-expect-error data 类型没有约束好 - dispatch({ type: UserInfoActionType.SET_SORTCODE, data: { sort_code: sortCode } }) - } - - const removeUserInfo = () => { - dispatch({ type: UserInfoActionType.CLEAR_USERINFO }) - } - - const removeToken = () => { - dispatch({ type: UserInfoActionType.CLEAR_TOKEN }) - } - - const removeSessionKey = () => { - dispatch({ type: UserInfoActionType.CLEAR_SESSIONKEY }) - } - - return { - setToken, - setUserInfo, - setAdminUserInfo, - setSessionKey, - removeUserInfo, - removeToken, - removeSessionKey, - setSortCode, - userInfo, // 响应式数据返回 - } -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index d3cf51a..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "removeComments": false, - "preserveConstEnums": true, - "moduleResolution": "node", - "experimentalDecorators": true, - "noImplicitAny": false, - "allowSyntheticDefaultImports": true, - "outDir": "lib", - "noUnusedLocals": true, - "noUnusedParameters": true, - "strictNullChecks": true, - "sourceMap": true, - "baseUrl": ".", - "rootDir": ".", - "jsx": "react-jsx", - "allowJs": true, - "resolveJsonModule": true, - "typeRoots": [ - "node_modules/@types", - "global.d.ts" - ], - "paths": { - "@/*": ["./src/*"], - } - }, - "exclude": [ - "node_modules", - "dist" - ], - "compileOnSave": false -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 989b9c7..0000000 --- a/yarn.lock +++ /dev/null @@ -1,11574 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aaronghx/eslint-config-basic@0.1.11": - version "0.1.11" - resolved "https://registry.npmjs.org/@aaronghx/eslint-config-basic/-/eslint-config-basic-0.1.11.tgz" - integrity sha512-mQxMuEX1WhEWHGII+GxrJe2aY2Q2ZO9V0bYxnzbTjTo8AApVO3gMoKm+GrJqhwYm7sWdWfEUXS7nO1BLzxLLxg== - dependencies: - eslint-config-standard "17.0.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-html "^7.1.0" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsonc "^2.5.0" - eslint-plugin-markdown "^3.0.0" - eslint-plugin-n "^15.5.1" - eslint-plugin-promise "^6.1.1" - eslint-plugin-unicorn "^45.0.0" - eslint-plugin-yml "^1.2.0" - jsonc-eslint-parser "^2.1.0" - yaml-eslint-parser "^1.1.0" - -"@aaronghx/eslint-config-react@^0.1.11": - version "0.1.11" - resolved "https://registry.npmjs.org/@aaronghx/eslint-config-react/-/eslint-config-react-0.1.11.tgz" - integrity sha512-DajbTKCg9uVQ0KJlx9A4P4lt/aLpqaZ8MJvprvnXuWKAm1enEbU/+JBUvXF+GpGYoDPVnZH9g4bJOuJgPcZ+MA== - dependencies: - "@aaronghx/eslint-config-ts" "0.1.11" - eslint-plugin-react "^7.31.11" - eslint-plugin-react-hooks "^4.6.0" - -"@aaronghx/eslint-config-ts@0.1.11": - version "0.1.11" - resolved "https://registry.npmjs.org/@aaronghx/eslint-config-ts/-/eslint-config-ts-0.1.11.tgz" - integrity sha512-CxXYVhl1j3C8i3zZh6kAlMlAarQAw6fAS87hUGzfP1NM3dZpRnkiMQnaWvQz6cvZRfb4ixsjI9MEryYRXtbQdw== - dependencies: - "@aaronghx/eslint-config-basic" "0.1.11" - "@typescript-eslint/eslint-plugin" "^5.44.0" - "@typescript-eslint/parser" "^5.44.0" - -"@ampproject/remapping@^2.2.0": - 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" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz" - integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== - -"@babel/core@^7.14.0", "@babel/core@^7.14.5", "@babel/core@^7.20.5": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz" - integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-compilation-targets" "^7.21.4" - "@babel/helper-module-transforms" "^7.21.2" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.4" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.4" - "@babel/types" "^7.21.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/eslint-parser@^7.17.0": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz" - integrity sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" - -"@babel/generator@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz" - integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== - dependencies: - "@babel/types" "^7.21.4" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz" - integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== - dependencies: - "@babel/compat-data" "^7.21.4" - "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz" - integrity sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-member-expression-to-functions" "^7.21.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz" - integrity sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.3.1" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz" - integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== - dependencies: - "@babel/types" "^7.21.0" - -"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== - dependencies: - "@babel/types" "^7.21.4" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": - version "7.21.2" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz" - integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.2" - "@babel/types" "^7.21.2" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" - integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.20.7" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - version "7.20.0" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== - -"@babel/helper-wrap-function@^7.18.9": - version "7.20.5" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz" - integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/helpers@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz" - integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@7.16.4": - version "7.16.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz" - integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== - -"@babel/parser@^7.14.5", "@babel/parser@^7.16.4", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz" - integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - 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.18.6.tgz" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz" - integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.7" - -"@babel/plugin-proposal-async-generator-functions@^7.0.0", "@babel/plugin-proposal-async-generator-functions@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.14.5", "@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz" - integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.14.5": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz" - integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.21.0" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" - integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-default-from" "^7.18.6" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.14.5", "@babel/plugin-proposal-object-rest-spread@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz" - integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz" - integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" - integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.2.0": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz" - integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-syntax-import-assertions@^7.20.0": - version "7.20.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" - integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-json-strings@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.14.5", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz" - integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.20.0": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz" - integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz" - integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz" - integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz" - integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz" - integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz" - integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/template" "^7.20.7" - -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.21.3": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz" - integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz" - integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz" - integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.20.11": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz" - integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== - dependencies: - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.21.2": - version "7.21.2" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz" - integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== - dependencies: - "@babel/helper-module-transforms" "^7.21.2" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-simple-access" "^7.20.2" - -"@babel/plugin-transform-modules-systemjs@^7.20.11": - version "7.20.11" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz" - integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-identifier" "^7.19.1" - -"@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": - version "7.20.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz" - integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz" - integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz" - integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.19.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz" - integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.21.0" - -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" - integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.20.5": - version "7.20.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz" - integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - regenerator-transform "^0.15.1" - -"@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.14.5": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz" - integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA== - dependencies: - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-plugin-utils" "^7.20.2" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz" - integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typescript@^7.21.3", "@babel/plugin-transform-typescript@^7.5.0": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz" - integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-typescript" "^7.20.0" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.14.5": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz" - integrity sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw== - dependencies: - "@babel/compat-data" "^7.21.4" - "@babel/helper-compilation-targets" "^7.21.4" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7" - "@babel/plugin-proposal-async-generator-functions" "^7.20.7" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.21.0" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.21.0" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.21.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@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.20.0" - "@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-transform-arrow-functions" "^7.20.7" - "@babel/plugin-transform-async-to-generator" "^7.20.7" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.21.0" - "@babel/plugin-transform-classes" "^7.21.0" - "@babel/plugin-transform-computed-properties" "^7.20.7" - "@babel/plugin-transform-destructuring" "^7.21.3" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.21.0" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.20.11" - "@babel/plugin-transform-modules-commonjs" "^7.21.2" - "@babel/plugin-transform-modules-systemjs" "^7.20.11" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.21.3" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.20.5" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.20.7" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.21.4" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.14.5": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/preset-typescript@^7.14.5": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz" - integrity sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-syntax-jsx" "^7.21.4" - "@babel/plugin-transform-modules-commonjs" "^7.21.2" - "@babel/plugin-transform-typescript" "^7.21.3" - -"@babel/register@^7.14.5": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.21.0.tgz" - integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime-corejs3@^7.14.5": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.0.tgz" - integrity sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw== - dependencies: - core-js-pure "^3.25.1" - regenerator-runtime "^0.13.11" - -"@babel/runtime@^7.12.1", "@babel/runtime@^7.14.5", "@babel/runtime@^7.20.6", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.20.7": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/traverse@^7.12.5", "@babel/traverse@^7.14.5", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz" - integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.4" - "@babel/types" "^7.21.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.4.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz" - integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@csstools/selector-specificity@^2.0.2": - version "2.2.0" - resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" - integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== - -"@devexpress/error-stack-parser@^2.0.6": - version "2.0.6" - resolved "https://registry.npmjs.org/@devexpress/error-stack-parser/-/error-stack-parser-2.0.6.tgz" - integrity sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A== - dependencies: - stackframe "^1.1.1" - -"@electron/get@^1.0.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz" - integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== - dependencies: - debug "^4.1.1" - env-paths "^2.2.0" - fs-extra "^8.1.0" - got "^9.6.0" - progress "^2.0.3" - semver "^6.2.0" - sumchecker "^3.0.1" - optionalDependencies: - global-agent "^3.0.0" - global-tunnel-ng "^2.7.1" - -"@esbuild/linux-loong64@0.14.54": - version "0.14.54" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" - integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== - -"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0": - version "4.5.0" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz" - integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== - -"@eslint/eslintrc@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz" - integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.5.1" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.39.0": - version "8.39.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz" - integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - 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" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/resolve-uri@^3.0.3": - 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== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz" - integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - -"@nodelib/fs.scandir@2.1.5": - 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" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - 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" - -"@parcel/css@^1.4.0": - version "1.14.0" - resolved "https://registry.npmjs.org/@parcel/css/-/css-1.14.0.tgz" - integrity sha512-r5tJWe6NF6lesfPw1N3g7N7WUKpHqi2ONnw9wl5ccSGGIxkmgcPaPQxfvmhdjXvQnktSuIOR0HjQXVXu+/en/w== - dependencies: - lightningcss "^1.14.0" - -"@pmmmwh/react-refresh-webpack-plugin@0.5.10": - version "0.5.10" - resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz" - integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== - dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" - core-js-pure "^3.23.3" - error-stack-parser "^2.0.6" - find-up "^5.0.0" - html-entities "^2.1.0" - loader-utils "^2.0.4" - schema-utils "^3.0.0" - source-map "^0.7.3" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sindresorhus/is@^0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz" - integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== - -"@stencil/core@^2.22.2": - version "2.22.3" - resolved "https://registry.npmjs.org/@stencil/core/-/core-2.22.3.tgz" - integrity sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng== - -"@swc/core-darwin-arm64@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.23.tgz#5e52f19bf96eef92d2ae0533e1598a717b2ca765" - integrity sha512-IGOEHmE4aBDX7gQWpanI3A0ni47UcvX7rmcy0H8kE6mm/y7mEMWskvNsYhYzJl4GVZgw38v1/lL/A7MRX6g71A== - -"@swc/core-darwin-x64@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.23.tgz#3a466b47821284e7fcab6ee7c5b8251dfec0697a" - integrity sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA== - -"@swc/core-linux-arm-gnueabihf@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.23.tgz#42984694b7ffc508188e64bdba6379c37fbf4abf" - integrity sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA== - -"@swc/core-linux-arm64-gnu@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.23.tgz#6579f0f715a9646ab0ddcbaec2cd94815788c4af" - integrity sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw== - -"@swc/core-linux-arm64-musl@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.23.tgz#5c377db95ca3ceca3222945ce170398691e57863" - integrity sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A== - -"@swc/core-linux-x64-gnu@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.23.tgz#e77b3a63c800418ea234d70c1a0ad5762367b6d5" - integrity sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw== - -"@swc/core-linux-x64-musl@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.23.tgz#f8cac09286f9ffaffe990ef61e759ce3785fd02e" - integrity sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ== - -"@swc/core-win32-arm64-msvc@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.23.tgz#7a723c3e5360573b5c1d21e504e3c11cc3cc024c" - integrity sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A== - -"@swc/core-win32-ia32-msvc@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.23.tgz#43a439fc21144682e624d46ba4da5e7bb33b2629" - integrity sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q== - -"@swc/core-win32-x64-msvc@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.23.tgz#00ad332d847f2e3961d7bba4d1886dd767e1f92e" - integrity sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ== - -"@swc/core@1.3.23": - version "1.3.23" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.3.23.tgz#62078fb161fad7edf7c8a8267cceccdeb2ab4a0d" - integrity sha512-Aa7yw5+7ErOxr+G0J1eU2hkb9nEMSdt1Ye3isdAgg9mrsPuttk+cfLp6nP/Lux/VUnu5k4eOxeTy9UhjJhRAFw== - optionalDependencies: - "@swc/core-darwin-arm64" "1.3.23" - "@swc/core-darwin-x64" "1.3.23" - "@swc/core-linux-arm-gnueabihf" "1.3.23" - "@swc/core-linux-arm64-gnu" "1.3.23" - "@swc/core-linux-arm64-musl" "1.3.23" - "@swc/core-linux-x64-gnu" "1.3.23" - "@swc/core-linux-x64-musl" "1.3.23" - "@swc/core-win32-arm64-msvc" "1.3.23" - "@swc/core-win32-ia32-msvc" "1.3.23" - "@swc/core-win32-x64-msvc" "1.3.23" - -"@swc/register@^0.1.10": - version "0.1.10" - resolved "https://registry.npmjs.org/@swc/register/-/register-0.1.10.tgz" - integrity sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A== - dependencies: - lodash.clonedeep "^4.5.0" - pirates "^4.0.1" - source-map-support "^0.5.13" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@tarojs/api@3.6.5": - version "3.6.5" - resolved "https://registry.npmjs.org/@tarojs/api/-/api-3.6.5.tgz" - integrity sha512-XLHl3oaJWzXVIC7IMNGS2ZA/G1hI4RNN4HpS4/2HuyjWiT/Q2B3YLq1f7BNNlgd89faxhtNDjbfTwqtBHwoCcQ== - dependencies: - "@babel/runtime" "^7.14.5" - "@tarojs/runtime" "3.6.5" - "@tarojs/shared" "3.6.5" - -"@tarojs/api@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/api/-/api-3.6.6.tgz#ef70b9d71af623cb5fe14ab5c61aebb49c53352e" - integrity sha512-IzOl2pdwL52MkFiVW2WA6iiRzzdBgYWERxsgqDPBlcWTwUypjFIOC+Q6jdxoizDYDW9UrQQJuj63W1EktiG7Pg== - dependencies: - "@babel/runtime" "^7.14.5" - "@tarojs/runtime" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/cli@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/cli/-/cli-3.6.6.tgz#7001fe6f328aabf92481486c9064423e1f3a40a4" - integrity sha512-L44ByKB48tdKLOLZchsAe3UioikB9UMR4/AcXqTbacC7lra3OLD8xBFYsuhfNgfgTzT6+Y8c5B1yogIHHK1p5w== - dependencies: - "@tarojs/helper" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - adm-zip "^0.4.13" - cli-highlight "^2.1.11" - dotenv "^16.0.3" - dotenv-expand "^9.0.0" - download-git-repo "^2.0.0" - envinfo "^7.8.1" - eslint "^8.12.0" - glob "^7.1.2" - inquirer "^8.0.0" - joi "^17.6.0" - latest-version "^5.1.0" - lodash "^4.17.21" - mem-fs "^2.3.0" - mem-fs-editor "^9.6.0" - minimist "^1.2.8" - npm-check "^6.0.1" - ora "^5.0.0" - request "^2.88.0" - semver "^7.3.8" - validate-npm-package-name "^5.0.0" - xml2js "^0.4.19" - -"@tarojs/components-advanced@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/components-advanced/-/components-advanced-3.6.6.tgz#b08b50b075d44ff7cb5cb5470b7b91d8d9ef4ac1" - integrity sha512-cAJniZi8iB3d1VinqQ8qrLHc4jo7DmLZQsDnM5qdtn0wS4zdv+mhGw9gl3NscGCe2xhnmLwI1M1sy0K4an8a7w== - dependencies: - "@tarojs/components" "3.6.6" - "@tarojs/runtime" "3.6.6" - "@tarojs/shared" "3.6.6" - "@tarojs/taro" "3.6.6" - memoize-one "^6.0.0" - postcss "^8.4.18" - -"@tarojs/components@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/components/-/components-3.6.6.tgz#aa7070d99f8eac9f960eacb163c02fdf5a9a7fdc" - integrity sha512-GWxFtKeiTNajkIyNjyrkEyvrtqOIcrdWSF46A5pCbtmpjdsloN6NX9ms4fwvSjoyci8VZ+sBimnviIqTpBfL+w== - dependencies: - "@stencil/core" "^2.22.2" - "@tarojs/components-advanced" "3.6.6" - "@tarojs/router" "3.6.6" - "@tarojs/taro" "3.6.6" - classnames "^2.2.5" - hls.js "^1.1.5" - intersection-observer "^0.7.0" - resolve-pathname "^3.0.0" - swiper "6.8.0" - weui "^1.1.2" - -"@tarojs/helper@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/helper/-/helper-3.6.6.tgz#17aa3c98535f2789988cc2b4847518e7724d81a8" - integrity sha512-feY1z2rqV+5g8ZBagcOcjbI0P7jq9gIFW8664MXc5iFNxgUbU2w8eNbwRv9zAb1/U9cZoWxx+QGSw4xyTKy/6A== - dependencies: - "@babel/core" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/plugin-proposal-decorators" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.5" - "@babel/plugin-transform-runtime" "^7.14.5" - "@babel/preset-env" "^7.14.5" - "@babel/preset-typescript" "^7.14.5" - "@babel/register" "^7.14.5" - "@babel/runtime" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@swc/core" "1.3.23" - "@swc/register" "^0.1.10" - ansi-escapes "^4.3.2" - chalk "3.0.0" - chokidar "^3.3.1" - cross-spawn "^7.0.3" - debug "4.3.4" - esbuild "^0.14.27" - find-yarn-workspace-root "2.0.0" - fs-extra "^8.0.1" - lodash "^4.17.21" - require-from-string "^2.0.2" - resolve "^1.22.0" - supports-hyperlinks "^2.2.0" - yauzl "2.10.0" - -"@tarojs/plugin-framework-react@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-framework-react/-/plugin-framework-react-3.6.6.tgz#475e9dadf5239eb190e4d2e6a3ca9543f924ccaa" - integrity sha512-Umr1rB9Sf3QdcWUWYjY2BBUumjGKsy6txYjw8ntDU6R2MqsjiXGVD759D1q6L8hViYW3Zh1LNr8dunGu1lr9uw== - dependencies: - "@tarojs/helper" "3.6.6" - "@tarojs/runtime" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - acorn "^8.0.4" - acorn-walk "^8.0.0" - lodash "^4.17.21" - -"@tarojs/plugin-platform-alipay@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-platform-alipay/-/plugin-platform-alipay-3.6.6.tgz#de721e9cf6a2909162853bd922a036b093d6102f" - integrity sha512-65SFA8Vmlwf5ZflI+jXN3W2nrh2NYM3GRAjOcZDIPE+6Je33Bi/7jNaTn3t+YwJlcVjY6djp3/dmC+xwc7skfA== - dependencies: - "@tarojs/components" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/plugin-platform-jd@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-platform-jd/-/plugin-platform-jd-3.6.6.tgz#48f3b401ab52e5ff8c8fe28c79ae6e9cfd1def20" - integrity sha512-AlMmnENciAVhI0/tRZsE5sRThVJ1ESR8oxy974XcAeS3K0DhQhAHVNJ9bVm534RZjGhJ05YGARFtQqJZnNfV3g== - dependencies: - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/plugin-platform-qq@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-platform-qq/-/plugin-platform-qq-3.6.6.tgz#a272de78cfd85a1c43c46be485065c402d29dc49" - integrity sha512-GPLUNeduZMG7wFmPZspfVTc2oSv9zlanKjJn/7uUDPA3HKIbflcVehkPn2Cq28BuvSvY8q3oqFUPMGvKP7jHnw== - dependencies: - "@tarojs/plugin-platform-weapp" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/plugin-platform-swan@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-platform-swan/-/plugin-platform-swan-3.6.6.tgz#6e74221ee6dccfc53ebca5ad822e3414b519e176" - integrity sha512-ISylMI0/7cZ7S/nKwDvkKke76h2m+TtcCqrhvmm4Fo/RyFdxPtZu/wtJ62WSw39dcU5Jec6UuP/YqsMGYEqcWw== - dependencies: - "@tarojs/components" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/plugin-platform-tt@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-platform-tt/-/plugin-platform-tt-3.6.6.tgz#e749156481e8f28c13e00508ea6dc861ddcdde18" - integrity sha512-NgHSRX9tejcQQm3ATc4zaG6mtHYr1c7udhaaFrHxCZJeLqsWWlw7f06FIpghKdbhmKCUcqXUgtbQOwdcvb9P1Q== - dependencies: - "@tarojs/components" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/plugin-platform-weapp@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-platform-weapp/-/plugin-platform-weapp-3.6.6.tgz#24845901d8f3f82a696d3848d99fe63409b70271" - integrity sha512-/feSsGVeXlcuruuSamUvDz/CzttN0E/ziXLjJ6ldBYW7Mscfb1Ro+HnM26eaCGWrJTee4WRvvYerr7Nn6m+PbQ== - dependencies: - "@tarojs/components" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - -"@tarojs/plugin-react-devtools@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/plugin-react-devtools/-/plugin-react-devtools-3.6.6.tgz#e825b7d4b7457b045adb38813387e9af480d2b23" - integrity sha512-opgyKOmYxOkuLcZXqpimFkenHLUgSbQ+GT8IG++o+6czbgvEm4F5BT/bmS7yU81TtkpK4MjUVL1wFtCQI73GMA== - dependencies: - "@tarojs/helper" "3.6.6" - "@tarojs/service" "3.6.6" - "@tarojs/shared" "3.6.6" - "@tarojs/taro" "3.6.6" - cross-spawn "^7.0.3" - detect-port "^1.3.0" - react-devtools "4.14.0" - -"@tarojs/react@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/react/-/react-3.6.6.tgz#a71e4c50e75a1578c627d408ebbed77d5bbf8dbc" - integrity sha512-FX+hXFmIdwfiRBSTYcWyjRA4T6hjybIu0FZ43HZfddZhVbzYWvED4nv6NI5CJhh+PRhpjMc2JsH3RyXiitMVXA== - dependencies: - "@tarojs/runtime" "3.6.6" - "@tarojs/shared" "3.6.6" - react-reconciler "0.27.0" - -"@tarojs/router@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/router/-/router-3.6.6.tgz#069c920fc0d4d569eac51cfa58980aafc540145b" - integrity sha512-HfKeOLGB+ufhAIPA3BlQIwwgtopQYOWJD3xhDuqCgZhWhYca/fA6qACteh82t7Ki3sUPJ/T834YNPR18TaBC3w== - dependencies: - "@tarojs/runtime" "3.6.6" - "@tarojs/taro" "3.6.6" - dingtalk-jsapi "~2.15.2" - history "^5.1.0" - mobile-detect "^1.4.2" - query-string "^7.1.1" - universal-router "^8.3.0" - -"@tarojs/runner-utils@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/runner-utils/-/runner-utils-3.6.6.tgz#c7ec8ae73c6dbfc43774b0ce327d460ed40f0933" - integrity sha512-9VlvABSgGqUmozJCvol+5djJBx/Zhe66WFDa69COPcDnZoGGw6Y6t2EkML1kD60I406OttfSTovlRxksoLO5WA== - dependencies: - "@tarojs/helper" "3.6.6" - scss-bundle "^3.0.2" - -"@tarojs/runtime@3.6.5": - version "3.6.5" - resolved "https://registry.npmjs.org/@tarojs/runtime/-/runtime-3.6.5.tgz" - integrity sha512-8NpnwDOITjLig6BWFAuFabA4Jokq94UXz1IaHnwscenmfsTTnMw3eyrDXIOLYlf/5nM0VAUIKWQdzcpu4eUwUA== - dependencies: - "@tarojs/shared" "3.6.5" - lodash-es "4.17.21" - -"@tarojs/runtime@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/runtime/-/runtime-3.6.6.tgz#27613d5d067cfc2d7075d0408cfa8766d4e606f4" - integrity sha512-tHqU7/iohzTSKl+cJ2EkVqM3YWE/2kb2rDkqpzHaBYTBe39ClJjlsCNQnQwW6Thxo+jdZw98HXtjdAczj5/u0w== - dependencies: - "@tarojs/shared" "3.6.6" - lodash-es "4.17.21" - -"@tarojs/service@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/service/-/service-3.6.6.tgz#380e0ec68b2e6d9c84aa241abfd241f12ef9a20d" - integrity sha512-5Jf4nFETN8ODHvLmOKa4rO4pfynMATjRqTAoY2KSUE/KtKy7poKiJG7PFhQxuiXxDIPZBZZbzwvq2GUqSilFwA== - dependencies: - "@tarojs/helper" "3.6.6" - "@tarojs/shared" "3.6.6" - "@tarojs/taro" "3.6.6" - joi "^17.6.0" - lodash "^4.17.21" - ora "^5.0.0" - resolve "^1.22.0" - tapable "^1.1.3" - webpack-merge "^4.2.2" - -"@tarojs/shared@3.6.5": - version "3.6.5" - resolved "https://registry.npmjs.org/@tarojs/shared/-/shared-3.6.5.tgz" - integrity sha512-8Ed4L/nqDMNzih8VYLn0XTgDuGPC+wo0moFAdJHa+51WutBrbbc4R5/OhZo5w38liiAxVLAnd85AuFIYOzgJvQ== - -"@tarojs/shared@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/shared/-/shared-3.6.6.tgz#ac79a23076ba0c11c1b18934eb71ec1a31cd079e" - integrity sha512-8OwrMReJSAKVyHaUM/pcqEP1V9SD+U3mIyYKIfePuXjAd3YzdXkJxt5JRUjk4ElrJ96yrLPUfISmaE84AYBWmQ== - -"@tarojs/taro-h5@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/taro-h5/-/taro-h5-3.6.6.tgz#d60d47805f1683d69d215aedd631bbbfc548e875" - integrity sha512-Ze4HzJV9GoY9epB0eIrFzLAkQyh3XH8ZgJcGpo0kC3BUxtDZqS14ca6ZS/H0KOsOIFwdhb4VO7An15YofLEDMw== - dependencies: - "@tarojs/api" "3.6.6" - "@tarojs/components" "3.6.6" - "@tarojs/router" "3.6.6" - "@tarojs/runtime" "3.6.6" - "@tarojs/shared" "3.6.6" - abortcontroller-polyfill "^1.7.5" - base64-js "^1.3.0" - intersection-observer "^0.7.0" - jsonp-retry "^1.0.3" - query-string "^7.1.1" - whatwg-fetch "^3.4.0" - -"@tarojs/taro-loader@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/taro-loader/-/taro-loader-3.6.6.tgz#fe4e49775dc2cdaebe9d2b9a4e871801321eeb68" - integrity sha512-FH/vBfvUV8sYfrBV1nnxtpZ628XaYAiieiUkCYBIaTL//XLuwiqlDJ8+mC07vMzKlLnpLG7aOKBbHaOHhadzbw== - dependencies: - "@tarojs/helper" "3.6.6" - "@tarojs/taro" "3.6.6" - loader-utils "^1.2.3" - -"@tarojs/taro@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/taro/-/taro-3.6.6.tgz#25cd95a198dd19aaa1051e9dd4ba44cb9531d53d" - integrity sha512-24s1JKL0wTmTx0jp21JMY/qO2z+3GbNm2Ch+sCrrr5kihxZdyfMpRByjS0zldGa8aXGJiQklq5iEXCRWCOyXoQ== - dependencies: - "@tarojs/api" "3.6.6" - "@tarojs/runtime" "3.6.6" - -"@tarojs/taro@^3.5.10": - version "3.6.5" - resolved "https://registry.npmjs.org/@tarojs/taro/-/taro-3.6.5.tgz" - integrity sha512-z0aGWV0tlTArGmaA4FXPOvfRX1CuuEb0CO2N4R4N8qp842p7E3OWGvXNNwNMK+2KvjOYtW2oG+uUlDekOP+0IQ== - dependencies: - "@tarojs/api" "3.6.5" - "@tarojs/runtime" "3.6.5" - -"@tarojs/webpack5-prebundle@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/webpack5-prebundle/-/webpack5-prebundle-3.6.6.tgz#90f93d4a6bd4094c2219960d49e17b52bfe7bae1" - integrity sha512-prMdaiBSbm/wUMf8sFa/QOK3yFaEsUfoL9PCv1Gbma3OIpvKf6V5dk+I3BBqY2btUpfZfLQqsH8lDbVbw6l+ZA== - dependencies: - "@tarojs/helper" "3.6.6" - "@tarojs/taro" "3.6.6" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.10.4" - lodash "^4.17.21" - webpack-chain "6.5.1" - webpack-virtual-modules "^0.5.0" - -"@tarojs/webpack5-runner@3.6.6": - version "3.6.6" - resolved "https://registry.npmjs.org/@tarojs/webpack5-runner/-/webpack5-runner-3.6.6.tgz#10cf57eeedf2c2dac1568663ed64cf53090a5d8d" - integrity sha512-rIyUZjdUFS1/vW34I2Z1YApTWM0QFXXFSSarGgsMgVTFdzBVIDdmDOY86hSJaKsnMwgUyXTyedqmw1pj1vOv5A== - dependencies: - "@parcel/css" "^1.4.0" - "@tarojs/helper" "3.6.6" - "@tarojs/plugin-platform-alipay" "3.6.6" - "@tarojs/plugin-platform-jd" "3.6.6" - "@tarojs/plugin-platform-qq" "3.6.6" - "@tarojs/plugin-platform-swan" "3.6.6" - "@tarojs/plugin-platform-tt" "3.6.6" - "@tarojs/plugin-platform-weapp" "3.6.6" - "@tarojs/runner-utils" "3.6.6" - "@tarojs/runtime" "3.6.6" - "@tarojs/shared" "3.6.6" - "@tarojs/taro" "3.6.6" - "@tarojs/taro-loader" "3.6.6" - "@tarojs/webpack5-prebundle" "3.6.6" - acorn-walk "^8.0.0" - autoprefixer "^9.7.4" - babel-loader "8.2.1" - copy-webpack-plugin "10.2.0" - css-loader "^6.7.1" - css-minimizer-webpack-plugin "3.4.1" - csso "^5.0.2" - detect-port "^1.3.0" - esbuild "^0.14.27" - esbuild-loader "2.18.0" - file-loader "6.0.0" - html-minifier "^4.0.0" - html-webpack-plugin "5.5.0" - jsdom "^21.1.0" - less "^4.1.0" - less-loader "10.2.0" - loader-utils "^1.2.3" - lodash "^4.17.21" - md5 "^2.3.0" - micromatch "^4.0.2" - mini-css-extract-plugin "2.4.6" - miniprogram-simulate "^1.1.5" - mkdirp "^1.0.4" - ora "^5.0.0" - postcss-html-transform "3.6.6" - postcss-import "^14.0.0" - postcss-loader "^7.0.1" - postcss-plugin-constparse "3.6.6" - postcss-pxtransform "3.6.6" - postcss-url "^10.1.3" - regenerator-runtime "0.11" - resolve "^1.22.0" - resolve-url-loader "^5.0.0" - sass "1.50.0" - sass-loader "12.4.0" - sax "1.2.4" - style-loader "3.3.1" - stylus "^0.55.0" - stylus-loader "6.2.0" - terser-webpack-plugin "^5.1.3" - url-loader "4.1.0" - vm2 "^3.8.4" - vue-loader "^15.10.1" - webpack-chain "6.5.1" - webpack-dev-server "4.7.4" - webpack-format-messages "^2.0.6" - webpackbar "^5.0.2" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - -"@types/archy@^0.0.31": - version "0.0.31" - resolved "https://registry.npmjs.org/@types/archy/-/archy-0.0.31.tgz" - integrity sha512-v+dxizsFVyXgD3EpFuqT9YjdEjbJmPxNf1QIX9ohZOhxh1ZF2yhqv3vYaeum9lg3VghhxS5S0a6yldN9J9lPEQ== - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.0" - resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz" - integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/debug@^4.1.5": - version "4.1.7" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== - dependencies: - "@types/ms" "*" - -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.37.0" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz" - integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== - -"@types/expect@^1.20.4": - version "1.20.4" - resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz" - integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.34" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz" - integrity sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.17" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/fs-extra@^8.0.1": - version "8.1.2" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz" - integrity sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/hoist-non-react-statics@^3.3.1": - version "3.3.1" - resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== - dependencies: - "@types/react" "*" - hoist-non-react-statics "^3.3.0" - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== - dependencies: - "@types/node" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/lodash.debounce@^4.0.6": - version "4.0.7" - resolved "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz" - integrity sha512-X1T4wMZ+gT000M2/91SYj0d/7JfeNZ9PeeOldSNoE/lunLeQXKvkmIumI29IaKMotU/ln/McOIvgzZcQ/3TrSA== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*", "@types/lodash@^4.14.72": - version "4.14.194" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz" - integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== - -"@types/mdast@^3.0.0": - version "3.0.11" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz" - integrity sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw== - dependencies: - "@types/unist" "*" - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - -"@types/ms@*": - version "0.7.31" - resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== - -"@types/node@*", "@types/node@^18.11.10": - version "18.16.2" - resolved "https://registry.npmjs.org/@types/node/-/node-18.16.2.tgz" - integrity sha512-GQW/JL/5Fz/0I8RpeBG9lKp0+aNcXEaVL71c0D2Q0QHDTFvlYKT7an0onCUXj85anv7b4/WesqdfchLc0jtsCg== - -"@types/node@^12.0.12": - version "12.20.55" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^15.6.2": - version "15.14.9" - resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz" - integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/qs@*", "@types/qs@^6.9.7": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/react@*", "@types/react@^18.0.25": - version "18.2.0" - resolved "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz" - integrity sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/sass@^1.16.0": - version "1.45.0" - resolved "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz" - integrity sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA== - dependencies: - sass "*" - -"@types/scheduler@*": - version "0.16.3" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== - -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== - -"@types/send@*": - version "0.17.1" - resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@types/express" "*" - -"@types/serve-static@*": - version "1.15.1" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== - dependencies: - "@types/node" "*" - -"@types/unist@*", "@types/unist@^2.0.2": - version "2.0.6" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" - integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== - -"@types/use-sync-external-store@^0.0.3": - version "0.0.3" - resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" - integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== - -"@types/vinyl@^2.0.4": - version "2.0.7" - resolved "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.7.tgz" - integrity sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg== - dependencies: - "@types/expect" "^1.20.4" - "@types/node" "*" - -"@types/webpack-env@^1.13.6": - version "1.18.0" - resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz" - integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== - -"@types/ws@^8.2.2": - version "8.5.4" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz" - integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^5.44.0": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz" - integrity sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/type-utils" "5.59.1" - "@typescript-eslint/utils" "5.59.1" - debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.20.0", "@typescript-eslint/parser@^5.44.0": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz" - integrity sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g== - dependencies: - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.59.1": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz" - integrity sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA== - dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" - -"@typescript-eslint/type-utils@5.59.1": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz" - integrity sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw== - dependencies: - "@typescript-eslint/typescript-estree" "5.59.1" - "@typescript-eslint/utils" "5.59.1" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.59.1": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz" - integrity sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg== - -"@typescript-eslint/typescript-estree@5.59.1": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz" - integrity sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA== - dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.59.1": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz" - integrity sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.59.1": - version "5.59.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz" - integrity sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA== - dependencies: - "@typescript-eslint/types" "5.59.1" - eslint-visitor-keys "^3.3.0" - -"@vue/compiler-core@3.2.47": - 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" - -"@vue/compiler-dom@3.2.47": - 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" - -"@vue/compiler-sfc@^3.0.5": - 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" - -"@vue/compiler-ssr@3.2.47": - 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" - -"@vue/component-compiler-utils@^3.1.0": - version "3.3.0" - resolved "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" - integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.36" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2 || ^2.0.0" - -"@vue/reactivity-transform@3.2.47": - 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" - -"@vue/shared@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz" - integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ== - -"@webassemblyjs/ast@1.11.5", "@webassemblyjs/ast@^1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz" - integrity sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - -"@webassemblyjs/floating-point-hex-parser@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz" - integrity sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ== - -"@webassemblyjs/helper-api-error@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz" - integrity sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA== - -"@webassemblyjs/helper-buffer@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz" - integrity sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg== - -"@webassemblyjs/helper-numbers@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz" - integrity sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.5" - "@webassemblyjs/helper-api-error" "1.11.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz" - integrity sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA== - -"@webassemblyjs/helper-wasm-section@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz" - integrity sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - -"@webassemblyjs/ieee754@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz" - integrity sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz" - integrity sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz" - integrity sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz" - integrity sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/helper-wasm-section" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - "@webassemblyjs/wasm-opt" "1.11.5" - "@webassemblyjs/wasm-parser" "1.11.5" - "@webassemblyjs/wast-printer" "1.11.5" - -"@webassemblyjs/wasm-gen@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz" - integrity sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/ieee754" "1.11.5" - "@webassemblyjs/leb128" "1.11.5" - "@webassemblyjs/utf8" "1.11.5" - -"@webassemblyjs/wasm-opt@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz" - integrity sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - "@webassemblyjs/wasm-parser" "1.11.5" - -"@webassemblyjs/wasm-parser@1.11.5", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz" - integrity sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-api-error" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/ieee754" "1.11.5" - "@webassemblyjs/leb128" "1.11.5" - "@webassemblyjs/utf8" "1.11.5" - -"@webassemblyjs/wast-printer@1.11.5": - version "1.11.5" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz" - integrity sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abortcontroller-polyfill@^1.7.5: - version "1.7.5" - resolved "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - 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== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2: - version "8.8.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -address@^1.0.1: - version "1.2.2" - resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -adm-zip@^0.4.13: - version "0.4.16" - resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" - integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== - -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz" - integrity sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA== - dependencies: - string-width "^2.0.0" - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - 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" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - 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" - -archive-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz" - integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== - dependencies: - file-type "^4.2.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-union@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz" - integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - -array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async@^2.6.4: - version "2.6.4" - resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.7.4: - version "9.8.8" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" - integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - picocolors "^0.2.1" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -babel-helper-evaluate-path@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz" - integrity sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA== - -babel-helper-mark-eval-scopes@^0.4.3: - version "0.4.3" - resolved "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz" - integrity sha512-+d/mXPP33bhgHkdVOiPkmYoeXJ+rXRWi7OdhwpyseIqOS8CmzHQXHUp/+/Qr8baXsT0kjGpMHHofHs6C3cskdA== - -babel-helper-remove-or-void@^0.4.3: - version "0.4.3" - resolved "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz" - integrity sha512-eYNceYtcGKpifHDir62gHJadVXdg9fAhuZEXiRQnJJ4Yi4oUTpqpNY//1pM4nVyjjDMPYaC2xSf0I+9IqVzwdA== - -babel-loader@8.2.1: - version "8.2.1" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.1.tgz" - integrity sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - make-dir "^2.1.0" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-global-define@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/babel-plugin-global-define/-/babel-plugin-global-define-1.0.3.tgz" - integrity sha512-M8Sby4wRLuLr+9UB8V31knVRf/rl0xkk51A7um6hUCvVPyOvLtI0u0k1OPiMgE2d7CwmeSa33NzGpaALHPQCPg== - -babel-plugin-jsx-attributes-array-to-object@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/babel-plugin-jsx-attributes-array-to-object/-/babel-plugin-jsx-attributes-array-to-object-0.3.0.tgz" - integrity sha512-XvbCsBFo/y4n2DzRtICQ60Kb3FWPIK359YsUkDPjC4UBCF/FMENKYzxarEhAD1GnrAuui5wOUvli89yqF1IzdA== - -babel-plugin-minify-dead-code-elimination@^0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.2.tgz" - integrity sha512-krq9Lwi0QIzyAlcNBXTL4usqUvevB4BzktdEsb8srcXC1AaYqRJiAQw6vdKdJSaXbz6snBvziGr6ch/aoRCfpA== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-mark-eval-scopes "^0.4.3" - babel-helper-remove-or-void "^0.4.3" - lodash "^4.17.11" - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -babel-plugin-transform-imports-api@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-imports-api/-/babel-plugin-transform-imports-api-1.0.0.tgz" - integrity sha512-EtPFtwUFwXy4HyRwXiR7dCijk2b1dd12bVs39oY8aMZUnypFEMrctGX6/YrhQzhCPFweV7NTPhc+fD4zItWzUA== - dependencies: - is-invalid-path "^1.0.2" - -babel-plugin-transform-react-jsx-to-rn-stylesheet@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx-to-rn-stylesheet/-/babel-plugin-transform-react-jsx-to-rn-stylesheet-3.6.6.tgz#02ab980c22910b360ad3787fd801f379ad6e6cc1" - integrity sha512-nBEk5gUl3xocC1XflAw+GZhEWQZrZNiQeKMJYWG61q7f2v55JW51/jAWGym28+j5Elb5Z0DbWT6jdJiCpSmsVw== - dependencies: - camelize "^1.0.0" - taro-css-to-react-native "3.6.6" - -babel-plugin-transform-taroapi@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/babel-plugin-transform-taroapi/-/babel-plugin-transform-taroapi-3.6.6.tgz#822c2b747a5d2590cf90fc7ff4a5a3836b2636a5" - integrity sha512-vFGc2VMnu+cN2Mefwq0fyuctI8CfnbrViQJ0lEzgpFRUWGLGw/FzRqjTtSlW9BDLiEbXPqxU8DKLtxBuOahpoA== - -babel-preset-taro@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/babel-preset-taro/-/babel-preset-taro-3.6.6.tgz#4237d918a967e0c16d04524e810a0f3d04d489fa" - integrity sha512-Pij5os7zaZ4Bxhey00zG2Z4SD8XwGku5asWWdyFQ9h1IZG6Bl+6GKFw7kHWi28RgSf4rERmqv6Ygybl2OFIwgA== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-decorators" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/plugin-transform-runtime" "^7.14.5" - "@babel/preset-env" "^7.14.5" - "@babel/preset-react" "^7.14.5" - "@babel/preset-typescript" "^7.14.5" - "@babel/runtime" "^7.14.5" - "@babel/runtime-corejs3" "^7.14.5" - "@tarojs/helper" "3.6.6" - "@tarojs/shared" "3.6.6" - babel-plugin-dynamic-import-node "2.3.3" - babel-plugin-global-define "1.0.3" - babel-plugin-jsx-attributes-array-to-object "0.3.0" - babel-plugin-minify-dead-code-elimination "^0.5.2" - babel-plugin-transform-imports-api "1.0.0" - babel-plugin-transform-react-jsx-to-rn-stylesheet "3.6.6" - babel-plugin-transform-taroapi "3.6.6" - core-js "^3.6.5" - metro-react-native-babel-preset "^0.72.1" - react-refresh "^0.11.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -balanced-match@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz" - integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== - -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -big.js@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz" - integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binaryextensions@^4.16.0: - version "4.18.0" - resolved "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz" - integrity sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw== - -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@^3.1.1: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - 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" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" - integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -boolean@^3.0.1: - version "3.2.0" - resolved "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" - integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== - -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - 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" - -braces@^3.0.2, braces@~3.0.2: - 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" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: - version "4.21.5" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== - dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer@^5.2.1, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^5.0.0, builtins@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz" - integrity sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ== - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsite-record@^4.1.3: - version "4.1.5" - resolved "https://registry.npmjs.org/callsite-record/-/callsite-record-4.1.5.tgz" - integrity sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg== - dependencies: - "@devexpress/error-stack-parser" "^2.0.6" - "@types/lodash" "^4.14.72" - callsite "^1.0.0" - chalk "^2.4.0" - highlight-es "^1.0.0" - lodash "4.6.1 || ^4.16.1" - pinkie-promise "^2.0.0" - -callsite@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - integrity sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" - integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" - integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001449: - version "1.0.30001481" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz" - integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== - -capture-stack-trace@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz" - integrity sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -caw@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz" - integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== - dependencies: - get-proxy "^2.0.0" - isurl "^1.0.0-alpha5" - tunnel-agent "^0.6.0" - url-to-options "^1.0.1" - -chalk@3.0.0, chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.0: - 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" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -charenc@0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.1, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.6.1: - version "3.8.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== - -classnames@^2.2.5, classnames@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== - -clean-css@^4.2.1: - version "4.2.4" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" - integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== - dependencies: - source-map "~0.6.0" - -clean-css@^5.2.2: - version "5.3.2" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" - integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== - dependencies: - source-map "~0.6.0" - -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz" - integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== - dependencies: - escape-string-regexp "^1.0.5" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz" - integrity sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.11: - version "2.1.11" - resolved "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^2.5.0: - version "2.8.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz" - integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz" - integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" - integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== - dependencies: - mimic-response "^1.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz" - integrity sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -color-convert@^1.9.0: - 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" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colord@^2.9.1, colord@^2.9.3: - version "2.9.3" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.10: - version "2.0.20" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -colors@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.19.0, commander@^2.20.0, commander@^2.8.1: - 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== - -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^3.0.0: - version "3.1.5" - resolved "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz" - integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA== - dependencies: - dot-prop "^4.2.1" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -consola@^2.15.3: - version "2.15.3" - resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -content-disposition@0.5.4, content-disposition@^0.5.2: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^1.7.0: - 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== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -copy-anything@^2.0.1: - 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" - -copy-webpack-plugin@10.2.0: - version "10.2.0" - resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.0.tgz" - integrity sha512-my6iXII95c78w14HzYCNya5TlJYa44lOppAge5GSTMM1SyDxNsVGCJvhP4/ld6snm8lzjn3XOonMZD6s1L86Og== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^12.0.2" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -core-js-compat@^3.25.1: - version "3.30.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz" - integrity sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw== - dependencies: - browserslist "^4.21.5" - -core-js-pure@^3.23.3, core-js-pure@^3.25.1: - version "3.30.1" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz" - integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== - -core-js@^3.6.5: - version "3.30.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz" - integrity sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig-typescript-loader@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz" - integrity sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q== - -cosmiconfig@^7.0.0, cosmiconfig@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^8.1.3: - version "8.1.3" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz" - integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== - dependencies: - import-fresh "^3.2.1" - js-yaml "^4.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz" - integrity sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw== - dependencies: - capture-stack-trace "^1.0.0" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" - integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypt@0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz" - integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-declaration-sorter@^6.3.1: - version "6.4.0" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz" - integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== - -css-functions-list@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz" - integrity sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w== - -css-loader@^6.7.1: - version "6.7.3" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz" - integrity sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.19" - 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" - postcss-value-parser "^4.2.0" - semver "^7.3.8" - -css-mediaquery@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz" - integrity sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q== - -css-minimizer-webpack-plugin@3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-tree@1.0.0-alpha.29: - version "1.0.0-alpha.29" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz" - integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-tree@^2.2.1: - version "2.3.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-tree@~2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - dependencies: - mdn-data "2.0.28" - source-map-js "^1.0.1" - -css-what@^6.0.1, css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz" - integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== - dependencies: - css-tree "1.0.0-alpha.29" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -csso@^5.0.2, csso@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" - integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - dependencies: - css-tree "~2.2.0" - -cssstyle@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz" - integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== - dependencies: - rrweb-cssom "^0.6.0" - -csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz" - integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-urls@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz" - integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^12.0.0" - -dayjs@^1.11.6: - version "1.11.7" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" - integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== - -debug@2.6.9, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.2, debug@^4.3.4: - 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" - -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.4.3: - version "10.4.3" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz" - integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz" - integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - -deep-diff@^0.3.5: - version "0.3.8" - resolved "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz" - integrity sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug== - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -default-gateway@^6.0.3: - 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== - dependencies: - execa "^5.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -del@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depcheck@^1.3.1: - version "1.4.3" - resolved "https://registry.npmjs.org/depcheck/-/depcheck-1.4.3.tgz" - integrity sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ== - dependencies: - "@babel/parser" "7.16.4" - "@babel/traverse" "^7.12.5" - "@vue/compiler-sfc" "^3.0.5" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - debug "^4.2.0" - deps-regex "^0.1.4" - ignore "^5.1.8" - is-core-module "^2.4.0" - js-yaml "^3.14.0" - json5 "^2.1.3" - lodash "^4.17.20" - minimatch "^3.0.4" - multimatch "^5.0.0" - please-upgrade-node "^3.2.0" - query-ast "^1.0.3" - readdirp "^3.5.0" - require-package-name "^2.0.1" - resolve "^1.18.1" - sass "^1.29.0" - scss-parser "^1.0.4" - semver "^7.3.2" - yargs "^16.1.0" - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -deps-regex@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz" - integrity sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port@^1.3.0: - version "1.5.1" - resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - dependencies: - address "^1.0.1" - debug "4" - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dingtalk-jsapi@~2.15.2: - version "2.15.4" - resolved "https://registry.npmjs.org/dingtalk-jsapi/-/dingtalk-jsapi-2.15.4.tgz" - integrity sha512-pPETqUhLJYKNZIewnS9hU1/QqcdRbP2Q9sHySimko0C2nm/n9NoakVLtcKwdqgORq1dkPIP/jqv7RnESxhA2bA== - dependencies: - promise-polyfill "^7.1.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" - integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -dom7@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz" - integrity sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g== - dependencies: - ssr-window "^3.0.0-alpha.1" - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.1" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz" - integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== - dependencies: - is-obj "^1.0.0" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-9.0.0.tgz" - integrity sha512-uW8Hrhp5ammm9x7kBLR6jDfujgaDarNA02tprvZdyrJ7MpdzD1KyrIHG4l+YoC2fJ2UcdFdNWNWIjt+sexBHJw== - -dotenv@^16.0.3: - version "16.0.3" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - -download-git-repo@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/download-git-repo/-/download-git-repo-2.0.0.tgz" - integrity sha512-al8ZOwpm/DvCd7XC8PupeuNlC2TrvsMxW3FOx1bCbHNBhP1lYjOn9KnPqnZ3o/jz1vxCC5NHGJA7LT+GYMLcHA== - dependencies: - download "^7.1.0" - git-clone "^0.1.0" - rimraf "^2.6.3" - -download@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/download/-/download-7.1.0.tgz" - integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== - dependencies: - archive-type "^4.0.0" - caw "^2.0.1" - content-disposition "^0.5.2" - decompress "^4.2.0" - ext-name "^5.0.0" - file-type "^8.1.0" - filenamify "^2.0.0" - get-stream "^3.0.0" - got "^8.3.1" - make-dir "^1.2.0" - p-event "^2.1.0" - pify "^3.0.0" - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.8: - version "3.1.9" - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.284: - version "1.4.376" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.376.tgz" - integrity sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ== - -electron@^11.1.0: - version "11.5.0" - resolved "https://registry.npmjs.org/electron/-/electron-11.5.0.tgz" - integrity sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg== - dependencies: - "@electron/get" "^1.0.1" - "@types/node" "^12.0.12" - extract-zip "^1.0.3" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@^1.0.2, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.13.0, enhanced-resolve@^5.9.3: - version "5.13.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz" - integrity sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@^7.8.1: - version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -errno@^0.1.1: - version "0.1.8" - resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.2" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== - dependencies: - array-buffer-byte-length "^1.0.0" - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.10" - is-weakref "^1.0.2" - object-inspect "^1.12.3" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" - -es-module-lexer@^0.10.4: - version "0.10.5" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.10.5.tgz" - integrity sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw== - -es-module-lexer@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz" - integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== - -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-error@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -esbuild-android-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" - integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== - -esbuild-android-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" - integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== - -esbuild-darwin-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" - integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== - -esbuild-darwin-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" - integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== - -esbuild-freebsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" - integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== - -esbuild-freebsd-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" - integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== - -esbuild-linux-32@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" - integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== - -esbuild-linux-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" - integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== - -esbuild-linux-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" - integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== - -esbuild-linux-arm@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" - integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== - -esbuild-linux-mips64le@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" - integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== - -esbuild-linux-ppc64le@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" - integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== - -esbuild-linux-riscv64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" - integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== - -esbuild-linux-s390x@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" - integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== - -esbuild-loader@2.18.0: - version "2.18.0" - resolved "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.18.0.tgz" - integrity sha512-AKqxM3bI+gvGPV8o6NAhR+cBxVO8+dh+O0OXBHIXXwuSGumckbPWHzZ17subjBGI2YEGyJ1STH7Haj8aCrwL/w== - dependencies: - esbuild "^0.14.6" - joycon "^3.0.1" - json5 "^2.2.0" - loader-utils "^2.0.0" - tapable "^2.2.0" - webpack-sources "^2.2.0" - -esbuild-netbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" - integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== - -esbuild-openbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" - integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== - -esbuild-sunos-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" - integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== - -esbuild-windows-32@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" - integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== - -esbuild-windows-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz" - integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== - -esbuild-windows-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" - integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== - -esbuild@^0.14.27, esbuild@^0.14.6: - version "0.14.54" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz" - integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== - optionalDependencies: - "@esbuild/linux-loong64" "0.14.54" - esbuild-android-64 "0.14.54" - esbuild-android-arm64 "0.14.54" - esbuild-darwin-64 "0.14.54" - esbuild-darwin-arm64 "0.14.54" - esbuild-freebsd-64 "0.14.54" - esbuild-freebsd-arm64 "0.14.54" - esbuild-linux-32 "0.14.54" - esbuild-linux-64 "0.14.54" - esbuild-linux-arm "0.14.54" - esbuild-linux-arm64 "0.14.54" - esbuild-linux-mips64le "0.14.54" - esbuild-linux-ppc64le "0.14.54" - esbuild-linux-riscv64 "0.14.54" - esbuild-linux-s390x "0.14.54" - esbuild-netbsd-64 "0.14.54" - esbuild-openbsd-64 "0.14.54" - esbuild-sunos-64 "0.14.54" - esbuild-windows-32 "0.14.54" - esbuild-windows-64 "0.14.54" - esbuild-windows-arm64 "0.14.54" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-standard@17.0.0: - version "17.0.0" - resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz" - integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== - -eslint-config-taro@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/eslint-config-taro/-/eslint-config-taro-3.6.6.tgz#b313d44dafdb77f111498f3de9e8ffe18a68fe83" - integrity sha512-T4fMrLFgG0zmLteRQV8MdXKqbGE451LU3n9016n7TrbGmySpBYSVrOMa+Po+FVZI+6uA2M2Gobq7RQV5omArDw== - dependencies: - "@babel/eslint-parser" "^7.17.0" - "@typescript-eslint/parser" "^5.20.0" - -eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== - dependencies: - debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" - -eslint-module-utils@^2.7.4: - version "2.8.0" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-es@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz" - integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-html@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-7.1.0.tgz" - integrity sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg== - dependencies: - htmlparser2 "^8.0.1" - -eslint-plugin-import@^2.26.0: - version "2.27.5" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz" - integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.7.4" - has "^1.0.3" - is-core-module "^2.11.0" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.6" - resolve "^1.22.1" - semver "^6.3.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsonc@^2.5.0: - version "2.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.7.0.tgz" - integrity sha512-DZgC71h/hZ9t5k/OGAKOMdJCleg2neZLL7No+YYi2ZMroCN4X5huZdrLf1USbrc6UTHwYujd1EDwXHg1qJ6CYw== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - jsonc-eslint-parser "^2.0.4" - natural-compare "^1.4.0" - -eslint-plugin-markdown@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.0.tgz" - integrity sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg== - dependencies: - mdast-util-from-markdown "^0.8.5" - -eslint-plugin-n@^15.5.1: - version "15.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz" - integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q== - dependencies: - builtins "^5.0.1" - eslint-plugin-es "^4.1.0" - eslint-utils "^3.0.0" - ignore "^5.1.1" - is-core-module "^2.11.0" - minimatch "^3.1.2" - resolve "^1.22.1" - semver "^7.3.8" - -eslint-plugin-promise@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" - integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.31.11: - version "7.32.2" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.0" - string.prototype.matchall "^4.0.8" - -eslint-plugin-unicorn@^45.0.0: - version "45.0.2" - resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-45.0.2.tgz" - integrity sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw== - dependencies: - "@babel/helper-validator-identifier" "^7.19.1" - "@eslint-community/eslint-utils" "^4.1.2" - ci-info "^3.6.1" - clean-regexp "^1.0.0" - esquery "^1.4.0" - indent-string "^4.0.0" - is-builtin-module "^3.2.0" - jsesc "^3.0.2" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.24" - regjsparser "^0.9.1" - safe-regex "^2.1.1" - semver "^7.3.8" - strip-indent "^3.0.0" - -eslint-plugin-yml@^1.2.0: - version "1.5.0" - resolved "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.5.0.tgz" - integrity sha512-iygN054g+ZrnYmtOXMnT+sx9iDNXt89/m0+506cQHeG0+5jJN8hY5iOPQLd3yfd50AfK/mSasajBWruf1SoHpQ== - dependencies: - debug "^4.3.2" - lodash "^4.17.21" - natural-compare "^1.4.0" - yaml-eslint-parser "^1.1.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: - version "3.4.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== - -eslint@^8.12.0, eslint@^8.28.0: - version "8.39.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz" - integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.39.0" - "@humanwhocodes/config-array" "^0.11.8" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.0.0, espree@^9.5.1: - version "9.5.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz" - integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0, esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^2.0.2: - 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== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" - integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -expr-parser@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/expr-parser/-/expr-parser-1.0.0.tgz" - integrity sha512-ncuWTCWH0M5KbaYikXxZ3FG3Q+FTYIEXeXAbxYscdZLFNnR5Le5gRU2r/a/JUZHnxwBDZcxWEWzCoPQlW9Engg== - -express@^4.17.1: - version "4.18.2" - resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - 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" - -ext-list@^2.0.0: - version "2.2.2" - resolved "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz" - integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== - dependencies: - mime-db "^1.28.0" - -ext-name@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz" - integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== - dependencies: - ext-list "^2.0.0" - sort-keys-length "^1.0.0" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extract-zip@^1.0.3: - version "1.7.0" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - 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" - -fast-json-stable-stringify@^2.0.0: - 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== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastest-levenshtein@^1.0.16: - version "1.0.16" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" - -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" - integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== - -file-type@^4.2.0: - version "4.4.0" - resolved "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz" - integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz" - integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== - -file-type@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz" - integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filename-reserved-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz" - integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== - -filenamify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz" - integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== - dependencies: - filename-reserved-regex "^2.0.0" - strip-outer "^1.0.0" - trim-repeated "^1.0.0" - -fill-range@^7.0.1: - 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" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - 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" - -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-yarn-workspace-root2@1.2.16: - version "1.2.16" - resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz" - integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== - dependencies: - micromatch "^4.0.2" - pkg-dir "^4.2.0" - -find-yarn-workspace-root@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz" - integrity sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg== - dependencies: - readable-stream "^2.0.2" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from2@^2.1.1: - version "2.3.0" - resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^8.0.1, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-monkey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2, functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - 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== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-proxy@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz" - integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== - dependencies: - npm-conf "^1.1.0" - -get-stream@3.0.0, get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" - integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -git-clone@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/git-clone/-/git-clone-0.1.0.tgz" - integrity sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw== - -giturl@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/giturl/-/giturl-1.0.1.tgz" - integrity sha512-wQourBdI13n8tbjcZTDl6k+ZrCRMU6p9vfp9jknZq+zfWc8xXNztpZFM4XkPHVzHcMSUZxEMYYKZjIGkPlei6Q== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - 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" - -glob-parent@^6.0.1, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - 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" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -global-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" - integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== - dependencies: - boolean "^3.0.1" - es6-error "^4.1.1" - matcher "^3.0.0" - roarr "^2.15.3" - semver "^7.3.2" - serialize-error "^7.0.1" - -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz" - integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== - dependencies: - ini "^1.3.4" - -global-dirs@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" - integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== - dependencies: - ini "2.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global-tunnel-ng@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz" - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== - dependencies: - encodeurl "^1.0.2" - lodash "^4.17.10" - npm-conf "^1.1.3" - tunnel "^0.0.6" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.1, globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.0.1, globby@^11.0.2, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^12.0.2: - version "12.2.0" - resolved "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz" - integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== - dependencies: - array-union "^3.0.1" - dir-glob "^3.0.1" - fast-glob "^3.2.7" - ignore "^5.1.9" - merge2 "^1.4.1" - slash "^4.0.0" - -globjoin@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz" - integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== - -globs@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/globs/-/globs-0.1.4.tgz" - integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== - dependencies: - glob "^7.1.1" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.npmjs.org/got/-/got-6.7.1.tgz" - integrity sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg== - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -got@^8.3.1: - version "8.3.2" - resolved "https://registry.npmjs.org/got/-/got-8.3.2.tgz" - integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== - dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - 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== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - 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== - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -highlight-es@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz" - integrity sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg== - dependencies: - chalk "^2.4.0" - is-es2016-keyword "^1.0.0" - js-tokens "^3.0.0" - -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -history@^5.1.0: - version "5.3.0" - resolved "https://registry.npmjs.org/history/-/history-5.3.0.tgz" - integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== - dependencies: - "@babel/runtime" "^7.7.6" - -hls.js@^1.1.5: - version "1.4.0" - resolved "https://registry.npmjs.org/hls.js/-/hls.js-1.4.0.tgz" - integrity sha512-VEjg7Rx5FlE9TB3MIn0HPgq3J+vR7EoQnjaqMCk/ISEaCOSZlAFh4g867f1QkSxZiq9kHeUZo+iH16X7VS3jKA== - -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-minifier@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz" - integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== - dependencies: - camel-case "^3.0.0" - clean-css "^4.2.1" - commander "^2.19.0" - he "^1.2.0" - param-case "^2.1.1" - relateurl "^0.2.7" - uglify-js "^3.5.1" - -html-tags@^3.2.0: - version "3.3.1" - resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== - -html-webpack-plugin@5.5.0: - version "5.5.0" - resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" - integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - -http-cache-semantics@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-middleware@^2.0.0: - version "2.0.6" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^5.0.1: - 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== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconfont-parser@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/iconfont-parser/-/iconfont-parser-1.0.0.tgz" - integrity sha512-3RJceYHEjaqYyeDdfSAb1vP1x1Eb7ZtC9Xwetj+axm85sBlJU7HMvdNLVpwm/3g5eghYOdkQK+epUITZGAIqKQ== - dependencies: - axios "^0.19.0" - colors "^1.4.0" - tslib "^1.10.0" - xml2js "^0.4.22" - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6.3, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.0.5, ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -image-size@~0.5.0: - 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== - -immer@^9.0.16: - version "9.0.21" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - -immutable@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz" - integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== - -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -inquirer@^8.0.0: - version "8.2.5" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz" - integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - -internal-slot@^1.0.3, internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" - side-channel "^1.0.4" - -intersection-observer@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.7.0.tgz" - integrity sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg== - -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz" - integrity sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ== - dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" - -invariant@2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ip@^1.1.0, ip@^1.1.4: - version "1.1.8" - resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -ipaddr.js@1.9.1: - 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== - -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - 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" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@~1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-builtin-module@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.11.0, is-core-module@^2.4.0, is-core-module@^2.5.0, is-core-module@^2.9.0: - version "2.12.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-es2016-keyword@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz" - integrity sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - 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== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - 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" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz" - integrity sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw== - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-invalid-path@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-1.0.2.tgz" - integrity sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA== - -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz" - integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz" - integrity sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz" - integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== - dependencies: - path-is-inside "^1.0.1" - -is-path-inside@^3.0.2, is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - 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== - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz" - integrity sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw== - -is-regex@^1.0.4, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-what@^3.14.1: - version "3.14.1" - resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz" - integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -j-component@^1.4.9: - version "1.4.9" - resolved "https://registry.npmjs.org/j-component/-/j-component-1.4.9.tgz" - integrity sha512-7TaTylECTW4sRaDLaj463sTj9BK6/3rSD67um47ypLPwtZW3wPwynCQ9sdnEJmTIw9Jfy2ZLKWiSDRdaINv50w== - dependencies: - expr-parser "^1.0.0" - miniprogram-api-typings "^3.2.2" - miniprogram-exparser latest - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -javascript-stringify@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz" - integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== - -jest-worker@^27.0.2, jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -joi@^17.6.0: - version "17.9.2" - resolved "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz" - integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - -joycon@^3.0.1: - version "3.1.1" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - -js-tokens@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.0, js-yaml@^3.14.0: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsdom@^21.1.0: - version "21.1.1" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-21.1.1.tgz" - integrity sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w== - dependencies: - abab "^2.0.6" - acorn "^8.8.2" - acorn-globals "^7.0.0" - cssstyle "^3.0.0" - data-urls "^4.0.0" - decimal.js "^10.4.3" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.2" - rrweb-cssom "^0.6.0" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^12.0.1" - ws "^8.13.0" - xml-name-validator "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - 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== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^1.0.1, json5@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.2: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-eslint-parser@^2.0.4, jsonc-eslint-parser@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.2.0.tgz" - integrity sha512-x5QjzBOORd+T2EjErIxJnkOEbLVEdD1ILEeBbIJt8Eq/zUn7P7M8qdnWiNVBK5f8oxnJpc6SBHOeeIEl/swPjg== - dependencies: - acorn "^8.5.0" - eslint-visitor-keys "^3.0.0" - espree "^9.0.0" - semver "^7.3.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - 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" - -jsonp-retry@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/jsonp-retry/-/jsonp-retry-1.0.3.tgz" - integrity sha512-/jmE9+shtKP+oIt2AWO9Wx+C27NTGpLCEw4QHOqpoV2X6ta374HE9C+EEdgu8r3iLKgFMx7u5j0mCwxWN8UdlA== - dependencies: - object-assign "^4.1.1" - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.3" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -keyv@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz" - integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== - dependencies: - json-buffer "3.0.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4, klona@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - -known-css-properties@^0.26.0: - version "0.26.0" - resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz" - integrity sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg== - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz" - integrity sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w== - dependencies: - package-json "^4.0.0" - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -less-loader@10.2.0: - version "10.2.0" - resolved "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz" - integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg== - dependencies: - klona "^2.0.4" - -less@^3.10.3: - version "3.13.1" - resolved "https://registry.npmjs.org/less/-/less-3.13.1.tgz" - integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw== - dependencies: - copy-anything "^2.0.1" - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - native-request "^1.0.5" - source-map "~0.6.0" - -less@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz" - integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" - 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" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lightningcss-darwin-arm64@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.20.0.tgz#0416a0cb840944ea4aee972df02491c0168a784c" - integrity sha512-aYEohJTlzwB8URJaNiS57tMbjyLub0mYvxlxKQk8SZv+irXx6MoBWpDNQKKTS9gg1pGf/eAwjpa3BLAoCBsh1A== - -lightningcss-darwin-x64@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.20.0.tgz#4caa2b38fe223eabb32ebc3e1268a6b09e6b8d06" - integrity sha512-cmMgY8FFWVaGgtift7eKKkHMqlz9O09/yTdlCXEDOeDP9yeo6vHOBTRP7ojb368kjw8Ew3l0L2uT1Gtx56eNkg== - -lightningcss-linux-arm-gnueabihf@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.20.0.tgz#3e999a07aa77c10a06c9dda9b507c7a737f8521f" - integrity sha512-/m+NDO1O6JCv7R9F0XWlXcintQHx4MPNU+kt8jZJO07LLdGwCfvjN31GVcwVPlStnnx/cU8uTTmax6g/Qu/whg== - -lightningcss-linux-arm64-gnu@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.20.0.tgz#8b7786936ea462f744a85038fb033cc56049b677" - integrity sha512-gtXoa6v0HvMRLbev6Hsef0+Q5He7NslB+Rs7G49Y5LUSdJeGIATEN+j8JzHC0DnxCsOGbEgGRmvtJzzYDkkluw== - -lightningcss-linux-arm64-musl@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.20.0.tgz#8d812309c4e70398cee79fcdc452548ca521a6eb" - integrity sha512-Po7XpucM1kZnkiyd2BNwTExSDcZ8jm8uB9u+Sq44qjpkf5f75jreQwn3DQm9I1t5C6tB9HGt30HExMju9umJBQ== - -lightningcss-linux-x64-gnu@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.20.0.tgz#7652fbb26e50a5fa21b763aaebdb4bc657540c7e" - integrity sha512-8yR/fGNn/P0I+Lc3PK+VWPET/zdSpBfHFIG0DJ38TywMbItVKvnFvoTBwnIm4LqBz7g2G2dDexnNP95za2Ll8g== - -lightningcss-linux-x64-musl@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.20.0.tgz#aa21957fc51c363b4436e973911d01af4bed3c35" - integrity sha512-EmpJ+VkPZ8RACiB4m+l8TmapmE1W2UvJKDHE+ML/3Ihr9tRKUs3CibfnQTFZC8aSsrxgXagDAN+PgCDDhIyriA== - -lightningcss-win32-x64-msvc@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.20.0.tgz" - integrity sha512-BRdPvbq7Cc1qxAzp2emqWJHrqsEkf4ggxS29VOnxT7jhkdHKU+a26OVMjvm/OL0NH0ToNOZNAPvHMSexiEgBeA== - -lightningcss@^1.14.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.20.0.tgz" - integrity sha512-4bj8aP+Vi+or8Gwq/hknmicr4PmA8D9uL/3qY0N0daX5vYBMYERGI6Y93nzoeRgQMULq+gtrN/FvJYtH0xNN8g== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.20.0" - lightningcss-darwin-x64 "1.20.0" - lightningcss-linux-arm-gnueabihf "1.20.0" - lightningcss-linux-arm64-gnu "1.20.0" - lightningcss-linux-arm64-musl "1.20.0" - lightningcss-linux-x64-gnu "1.20.0" - lightningcss-linux-x64-musl "1.20.0" - lightningcss-win32-x64-msvc "1.20.0" - -lilconfig@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -load-yaml-file@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz" - integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== - dependencies: - graceful-fs "^4.1.5" - js-yaml "^3.13.0" - pify "^4.0.1" - strip-bom "^3.0.0" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.2" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0, loader-utils@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash-es@4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@4.17.21, "lodash@4.6.1 || ^4.16.1", lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loglevel-plugin-prefix@^0.8.4: - version "0.8.4" - resolved "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz" - integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== - -loglevel@^1.6.6: - version "1.8.1" - resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" - integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" - integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz" - integrity sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A== - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^4.0.1, lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - 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" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.7: - 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" - -make-dir@^1.0.0, make-dir@^1.2.0: - version "1.3.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@~3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - -mathml-tag-names@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz" - integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== - -md5@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" - integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== - dependencies: - charenc "0.0.2" - crypt "0.0.2" - is-buffer "~1.1.6" - -mdast-util-from-markdown@^0.8.5: - version "0.8.5" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" - -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - -mdn-data@~1.1.0: - version "1.1.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz" - integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -mem-fs-editor@^9.6.0: - version "9.7.0" - resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.7.0.tgz" - integrity sha512-ReB3YD24GNykmu4WeUL/FDIQtkoyGB6zfJv60yfCo3QjKeimNcTqv2FT83bP0ccs6uu+sm5zyoBlspAzigmsdg== - dependencies: - binaryextensions "^4.16.0" - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^3.1.8" - globby "^11.1.0" - isbinaryfile "^5.0.0" - minimatch "^7.2.0" - multimatch "^5.0.0" - normalize-path "^3.0.0" - textextensions "^5.13.0" - -mem-fs@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/mem-fs/-/mem-fs-2.3.0.tgz" - integrity sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw== - dependencies: - "@types/node" "^15.6.2" - "@types/vinyl" "^2.0.4" - vinyl "^2.0.1" - vinyl-file "^3.0.0" - -memfs@^3.4.3: - version "3.5.1" - resolved "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz" - integrity sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA== - dependencies: - fs-monkey "^1.0.3" - -memoize-one@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz" - integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== - -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -metro-react-native-babel-preset@^0.72.1: - version "0.72.3" - resolved "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz" - integrity sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw== - dependencies: - "@babel/core" "^7.14.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - -micromark@~2.11.0: - version "2.11.4" - resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== - dependencies: - debug "^4.0.0" - parse-entities "^2.0.0" - -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - 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" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.26, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@~2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@2.4.6: - version "2.4.6" - resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.6.tgz" - integrity sha512-khHpc29bdsE9EQiGSLqQieLyMbGca+bkC42/BBL1gXC8yAS0nHpOTUCBYUK6En1FuRdfE9wKXhGtsab8vmsugg== - dependencies: - schema-utils "^4.0.0" - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^7.2.0: - version "7.4.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz" - integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== - dependencies: - brace-expansion "^2.0.1" - -minimatch@~3.0.4: - version "3.0.8" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" - integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== - dependencies: - brace-expansion "^1.1.7" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.7, minimist@^1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -miniprogram-api-typings@^3.2.2: - version "3.9.1" - resolved "https://registry.npmjs.org/miniprogram-api-typings/-/miniprogram-api-typings-3.9.1.tgz" - integrity sha512-oyratzOWyuFhBzONp06l0FBPu03ltCd1sRWoy2v38SnAKxtpZ8ySLTSEw//hIsBdocMda7fFZEjOG57L57mcUw== - -miniprogram-compiler@latest: - version "0.2.2" - resolved "https://registry.npmjs.org/miniprogram-compiler/-/miniprogram-compiler-0.2.2.tgz" - integrity sha512-fiJXv/15jCcRAU8YKcO7S7fkPKLa5ZBgpLN+d6B3r3KMktM5tAkDEQ+zm6aTfNoHurYOHcRyPyGf26gqQXlFXg== - dependencies: - glob "^7.1.3" - unescape-js "^1.1.1" - -miniprogram-exparser@latest: - version "2.29.1" - resolved "https://registry.npmjs.org/miniprogram-exparser/-/miniprogram-exparser-2.29.1.tgz" - integrity sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw== - -miniprogram-simulate@^1.1.5: - version "1.5.9" - resolved "https://registry.npmjs.org/miniprogram-simulate/-/miniprogram-simulate-1.5.9.tgz" - integrity sha512-l/Ddm/L7tZ1I9/V86JnDJpM5fGqw53LieQIkuyIJyyC4/8lBjBQ0ziMCBwb+1EO2aKz4Uhlt4moT4PS/s9QAjQ== - dependencies: - csso "^3.5.1" - j-component "^1.4.9" - less "^3.10.3" - miniprogram-compiler latest - postcss "^7.0.23" - -mkdirp@^0.5.4, mkdirp@^0.5.6: - 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" - -mkdirp@^1.0.4, mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mobile-detect@^1.4.2: - version "1.4.5" - resolved "https://registry.npmjs.org/mobile-detect/-/mobile-detect-1.4.5.tgz" - integrity sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" - integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -native-request@^1.0.5: - version "1.1.0" - resolved "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz" - integrity sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -needle@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" - integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.6.3" - sax "^1.2.4" - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-emoji@^1.10.0: - version "1.11.0" - resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-check@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/npm-check/-/npm-check-6.0.1.tgz" - integrity sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ== - dependencies: - callsite-record "^4.1.3" - chalk "^4.1.0" - co "^4.6.0" - depcheck "^1.3.1" - execa "^5.0.0" - giturl "^1.0.0" - global-modules "^2.0.0" - globby "^11.0.2" - inquirer "^7.3.3" - is-ci "^2.0.0" - lodash "^4.17.20" - meow "^9.0.0" - minimatch "^3.0.2" - node-emoji "^1.10.0" - ora "^5.3.0" - package-json "^6.5.0" - path-exists "^4.0.0" - pkg-dir "^5.0.0" - preferred-pm "^3.0.3" - rc-config-loader "^4.0.0" - semver "^7.3.4" - semver-diff "^3.1.1" - strip-ansi "^6.0.0" - text-table "^0.2.0" - throat "^6.0.1" - update-notifier "^5.1.0" - xtend "^4.0.2" - -npm-conf@^1.1.0, npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" - integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== - -nwsapi@^2.2.2: - version "2.2.4" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz" - integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.9: - version "8.4.2" - resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^5.0.0, ora@^5.3.0, ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz" - integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-event@^2.1.0: - version "2.3.1" - resolved "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz" - integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== - dependencies: - p-timeout "^2.0.1" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz" - integrity sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg== - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-timeout@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz" - integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== - dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz" - integrity sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA== - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -package-json@^6.3.0, package-json@^6.5.0: - version "6.5.0" - resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -param-case@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" - integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== - dependencies: - no-case "^2.2.0" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" - integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pirates@^4.0.1, pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.2.0: - 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== - dependencies: - find-up "^4.0.0" - -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== - dependencies: - find-up "^5.0.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -portfinder@^1.0.28: - version "1.0.32" - resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" - integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - dependencies: - async "^2.6.4" - debug "^3.2.7" - mkdirp "^0.5.6" - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-html-transform@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/postcss-html-transform/-/postcss-html-transform-3.6.6.tgz#9096a416c75f4177f1d47fd83ed1afef7c9561ad" - integrity sha512-M8QO8vwgfS3zAug1O8XW1ETKoRwPXs8jai+Otn0kIxALZXV2vKo8vbu1f3JNbav6U6yn7xjtv3mtiKfFKfygnw== - -postcss-import@^14.0.0: - 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" - -postcss-loader@^7.0.1: - version "7.2.4" - resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.2.4.tgz" - integrity sha512-F88rpxxNspo5hatIc+orYwZDtHFaVFOSIVAx+fBfJC1GmhWbVmPWtmg2gXKE1OxJbneOSGn8PWdIwsZFcruS+w== - dependencies: - cosmiconfig "^8.1.3" - cosmiconfig-typescript-loader "^4.3.0" - klona "^2.0.6" - semver "^7.3.8" - -postcss-media-query-parser@^0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz" - integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - 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== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - 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" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-plugin-constparse@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/postcss-plugin-constparse/-/postcss-plugin-constparse-3.6.6.tgz#4d6918f0417787f6ef3885d2cc505e798e83bd7f" - integrity sha512-Bx5Sr4pDPFpYgGtLz/tiJUo/mmgSExAqtnVG8lo8AQcLWxuaJ5Yv6+z8MUegBcSA3A+Oqs7GUm76JDV7GG91eA== - -postcss-pxtransform@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/postcss-pxtransform/-/postcss-pxtransform-3.6.6.tgz#98b287e167bfdbb3876577901e7582e8a784d306" - integrity sha512-NTEnE43Z41f9F53vVDt1r+llrlmWqy5fH12ObJ0Q2MF4KjvdGqnbE1yDg7XqmiLFWbUJ3iEe17zIaSlNVyiQLQ== - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-resolve-nested-selector@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz" - integrity sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw== - -postcss-safe-parser@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz" - integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== - -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.11" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-url@^10.1.3: - version "10.1.3" - resolved "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz" - integrity sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw== - dependencies: - make-dir "~3.1.0" - mime "~2.5.2" - minimatch "~3.0.4" - xxhashjs "~0.2.2" - -postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^7.0.23, postcss@^7.0.32, postcss@^7.0.36: - version "7.0.39" - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.1.10, postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.19: - version "8.4.23" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -preferred-pm@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz" - integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ== - dependencies: - find-up "^5.0.0" - find-yarn-workspace-root2 "1.2.16" - path-exists "^4.0.0" - which-pm "2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" - integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -"prettier@^1.18.2 || ^2.0.0", prettier@^2.8.0: - version "2.8.8" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-polyfill@^7.1.0: - version "7.1.2" - resolved "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz" - integrity sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ== - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-addr@~2.0.7: - 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== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28, psl@^1.1.33: - version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.10.3: - version "6.11.1" - resolved "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz" - integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-ast@^1.0.3: - version "1.0.5" - resolved "https://registry.npmjs.org/query-ast/-/query-ast-1.0.5.tgz" - integrity sha512-JK+1ma4YDuLjvKKcz9JZ70G+CM9qEOs/l1cZzstMMfwKUabTJ9sud5jvDGrUNuv03yKUgs82bLkHXJkDyhRmBw== - dependencies: - invariant "2.2.4" - lodash "^4.17.21" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -query-string@^7.1.1: - version "7.1.3" - resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc-config-loader@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz" - integrity sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg== - dependencies: - debug "^4.3.4" - js-yaml "^4.1.0" - json5 "^2.2.2" - require-from-string "^2.0.2" - -rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-devtools-core@4.14.0: - version "4.14.0" - resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.14.0.tgz" - integrity sha512-cE7tkSUkGCDxTA79pntDGJCBgzNN/XxA3kgPdXujdfSfEfVhzrItQIEsN0kCN/hJJACDvH2Q8p5+tJb/K4B3qA== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -react-devtools@4.14.0: - version "4.14.0" - resolved "https://registry.npmjs.org/react-devtools/-/react-devtools-4.14.0.tgz" - integrity sha512-zGb3Vt1fvYCUYuK4cmpaGWyCwwsioX8YqBZPUGL3QTLFoB/glUsgOsZWviiyhnfBuhbp5iiMQz0VBKfms9pB2w== - dependencies: - cross-spawn "^5.0.1" - electron "^11.1.0" - ip "^1.1.4" - minimist "^1.2.3" - react-devtools-core "4.14.0" - update-notifier "^2.1.0" - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-reconciler@0.27.0: - version "0.27.0" - resolved "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz" - integrity sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.21.0" - -react-redux@^8.0.5: - version "8.0.5" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz" - integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw== - dependencies: - "@babel/runtime" "^7.12.1" - "@types/hoist-non-react-statics" "^3.3.1" - "@types/use-sync-external-store" "^0.0.3" - hoist-non-react-statics "^3.3.2" - react-is "^18.0.0" - use-sync-external-store "^1.0.0" - -react-refresh@0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== - -react-refresh@^0.4.0: - version "0.4.3" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz" - integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-cache@^1.0.0: - 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" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^3.5.0, readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -redux-logger@^3.0.6: - version "3.0.6" - resolved "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz" - integrity sha512-JoCIok7bg/XpqA1JqCqXFypuqBbQzGQySrhFzewB7ThcnysTO30l4VCst86AuB9T9tuT03MAA56Jw2PNhRSNCg== - dependencies: - deep-diff "^0.3.5" - -redux-thunk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" - integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== - -redux@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" - integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== - dependencies: - "@babel/runtime" "^7.9.2" - -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@0.11: - version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - -regexp-tree@^0.1.24, regexp-tree@~0.1.1: - version "0.1.25" - resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.25.tgz" - integrity sha512-szcL3aqw+vEeuxhL1AMYRyeMP+goYF5I/guaH10uJX5xbGyeQeNPPneaj3ZWVmGLCDxrVaaYekkr5R12gk4dJw== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: - version "1.5.0" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - functions-have-names "^1.2.3" - -regexpp@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - 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" - -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz" - integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA== - dependencies: - rc "^1.0.1" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - -replace-ext@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz" - integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== - -request@^2.88.0: - version "2.88.2" - resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - 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== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-package-name@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz" - integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-url-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz" - integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^8.2.14" - source-map "0.6.1" - -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.22.0, resolve@^1.22.1: - version "1.22.2" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@1.0.2, responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -roarr@^2.15.3: - version "2.15.4" - resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" - integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== - dependencies: - boolean "^3.0.1" - detect-node "^2.0.4" - globalthis "^1.0.1" - json-stringify-safe "^5.0.1" - semver-compare "^1.0.0" - sprintf-js "^1.1.2" - -rrweb-cssom@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" - integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -safe-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz" - integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== - dependencies: - regexp-tree "~0.1.1" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-loader@12.4.0: - version "12.4.0" - resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz" - integrity sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@*, sass@^1.23.7, sass@^1.29.0: - version "1.62.1" - resolved "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz" - integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sass@1.50.0: - version "1.50.0" - resolved "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz" - integrity sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@1.2.4, sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.21.0: - version "0.21.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz" - integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ== - dependencies: - loose-envify "^1.1.0" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz" - integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz" - integrity sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -scss-bundle@^3.0.2: - version "3.1.2" - resolved "https://registry.npmjs.org/scss-bundle/-/scss-bundle-3.1.2.tgz" - integrity sha512-lvxTwCKDLgzmRWhGwJ834ggtnEhs0G9FxSJRWte+NwlshVvBcQ/kOHHkpAGDpCxIMNGz/Utl0yd/MWyQAOBhqg== - dependencies: - "@types/archy" "^0.0.31" - "@types/debug" "^4.1.5" - "@types/fs-extra" "^8.0.1" - "@types/glob" "^7.1.1" - "@types/lodash.debounce" "^4.0.6" - "@types/sass" "^1.16.0" - archy "^1.0.0" - chalk "^3.0.0" - chokidar "^3.3.1" - commander "^4.0.1" - fs-extra "^8.1.0" - globs "^0.1.4" - lodash.debounce "^4.0.8" - loglevel "^1.6.6" - loglevel-plugin-prefix "^0.8.4" - pretty-bytes "^5.3.0" - sass "^1.23.7" - tslib "^1.10.0" - -scss-parser@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.6.tgz" - integrity sha512-SH3TaoaJFzfAtqs3eG1j5IuHJkeEW5rKUPIjIN+ZorLAyJLHItQGnsgwHk76v25GtLtpT9IqfAcqK4vFWdiw+w== - dependencies: - invariant "2.2.4" - lodash "4.17.21" - -seek-bzip@^1.0.5: - version "1.0.6" - resolved "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz" - integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== - dependencies: - commander "^2.8.1" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== - dependencies: - node-forge "^1" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz" - integrity sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw== - dependencies: - semver "^5.0.3" - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: - version "7.5.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - 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" - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.8.1" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -sockjs@^0.3.21: - version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -sort-keys-length@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz" - integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== - dependencies: - sort-keys "^1.0.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" - integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@~0.5.20: - 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== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.3: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.13" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz" - integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssr-window@^3.0.0, ssr-window@^3.0.0-alpha.1: - version "3.0.0" - resolved "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz" - integrity sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA== - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.1.1, stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -std-env@^3.0.1: - version "3.3.2" - resolved "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz" - integrity sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.fromcodepoint@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz" - integrity sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg== - -string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - -strip-bom-buf@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz" - integrity sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ== - dependencies: - is-utf8 "^0.2.1" - -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz" - integrity sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w== - dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - 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== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -strip-outer@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz" - integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== - dependencies: - escape-string-regexp "^1.0.2" - -style-loader@3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" - integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== - -style-search@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz" - integrity sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg== - -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -stylelint@14.15.0: - version "14.15.0" - resolved "https://registry.npmjs.org/stylelint/-/stylelint-14.15.0.tgz" - integrity sha512-JOgDAo5QRsqiOZPZO+B9rKJvBm64S0xasbuRPAbPs6/vQDgDCnZLIiw6XcAS6GQKk9k1sBWR6rmH3Mfj8OknKg== - dependencies: - "@csstools/selector-specificity" "^2.0.2" - balanced-match "^2.0.0" - colord "^2.9.3" - cosmiconfig "^7.1.0" - css-functions-list "^3.1.0" - debug "^4.3.4" - fast-glob "^3.2.12" - fastest-levenshtein "^1.0.16" - file-entry-cache "^6.0.1" - global-modules "^2.0.0" - globby "^11.1.0" - globjoin "^0.1.4" - html-tags "^3.2.0" - ignore "^5.2.0" - import-lazy "^4.0.0" - imurmurhash "^0.1.4" - is-plain-object "^5.0.0" - known-css-properties "^0.26.0" - mathml-tag-names "^2.1.3" - meow "^9.0.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.19" - postcss-media-query-parser "^0.2.3" - postcss-resolve-nested-selector "^0.1.1" - postcss-safe-parser "^6.0.0" - postcss-selector-parser "^6.0.10" - postcss-value-parser "^4.2.0" - resolve-from "^5.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - style-search "^0.1.0" - supports-hyperlinks "^2.3.0" - svg-tags "^1.0.0" - table "^6.8.1" - v8-compile-cache "^2.3.0" - write-file-atomic "^4.0.2" - -stylus-loader@6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz" - integrity sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg== - dependencies: - fast-glob "^3.2.7" - klona "^2.0.4" - normalize-path "^3.0.0" - -stylus@^0.55.0: - version "0.55.0" - resolved "https://registry.npmjs.org/stylus/-/stylus-0.55.0.tgz" - integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== - dependencies: - css "^3.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -sumchecker@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" - integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== - dependencies: - debug "^4.1.0" - -supports-color@^5.3.0: - 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" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.2.0, supports-hyperlinks@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - 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== - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz" - integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -svgo@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" - integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^5.1.0" - css-tree "^2.2.1" - csso "^5.0.5" - picocolors "^1.0.0" - -swiper@6.8.0: - version "6.8.0" - resolved "https://registry.npmjs.org/swiper/-/swiper-6.8.0.tgz" - integrity sha512-6H3e7VOihasMp8sPXNhRDkc61UD0XeFlefbWfUHecBLBTtmA+9WxJiKDBMdzgetK1cny+5+mKfVcsmxYgnEDSw== - dependencies: - dom7 "^3.0.0" - ssr-window "^3.0.0" - -symbol-tree@^3.2.4: - 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== - -table@^6.8.1: - version "6.8.1" - resolved "https://registry.npmjs.org/table/-/table-6.8.1.tgz" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - -taro-css-to-react-native@3.6.6: - version "3.6.6" - resolved "https://registry.npmjs.org/taro-css-to-react-native/-/taro-css-to-react-native-3.6.6.tgz#7bf407b4702c0eb3ce806811dc1e6c983b37a40b" - integrity sha512-Xstzd/eEmDnHNET8QMapiNltBTJGeH1n5o0iM4GItJOhDUboPH1GhMkBLpOH6aidpq9rU7J70uNmpK/GtvR06w== - dependencies: - camelize "^1.0.0" - css "^3.0.0" - css-color-keywords "^1.0.0" - css-mediaquery "^0.1.2" - postcss-value-parser "^3.3.0" - -taro-iconfont-svg@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/taro-iconfont-svg/-/taro-iconfont-svg-1.1.1.tgz" - integrity sha512-rOfrubDg3hGky6b7sb+rygleq97LW1dnd23MVIJ+0h9xsMxFwEv1t4+R/ZMpWhxrWV4CQPgIJJ0YKb1BIqLs5A== - dependencies: - "@tarojs/taro" "^3.5.10" - classnames "^2.3.2" - colors "^1.4.0" - fs-extra "^11.1.0" - glob "^8.0.3" - iconfont-parser "^1.0.0" - minimist "^1.2.7" - mkdirp "^1.0.4" - svgo "^3.0.2" - ts-node "^10.9.1" - xml2js "^0.4.23" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz" - integrity sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ== - dependencies: - execa "^0.7.0" - -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.6, terser-webpack-plugin@^5.3.7: - version "5.3.7" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.5" - -terser@^5.10.0, terser@^5.16.5: - version "5.17.1" - resolved "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz" - integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -textextensions@^5.13.0: - version "5.15.0" - resolved "https://registry.npmjs.org/textextensions/-/textextensions-5.15.0.tgz" - integrity sha512-MeqZRHLuaGamUXGuVn2ivtU3LA3mLCCIO5kUGoohTCoGmCBg/+8yPhWVX9WSl9telvVd8erftjFk9Fwb2dD6rw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -throat@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" - integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== - -through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" - integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - -to-fast-properties@^2.0.0: - 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== - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^5.0.1: - 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" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" - integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz" - integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== - dependencies: - punycode "^2.3.0" - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -trim-repeated@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz" - integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== - dependencies: - escape-string-regexp "^1.0.2" - -ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^3.14.1: - version "3.14.2" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - 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== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typedarray-to-buffer@^3.1.5: - 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== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript@^4.9.3: - version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -uglify-js@^3.5.1: - version "3.17.4" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unbzip2-stream@^1.0.9: - version "1.4.3" - resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - -unescape-js@^1.1.1: - version "1.1.4" - resolved "https://registry.npmjs.org/unescape-js/-/unescape-js-1.1.4.tgz" - integrity sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g== - dependencies: - string.fromcodepoint "^0.2.1" - -unicode-canonical-property-names-ecmascript@^2.0.0: - 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== - -unicode-match-property-ecmascript@^2.0.0: - 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== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - 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== - -unicode-property-aliases-ecmascript@^2.0.0: - 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== - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz" - integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== - dependencies: - crypto-random-string "^1.0.0" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== - dependencies: - "@types/unist" "^2.0.2" - -universal-router@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/universal-router/-/universal-router-8.3.0.tgz" - integrity sha512-cBkihRoHvRQAjdUnDE1GGuuw/TPAIi8z2pEsSmUVAWLeZdgjHzzAb1+0VOO6NvBOvySItOTQikzaGlRxRdJBnA== - dependencies: - path-to-regexp "^3.1.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz" - integrity sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw== - -update-browserslist-db@^1.0.10: - version "1.0.11" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-notifier@^2.1.0: - version "2.5.0" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== - dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" - integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-loader@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.0.tgz" - integrity sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.26" - schema-utils "^2.6.5" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" - integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" - integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== - -use-sync-external-store@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utila@~0.4: - version "0.4.0" - resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-compile-cache@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" - integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== - dependencies: - builtins "^5.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vinyl-file@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz" - integrity sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.3.0" - strip-bom-buf "^1.0.0" - strip-bom-stream "^2.0.0" - vinyl "^2.0.1" - -vinyl@^2.0.1: - version "2.2.1" - resolved "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz" - integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -vm2@^3.8.4: - version "3.9.17" - resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.17.tgz" - integrity sha512-AqwtCnZ/ERcX+AVj9vUsphY56YANXxRuqMb7GsDtAr0m0PcQX3u0Aj3KWiXM0YAHy7i6JEeHrwOnwXbGYgRpAw== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^15.10.1: - version "15.10.1" - resolved "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz#c451c4cd05a911aae7b5dbbbc09fb913fb3cca18" - integrity sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-style-loader@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -w3c-xmlserializer@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" - integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== - dependencies: - xml-name-validator "^4.0.0" - -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-chain@6.5.1: - version "6.5.1" - resolved "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz" - integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@4.7.4: - version "4.7.4" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz" - integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.2.2" - ansi-html-community "^0.0.8" - bonjour "^3.5.0" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - default-gateway "^6.0.3" - del "^6.0.0" - express "^4.17.1" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.0" - ipaddr.js "^2.0.1" - open "^8.0.9" - p-retry "^4.5.0" - portfinder "^1.0.28" - schema-utils "^4.0.0" - selfsigned "^2.0.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - spdy "^4.0.2" - strip-ansi "^7.0.0" - webpack-dev-middleware "^5.3.1" - ws "^8.4.2" - -webpack-format-messages@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/webpack-format-messages/-/webpack-format-messages-2.0.6.tgz" - integrity sha512-JOUviZSCupGTf6uJjrxKMEyOawWws566e3phwSyuWBsQxuBU6Gm4QV5wdU8UfkPIhWyhAqSGKeq8fNE9Q4rs9Q== - dependencies: - kleur "^3.0.0" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack-sources@^3.2.3: - 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== - -webpack-virtual-modules@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz" - integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== - -webpack@^5.75.0: - version "5.81.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz" - integrity sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.13.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.2" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -webpackbar@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz" - integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== - dependencies: - chalk "^4.1.0" - consola "^2.15.3" - pretty-time "^1.1.0" - std-env "^3.0.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -weui@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/weui/-/weui-1.1.3.tgz" - integrity sha512-vC6eWUvG1MYoE8yLsvBBmLB2+4DZWynQOL47MUscHMwPVltOZPGsiRb2PE7y3z+w3ElF1SsmJsyhr40wiXgP5A== - -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-fetch@^3.4.0: - version "3.6.2" - resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^12.0.0, whatwg-url@^12.0.1: - version "12.0.1" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz" - integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== - dependencies: - tr46 "^4.1.1" - webidl-conversions "^7.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-pm@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz" - integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== - dependencies: - load-yaml-file "^0.2.0" - path-exists "^4.0.0" - -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" - -which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0: - 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== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@^7: - version "7.5.9" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.13.0, ws@^8.4.2: - version "8.13.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz" - integrity sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xml2js@^0.4.19, xml2js@^0.4.22, xml2js@^0.4.23: - 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" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xxhashjs@~0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz" - integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== - dependencies: - cuint "^0.2.2" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml-eslint-parser@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.0.tgz" - integrity sha512-OmuvQd5lyIJWfFALc39K5fGqp0aWNc+EtyhVgcQIPZaUKMnTb7An3RMp+QJizJ/x0F4kpgTNe6BL/ctdvoIwIg== - dependencies: - eslint-visitor-keys "^3.0.0" - lodash "^4.17.21" - yaml "^2.0.0" - -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yaml@^2.0.0: - version "2.2.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz" - integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== - -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^16.0.0, yargs@^16.1.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - 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" - -yauzl@2.10.0, yauzl@^2.10.0, yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==