{
  "cwd": "/usr/local/app-admin/crazycharge-admin",
  "pkg": {
    "name": "ant-design-pro",
    "version": "6.0.0",
    "private": true,
    "description": "An out-of-box UI solution for enterprise applications",
    "scripts": {
      "analyze": "cross-env ANALYZE=1 max build",
      "build": "max build",
      "deploy": "npm run build && npm run gh-pages",
      "dev": "npm run start:dev",
      "gh-pages": "gh-pages -d dist",
      "i18n-remove": "pro i18n-remove --locale=zh-CN --write",
      "postinstall": "max setup",
      "jest": "jest",
      "lint": "npm run lint:js && npm run lint:prettier && npm run tsc",
      "lint-staged": "lint-staged",
      "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
      "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src ",
      "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
      "lint:prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\" --end-of-line auto",
      "openapi": "max openapi",
      "prepare": "husky install",
      "prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\"",
      "preview": "npm run build && max preview --port 8000",
      "record": "cross-env NODE_ENV=development REACT_APP_ENV=test max record --scene=login",
      "serve": "umi-serve",
      "start": "cross-env UMI_ENV=dev max dev",
      "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev max dev",
      "start:no-mock": "cross-env MOCK=none UMI_ENV=dev max dev",
      "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev max dev",
      "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev max dev",
      "test": "jest",
      "test:coverage": "npm run jest -- --coverage",
      "test:update": "npm run jest -- -u",
      "tsc": "tsc --noEmit"
    },
    "lint-staged": {
      "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
      "**/*.{js,jsx,tsx,ts,less,md,json}": [
        "prettier --write"
      ]
    },
    "browserslist": [
      "> 1%",
      "last 2 versions",
      "not ie <= 10"
    ],
    "dependencies": {
      "@ant-design/icons": "^4.8.1",
      "@ant-design/pro-components": "^2.6.48",
      "@umijs/route-utils": "^2.2.2",
      "antd": "^5.13.2",
      "antd-style": "^3.6.1",
      "classnames": "^2.5.1",
      "omit.js": "^2.0.2",
      "querystring": "^0.2.1",
      "rc-menu": "^9.12.4",
      "rc-util": "^5.38.1",
      "react": "^18.2.0",
      "react-dom": "^18.2.0",
      "react-helmet-async": "^1.3.0",
      "xlsx": "^0.18.5"
    },
    "devDependencies": {
      "@ant-design/pro-cli": "^3.3.0",
      "@testing-library/react": "^13.4.0",
      "@types/classnames": "^2.3.1",
      "@types/express": "^4.17.21",
      "@types/history": "^4.7.11",
      "@types/jest": "^29.5.11",
      "@types/lodash": "^4.14.202",
      "@types/react": "^18.2.48",
      "@types/react-dom": "^18.2.18",
      "@types/react-helmet": "^6.1.11",
      "@umijs/fabric": "^2.14.1",
      "@umijs/lint": "^4.1.1",
      "@umijs/max": "^4.1.1",
      "cross-env": "^7.0.3",
      "eslint": "^8.56.0",
      "express": "^4.18.2",
      "gh-pages": "^3.2.3",
      "husky": "^7.0.4",
      "jest": "^29.7.0",
      "jest-environment-jsdom": "^29.7.0",
      "lint-staged": "^10.5.4",
      "mockjs": "^1.1.0",
      "prettier": "^2.8.8",
      "react-dev-inspector": "^1.9.0",
      "swagger-ui-dist": "^4.19.1",
      "tailwindcss": "^3",
      "ts-node": "^10.9.2",
      "typescript": "^5.3.3",
      "umi-presets-pro": "^2.0.3",
      "umi-serve": "^1.9.11"
    },
    "engines": {
      "node": ">=12.0.0"
    }
  },
  "pkgPath": "/usr/local/app-admin/crazycharge-admin/package.json",
  "plugins": {
    "./node_modules/@umijs/core/dist/service/servicePlugin": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "preset",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/core/dist/service/servicePlugin.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/core/dist/service/servicePlugin",
      "key": "servicePlugin"
    },
    "@umijs/preset-umi": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 3
      },
      "enableBy": "register",
      "type": "preset",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/index.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "@umijs/preset-umi",
      "key": "umi"
    },
    "./node_modules/@umijs/max/dist/preset": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "preset",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/max/dist/preset.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/max/dist/preset",
      "key": "preset"
    },
    "umi-presets-pro": {
      "config": {},
      "time": {
        "hooks": {
          "onStart": [
            0
          ]
        },
        "register": 1
      },
      "enableBy": "register",
      "type": "preset",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/umi-presets-pro/dist/index.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "umi-presets-pro",
      "key": "umiPresetsPro"
    },
    "./node_modules/@umijs/preset-umi/dist/registerMethods": {
      "config": {},
      "time": {
        "hooks": {
          "onStart": [
            0
          ]
        },
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/registerMethods.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/registerMethods",
      "key": "registerMethods"
    },
    "@umijs/did-you-know": {
      "config": {},
      "time": {
        "hooks": {
          "onStart": [
            1
          ]
        },
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/did-you-know/dist/plugin.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "@umijs/did-you-know",
      "key": "umijsDidYouKnow"
    },
    "./node_modules/@umijs/preset-umi/dist/features/404/404": {
      "config": {},
      "time": {
        "hooks": {
          "modifyRoutes": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/404/404.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/404/404",
      "key": "404"
    },
    "./node_modules/@umijs/preset-umi/dist/features/appData/appData": {
      "config": {},
      "time": {
        "hooks": {
          "modifyAppData": [
            23
          ]
        },
        "register": 20
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/appData/appData.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/appData/appData",
      "key": "appData"
    },
    "./node_modules/@umijs/preset-umi/dist/features/appData/umiInfo": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/appData/umiInfo.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/appData/umiInfo",
      "key": "umiInfo"
    },
    "./node_modules/@umijs/preset-umi/dist/features/check/check": {
      "config": {},
      "time": {
        "hooks": {
          "onCheckConfig": [
            0
          ],
          "onCheck": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/check/check.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/check/check",
      "key": "check"
    },
    "./node_modules/@umijs/preset-umi/dist/features/check/babel722": {
      "config": {},
      "time": {
        "hooks": {
          "onCheck": [
            0
          ]
        },
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/check/babel722.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/check/babel722",
      "key": "babel722"
    },
    "./node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting",
      "key": "codeSplitting"
    },
    "./node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins": {
      "config": {},
      "time": {
        "hooks": {
          "modifyConfig": [
            0
          ]
        },
        "register": 4
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins",
      "key": "configPlugins"
    },
    "virtual: config-title": {
      "id": "virtual: config-title",
      "key": "title",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-styles": {
      "id": "virtual: config-styles",
      "key": "styles",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-scripts": {
      "id": "virtual: config-scripts",
      "key": "scripts",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-routes": {
      "id": "virtual: config-routes",
      "key": "routes",
      "config": {
        "onChange": "regenerateTmpFiles"
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-routeLoader": {
      "id": "virtual: config-routeLoader",
      "key": "routeLoader",
      "config": {
        "default": {
          "moduleType": "esm"
        }
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-reactRouter5Compat": {
      "id": "virtual: config-reactRouter5Compat",
      "key": "reactRouter5Compat",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-presets": {
      "id": "virtual: config-presets",
      "key": "presets",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-plugins": {
      "id": "virtual: config-plugins",
      "key": "plugins",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-npmClient": {
      "id": "virtual: config-npmClient",
      "key": "npmClient",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-mountElementId": {
      "id": "virtual: config-mountElementId",
      "key": "mountElementId",
      "config": {
        "default": "root"
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-metas": {
      "id": "virtual: config-metas",
      "key": "metas",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-links": {
      "id": "virtual: config-links",
      "key": "links",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-historyWithQuery": {
      "id": "virtual: config-historyWithQuery",
      "key": "historyWithQuery",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-history": {
      "id": "virtual: config-history",
      "key": "history",
      "config": {
        "default": {
          "type": "browser"
        }
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-headScripts": {
      "id": "virtual: config-headScripts",
      "key": "headScripts",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-esbuildMinifyIIFE": {
      "id": "virtual: config-esbuildMinifyIIFE",
      "key": "esbuildMinifyIIFE",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-conventionRoutes": {
      "id": "virtual: config-conventionRoutes",
      "key": "conventionRoutes",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-conventionLayout": {
      "id": "virtual: config-conventionLayout",
      "key": "conventionLayout",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-base": {
      "id": "virtual: config-base",
      "key": "base",
      "config": {
        "default": "/"
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-analyze": {
      "id": "virtual: config-analyze",
      "key": "analyze",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-writeToDisk": {
      "id": "virtual: config-writeToDisk",
      "key": "writeToDisk",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-transformRuntime": {
      "id": "virtual: config-transformRuntime",
      "key": "transformRuntime",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-theme": {
      "id": "virtual: config-theme",
      "key": "theme",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-targets": {
      "id": "virtual: config-targets",
      "key": "targets",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-svgr": {
      "id": "virtual: config-svgr",
      "key": "svgr",
      "config": {
        "default": {}
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-svgo": {
      "id": "virtual: config-svgo",
      "key": "svgo",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-stylusLoader": {
      "id": "virtual: config-stylusLoader",
      "key": "stylusLoader",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-styleLoader": {
      "id": "virtual: config-styleLoader",
      "key": "styleLoader",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-srcTranspilerOptions": {
      "id": "virtual: config-srcTranspilerOptions",
      "key": "srcTranspilerOptions",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-srcTranspiler": {
      "id": "virtual: config-srcTranspiler",
      "key": "srcTranspiler",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-sassLoader": {
      "id": "virtual: config-sassLoader",
      "key": "sassLoader",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-runtimePublicPath": {
      "id": "virtual: config-runtimePublicPath",
      "key": "runtimePublicPath",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-purgeCSS": {
      "id": "virtual: config-purgeCSS",
      "key": "purgeCSS",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-publicPath": {
      "id": "virtual: config-publicPath",
      "key": "publicPath",
      "config": {
        "default": "/"
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-proxy": {
      "id": "virtual: config-proxy",
      "key": "proxy",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-postcssLoader": {
      "id": "virtual: config-postcssLoader",
      "key": "postcssLoader",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-outputPath": {
      "id": "virtual: config-outputPath",
      "key": "outputPath",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-normalCSSLoaderModules": {
      "id": "virtual: config-normalCSSLoaderModules",
      "key": "normalCSSLoaderModules",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-mfsu": {
      "id": "virtual: config-mfsu",
      "key": "mfsu",
      "config": {
        "default": {
          "strategy": "eager"
        }
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-mdx": {
      "id": "virtual: config-mdx",
      "key": "mdx",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-manifest": {
      "id": "virtual: config-manifest",
      "key": "manifest",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-lessLoader": {
      "id": "virtual: config-lessLoader",
      "key": "lessLoader",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-jsMinifierOptions": {
      "id": "virtual: config-jsMinifierOptions",
      "key": "jsMinifierOptions",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-jsMinifier": {
      "id": "virtual: config-jsMinifier",
      "key": "jsMinifier",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-inlineLimit": {
      "id": "virtual: config-inlineLimit",
      "key": "inlineLimit",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-ignoreMomentLocale": {
      "id": "virtual: config-ignoreMomentLocale",
      "key": "ignoreMomentLocale",
      "config": {
        "default": true
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-https": {
      "id": "virtual: config-https",
      "key": "https",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-hash": {
      "id": "virtual: config-hash",
      "key": "hash",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-forkTSChecker": {
      "id": "virtual: config-forkTSChecker",
      "key": "forkTSChecker",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-fastRefresh": {
      "id": "virtual: config-fastRefresh",
      "key": "fastRefresh",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-extraPostCSSPlugins": {
      "id": "virtual: config-extraPostCSSPlugins",
      "key": "extraPostCSSPlugins",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-extraBabelPresets": {
      "id": "virtual: config-extraBabelPresets",
      "key": "extraBabelPresets",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-extraBabelPlugins": {
      "id": "virtual: config-extraBabelPlugins",
      "key": "extraBabelPlugins",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-extraBabelIncludes": {
      "id": "virtual: config-extraBabelIncludes",
      "key": "extraBabelIncludes",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-externals": {
      "id": "virtual: config-externals",
      "key": "externals",
      "config": {
        "default": {}
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-esm": {
      "id": "virtual: config-esm",
      "key": "esm",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-devtool": {
      "id": "virtual: config-devtool",
      "key": "devtool",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-depTranspiler": {
      "id": "virtual: config-depTranspiler",
      "key": "depTranspiler",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-define": {
      "id": "virtual: config-define",
      "key": "define",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-deadCode": {
      "id": "virtual: config-deadCode",
      "key": "deadCode",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-cssPublicPath": {
      "id": "virtual: config-cssPublicPath",
      "key": "cssPublicPath",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-cssMinifierOptions": {
      "id": "virtual: config-cssMinifierOptions",
      "key": "cssMinifierOptions",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-cssMinifier": {
      "id": "virtual: config-cssMinifier",
      "key": "cssMinifier",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-cssLoaderModules": {
      "id": "virtual: config-cssLoaderModules",
      "key": "cssLoaderModules",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-cssLoader": {
      "id": "virtual: config-cssLoader",
      "key": "cssLoader",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-copy": {
      "id": "virtual: config-copy",
      "key": "copy",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-checkDepCssModules": {
      "id": "virtual: config-checkDepCssModules",
      "key": "checkDepCssModules",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-chainWebpack": {
      "id": "virtual: config-chainWebpack",
      "key": "chainWebpack",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-cacheDirectoryPath": {
      "id": "virtual: config-cacheDirectoryPath",
      "key": "cacheDirectoryPath",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-babelLoaderCustomize": {
      "id": "virtual: config-babelLoaderCustomize",
      "key": "babelLoaderCustomize",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-autoprefixer": {
      "id": "virtual: config-autoprefixer",
      "key": "autoprefixer",
      "config": {},
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-autoCSSModules": {
      "id": "virtual: config-autoCSSModules",
      "key": "autoCSSModules",
      "config": {
        "default": true
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "virtual: config-alias": {
      "id": "virtual: config-alias",
      "key": "alias",
      "config": {
        "default": {
          "umi": "@@/exports",
          "react": "/usr/local/app-admin/crazycharge-admin/node_modules/react",
          "react-dom": "/usr/local/app-admin/crazycharge-admin/node_modules/react-dom",
          "react-router": "/usr/local/app-admin/crazycharge-admin/node_modules/react-router",
          "react-router-dom": "/usr/local/app-admin/crazycharge-admin/node_modules/react-router-dom"
        }
      },
      "type": "plugin",
      "enableBy": "register",
      "time": {
        "hooks": {},
        "register": 0
      }
    },
    "./node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin",
      "key": "crossorigin"
    },
    "./node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand": {
      "config": {},
      "time": {
        "hooks": {
          "onStart": [
            1
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand",
      "key": "depsOnDemand"
    },
    "./node_modules/@umijs/preset-umi/dist/features/devTool/devTool": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/devTool/devTool.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/devTool/devTool",
      "key": "devTool"
    },
    "./node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 67
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker",
      "key": "esbuildHelperChecker"
    },
    "./node_modules/@umijs/preset-umi/dist/features/esmi/esmi": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 38
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/esmi/esmi.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/esmi/esmi",
      "key": "esmi"
    },
    "./node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 8
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic",
      "key": "exportStatic"
    },
    "./node_modules/@umijs/preset-umi/dist/features/favicons/favicons": {
      "config": {},
      "time": {
        "hooks": {
          "modifyAppData": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/favicons/favicons.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/favicons/favicons",
      "key": "favicons"
    },
    "./node_modules/@umijs/preset-umi/dist/features/helmet/helmet": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/helmet/helmet.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/helmet/helmet",
      "key": "helmet"
    },
    "./node_modules/@umijs/preset-umi/dist/features/icons/icons": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/icons/icons.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/icons/icons",
      "key": "icons"
    },
    "./node_modules/@umijs/preset-umi/dist/features/mock/mock": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 25
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/mock/mock.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/mock/mock",
      "key": "mock"
    },
    "./node_modules/@umijs/preset-umi/dist/features/mpa/mpa": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/mpa/mpa.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/mpa/mpa",
      "key": "mpa"
    },
    "./node_modules/@umijs/preset-umi/dist/features/okam/okam": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/okam/okam.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/okam/okam",
      "key": "okam"
    },
    "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/overrides/overrides.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides",
      "key": "overrides"
    },
    "./node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency",
      "key": "phantomDependency"
    },
    "./node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill": {
      "config": {},
      "time": {
        "hooks": {
          "modifyConfig": [
            1
          ]
        },
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill",
      "key": "polyfill"
    },
    "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill",
      "key": "publicPathPolyfill"
    },
    "./node_modules/@umijs/preset-umi/dist/features/prepare/prepare": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/prepare/prepare.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/prepare/prepare",
      "key": "prepare"
    },
    "./node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch",
      "key": "routePrefetch"
    },
    "./node_modules/@umijs/preset-umi/dist/features/terminal/terminal": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/terminal/terminal.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/terminal/terminal",
      "key": "terminal"
    },
    "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 4
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles",
      "key": "tmpFiles"
    },
    "./node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader",
      "key": "clientLoader"
    },
    "./node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps",
      "key": "routeProps"
    },
    "./node_modules/@umijs/preset-umi/dist/features/ssr/ssr": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 2
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/ssr/ssr.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/ssr/ssr",
      "key": "ssr"
    },
    "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes",
      "key": "configTypes"
    },
    "./node_modules/@umijs/preset-umi/dist/features/transform/transform": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/transform/transform.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/transform/transform",
      "key": "transform"
    },
    "./node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 2
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport",
      "key": "lowImport"
    },
    "./node_modules/@umijs/preset-umi/dist/features/vite/vite": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/vite/vite.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/vite/vite",
      "key": "vite"
    },
    "./node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 3
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute",
      "key": "apiRoute"
    },
    "./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 15
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/monorepo/redirect.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect",
      "key": "monorepoRedirect"
    },
    "./node_modules/@umijs/preset-umi/dist/features/test/test": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/test/test.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/test/test",
      "key": "test"
    },
    "./node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent",
      "key": "clickToComponent"
    },
    "./node_modules/@umijs/preset-umi/dist/features/legacy/legacy": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/legacy/legacy.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/legacy/legacy",
      "key": "legacy"
    },
    "./node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose",
      "key": "classPropertiesLoose"
    },
    "./node_modules/@umijs/preset-umi/dist/features/webpack/webpack": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/webpack/webpack.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/webpack/webpack",
      "key": "preset-umi:webpack"
    },
    "./node_modules/@umijs/preset-umi/dist/features/swc/swc": {
      "config": {},
      "time": {
        "hooks": {
          "addOnDemandDeps": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/swc/swc.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/swc/swc",
      "key": "swc"
    },
    "./node_modules/@umijs/preset-umi/dist/features/ui/ui": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 2
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/ui/ui.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/ui/ui",
      "key": "ui"
    },
    "./node_modules/@umijs/preset-umi/dist/features/mako/mako": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/mako/mako.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/mako/mako",
      "key": "mako"
    },
    "./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 2
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian",
      "key": "hmrGuardian"
    },
    "./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad",
      "key": "routePreloadOnLoad"
    },
    "./node_modules/@umijs/preset-umi/dist/features/forget/forget": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/forget/forget.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/forget/forget",
      "key": "forget"
    },
    "./node_modules/@umijs/preset-umi/dist/features/bundler/bundler": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/features/bundler/bundler.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/features/bundler/bundler",
      "key": "preset-umi:bundler"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/build": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 2
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/build.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/build",
      "key": "build"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/config/config": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 29
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/config/config.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/config/config",
      "key": "config"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/dev/dev": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 11
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/dev/dev.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/dev/dev",
      "key": "dev"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/help": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/help.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/help",
      "key": "help"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/lint": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/lint.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/lint",
      "key": "lint"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/setup": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/setup.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/setup",
      "key": "setup"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/deadcode": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/deadcode.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/deadcode",
      "key": "deadcode"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/version": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/version.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/version",
      "key": "version"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/page": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/page.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/page",
      "key": "generator:page"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/prettier": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 4
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/prettier.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/prettier",
      "key": "generator:prettier"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig",
      "key": "generator:tsconfig"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/jest": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/jest.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/jest",
      "key": "generator:jest"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss",
      "key": "generator:tailwindcss"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/dva": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/dva.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/dva",
      "key": "generator:dva"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/component": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/component.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/component",
      "key": "generator:component"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/mock": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/mock.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/mock",
      "key": "generator:mock"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/cypress": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/cypress.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/cypress",
      "key": "generator:cypress"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/api": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/api.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/api",
      "key": "generator:api"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/generators/precommit": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/generators/precommit.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/precommit",
      "key": "generator:precommit"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/plugin": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/plugin.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/plugin",
      "key": "command:plugin"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/verify-commit": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/verify-commit.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/verify-commit",
      "key": "verifyCommit"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/preview": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 20
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/preview.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/preview",
      "key": "preview"
    },
    "./node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu",
      "key": "mfsu-cli"
    },
    "@umijs/plugin-run": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugin-run/dist/index.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "@umijs/plugin-run",
      "key": "run"
    },
    "./node_modules/@umijs/plugins/dist/access": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/access.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/access",
      "key": "access"
    },
    "./node_modules/@umijs/plugins/dist/analytics": {
      "config": {
        "onChange": "reload"
      },
      "time": {
        "hooks": {},
        "register": 0
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/analytics.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/analytics",
      "key": "analytics"
    },
    "./node_modules/@umijs/plugins/dist/antd": {
      "config": {},
      "time": {
        "hooks": {
          "modifyConfig": [
            3
          ],
          "modifyAppData": [
            0
          ]
        },
        "register": 3
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/antd.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/antd",
      "key": "antd"
    },
    "./node_modules/@umijs/plugins/dist/dva": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 4
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/dva.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/dva",
      "key": "dva"
    },
    "./node_modules/@umijs/plugins/dist/initial-state": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/initial-state.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/initial-state",
      "key": "initialState"
    },
    "./node_modules/@umijs/plugins/dist/layout": {
      "config": {
        "onChange": "regenerateTmpFiles"
      },
      "time": {
        "hooks": {
          "modifyConfig": [
            0
          ],
          "addLayouts": [
            0
          ],
          "modifyAppData": [
            0
          ]
        },
        "register": 2
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/layout.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/layout",
      "key": "layout"
    },
    "./node_modules/@umijs/plugins/dist/locale": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/locale.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/locale",
      "key": "locale"
    },
    "./node_modules/@umijs/plugins/dist/mf": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/mf.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/mf",
      "key": "mf"
    },
    "./node_modules/@umijs/plugins/dist/model": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/model.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/model",
      "key": "model"
    },
    "./node_modules/@umijs/plugins/dist/moment2dayjs": {
      "config": {},
      "time": {
        "hooks": {
          "modifyConfig": [
            0
          ]
        },
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/moment2dayjs.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/moment2dayjs",
      "key": "moment2dayjs"
    },
    "./node_modules/@umijs/plugins/dist/qiankun": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/qiankun.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/qiankun",
      "key": "qiankun"
    },
    "./node_modules/@umijs/plugins/dist/qiankun/master": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/qiankun/master.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/qiankun/master",
      "key": "qiankun-master"
    },
    "./node_modules/@umijs/plugins/dist/qiankun/slave": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/qiankun/slave.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/qiankun/slave",
      "key": "qiankun-slave"
    },
    "./node_modules/@umijs/plugins/dist/react-query": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/react-query.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/react-query",
      "key": "reactQuery"
    },
    "./node_modules/@umijs/plugins/dist/request": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/request.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/request",
      "key": "request"
    },
    "./node_modules/@umijs/plugins/dist/styled-components": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/styled-components.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/styled-components",
      "key": "styledComponents"
    },
    "./node_modules/@umijs/plugins/dist/tailwindcss": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/tailwindcss.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/tailwindcss",
      "key": "tailwindcss"
    },
    "./node_modules/@umijs/plugins/dist/valtio": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/plugins/dist/valtio.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/plugins/dist/valtio",
      "key": "valtio"
    },
    "./node_modules/@umijs/max/dist/plugins/maxAlias": {
      "config": {},
      "time": {
        "hooks": {
          "modifyConfig": [
            0
          ]
        },
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/max/dist/plugins/maxAlias.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/max/dist/plugins/maxAlias",
      "key": "maxAlias"
    },
    "./node_modules/@umijs/max/dist/plugins/maxAppData": {
      "config": {},
      "time": {
        "hooks": {
          "modifyAppData": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/max/dist/plugins/maxAppData.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/max/dist/plugins/maxAppData",
      "key": "maxAppData"
    },
    "./node_modules/@umijs/max/dist/plugins/maxChecker": {
      "config": {},
      "time": {
        "hooks": {
          "onCheckPkgJSON": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/max/dist/plugins/maxChecker.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/max/dist/plugins/maxChecker",
      "key": "maxChecker"
    },
    "./node_modules/umi-presets-pro/dist/features/proconfig": {
      "config": {},
      "time": {
        "hooks": {
          "modifyConfig": [
            0
          ]
        },
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/umi-presets-pro/dist/features/proconfig.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/umi-presets-pro/dist/features/proconfig",
      "key": "proconfig"
    },
    "./node_modules/umi-presets-pro/dist/features/maxtabs": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/umi-presets-pro/dist/features/maxtabs.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/umi-presets-pro/dist/features/maxtabs",
      "key": "maxtabs"
    },
    "@umijs/max-plugin-openapi": {
      "config": {},
      "time": {
        "hooks": {
          "onStart": [
            0
          ]
        },
        "register": 81
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/max-plugin-openapi/dist/index.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "@umijs/max-plugin-openapi",
      "key": "openAPI"
    },
    "./node_modules/@alita/plugins/dist/keepalive": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 9
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@alita/plugins/dist/keepalive.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@alita/plugins/dist/keepalive",
      "key": "keepalive"
    },
    "./node_modules/@alita/plugins/dist/tabs-layout": {
      "config": {
        "onChange": "regenerateTmpFiles"
      },
      "time": {
        "hooks": {},
        "register": 0
      },
      "enableBy": "config",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@alita/plugins/dist/tabs-layout.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@alita/plugins/dist/tabs-layout",
      "key": "tabsLayout"
    },
    "@umijs/request-record": {
      "config": {
        "default": {
          "mock": {
            "outputDir": "./mock",
            "fileName": "requestRecord.mock.js",
            "usingRole": "default"
          },
          "outputDir": "./types"
        }
      },
      "time": {
        "hooks": {
          "modifyConfig": [
            0
          ],
          "modifyAppData": [
            0
          ]
        },
        "register": 45
      },
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/request-record/dist/cjs/index.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "@umijs/request-record",
      "key": "requestRecord"
    },
    "./node_modules/@umijs/core/dist/service/generatePlugin": {
      "config": {},
      "time": {
        "hooks": {},
        "register": 1
      },
      "enableBy": "register",
      "type": "plugin",
      "path": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/core/dist/service/generatePlugin.js",
      "cwd": "/usr/local/app-admin/crazycharge-admin",
      "id": "./node_modules/@umijs/core/dist/service/generatePlugin",
      "key": "generatePlugin"
    }
  },
  "presets": [],
  "name": "build",
  "args": {
    "_": []
  },
  "userConfig": {
    "hash": true,
    "routes": [
      {
        "path": "/user",
        "layout": false,
        "routes": [
          {
            "name": "login",
            "path": "/user/login",
            "component": "./User/Login"
          }
        ]
      },
      {
        "path": "/customer",
        "name": "customer",
        "icon": "smile",
        "component": "./Customer"
      },
      {
        "path": "/stations",
        "name": "stations",
        "icon": "api",
        "component": "./Stations"
      },
      {
        "path": "/transaction",
        "name": "transaction",
        "icon": "transaction",
        "routes": [
          {
            "path": "/transaction/order",
            "name": "order",
            "component": "./Transaction/Order"
          },
          {
            "path": "/transaction/top-up",
            "name": "topUp",
            "component": "./Transaction/TopUp"
          },
          {
            "path": "/transaction/wallet",
            "name": "wallet",
            "component": "./Transaction/Wallet"
          }
        ]
      },
      {
        "path": "/settings",
        "name": "settings",
        "icon": "setting",
        "component": "./Settings"
      },
      {
        "path": "/",
        "redirect": "/customer"
      },
      {
        "path": "*",
        "layout": false,
        "component": "./Customer"
      }
    ],
    "theme": {
      "root-entry-name": "variable"
    },
    "ignoreMomentLocale": true,
    "proxy": {
      "/api/": {
        "target": "http://localhost:13000",
        "changeOrigin": true,
        "pathRewrite": {
          "^": ""
        }
      }
    },
    "fastRefresh": true,
    "model": {},
    "initialState": {},
    "title": "Ant Design Pro",
    "layout": {
      "locale": true,
      "navTheme": "light",
      "colorPrimary": "#02677D",
      "layout": "top",
      "contentWidth": "Fluid",
      "fixedHeader": true,
      "fixSiderbar": true,
      "colorWeak": false,
      "title": "Crazy Charge Admin",
      "pwa": true,
      "logo": "/cc_logo.png",
      "iconfontUrl": "",
      "splitMenus": false,
      "siderMenuType": "group",
      "footerRender": false,
      "token": {}
    },
    "moment2dayjs": {
      "preset": "antd",
      "plugins": [
        "duration"
      ]
    },
    "locale": {
      "default": "zh-CN",
      "antd": true,
      "baseNavigator": true
    },
    "antd": {},
    "request": {},
    "access": {},
    "headScripts": [
      {
        "src": "/scripts/loading.js",
        "async": true
      }
    ],
    "presets": [
      "umi-presets-pro"
    ],
    "openAPI": [
      {
        "requestLibPath": "import { request } from '@umijs/max'",
        "schemaPath": "/usr/local/app-admin/crazycharge-admin/config/oneapi.json",
        "mock": false
      },
      {
        "requestLibPath": "import { request } from '@umijs/max'",
        "schemaPath": "https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json",
        "projectName": "swagger"
      }
    ],
    "mfsu": {
      "strategy": "normal"
    },
    "esbuildMinifyIIFE": true,
    "requestRecord": {},
    "tailwindcss": {}
  },
  "mainConfigFile": "/usr/local/app-admin/crazycharge-admin/config/config.ts",
  "config": {
    "routeLoader": {
      "moduleType": "esm"
    },
    "mountElementId": "root",
    "history": {
      "type": "browser"
    },
    "base": "/",
    "svgr": {},
    "publicPath": "/",
    "mfsu": {
      "strategy": "normal"
    },
    "ignoreMomentLocale": true,
    "externals": {},
    "autoCSSModules": true,
    "alias": {
      "umi": "@@/exports",
      "react": "/usr/local/app-admin/crazycharge-admin/node_modules/react",
      "react-dom": "/usr/local/app-admin/crazycharge-admin/node_modules/react-dom",
      "react-router": "/usr/local/app-admin/crazycharge-admin/node_modules/react-router",
      "react-router-dom": "/usr/local/app-admin/crazycharge-admin/node_modules/react-router-dom",
      "@": "/usr/local/app-admin/crazycharge-admin/src",
      "@@": "/usr/local/app-admin/crazycharge-admin/src/.umi-production",
      "regenerator-runtime": "/usr/local/app-admin/crazycharge-admin/node_modules/@umijs/preset-umi/node_modules/regenerator-runtime",
      "antd": "/usr/local/app-admin/crazycharge-admin/node_modules/antd",
      "moment": "/usr/local/app-admin/crazycharge-admin/node_modules/dayjs",
      "@umijs/max": "@@/exports"
    },
    "requestRecord": {
      "mock": {
        "outputDir": "./mock",
        "fileName": "requestRecord.mock.js",
        "usingRole": "default"
      },
      "outputDir": "./types"
    },
    "hash": true,
    "routes": [
      {
        "path": "/user",
        "layout": false,
        "routes": [
          {
            "name": "login",
            "path": "/user/login",
            "component": "./User/Login"
          }
        ]
      },
      {
        "path": "/customer",
        "name": "customer",
        "icon": "smile",
        "component": "./Customer"
      },
      {
        "path": "/stations",
        "name": "stations",
        "icon": "api",
        "component": "./Stations"
      },
      {
        "path": "/transaction",
        "name": "transaction",
        "icon": "transaction",
        "routes": [
          {
            "path": "/transaction/order",
            "name": "order",
            "component": "./Transaction/Order"
          },
          {
            "path": "/transaction/top-up",
            "name": "topUp",
            "component": "./Transaction/TopUp"
          },
          {
            "path": "/transaction/wallet",
            "name": "wallet",
            "component": "./Transaction/Wallet"
          }
        ]
      },
      {
        "path": "/settings",
        "name": "settings",
        "icon": "setting",
        "component": "./Settings"
      },
      {
        "path": "/",
        "redirect": "/customer"
      },
      {
        "path": "*",
        "layout": false,
        "component": "./Customer"
      }
    ],
    "theme": {
      "blue-base": "#1890ff",
      "blue-1": "#e6f7ff",
      "blue-2": "#bae7ff",
      "blue-3": "#91d5ff",
      "blue-4": "#69c0ff",
      "blue-5": "#40a9ff",
      "blue-6": "#1890ff",
      "blue-7": "#096dd9",
      "blue-8": "#0050b3",
      "blue-9": "#003a8c",
      "blue-10": "#002766",
      "purple-base": "#722ed1",
      "purple-1": "#f9f0ff",
      "purple-2": "#efdbff",
      "purple-3": "#d3adf7",
      "purple-4": "#b37feb",
      "purple-5": "#9254de",
      "purple-6": "#722ed1",
      "purple-7": "#531dab",
      "purple-8": "#391085",
      "purple-9": "#22075e",
      "purple-10": "#120338",
      "cyan-base": "#13c2c2",
      "cyan-1": "#e6fffb",
      "cyan-2": "#b5f5ec",
      "cyan-3": "#87e8de",
      "cyan-4": "#5cdbd3",
      "cyan-5": "#36cfc9",
      "cyan-6": "#13c2c2",
      "cyan-7": "#08979c",
      "cyan-8": "#006d75",
      "cyan-9": "#00474f",
      "cyan-10": "#002329",
      "green-base": "#52c41a",
      "green-1": "#f6ffed",
      "green-2": "#d9f7be",
      "green-3": "#b7eb8f",
      "green-4": "#95de64",
      "green-5": "#73d13d",
      "green-6": "#52c41a",
      "green-7": "#389e0d",
      "green-8": "#237804",
      "green-9": "#135200",
      "green-10": "#092b00",
      "magenta-base": "#eb2f96",
      "magenta-1": "#fff0f6",
      "magenta-2": "#ffd6e7",
      "magenta-3": "#ffadd2",
      "magenta-4": "#ff85c0",
      "magenta-5": "#f759ab",
      "magenta-6": "#eb2f96",
      "magenta-7": "#c41d7f",
      "magenta-8": "#9e1068",
      "magenta-9": "#780650",
      "magenta-10": "#520339",
      "pink-base": "#eb2f96",
      "pink-1": "#fff0f6",
      "pink-2": "#ffd6e7",
      "pink-3": "#ffadd2",
      "pink-4": "#ff85c0",
      "pink-5": "#f759ab",
      "pink-6": "#eb2f96",
      "pink-7": "#c41d7f",
      "pink-8": "#9e1068",
      "pink-9": "#780650",
      "pink-10": "#520339",
      "red-base": "#f5222d",
      "red-1": "#fff1f0",
      "red-2": "#ffccc7",
      "red-3": "#ffa39e",
      "red-4": "#ff7875",
      "red-5": "#ff4d4f",
      "red-6": "#f5222d",
      "red-7": "#cf1322",
      "red-8": "#a8071a",
      "red-9": "#820014",
      "red-10": "#5c0011",
      "orange-base": "#fa8c16",
      "orange-1": "#fff7e6",
      "orange-2": "#ffe7ba",
      "orange-3": "#ffd591",
      "orange-4": "#ffc069",
      "orange-5": "#ffa940",
      "orange-6": "#fa8c16",
      "orange-7": "#d46b08",
      "orange-8": "#ad4e00",
      "orange-9": "#873800",
      "orange-10": "#612500",
      "yellow-base": "#fadb14",
      "yellow-1": "#feffe6",
      "yellow-2": "#ffffb8",
      "yellow-3": "#fffb8f",
      "yellow-4": "#fff566",
      "yellow-5": "#ffec3d",
      "yellow-6": "#fadb14",
      "yellow-7": "#d4b106",
      "yellow-8": "#ad8b00",
      "yellow-9": "#876800",
      "yellow-10": "#614700",
      "volcano-base": "#fa541c",
      "volcano-1": "#fff2e8",
      "volcano-2": "#ffd8bf",
      "volcano-3": "#ffbb96",
      "volcano-4": "#ff9c6e",
      "volcano-5": "#ff7a45",
      "volcano-6": "#fa541c",
      "volcano-7": "#d4380d",
      "volcano-8": "#ad2102",
      "volcano-9": "#871400",
      "volcano-10": "#610b00",
      "geekblue-base": "#2f54eb",
      "geekblue-1": "#f0f5ff",
      "geekblue-2": "#d6e4ff",
      "geekblue-3": "#adc6ff",
      "geekblue-4": "#85a5ff",
      "geekblue-5": "#597ef7",
      "geekblue-6": "#2f54eb",
      "geekblue-7": "#1d39c4",
      "geekblue-8": "#10239e",
      "geekblue-9": "#061178",
      "geekblue-10": "#030852",
      "lime-base": "#a0d911",
      "lime-1": "#fcffe6",
      "lime-2": "#f4ffb8",
      "lime-3": "#eaff8f",
      "lime-4": "#d3f261",
      "lime-5": "#bae637",
      "lime-6": "#a0d911",
      "lime-7": "#7cb305",
      "lime-8": "#5b8c00",
      "lime-9": "#3f6600",
      "lime-10": "#254000",
      "gold-base": "#faad14",
      "gold-1": "#fffbe6",
      "gold-2": "#fff1b8",
      "gold-3": "#ffe58f",
      "gold-4": "#ffd666",
      "gold-5": "#ffc53d",
      "gold-6": "#faad14",
      "gold-7": "#d48806",
      "gold-8": "#ad6800",
      "gold-9": "#874d00",
      "gold-10": "#613400",
      "preset-colors": "pink, magenta, red, volcano, orange, yellow, gold, cyan, lime, green, blue, geekblue,",
      "theme": "default",
      "ant-prefix": "ant",
      "html-selector": "html",
      "primary-color": "#1890ff",
      "primary-color-hover": "#40a9ff",
      "primary-color-active": "#096dd9",
      "primary-color-outline": "rgba(24, 144, 255, 0.2)",
      "processing-color": "#1890ff",
      "info-color": "#1890ff",
      "info-color-deprecated-bg": "#e6f7ff",
      "info-color-deprecated-border": "#91d5ff",
      "success-color": "#52c41a",
      "success-color-hover": "#73d13d",
      "success-color-active": "#389e0d",
      "success-color-outline": "rgba(82, 196, 26, 0.2)",
      "success-color-deprecated-bg": "#f6ffed",
      "success-color-deprecated-border": "#b7eb8f",
      "warning-color": "#faad14",
      "warning-color-hover": "#ffc53d",
      "warning-color-active": "#d48806",
      "warning-color-outline": "rgba(250, 173, 20, 0.2)",
      "warning-color-deprecated-bg": "#fffbe6",
      "warning-color-deprecated-border": "#ffe58f",
      "error-color": "#ff4d4f",
      "error-color-hover": "#ff7875",
      "error-color-active": "#d9363e",
      "error-color-outline": "rgba(255, 77, 79, 0.2)",
      "error-color-deprecated-bg": "#fff2f0",
      "error-color-deprecated-border": "#ffccc7",
      "highlight-color": "#ff4d4f",
      "normal-color": "#d9d9d9",
      "white": "#fff",
      "black": "#000",
      "primary-1": "#e6f7ff",
      "primary-2": "#bae7ff",
      "primary-3": "#91d5ff",
      "primary-4": "#69c0ff",
      "primary-5": "#40a9ff",
      "primary-6": "#1890ff",
      "primary-7": "#096dd9",
      "primary-8": "#0050b3",
      "primary-9": "#003a8c",
      "primary-10": "#002766",
      "component-background": "#fff",
      "popover-background": "#fff",
      "popover-customize-border-color": "#f0f0f0",
      "font-family": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
      "code-family": "'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace",
      "text-color": "rgba(0, 0, 0, 0.85)",
      "text-color-secondary": "rgba(0, 0, 0, 0.45)",
      "text-color-inverse": "#fff",
      "icon-color": "inherit",
      "icon-color-hover": "rgba(0, 0, 0, 0.75)",
      "heading-color": "rgba(0, 0, 0, 0.85)",
      "text-color-dark": "rgba(255, 255, 255, 0.85)",
      "text-color-secondary-dark": "rgba(255, 255, 255, 0.65)",
      "text-selection-bg": "#1890ff",
      "font-variant-base": "tabular-nums",
      "font-feature-settings-base": "tnum",
      "font-size-base": "14px",
      "font-size-lg": "16px",
      "font-size-sm": "12px",
      "heading-1-size": "38px",
      "heading-2-size": "30px",
      "heading-3-size": "24px",
      "heading-4-size": "20px",
      "heading-5-size": "16px",
      "line-height-base": "1.5715",
      "border-radius-base": "2px",
      "border-radius-sm": "2px",
      "control-border-radius": "2px",
      "arrow-border-radius": "2px",
      "padding-lg": "24px",
      "padding-md": "16px",
      "padding-sm": "12px",
      "padding-xs": "8px",
      "padding-xss": "4px",
      "control-padding-horizontal": "12px",
      "control-padding-horizontal-sm": "8px",
      "margin-lg": "24px",
      "margin-md": "16px",
      "margin-sm": "12px",
      "margin-xs": "8px",
      "margin-xss": "4px",
      "height-base": "32px",
      "height-lg": "40px",
      "height-sm": "24px",
      "item-active-bg": "#e6f7ff",
      "item-hover-bg": "#f5f5f5",
      "iconfont-css-prefix": "anticon",
      "link-color": "#1890ff",
      "link-hover-color": "#40a9ff",
      "link-active-color": "#096dd9",
      "link-decoration": "none",
      "link-hover-decoration": "none",
      "link-focus-decoration": "none",
      "link-focus-outline": "0",
      "ease-base-out": "cubic-bezier(0.7, 0.3, 0.1, 1)",
      "ease-base-in": "cubic-bezier(0.9, 0, 0.3, 0.7)",
      "ease-out": "cubic-bezier(0.215, 0.61, 0.355, 1)",
      "ease-in": "cubic-bezier(0.55, 0.055, 0.675, 0.19)",
      "ease-in-out": "cubic-bezier(0.645, 0.045, 0.355, 1)",
      "ease-out-back": "cubic-bezier(0.12, 0.4, 0.29, 1.46)",
      "ease-in-back": "cubic-bezier(0.71, -0.46, 0.88, 0.6)",
      "ease-in-out-back": "cubic-bezier(0.71, -0.46, 0.29, 1.46)",
      "ease-out-circ": "cubic-bezier(0.08, 0.82, 0.17, 1)",
      "ease-in-circ": "cubic-bezier(0.6, 0.04, 0.98, 0.34)",
      "ease-in-out-circ": "cubic-bezier(0.78, 0.14, 0.15, 0.86)",
      "ease-out-quint": "cubic-bezier(0.23, 1, 0.32, 1)",
      "ease-in-quint": "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
      "ease-in-out-quint": "cubic-bezier(0.86, 0, 0.07, 1)",
      "border-color-base": "#d9d9d9",
      "border-color-split": "#f0f0f0",
      "border-color-inverse": "#fff",
      "border-width-base": "1px",
      "border-style-base": "solid",
      "outline-blur-size": "0",
      "outline-width": "2px",
      "outline-color": "#1890ff",
      "outline-fade": "20%",
      "background-color-light": "#fafafa",
      "background-color-base": "#f5f5f5",
      "disabled-color": "rgba(0, 0, 0, 0.25)",
      "disabled-bg": "#f5f5f5",
      "disabled-active-bg": "#e6e6e6",
      "disabled-color-dark": "rgba(255, 255, 255, 0.35)",
      "shadow-color": "rgba(0, 0, 0, 0.15)",
      "shadow-color-inverse": "#fff",
      "box-shadow-base": "0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05)",
      "shadow-1-up": "0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03)",
      "shadow-1-down": "0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03)",
      "shadow-1-left": "-6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03)",
      "shadow-1-right": "6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03)",
      "shadow-2": "0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05)",
      "btn-font-weight": "400",
      "btn-border-radius-base": "2px",
      "btn-border-radius-sm": "2px",
      "btn-border-width": "1px",
      "btn-border-style": "solid",
      "btn-shadow": "0 2px 0 rgba(0, 0, 0, 0.015)",
      "btn-primary-shadow": "0 2px 0 rgba(0, 0, 0, 0.045)",
      "btn-text-shadow": "0 -1px 0 rgba(0, 0, 0, 0.12)",
      "btn-primary-color": "#fff",
      "btn-primary-bg": "#1890ff",
      "btn-default-color": "rgba(0, 0, 0, 0.85)",
      "btn-default-bg": "#fff",
      "btn-default-border": "#d9d9d9",
      "btn-danger-color": "#fff",
      "btn-danger-bg": "#ff4d4f",
      "btn-danger-border": "#ff4d4f",
      "btn-disable-color": "rgba(0, 0, 0, 0.25)",
      "btn-disable-bg": "#f5f5f5",
      "btn-disable-border": "#d9d9d9",
      "btn-default-ghost-color": "#fff",
      "btn-default-ghost-bg": "transparent",
      "btn-default-ghost-border": "#fff",
      "btn-font-size-lg": "16px",
      "btn-font-size-sm": "14px",
      "btn-padding-horizontal-base": "15px",
      "btn-padding-horizontal-lg": "15px",
      "btn-padding-horizontal-sm": "7px",
      "btn-height-base": "32px",
      "btn-height-lg": "40px",
      "btn-height-sm": "24px",
      "btn-line-height": "1.5715",
      "btn-circle-size": "32px",
      "btn-circle-size-lg": "40px",
      "btn-circle-size-sm": "24px",
      "btn-square-size": "32px",
      "btn-square-size-lg": "40px",
      "btn-square-size-sm": "24px",
      "btn-square-only-icon-size": "16px",
      "btn-square-only-icon-size-sm": "14px",
      "btn-square-only-icon-size-lg": "18px",
      "btn-group-border": "#40a9ff",
      "btn-link-hover-bg": "transparent",
      "btn-text-hover-bg": "rgba(0, 0, 0, 0.018)",
      "checkbox-size": "16px",
      "checkbox-color": "#1890ff",
      "checkbox-check-color": "#fff",
      "checkbox-check-bg": "#fff",
      "checkbox-border-width": "1px",
      "checkbox-border-radius": "2px",
      "checkbox-group-item-margin-right": "8px",
      "descriptions-bg": "#fafafa",
      "descriptions-title-margin-bottom": "20px",
      "descriptions-default-padding": "16px 24px",
      "descriptions-middle-padding": "12px 24px",
      "descriptions-small-padding": "8px 16px",
      "descriptions-item-padding-bottom": "16px",
      "descriptions-item-trailing-colon": "true",
      "descriptions-item-label-colon-margin-right": "8px",
      "descriptions-item-label-colon-margin-left": "2px",
      "descriptions-extra-color": "rgba(0, 0, 0, 0.85)",
      "divider-text-padding": "1em",
      "divider-orientation-margin": "5%",
      "divider-color": "rgba(0, 0, 0, 0.06)",
      "divider-vertical-gutter": "8px",
      "dropdown-selected-color": "#1890ff",
      "dropdown-menu-submenu-disabled-bg": "#fff",
      "dropdown-selected-bg": "#e6f7ff",
      "empty-font-size": "14px",
      "radio-size": "16px",
      "radio-top": "0.2em",
      "radio-border-width": "1px",
      "radio-dot-size": "8px",
      "radio-dot-color": "#1890ff",
      "radio-dot-disabled-color": "rgba(0, 0, 0, 0.2)",
      "radio-solid-checked-color": "#fff",
      "radio-button-bg": "#fff",
      "radio-button-checked-bg": "#fff",
      "radio-button-color": "rgba(0, 0, 0, 0.85)",
      "radio-button-hover-color": "#40a9ff",
      "radio-button-active-color": "#096dd9",
      "radio-button-padding-horizontal": "15px",
      "radio-disabled-button-checked-bg": "#e6e6e6",
      "radio-disabled-button-checked-color": "rgba(0, 0, 0, 0.25)",
      "radio-wrapper-margin-right": "8px",
      "screen-xs": "480px",
      "screen-xs-min": "480px",
      "screen-sm": "576px",
      "screen-sm-min": "576px",
      "screen-md": "768px",
      "screen-md-min": "768px",
      "screen-lg": "992px",
      "screen-lg-min": "992px",
      "screen-xl": "1200px",
      "screen-xl-min": "1200px",
      "screen-xxl": "1600px",
      "screen-xxl-min": "1600px",
      "screen-xs-max": "575px",
      "screen-sm-max": "767px",
      "screen-md-max": "991px",
      "screen-lg-max": "1199px",
      "screen-xl-max": "1599px",
      "grid-columns": "24",
      "layout-header-background": "#001529",
      "layout-header-height": "64px",
      "layout-header-padding": "0 50px",
      "layout-header-color": "rgba(0, 0, 0, 0.85)",
      "layout-footer-padding": "24px 50px",
      "layout-footer-background": "#f0f2f5",
      "layout-sider-background": "#001529",
      "layout-trigger-height": "48px",
      "layout-trigger-background": "#002140",
      "layout-trigger-color": "#fff",
      "layout-zero-trigger-width": "36px",
      "layout-zero-trigger-height": "42px",
      "layout-sider-background-light": "#fff",
      "layout-trigger-background-light": "#fff",
      "layout-trigger-color-light": "rgba(0, 0, 0, 0.85)",
      "zindex-badge": "auto",
      "zindex-table-fixed": "2",
      "zindex-affix": "10",
      "zindex-back-top": "10",
      "zindex-picker-panel": "10",
      "zindex-popup-close": "10",
      "zindex-modal": "1000",
      "zindex-modal-mask": "1000",
      "zindex-message": "1010",
      "zindex-notification": "1010",
      "zindex-popover": "1030",
      "zindex-dropdown": "1050",
      "zindex-picker": "1050",
      "zindex-popoconfirm": "1060",
      "zindex-tooltip": "1070",
      "zindex-image": "1080",
      "animation-duration-slow": "0.3s",
      "animation-duration-base": "0.2s",
      "animation-duration-fast": "0.1s",
      "collapse-panel-border-radius": "2px",
      "dropdown-menu-bg": "#fff",
      "dropdown-vertical-padding": "5px",
      "dropdown-edge-child-vertical-padding": "4px",
      "dropdown-font-size": "14px",
      "dropdown-line-height": "22px",
      "label-required-color": "#ff4d4f",
      "label-color": "rgba(0, 0, 0, 0.85)",
      "form-warning-input-bg": "#fff",
      "form-item-margin-bottom": "24px",
      "form-item-trailing-colon": "true",
      "form-vertical-label-padding": "0 0 8px",
      "form-vertical-label-margin": "0",
      "form-item-label-font-size": "14px",
      "form-item-label-height": "32px",
      "form-item-label-colon-margin-right": "8px",
      "form-item-label-colon-margin-left": "2px",
      "form-error-input-bg": "#fff",
      "input-height-base": "32px",
      "input-height-lg": "40px",
      "input-height-sm": "24px",
      "input-padding-horizontal": "11px",
      "input-padding-horizontal-base": "11px",
      "input-padding-horizontal-sm": "7px",
      "input-padding-horizontal-lg": "11px",
      "input-padding-vertical-base": "4px",
      "input-padding-vertical-sm": "0px",
      "input-padding-vertical-lg": "6.5px",
      "input-placeholder-color": "#bfbfbf",
      "input-color": "rgba(0, 0, 0, 0.85)",
      "input-icon-color": "rgba(0, 0, 0, 0.85)",
      "input-border-color": "#d9d9d9",
      "input-bg": "#fff",
      "input-number-hover-border-color": "#40a9ff",
      "input-number-handler-active-bg": "#f4f4f4",
      "input-number-handler-hover-bg": "#40a9ff",
      "input-number-handler-bg": "#fff",
      "input-number-handler-border-color": "#d9d9d9",
      "input-addon-bg": "#fafafa",
      "input-hover-border-color": "#40a9ff",
      "input-disabled-bg": "#f5f5f5",
      "input-outline-offset": "0 0",
      "input-icon-hover-color": "rgba(0, 0, 0, 0.85)",
      "input-disabled-color": "rgba(0, 0, 0, 0.25)",
      "mentions-dropdown-bg": "#fff",
      "mentions-dropdown-menu-item-hover-bg": "#fff",
      "select-border-color": "#d9d9d9",
      "select-item-selected-color": "rgba(0, 0, 0, 0.85)",
      "select-item-selected-font-weight": "600",
      "select-dropdown-bg": "#fff",
      "select-item-selected-bg": "#e6f7ff",
      "select-item-active-bg": "#f5f5f5",
      "select-dropdown-vertical-padding": "5px",
      "select-dropdown-font-size": "14px",
      "select-dropdown-line-height": "22px",
      "select-dropdown-height": "32px",
      "select-background": "#fff",
      "select-clear-background": "#fff",
      "select-selection-item-bg": "#f5f5f5",
      "select-selection-item-border-color": "#f0f0f0",
      "select-single-item-height-lg": "40px",
      "select-multiple-item-height": "24px",
      "select-multiple-item-height-lg": "32px",
      "select-multiple-item-spacing-half": "2px",
      "select-multiple-disabled-background": "#f5f5f5",
      "select-multiple-item-disabled-color": "#bfbfbf",
      "select-multiple-item-disabled-border-color": "#d9d9d9",
      "cascader-bg": "#fff",
      "cascader-item-selected-bg": "#e6f7ff",
      "cascader-menu-bg": "#fff",
      "cascader-menu-border-color-split": "#f0f0f0",
      "cascader-dropdown-vertical-padding": "5px",
      "cascader-dropdown-edge-child-vertical-padding": "4px",
      "cascader-dropdown-font-size": "14px",
      "cascader-dropdown-line-height": "22px",
      "anchor-bg": "transparent",
      "anchor-border-color": "#f0f0f0",
      "anchor-link-top": "4px",
      "anchor-link-left": "16px",
      "anchor-link-padding": "4px 0 4px 16px",
      "tooltip-max-width": "250px",
      "tooltip-color": "#fff",
      "tooltip-bg": "rgba(0, 0, 0, 0.75)",
      "tooltip-arrow-width": "11.3137085px",
      "tooltip-distance": "14.3137085px",
      "tooltip-arrow-color": "rgba(0, 0, 0, 0.75)",
      "tooltip-border-radius": "2px",
      "popover-bg": "#fff",
      "popover-color": "rgba(0, 0, 0, 0.85)",
      "popover-min-width": "177px",
      "popover-min-height": "32px",
      "popover-arrow-width": "11.3137085px",
      "popover-arrow-color": "#fff",
      "popover-arrow-outer-color": "#fff",
      "popover-distance": "15.3137085px",
      "popover-padding-horizontal": "16px",
      "modal-header-padding-vertical": "16px",
      "modal-header-padding-horizontal": "24px",
      "modal-header-bg": "#fff",
      "modal-header-padding": "16px 24px",
      "modal-header-border-width": "1px",
      "modal-header-border-style": "solid",
      "modal-header-title-line-height": "22px",
      "modal-header-title-font-size": "16px",
      "modal-header-border-color-split": "#f0f0f0",
      "modal-header-close-size": "54px",
      "modal-content-bg": "#fff",
      "modal-heading-color": "rgba(0, 0, 0, 0.85)",
      "modal-close-color": "rgba(0, 0, 0, 0.45)",
      "modal-footer-bg": "transparent",
      "modal-footer-border-color-split": "#f0f0f0",
      "modal-footer-border-style": "solid",
      "modal-footer-padding-vertical": "10px",
      "modal-footer-padding-horizontal": "16px",
      "modal-footer-border-width": "1px",
      "modal-mask-bg": "rgba(0, 0, 0, 0.45)",
      "modal-confirm-title-font-size": "16px",
      "modal-border-radius": "2px",
      "progress-default-color": "#1890ff",
      "progress-remaining-color": "#f5f5f5",
      "progress-info-text-color": "rgba(0, 0, 0, 0.85)",
      "progress-radius": "100px",
      "progress-steps-item-bg": "#f3f3f3",
      "progress-text-font-size": "1em",
      "progress-text-color": "rgba(0, 0, 0, 0.85)",
      "progress-circle-text-font-size": "1em",
      "menu-inline-toplevel-item-height": "40px",
      "menu-item-height": "40px",
      "menu-item-group-height": "1.5715",
      "menu-collapsed-width": "80px",
      "menu-bg": "#fff",
      "menu-popup-bg": "#fff",
      "menu-item-color": "rgba(0, 0, 0, 0.85)",
      "menu-inline-submenu-bg": "#fafafa",
      "menu-highlight-color": "#1890ff",
      "menu-highlight-danger-color": "#ff4d4f",
      "menu-item-active-bg": "#e6f7ff",
      "menu-item-active-danger-bg": "#fff1f0",
      "menu-item-active-border-width": "3px",
      "menu-item-group-title-color": "rgba(0, 0, 0, 0.45)",
      "menu-item-vertical-margin": "4px",
      "menu-item-font-size": "14px",
      "menu-item-boundary-margin": "8px",
      "menu-item-padding-horizontal": "20px",
      "menu-item-padding": "0 20px",
      "menu-horizontal-line-height": "46px",
      "menu-icon-margin-right": "10px",
      "menu-icon-size": "14px",
      "menu-icon-size-lg": "16px",
      "menu-item-group-title-font-size": "14px",
      "menu-dark-color": "rgba(255, 255, 255, 0.65)",
      "menu-dark-danger-color": "#ff4d4f",
      "menu-dark-bg": "#001529",
      "menu-dark-arrow-color": "#fff",
      "menu-dark-inline-submenu-bg": "#000c17",
      "menu-dark-highlight-color": "#fff",
      "menu-dark-item-active-bg": "#1890ff",
      "menu-dark-item-active-danger-bg": "#ff4d4f",
      "menu-dark-selected-item-icon-color": "#fff",
      "menu-dark-selected-item-text-color": "#fff",
      "menu-dark-item-hover-bg": "transparent",
      "spin-dot-size-sm": "14px",
      "spin-dot-size": "20px",
      "spin-dot-size-lg": "32px",
      "table-bg": "#fff",
      "table-header-bg": "#fafafa",
      "table-header-color": "rgba(0, 0, 0, 0.85)",
      "table-header-sort-bg": "#f5f5f5",
      "table-row-hover-bg": "#fafafa",
      "table-selected-row-color": "inherit",
      "table-selected-row-bg": "#e6f7ff",
      "table-selected-row-hover-bg": "#dcf4ff",
      "table-expanded-row-bg": "#fbfbfb",
      "table-padding-vertical": "16px",
      "table-padding-horizontal": "16px",
      "table-padding-vertical-md": "12px",
      "table-padding-horizontal-md": "8px",
      "table-padding-vertical-sm": "8px",
      "table-padding-horizontal-sm": "8px",
      "table-border-color": "#f0f0f0",
      "table-border-radius-base": "2px",
      "table-footer-bg": "#fafafa",
      "table-footer-color": "rgba(0, 0, 0, 0.85)",
      "table-header-bg-sm": "#fafafa",
      "table-font-size": "14px",
      "table-font-size-md": "14px",
      "table-font-size-sm": "14px",
      "table-header-cell-split-color": "rgba(0, 0, 0, 0.06)",
      "table-header-sort-active-bg": "rgba(0, 0, 0, 0.04)",
      "table-fixed-header-sort-active-bg": "#f5f5f5",
      "table-header-filter-active-bg": "rgba(0, 0, 0, 0.04)",
      "table-filter-btns-bg": "inherit",
      "table-filter-dropdown-bg": "#fff",
      "table-expand-icon-bg": "#fff",
      "table-selection-column-width": "32px",
      "table-sticky-scroll-bar-bg": "rgba(0, 0, 0, 0.35)",
      "table-sticky-scroll-bar-radius": "4px",
      "tag-border-radius": "2px",
      "tag-default-bg": "#fafafa",
      "tag-default-color": "rgba(0, 0, 0, 0.85)",
      "tag-font-size": "12px",
      "tag-line-height": "20px",
      "picker-bg": "#fff",
      "picker-basic-cell-hover-color": "#f5f5f5",
      "picker-basic-cell-active-with-range-color": "#e6f7ff",
      "picker-basic-cell-hover-with-range-color": "#cbe6ff",
      "picker-basic-cell-disabled-bg": "rgba(0, 0, 0, 0.04)",
      "picker-border-color": "#f0f0f0",
      "picker-date-hover-range-border-color": "#7ec1ff",
      "picker-date-hover-range-color": "#cbe6ff",
      "picker-time-panel-column-width": "56px",
      "picker-time-panel-column-height": "224px",
      "picker-time-panel-cell-height": "28px",
      "picker-panel-cell-height": "24px",
      "picker-panel-cell-width": "36px",
      "picker-text-height": "40px",
      "picker-panel-without-time-cell-height": "66px",
      "calendar-bg": "#fff",
      "calendar-input-bg": "#fff",
      "calendar-border-color": "#fff",
      "calendar-item-active-bg": "#e6f7ff",
      "calendar-column-active-bg": "rgba(230, 247, 255, 0.2)",
      "calendar-full-bg": "#fff",
      "calendar-full-panel-bg": "#fff",
      "carousel-dot-width": "16px",
      "carousel-dot-height": "3px",
      "carousel-dot-active-width": "24px",
      "badge-height": "20px",
      "badge-height-sm": "14px",
      "badge-dot-size": "6px",
      "badge-font-size": "12px",
      "badge-font-size-sm": "12px",
      "badge-font-weight": "normal",
      "badge-status-size": "6px",
      "badge-text-color": "#fff",
      "badge-color": "#ff4d4f",
      "rate-star-color": "#fadb14",
      "rate-star-bg": "#f0f0f0",
      "rate-star-size": "20px",
      "rate-star-hover-scale": "scale(1.1)",
      "card-head-color": "rgba(0, 0, 0, 0.85)",
      "card-head-background": "transparent",
      "card-head-font-size": "16px",
      "card-head-font-size-sm": "14px",
      "card-head-padding": "16px",
      "card-head-padding-sm": "8px",
      "card-head-height": "48px",
      "card-head-height-sm": "36px",
      "card-inner-head-padding": "12px",
      "card-padding-base": "24px",
      "card-padding-base-sm": "12px",
      "card-actions-background": "#fff",
      "card-actions-li-margin": "12px 0",
      "card-skeleton-bg": "#cfd8dc",
      "card-background": "#fff",
      "card-shadow": "0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09)",
      "card-radius": "2px",
      "card-head-tabs-margin-bottom": "-17px",
      "card-head-extra-color": "rgba(0, 0, 0, 0.85)",
      "comment-bg": "inherit",
      "comment-padding-base": "16px 0",
      "comment-nest-indent": "44px",
      "comment-font-size-base": "14px",
      "comment-font-size-sm": "12px",
      "comment-author-name-color": "rgba(0, 0, 0, 0.45)",
      "comment-author-time-color": "#ccc",
      "comment-action-color": "rgba(0, 0, 0, 0.45)",
      "comment-action-hover-color": "#595959",
      "comment-actions-margin-bottom": "inherit",
      "comment-actions-margin-top": "12px",
      "comment-content-detail-p-margin-bottom": "inherit",
      "tabs-card-head-background": "#fafafa",
      "tabs-card-height": "40px",
      "tabs-card-active-color": "#1890ff",
      "tabs-card-horizontal-padding": "8px 16px",
      "tabs-card-horizontal-padding-sm": "6px 16px",
      "tabs-card-horizontal-padding-lg": "7px 16px 6px",
      "tabs-title-font-size": "14px",
      "tabs-title-font-size-lg": "16px",
      "tabs-title-font-size-sm": "14px",
      "tabs-ink-bar-color": "#1890ff",
      "tabs-bar-margin": "0 0 16px 0",
      "tabs-horizontal-gutter": "32px",
      "tabs-horizontal-margin": "0 0 0 32px",
      "tabs-horizontal-margin-rtl": "0 0 0 32px",
      "tabs-horizontal-padding": "12px 0",
      "tabs-horizontal-padding-lg": "16px 0",
      "tabs-horizontal-padding-sm": "8px 0",
      "tabs-vertical-padding": "8px 24px",
      "tabs-vertical-margin": "16px 0 0 0",
      "tabs-scrolling-size": "32px",
      "tabs-highlight-color": "#1890ff",
      "tabs-hover-color": "#40a9ff",
      "tabs-active-color": "#096dd9",
      "tabs-card-gutter": "2px",
      "tabs-card-tab-active-border-top": "2px solid transparent",
      "back-top-color": "#fff",
      "back-top-bg": "rgba(0, 0, 0, 0.45)",
      "back-top-hover-bg": "rgba(0, 0, 0, 0.85)",
      "avatar-size-base": "32px",
      "avatar-size-lg": "40px",
      "avatar-size-sm": "24px",
      "avatar-font-size-base": "18px",
      "avatar-font-size-lg": "24px",
      "avatar-font-size-sm": "14px",
      "avatar-bg": "#ccc",
      "avatar-color": "#fff",
      "avatar-border-radius": "2px",
      "avatar-group-overlapping": "-8px",
      "avatar-group-space": "3px",
      "avatar-group-border-color": "#fff",
      "switch-height": "22px",
      "switch-sm-height": "16px",
      "switch-min-width": "44px",
      "switch-sm-min-width": "28px",
      "switch-disabled-opacity": "0.4",
      "switch-color": "#1890ff",
      "switch-bg": "#fff",
      "switch-shadow-color": "rgba(0, 35, 11, 0.2)",
      "switch-padding": "2px",
      "switch-inner-margin-min": "7px",
      "switch-inner-margin-max": "25px",
      "switch-sm-inner-margin-min": "5px",
      "switch-sm-inner-margin-max": "18px",
      "pagination-item-bg": "#fff",
      "pagination-item-size": "32px",
      "pagination-item-size-sm": "24px",
      "pagination-font-family": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
      "pagination-font-weight-active": "500",
      "pagination-item-bg-active": "#fff",
      "pagination-item-link-bg": "#fff",
      "pagination-item-disabled-color-active": "rgba(0, 0, 0, 0.25)",
      "pagination-item-disabled-bg-active": "#e6e6e6",
      "pagination-item-input-bg": "#fff",
      "pagination-mini-options-size-changer-top": "0px",
      "page-header-padding": "24px",
      "page-header-padding-vertical": "16px",
      "page-header-padding-breadcrumb": "12px",
      "page-header-content-padding-vertical": "12px",
      "page-header-back-color": "#000",
      "page-header-ghost-bg": "inherit",
      "page-header-heading-title": "20px",
      "page-header-heading-sub-title": "14px",
      "page-header-tabs-tab-font-size": "16px",
      "breadcrumb-base-color": "rgba(0, 0, 0, 0.45)",
      "breadcrumb-last-item-color": "rgba(0, 0, 0, 0.85)",
      "breadcrumb-font-size": "14px",
      "breadcrumb-icon-font-size": "14px",
      "breadcrumb-link-color": "rgba(0, 0, 0, 0.45)",
      "breadcrumb-link-color-hover": "rgba(0, 0, 0, 0.85)",
      "breadcrumb-separator-color": "rgba(0, 0, 0, 0.45)",
      "breadcrumb-separator-margin": "0 8px",
      "slider-margin": "10px 6px 10px",
      "slider-rail-background-color": "#f5f5f5",
      "slider-rail-background-color-hover": "#e1e1e1",
      "slider-track-background-color": "#91d5ff",
      "slider-track-background-color-hover": "#69c0ff",
      "slider-handle-border-width": "2px",
      "slider-handle-background-color": "#fff",
      "slider-handle-color": "#91d5ff",
      "slider-handle-color-hover": "#69c0ff",
      "slider-handle-color-focus": "#46a6ff",
      "slider-handle-color-focus-shadow": "rgba(24, 144, 255, 0.12)",
      "slider-handle-color-tooltip-open": "#1890ff",
      "slider-handle-size": "14px",
      "slider-handle-margin-top": "-5px",
      "slider-handle-shadow": "0",
      "slider-dot-border-color": "#f0f0f0",
      "slider-dot-border-color-active": "#8cc8ff",
      "slider-disabled-color": "rgba(0, 0, 0, 0.25)",
      "slider-disabled-background-color": "#fff",
      "tree-bg": "#fff",
      "tree-title-height": "24px",
      "tree-child-padding": "18px",
      "tree-directory-selected-color": "#fff",
      "tree-directory-selected-bg": "#1890ff",
      "tree-node-hover-bg": "#f5f5f5",
      "tree-node-selected-bg": "#bae7ff",
      "collapse-header-padding": "12px 16px",
      "collapse-header-padding-extra": "40px",
      "collapse-header-bg": "#fafafa",
      "collapse-content-padding": "16px",
      "collapse-content-bg": "#fff",
      "collapse-header-arrow-left": "16px",
      "skeleton-color": "rgba(190, 190, 190, 0.2)",
      "skeleton-to-color": "rgba(129, 129, 129, 0.24)",
      "skeleton-paragraph-margin-top": "28px",
      "skeleton-paragraph-li-margin-top": "16px",
      "skeleton-paragraph-li-height": "16px",
      "skeleton-title-height": "16px",
      "skeleton-title-paragraph-margin-top": "24px",
      "transfer-header-height": "40px",
      "transfer-item-height": "32px",
      "transfer-disabled-bg": "#f5f5f5",
      "transfer-list-height": "200px",
      "transfer-item-hover-bg": "#f5f5f5",
      "transfer-item-selected-hover-bg": "#dcf4ff",
      "transfer-item-padding-vertical": "6px",
      "transfer-list-search-icon-top": "12px",
      "message-notice-content-padding": "10px 16px",
      "message-notice-content-bg": "#fff",
      "wave-animation-width": "6px",
      "alert-success-border-color": "#b7eb8f",
      "alert-success-bg-color": "#f6ffed",
      "alert-success-icon-color": "#52c41a",
      "alert-info-border-color": "#91d5ff",
      "alert-info-bg-color": "#e6f7ff",
      "alert-info-icon-color": "#1890ff",
      "alert-warning-border-color": "#ffe58f",
      "alert-warning-bg-color": "#fffbe6",
      "alert-warning-icon-color": "#faad14",
      "alert-error-border-color": "#ffccc7",
      "alert-error-bg-color": "#fff2f0",
      "alert-error-icon-color": "#ff4d4f",
      "alert-message-color": "rgba(0, 0, 0, 0.85)",
      "alert-text-color": "rgba(0, 0, 0, 0.85)",
      "alert-close-color": "rgba(0, 0, 0, 0.45)",
      "alert-close-hover-color": "rgba(0, 0, 0, 0.75)",
      "alert-no-icon-padding-vertical": "8px",
      "alert-with-description-no-icon-padding-vertical": "15px",
      "alert-with-description-padding-vertical": "15px",
      "alert-with-description-padding": "15px 15px 15px 24px",
      "alert-icon-top": "12.0005px",
      "alert-with-description-icon-size": "24px",
      "list-header-background": "transparent",
      "list-footer-background": "transparent",
      "list-empty-text-padding": "16px",
      "list-item-padding": "12px 0",
      "list-item-padding-sm": "8px 16px",
      "list-item-padding-lg": "16px 24px",
      "list-item-meta-margin-bottom": "16px",
      "list-item-meta-avatar-margin-right": "16px",
      "list-item-meta-title-margin-bottom": "12px",
      "list-customize-card-bg": "#fff",
      "list-item-meta-description-font-size": "14px",
      "statistic-title-font-size": "14px",
      "statistic-content-font-size": "24px",
      "statistic-unit-font-size": "24px",
      "statistic-font-family": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
      "drawer-header-padding": "16px 24px",
      "drawer-bg": "#fff",
      "drawer-footer-padding-vertical": "10px",
      "drawer-footer-padding-horizontal": "16px",
      "drawer-header-close-size": "56px",
      "drawer-title-font-size": "16px",
      "drawer-title-line-height": "22px",
      "timeline-width": "2px",
      "timeline-color": "#f0f0f0",
      "timeline-dot-border-width": "2px",
      "timeline-dot-color": "#1890ff",
      "timeline-dot-bg": "#fff",
      "timeline-item-padding-bottom": "20px",
      "typography-title-font-weight": "600",
      "typography-title-margin-top": "1.2em",
      "typography-title-margin-bottom": "0.5em",
      "upload-actions-color": "rgba(0, 0, 0, 0.45)",
      "process-tail-color": "#f0f0f0",
      "steps-nav-arrow-color": "rgba(0, 0, 0, 0.25)",
      "steps-background": "#fff",
      "steps-icon-size": "32px",
      "steps-icon-custom-size": "32px",
      "steps-icon-custom-top": "0px",
      "steps-icon-custom-font-size": "24px",
      "steps-icon-top": "-0.5px",
      "steps-icon-font-size": "16px",
      "steps-icon-margin": "0 8px 0 0",
      "steps-title-line-height": "32px",
      "steps-small-icon-size": "24px",
      "steps-small-icon-margin": "0 8px 0 0",
      "steps-dot-size": "8px",
      "steps-dot-top": "2px",
      "steps-current-dot-size": "10px",
      "steps-description-max-width": "140px",
      "steps-nav-content-max-width": "auto",
      "steps-vertical-icon-width": "16px",
      "steps-vertical-tail-width": "16px",
      "steps-vertical-tail-width-sm": "12px",
      "notification-bg": "#fff",
      "notification-padding-vertical": "16px",
      "notification-padding-horizontal": "24px",
      "result-title-font-size": "24px",
      "result-subtitle-font-size": "14px",
      "result-icon-font-size": "72px",
      "result-extra-margin": "24px 0 0 0",
      "image-size-base": "48px",
      "image-font-size-base": "24px",
      "image-bg": "#f5f5f5",
      "image-color": "#fff",
      "image-mask-font-size": "16px",
      "image-preview-operation-size": "18px",
      "image-preview-operation-color": "rgba(255, 255, 255, 0.85)",
      "image-preview-operation-disabled-color": "rgba(255, 255, 255, 0.25)",
      "segmented-bg": "rgba(0, 0, 0, 0.04)",
      "segmented-hover-bg": "rgba(0, 0, 0, 0.06)",
      "segmented-selected-bg": "#fff",
      "segmented-label-color": "rgba(0, 0, 0, 0.65)",
      "segmented-label-hover-color": "#262626",
      "root-entry-name": "variable"
    },
    "proxy": {
      "/api/": {
        "target": "http://localhost:13000",
        "changeOrigin": true,
        "pathRewrite": {
          "^": ""
        }
      }
    },
    "fastRefresh": true,
    "model": {},
    "initialState": {},
    "title": "Ant Design Pro",
    "layout": {
      "locale": true,
      "navTheme": "light",
      "colorPrimary": "#02677D",
      "layout": "top",
      "contentWidth": "Fluid",
      "fixedHeader": true,
      "fixSiderbar": true,
      "colorWeak": false,
      "title": "Crazy Charge Admin",
      "pwa": true,
      "logo": "/cc_logo.png",
      "iconfontUrl": "",
      "splitMenus": false,
      "siderMenuType": "group",
      "footerRender": false,
      "token": {}
    },
    "moment2dayjs": {
      "preset": "antd",
      "plugins": [
        "duration"
      ]
    },
    "locale": {
      "default": "zh-CN",
      "antd": true,
      "baseNavigator": true
    },
    "antd": {},
    "request": {},
    "access": {},
    "headScripts": [
      {
        "src": "/scripts/loading.js",
        "async": true
      }
    ],
    "presets": [
      "umi-presets-pro"
    ],
    "openAPI": [
      {
        "requestLibPath": "import { request } from '@umijs/max'",
        "schemaPath": "/usr/local/app-admin/crazycharge-admin/config/oneapi.json",
        "mock": false
      },
      {
        "requestLibPath": "import { request } from '@umijs/max'",
        "schemaPath": "https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json",
        "projectName": "swagger"
      }
    ],
    "esbuildMinifyIIFE": true,
    "tailwindcss": {},
    "targets": {
      "chrome": 80
    },
    "define": {
      "ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION": "",
      "REACT_APP_ENV": false
    }
  },
  "routes": {
    "1": {
      "path": "/user",
      "layout": false,
      "id": "1",
      "absPath": "/user"
    },
    "2": {
      "name": "login",
      "path": "/user/login",
      "file": "@/pages/User/Login/index.tsx",
      "parentId": "1",
      "id": "2",
      "absPath": "/user/login",
      "__content": "import { Footer } from '@/components';\r\nimport { sign_in } from '@/services/auth';\r\nimport { LockOutlined, UserOutlined } from '@ant-design/icons';\r\nimport { LoginForm, ProFormText } from '@ant-design/pro-components';\r\nimport { FormattedMessage, history, useIntl } from '@umijs/max';\r\nimport { message, Tabs } from 'antd';\r\nimport { createStyles } from 'antd-style';\r\nimport React, { useState } from 'react';\r\n\r\nconst useStyles = createStyles(({ token }) => {\r\n  return {\r\n    action: {\r\n      marginLeft: '8px',\r\n      color: 'rgba(0, 0, 0, 0.2)',\r\n      fontSize: '24px',\r\n      verticalAlign: 'middle',\r\n      cursor: 'pointer',\r\n      transition: 'color 0.3s',\r\n      '&:hover': {\r\n        color: token.colorPrimaryActive,\r\n      },\r\n    },\r\n    lang: {\r\n      width: 42,\r\n      height: 42,\r\n      lineHeight: '42px',\r\n      position: 'fixed',\r\n      right: 16,\r\n      borderRadius: token.borderRadius,\r\n      ':hover': {\r\n        backgroundColor: token.colorBgTextHover,\r\n      },\r\n    },\r\n    container: {\r\n      display: 'flex',\r\n      flexDirection: 'column',\r\n      height: '100vh',\r\n      overflow: 'auto',\r\n      backgroundImage:\r\n        \"url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr')\",\r\n      backgroundSize: '100% 100%',\r\n    },\r\n  };\r\n});\r\n\r\nconst Login: React.FC = () => {\r\n  const [type, setType] = useState<string>('account');\r\n  const { styles } = useStyles();\r\n  const intl = useIntl();\r\n\r\n  const fetchUserInfo = async (values: any) => {\r\n    const userInfo = (await sign_in(values)).data;\r\n    // if (userInfo) {\r\n    //   console.log(\"userInfo\", userInfo);\r\n    //   setInitialState((s) => ({\r\n    //     ...s,\r\n    //     currentUser: { id: userInfo.id, token: userInfo.token },\r\n    //   }));\r\n    // }\r\n    return userInfo;\r\n  };\r\n\r\n  const handleSubmit = async (values: API.SignInData) => {\r\n    try {\r\n      // 登录\r\n      console.log('handleSubmit');\r\n      await fetchUserInfo(values);\r\n      const msg = await sign_in(values);\r\n      console.log('msg', msg);\r\n      if (msg) {\r\n        const defaultLoginSuccessMessage = intl.formatMessage({\r\n          id: 'pages.login.success',\r\n          defaultMessage: '登录成功！',\r\n        });\r\n        message.success(defaultLoginSuccessMessage);\r\n        localStorage.setItem('account', values.account);\r\n        localStorage.setItem('password', values.password);\r\n        localStorage.setItem('token', msg.data.token);\r\n        localStorage.setItem('id', msg.data.id);\r\n\r\n        history.push('/org');\r\n\r\n        return;\r\n      }\r\n      console.log(msg);\r\n      // 如果失败去设置用户错误信息\r\n    } catch (error) {\r\n      const defaultLoginFailureMessage = intl.formatMessage({\r\n        id: 'pages.login.failure',\r\n        defaultMessage: '登录失败，请重试！',\r\n      });\r\n      console.log(error);\r\n      message.error(defaultLoginFailureMessage);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className={styles.container}>\r\n      <div\r\n        style={{\r\n          flex: '1',\r\n          padding: '32px 0',\r\n        }}\r\n      >\r\n        <LoginForm\r\n          contentStyle={{\r\n            minWidth: 280,\r\n            maxWidth: '75vw',\r\n          }}\r\n          title=\"CrazyCharge admin\"\r\n          subTitle={'The best charge station of the word'}\r\n          initialValues={{\r\n            autoLogin: true,\r\n          }}\r\n          onFinish={async (values) => {\r\n            await handleSubmit(values as API.SignInData);\r\n          }}\r\n        >\r\n          <Tabs\r\n            activeKey={type}\r\n            onChange={setType}\r\n            centered\r\n            items={[\r\n              {\r\n                key: 'account',\r\n                label: intl.formatMessage({\r\n                  id: 'pages.login.accountLogin.tab',\r\n                  defaultMessage: 'Account Login ',\r\n                }),\r\n              },\r\n            ]}\r\n          />\r\n\r\n          <>\r\n            <ProFormText\r\n              name=\"account\"\r\n              fieldProps={{\r\n                size: 'large',\r\n                prefix: <UserOutlined />,\r\n              }}\r\n              placeholder={'admin'}\r\n              rules={[\r\n                {\r\n                  required: true,\r\n                  message: (\r\n                    <FormattedMessage\r\n                      id=\"pages.login.username.required\"\r\n                      defaultMessage=\"Account is required\"\r\n                    />\r\n                  ),\r\n                },\r\n              ]}\r\n            />\r\n            <ProFormText.Password\r\n              name=\"password\"\r\n              fieldProps={{\r\n                size: 'large',\r\n                prefix: <LockOutlined />,\r\n              }}\r\n              placeholder={'admin'}\r\n              rules={[\r\n                {\r\n                  required: true,\r\n                  message: (\r\n                    <FormattedMessage\r\n                      id=\"pages.login.password.required\"\r\n                      defaultMessage=\"Please input password\"\r\n                    />\r\n                  ),\r\n                },\r\n              ]}\r\n            />\r\n          </>\r\n        </LoginForm>\r\n      </div>\r\n      <Footer />\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Login;\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/User/Login/index.tsx"
    },
    "3": {
      "path": "/customer",
      "name": "customer",
      "icon": "smile",
      "file": "@/pages/Customer/index.tsx",
      "parentId": "ant-design-pro-layout",
      "id": "3",
      "absPath": "/customer",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport { PageParams } from '@/services/commonType';\r\nimport { _getCustomerList } from '@/services/customer';\r\nimport Helper from '@/util/searchHelper';\r\nimport { ActionType } from '@ant-design/pro-components';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { CustomerTableColumns } from './columns';\r\nexport default function Index() {\r\n  /**********************************狀態管理**********************************/\r\n\r\n  const actionRef = useRef<ActionType>();\r\n  const [searchKey, setSearchKey] = useState('');\r\n  const [reload, setReload] = useState(() => actionRef.current?.reload);\r\n  useEffect(() => {\r\n    setReload(() => actionRef.current?.reload);\r\n    actionRef.current?.setPageInfo?.({\r\n      current: 1,\r\n      pageSize: 10,\r\n    });\r\n  }, [searchKey]);\r\n\r\n  /**********************************狀態管理**********************************/\r\n  /**********************************組件初始化**********************************/\r\n  /**********************************組件初始化**********************************/\r\n  /**********************************異步函數**********************************/\r\n\r\n  /**********************************異步函數**********************************/\r\n  return (\r\n    <div>\r\n      <BaseIndex title=\"Customer account page\">\r\n        <BaseSearch\r\n          title=\"Search bar\"\r\n          submitFun={actionRef.current?.reload}\r\n          inputProps={{\r\n            value: searchKey,\r\n            onChange: ({ currentTarget: { value } }) => setSearchKey(value),\r\n          }}\r\n        />\r\n        <BaseTable<Page_Customer.CustomerTable>\r\n          searchKey={searchKey}\r\n          props={{\r\n            headerTitle: 'Account List',\r\n            actionRef: actionRef,\r\n\r\n            columns: CustomerTableColumns({\r\n              mainTableReload: reload,\r\n            }),\r\n            request: async (pageParams: PageParams) => {\r\n              console.log('pageParams', pageParams);\r\n\r\n              const dataSource = await _getCustomerList(pageParams, searchKey);\r\n              console.log('dataSource', dataSource);\r\n              if (searchKey) {\r\n                dataSource.data = Helper<Page_Customer.CustomerTable>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: searchKey,\r\n                }) as Page_Customer.CustomerTable[];\r\n\r\n                return dataSource;\r\n              } else {\r\n                return dataSource;\r\n              }\r\n            },\r\n          }}\r\n        />\r\n      </BaseIndex>\r\n    </div>\r\n  );\r\n}\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Customer/index.tsx"
    },
    "4": {
      "path": "/stations",
      "name": "stations",
      "icon": "api",
      "file": "@/pages/Stations/index.tsx",
      "parentId": "ant-design-pro-layout",
      "id": "4",
      "absPath": "/stations",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport { _getStationList, _syncData } from '@/services/station';\r\nimport Helper from '@/util/searchHelper';\r\nimport { ActionType } from '@ant-design/pro-components';\r\nimport { Button, message, Modal, Tooltip } from 'antd';\r\nimport { useRef, useState } from 'react';\r\nimport { StationTableColumns } from './columns';\r\nexport default function Index() {\r\n  /**********************************狀態管理**********************************/\r\n\r\n  const actionRef = useRef<ActionType>();\r\n  const [searchKey, setSearchKey] = useState('');\r\n  const [doubleCheckModalOpen, setDoubleCheckModalOpen] = useState(false);\r\n\r\n  /**********************************狀態管理**********************************/\r\n  /**********************************組件初始化**********************************/\r\n  const DoubleCheckModal = () => {\r\n    return (\r\n      <Modal\r\n        open={doubleCheckModalOpen}\r\n        title=\"確認同步數據\"\r\n        centered\r\n        onCancel={() => setDoubleCheckModalOpen(false)}\r\n        onOk={async () => {\r\n          await _syncData();\r\n          actionRef.current?.reload();\r\n          message.success('同步數據成功');\r\n          setDoubleCheckModalOpen(false);\r\n        }}\r\n      >\r\n        <h1>是否確認同步數據？</h1>\r\n      </Modal>\r\n    );\r\n  };\r\n  /**********************************組件初始化**********************************/\r\n  /**********************************異步函數**********************************/\r\n\r\n  /**********************************異步函數**********************************/\r\n  return (\r\n    <div>\r\n      <DoubleCheckModal />\r\n      <BaseIndex title=\"Station page\">\r\n        <BaseSearch\r\n          title=\"Search bar\"\r\n          submitFun={actionRef.current?.reload}\r\n          inputProps={{\r\n            value: searchKey,\r\n            onChange: ({ currentTarget: { value } }) => setSearchKey(value),\r\n          }}\r\n        />\r\n        <BaseTable<Page_Station.Station>\r\n          searchKey={searchKey}\r\n          props={{\r\n            headerTitle: 'Station List',\r\n            actionRef: actionRef,\r\n            toolBarRender: () => [\r\n              <Tooltip\r\n                key=\"syncData\"\r\n                title={\r\n                  <>\r\n                    <h1>請在以下情況下同步數據</h1>\r\n                    <h2>\r\n                      1.\r\n                      充電站信息有變動。例如：增加新的充電站，減少已有充電站，站內新增或減少樁槍設施等\r\n                    </h2>\r\n                    <h2>2. 已確認設施提供方成功更新數據</h2>\r\n                  </>\r\n                }\r\n              >\r\n                <Button type=\"primary\" key=\"syncData\" onClick={() => setDoubleCheckModalOpen(true)}>\r\n                  同步數據\r\n                </Button>\r\n              </Tooltip>,\r\n            ],\r\n            columns: StationTableColumns({\r\n              mainTableReload: () => actionRef.current?.reload(),\r\n            }),\r\n            request: async () => {\r\n              const dataSource = await _getStationList();\r\n              console.log('dataSource', dataSource);\r\n              if (searchKey) {\r\n                dataSource.data = Helper<Page_Station.Station>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: searchKey,\r\n                }) as Page_Station.Station[];\r\n\r\n                return dataSource;\r\n              } else {\r\n                return dataSource;\r\n              }\r\n            },\r\n          }}\r\n        />\r\n      </BaseIndex>\r\n    </div>\r\n  );\r\n}\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Stations/index.tsx"
    },
    "5": {
      "path": "/transaction",
      "name": "transaction",
      "icon": "transaction",
      "parentId": "ant-design-pro-layout",
      "id": "5",
      "absPath": "/transaction"
    },
    "6": {
      "path": "/transaction/order",
      "name": "order",
      "file": "@/pages/Transaction/Order/index.tsx",
      "parentId": "5",
      "id": "6",
      "absPath": "/transaction/order",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport Helper from '@/util/searchHelper';\r\nimport { ActionType } from '@ant-design/pro-components';\r\nimport { Button } from 'antd';\r\nimport { useEffect, useRef, useState } from 'react';\r\n// import DetailModal from \"./detailModal\";\r\nimport { _getOrderTransactionList } from '@/services/transition';\r\nimport { exportToExcel } from '@/util/exportToExcel';\r\nimport { DownloadOutlined } from '@ant-design/icons';\r\nimport { history, useLocation } from '@umijs/max';\r\nimport dayjs from 'dayjs';\r\nimport { OrderTransactionColumns } from './OrderTransactionColumns';\r\nexport default function Index() {\r\n  const [transitionSearchKey, setTransitionSearchKey] = useState('');\r\n  const transitionTableRef = useRef<ActionType>();\r\n  const [exporting, setExporting] = useState(false);\r\n  const location = useLocation();\r\n\r\n  // 处理 URL 参数\r\n  useEffect(() => {\r\n    const params = new URLSearchParams(location.search);\r\n    const customerIdFromUrl = params.get('customerId');\r\n    if (customerIdFromUrl) {\r\n      setTransitionSearchKey(customerIdFromUrl);\r\n    }\r\n  }, [location]);\r\n\r\n  const handleExport = async () => {\r\n    setExporting(true);\r\n    try {\r\n      const response = await _getOrderTransactionList();\r\n      let data = response.data;\r\n\r\n      if (transitionSearchKey) {\r\n        data = Helper<Page_Customer.CustomerTable>({\r\n          dataSource: data,\r\n          keyWord: transitionSearchKey,\r\n        });\r\n      }\r\n      await exportToExcel({\r\n        filename: `交易記錄`,\r\n        data,\r\n        columns: [\r\n          {\r\n            title: '訂單編號',\r\n            dataIndex: 'format_order_id',\r\n            width: 30,\r\n          },\r\n          {\r\n            title: '用戶暱稱',\r\n            dataIndex: ['user', 'nickname'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '用戶電話',\r\n            dataIndex: ['user', 'phone'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '充電槍',\r\n            dataIndex: ['connector', 'ConnectorName'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '車位號',\r\n            dataIndex: ['connector', 'park'],\r\n            width: 10,\r\n          },\r\n          {\r\n            title: '訂單狀態',\r\n            dataIndex: ['status', 'description'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '充電量(kWh)',\r\n            dataIndex: 'actual_total_power',\r\n            width: 15,\r\n            render: (value) => value || '-',\r\n          },\r\n          {\r\n            title: '预收費用(HK$)',\r\n            dataIndex: 'total_fee',\r\n            width: 15,\r\n            render: (value) => value || 0,\r\n          },\r\n          {\r\n            title: '實際費用',\r\n            dataIndex: 'actual_fee',\r\n            width: 100,\r\n            render: (_, record) =>\r\n              record.total_fee - record.withdraw_fee\r\n                ? `HKD$${record.total_fee - record.withdraw_fee}`\r\n                : '-',\r\n          },\r\n          {\r\n            title: '退款',\r\n            dataIndex: 'refund_fee',\r\n            width: 100,\r\n            render: (_, record) => (record.withdraw_fee ? `HKD$${record.withdraw_fee}` : '-'),\r\n          },\r\n          {\r\n            title: '罰金(HK$)',\r\n            dataIndex: 'penalty_fee',\r\n            width: 15,\r\n            render: (value) => value || '-',\r\n          },\r\n          {\r\n            title: '預約時間',\r\n            dataIndex: 'book_time',\r\n            width: 20,\r\n            render: (value) => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '實際開始時間',\r\n            dataIndex: 'actual_start_time',\r\n            width: 20,\r\n            render: (value) => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '預計結束時間',\r\n            dataIndex: 'end_time',\r\n            width: 20,\r\n            render: (value) => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '實際結束時間',\r\n            dataIndex: 'actual_end_time',\r\n            width: 20,\r\n            render: (value) => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '支付狀態',\r\n            dataIndex: 'paid_status',\r\n            width: 15,\r\n            render: (value) => (value ? '已支付' : '未支付'),\r\n          },\r\n          {\r\n            title: '罰金支付狀態',\r\n            dataIndex: 'penalty_paid_status',\r\n            width: 15,\r\n            render: (value, record) => (record.penalty_fee ? (value ? '已支付' : '未支付') : '-'),\r\n          },\r\n          {\r\n            title: '備註',\r\n            dataIndex: 'remark',\r\n            width: 20,\r\n          },\r\n          {\r\n            title: '創建時間',\r\n            dataIndex: 'createdAt',\r\n            width: 20,\r\n            render: (value) => dayjs(value as string).format('YYYY-MM-DD HH:mm:ss'),\r\n          },\r\n          {\r\n            title: '更新時間',\r\n            dataIndex: 'updatedAt',\r\n            width: 20,\r\n            render: (value) => dayjs(value as string).format('YYYY-MM-DD HH:mm:ss'),\r\n          },\r\n        ],\r\n      });\r\n    } finally {\r\n      setExporting(false);\r\n    }\r\n  };\r\n  return (\r\n    <BaseIndex title=\"Order transaction page\">\r\n      <BaseSearch\r\n        title=\"Search bar\"\r\n        submitFun={transitionTableRef.current?.reload}\r\n        inputProps={{\r\n          value: transitionSearchKey,\r\n          onChange: (e) => {\r\n            setTransitionSearchKey(e.target.value);\r\n            // 可选：自动触发搜索\r\n            transitionTableRef.current?.reload();\r\n          },\r\n        }}\r\n      />\r\n      <BaseTable\r\n        searchKey={transitionSearchKey}\r\n        props={{\r\n          headerTitle: 'Order transaction page',\r\n          actionRef: transitionTableRef,\r\n          pagination: {\r\n            pageSize: 16,\r\n          },\r\n          toolBarRender() {\r\n            const domList: React.ReactNode[] = [\r\n              <Button\r\n                key=\"export\"\r\n                type=\"primary\"\r\n                onClick={handleExport}\r\n                loading={exporting}\r\n                icon={<DownloadOutlined />}\r\n              >\r\n                {exporting ? '導出中...' : '匯出表格'}\r\n              </Button>,\r\n            ];\r\n            if (transitionSearchKey) {\r\n              domList.push(\r\n                <Button\r\n                  key=\"back\"\r\n                  type=\"primary\"\r\n                  onClick={() => {\r\n                    setTransitionSearchKey('');\r\n                    history.push('/customer');\r\n                  }}\r\n                >\r\n                  返回用户列表\r\n                </Button>,\r\n              );\r\n            }\r\n            return domList;\r\n          },\r\n          columns: OrderTransactionColumns({\r\n            mainTableReload: () => {\r\n              return transitionTableRef.current?.reload();\r\n            },\r\n          }),\r\n          request: async () => {\r\n            const dataSource = await _getOrderTransactionList();\r\n            console.log('order transaction dataSource==>', dataSource);\r\n            if (transitionSearchKey) {\r\n              return {\r\n                ...dataSource,\r\n                data: Helper<Page_Customer.CustomerTable>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: transitionSearchKey,\r\n                }) as Page_Customer.CustomerTable[],\r\n              };\r\n            }\r\n            return dataSource;\r\n          },\r\n        }}\r\n      />\r\n    </BaseIndex>\r\n  );\r\n}\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Transaction/Order/index.tsx"
    },
    "7": {
      "path": "/transaction/top-up",
      "name": "topUp",
      "file": "@/pages/Transaction/TopUp/index.tsx",
      "parentId": "5",
      "id": "7",
      "absPath": "/transaction/top-up",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport Helper from '@/util/searchHelper';\r\nimport { ActionType } from '@ant-design/pro-components';\r\nimport { Button } from 'antd';\r\nimport { useEffect, useRef, useState } from 'react';\r\n// import DetailModal from \"./detailModal\";\r\nimport { _getTopUpTransactionList } from '@/services/transition';\r\nimport { exportToExcel } from '@/util/exportToExcel';\r\nimport { DownloadOutlined } from '@ant-design/icons';\r\nimport { history, useLocation } from '@umijs/max';\r\nimport dayjs from 'dayjs';\r\nimport { TopUpTransactionColumns } from './TopUpTransactionColumns';\r\nexport default function Index() {\r\n  const [transitionSearchKey, setTransitionSearchKey] = useState('');\r\n  const transitionTableRef = useRef<ActionType>();\r\n  const [exporting, setExporting] = useState(false);\r\n  const location = useLocation();\r\n\r\n  // 处理 URL 参数\r\n  useEffect(() => {\r\n    const params = new URLSearchParams(location.search);\r\n    const customerIdFromUrl = params.get('customerId');\r\n    if (customerIdFromUrl) {\r\n      setTransitionSearchKey(customerIdFromUrl);\r\n    }\r\n  }, [location]);\r\n\r\n  const handleExport = async () => {\r\n    setExporting(true);\r\n    try {\r\n      const response = await _getTopUpTransactionList();\r\n      let data = response.data;\r\n\r\n      if (transitionSearchKey) {\r\n        data = Helper<API.TopUpTransaction>({\r\n          dataSource: data,\r\n          keyWord: transitionSearchKey,\r\n        });\r\n      }\r\n\r\n      await exportToExcel({\r\n        filename: `充值記錄`,\r\n        data,\r\n        columns: [\r\n          {\r\n            title: '訂單編號',\r\n            dataIndex: 'out_trade_no',\r\n            width: 30,\r\n          },\r\n          {\r\n            title: '用戶暱稱',\r\n            dataIndex: ['user', 'nickname'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '用戶電話',\r\n            dataIndex: ['user', 'phone'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '用戶郵箱',\r\n            dataIndex: ['user', 'email'],\r\n            width: 20,\r\n          },\r\n          {\r\n            title: '充值金額(HKD$)',\r\n            dataIndex: 'amount',\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '支付方式',\r\n            dataIndex: ['snapshot', 'pay_type'],\r\n            width: 15,\r\n            render: (payType) => {\r\n              const payTypeMap: Record<string, string> = {\r\n                '801512': 'AlipayHK',\r\n              };\r\n              return payTypeMap[payType] || payType;\r\n            },\r\n          },\r\n          {\r\n            title: '支付狀態',\r\n            dataIndex: ['snapshot', 'status'],\r\n            width: 15,\r\n            render: (status) => (status === '1' ? '支付成功' : '支付失敗'),\r\n          },\r\n          {\r\n            title: '支付時間',\r\n            dataIndex: ['snapshot', 'paydtm'],\r\n            width: 20,\r\n            render: (time) => (time ? dayjs(time).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '錢包餘額(HKD$)',\r\n            dataIndex: ['user', 'wallet'],\r\n            width: 15,\r\n            render: (wallet) => wallet?.toFixed(2),\r\n          },\r\n          {\r\n            title: '交易流水號',\r\n            dataIndex: ['snapshot', 'syssn'],\r\n            width: 30,\r\n          },\r\n          {\r\n            title: '支付卡號',\r\n            dataIndex: ['snapshot', 'outcardnm'],\r\n            width: 20,\r\n          },\r\n          {\r\n            title: '創建時間',\r\n            dataIndex: 'createdAt',\r\n            width: 20,\r\n            render: (time) => dayjs(time).format('YYYY-MM-DD HH:mm:ss'),\r\n          },\r\n          {\r\n            title: '更新時間',\r\n            dataIndex: 'updatedAt',\r\n            width: 20,\r\n            render: (time) => dayjs(time).format('YYYY-MM-DD HH:mm:ss'),\r\n          },\r\n        ],\r\n      });\r\n    } finally {\r\n      setExporting(false);\r\n    }\r\n  };\r\n  return (\r\n    <BaseIndex title=\"Top up transaction page\">\r\n      <BaseSearch\r\n        title=\"Search bar\"\r\n        submitFun={transitionTableRef.current?.reload}\r\n        inputProps={{\r\n          value: transitionSearchKey,\r\n          onChange: (e) => {\r\n            setTransitionSearchKey(e.target.value);\r\n            // 可选：自动触发搜索\r\n            transitionTableRef.current?.reload();\r\n          },\r\n        }}\r\n      />\r\n      <BaseTable\r\n        searchKey={transitionSearchKey}\r\n        props={{\r\n          headerTitle: 'Order transaction page',\r\n          actionRef: transitionTableRef,\r\n          pagination: {\r\n            pageSize: 16,\r\n          },\r\n          toolBarRender() {\r\n            const domList: React.ReactNode[] = [\r\n              <Button\r\n                key=\"export\"\r\n                type=\"primary\"\r\n                onClick={handleExport}\r\n                loading={exporting}\r\n                icon={<DownloadOutlined />}\r\n              >\r\n                {exporting ? '導出中...' : '匯出表格'}\r\n              </Button>,\r\n            ];\r\n            if (transitionSearchKey) {\r\n              domList.push(\r\n                <Button\r\n                  key=\"back\"\r\n                  type=\"primary\"\r\n                  onClick={() => {\r\n                    setTransitionSearchKey('');\r\n                    history.push('/customer');\r\n                  }}\r\n                >\r\n                  返回用户列表\r\n                </Button>,\r\n              );\r\n            }\r\n            return domList;\r\n          },\r\n          columns: TopUpTransactionColumns({\r\n            mainTableReload: () => {\r\n              return transitionTableRef.current?.reload();\r\n            },\r\n          }),\r\n          request: async () => {\r\n            const dataSource = await _getTopUpTransactionList();\r\n            console.log('order transaction dataSource==>', dataSource);\r\n            if (transitionSearchKey) {\r\n              return {\r\n                ...dataSource,\r\n                data: Helper<Page_Customer.CustomerTable>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: transitionSearchKey,\r\n                }) as Page_Customer.CustomerTable[],\r\n              };\r\n            }\r\n            return dataSource;\r\n          },\r\n        }}\r\n      />\r\n    </BaseIndex>\r\n  );\r\n}\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Transaction/TopUp/index.tsx"
    },
    "8": {
      "path": "/transaction/wallet",
      "name": "wallet",
      "file": "@/pages/Transaction/Wallet/index.tsx",
      "parentId": "5",
      "id": "8",
      "absPath": "/transaction/wallet",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport Helper from '@/util/searchHelper';\r\nimport { ActionType } from '@ant-design/pro-components';\r\nimport { Button } from 'antd';\r\nimport { useEffect, useRef, useState } from 'react';\r\n// import DetailModal from \"./detailModal\";\r\nimport { _getWalletTransactionList } from '@/services/transition';\r\nimport { exportToExcel } from '@/util/exportToExcel';\r\nimport { DownloadOutlined } from '@ant-design/icons';\r\nimport { history, useLocation } from '@umijs/max';\r\nimport dayjs from 'dayjs';\r\nimport { WalletTransactionColumns } from './WalletTransactionColumns';\r\nexport default function Index() {\r\n  const [transitionSearchKey, setTransitionSearchKey] = useState('');\r\n  const transitionTableRef = useRef<ActionType>();\r\n  const [exporting, setExporting] = useState(false);\r\n  const location = useLocation();\r\n\r\n  // 处理 URL 参数\r\n  useEffect(() => {\r\n    const params = new URLSearchParams(location.search);\r\n    const customerIdFromUrl = params.get('customerId');\r\n    if (customerIdFromUrl) {\r\n      setTransitionSearchKey(customerIdFromUrl);\r\n    }\r\n  }, [location]);\r\n\r\n  const handleExport = async () => {\r\n    setExporting(true);\r\n    try {\r\n      const response = await _getWalletTransactionList();\r\n      let data = response.data;\r\n\r\n      if (transitionSearchKey) {\r\n        data = Helper<WalletTransaction>({\r\n          dataSource: data,\r\n          keyWord: transitionSearchKey,\r\n        });\r\n      }\r\n\r\n      await exportToExcel({\r\n        filename: `錢包交易記錄`,\r\n        data,\r\n        columns: [\r\n          {\r\n            title: '訂單編號',\r\n            dataIndex: ['reservation', 'format_order_id'],\r\n            width: 30,\r\n          },\r\n          {\r\n            title: '用戶暱稱',\r\n            dataIndex: ['user', 'nickname'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '用戶電話',\r\n            dataIndex: ['user', 'phone'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '交易類型',\r\n            dataIndex: 'goods_name',\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '金額(HKD$)',\r\n            dataIndex: 'amount',\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '交易狀態',\r\n            dataIndex: 'status_fk',\r\n            width: 15,\r\n            render: (status) => (status === 1 ? '成功' : '失敗'),\r\n          },\r\n          {\r\n            title: '錢包餘額(HKD$)',\r\n            dataIndex: ['user', 'wallet'],\r\n            width: 15,\r\n            render: (wallet) => wallet?.toFixed(2),\r\n          },\r\n          {\r\n            title: '充電開始時間',\r\n            dataIndex: ['reservation', 'actual_start_time'],\r\n            width: 20,\r\n            render: (time) => (time ? dayjs(time).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '充電結束時間',\r\n            dataIndex: ['reservation', 'actual_end_time'],\r\n            width: 20,\r\n            render: (time) => (time ? dayjs(time).format('YYYY-MM-DD HH:mm:ss') : '-'),\r\n          },\r\n          {\r\n            title: '充電量(kWh)',\r\n            dataIndex: ['reservation', 'actual_total_power'],\r\n            width: 15,\r\n          },\r\n          {\r\n            title: '創建時間',\r\n            dataIndex: 'createdAt',\r\n            width: 20,\r\n            render: (time) => dayjs(time).format('YYYY-MM-DD HH:mm:ss'),\r\n          },\r\n          {\r\n            title: '更新時間',\r\n            dataIndex: 'updatedAt',\r\n            width: 20,\r\n            render: (time) => dayjs(time).format('YYYY-MM-DD HH:mm:ss'),\r\n          },\r\n        ],\r\n      });\r\n    } finally {\r\n      setExporting(false);\r\n    }\r\n  };\r\n  return (\r\n    <BaseIndex title=\"錢包交易記錄\">\r\n      <BaseSearch\r\n        title=\"Search bar\"\r\n        submitFun={transitionTableRef.current?.reload}\r\n        inputProps={{\r\n          value: transitionSearchKey,\r\n          onChange: (e) => {\r\n            setTransitionSearchKey(e.target.value);\r\n            // 可选：自动触发搜索\r\n            transitionTableRef.current?.reload();\r\n          },\r\n        }}\r\n      />\r\n      <BaseTable\r\n        searchKey={transitionSearchKey}\r\n        props={{\r\n          headerTitle: '錢包交易記錄',\r\n          actionRef: transitionTableRef,\r\n          pagination: {\r\n            pageSize: 16,\r\n          },\r\n          toolBarRender() {\r\n            const domList: React.ReactNode[] = [\r\n              <Button\r\n                key=\"export\"\r\n                type=\"primary\"\r\n                onClick={handleExport}\r\n                loading={exporting}\r\n                icon={<DownloadOutlined />}\r\n              >\r\n                {exporting ? '導出中...' : '匯出表格'}\r\n              </Button>,\r\n            ];\r\n            if (transitionSearchKey) {\r\n              domList.push(\r\n                <Button\r\n                  key=\"back\"\r\n                  type=\"primary\"\r\n                  onClick={() => {\r\n                    setTransitionSearchKey('');\r\n                    history.push('/customer');\r\n                  }}\r\n                >\r\n                  返回用户列表\r\n                </Button>,\r\n              );\r\n            }\r\n            return domList;\r\n          },\r\n          columns: WalletTransactionColumns({\r\n            mainTableReload: () => {\r\n              return transitionTableRef.current?.reload();\r\n            },\r\n          }),\r\n          request: async () => {\r\n            const dataSource = await _getWalletTransactionList();\r\n            console.log('order transaction dataSource==>', dataSource);\r\n            if (transitionSearchKey) {\r\n              return {\r\n                ...dataSource,\r\n                data: Helper<Page_Customer.CustomerTable>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: transitionSearchKey,\r\n                }) as Page_Customer.CustomerTable[],\r\n              };\r\n            }\r\n            return dataSource;\r\n          },\r\n        }}\r\n      />\r\n    </BaseIndex>\r\n  );\r\n}\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Transaction/Wallet/index.tsx"
    },
    "9": {
      "path": "/settings",
      "name": "settings",
      "icon": "setting",
      "file": "@/pages/Settings/index.tsx",
      "parentId": "ant-design-pro-layout",
      "id": "9",
      "absPath": "/settings",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseModel from '@/components/Base/BaseModel';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport {\r\n  _getAdvertiseInfo,\r\n  _getCoupon,\r\n  _getCouponSelection,\r\n  _getPenalty,\r\n  _getPriceEvent,\r\n  _postCoupon,\r\n  _putPenalty,\r\n} from '@/services/setting';\r\nimport Helper from '@/util/searchHelper';\r\nimport { EditOutlined, PlusSquareOutlined, UndoOutlined } from '@ant-design/icons';\r\n\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport {\r\n  ActionType,\r\n  ProCard,\r\n  ProForm,\r\n  ProFormCheckbox,\r\n  ProFormDigit,\r\n  ProFormSelect,\r\n  ProFormText,\r\n  ProFormTextArea,\r\n} from '@ant-design/pro-components';\r\nimport { Button, message, Tag } from 'antd';\r\nimport { FormInstance } from 'antd/lib';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { AdvertiseColumns, PriceEventColumns } from './columns';\r\nimport { CreateModal } from './PriceEventForm';\r\nexport type EnumCouponCondition = {\r\n  LimitByOrderAmount: boolean;\r\n  MinOrderAmount: boolean;\r\n  CanCombine: boolean;\r\n  OneCouponPerOrder: boolean;\r\n  isRefundableRemain: boolean;\r\n};\r\nexport default function Index() {\r\n  /**********************************狀態管理**********************************/\r\n  const [tab, setTab] = useState('tab1');\r\n  const [searchKey, setSearchKey] = useState('');\r\n  const [couponTypeOptions, setCouponTypeOptions] = useState([]);\r\n  const [conditionOptions, setConditionOptions] = useState([]);\r\n  const [discountUnitOptions, setDiscountUnitOptions] = useState([]);\r\n  const actionRef = useRef<ActionType>();\r\n  const advertiseActionRef = useRef<ActionType>();\r\n  const getCouponSelection = async () => {\r\n    const response = await _getCouponSelection();\r\n    setCouponTypeOptions(response.data.coupon_type);\r\n    setConditionOptions(response.data.condition_desc);\r\n    setDiscountUnitOptions(response.data.discount_unit);\r\n  };\r\n  const [penaltyFormReadOnly, setPenaltyFormReadOnly] = useState(true);\r\n  const [penaltyData, setPenaltyData] = useState<undefined>();\r\n  const penaltyRef = useRef<FormInstance>();\r\n  const getPenalty = async () => {\r\n    const response = await _getPenalty();\r\n    setPenaltyData(response.data[0]);\r\n  };\r\n\r\n  useEffect(() => {\r\n    getCouponSelection();\r\n    getPenalty();\r\n  }, []);\r\n  /**********************************狀態管理**********************************/\r\n\r\n  /**********************************組件初始化**********************************/\r\n  // const uploadProps: UploadProps = {\r\n  //   name: \"file\",\r\n  //   showUploadList: false, // 不显示上传列表\r\n  //   beforeUpload: () => false, // 阻止自动上传\r\n  //   accept: \"video/*\",\r\n  //   onChange: async (info) => {\r\n  //     const file = info.fileList[0]?.originFileObj;\r\n  //     if (file) {\r\n  //       // 验证是否为图片\r\n  //       if (!file.type.startsWith(\"video/\")) {\r\n  //         message.error(\"请上传视频文件\");\r\n  //         return;\r\n  //       }\r\n  //       const maxSize = 100 * 1024 * 1024; // 100MB\r\n  //       if (file.size > maxSize) {\r\n  //         message.error(\"视频文件不能超过 100MB\");\r\n  //         return;\r\n  //       }\r\n\r\n  //       try {\r\n  //         setLoading(true);\r\n  //         const response = await _updateBannerVideo({\r\n  //           youtube_url: file,\r\n  //         });\r\n  //         if (response.status) {\r\n  //           message.success(\"上传成功\");\r\n  //           BannerFormDataRefresh();\r\n  //         } else {\r\n  //           message.error(\"上传失败\");\r\n  //         }\r\n  //       } catch (error) {\r\n  //         message.error(\"上传失败\");\r\n  //         console.error(error);\r\n  //       } finally {\r\n  //         setLoading(false);\r\n  //       }\r\n  //     }\r\n  //   },\r\n  // };\r\n  const CouponCard = () => {\r\n    return (\r\n      <div>\r\n        <BaseTable<API.CouponData>\r\n          searchKey={searchKey}\r\n          props={{\r\n            headerTitle: '優惠券列表',\r\n            actionRef: actionRef,\r\n            optionsRender(props, defaultDom) {\r\n              const createCoupon = (\r\n                <BaseModel\r\n                  allowUpdate={false}\r\n                  readOnly={false}\r\n                  modalFormProps={{\r\n                    onFinish: async (values) => {\r\n                      const condition: EnumCouponCondition = {\r\n                        LimitByOrderAmount: false,\r\n                        MinOrderAmount: false,\r\n                        CanCombine: false,\r\n                        OneCouponPerOrder: false,\r\n                        isRefundableRemain: false,\r\n                      };\r\n                      if (values.condition) {\r\n                        values.condition.map((item: string) => {\r\n                          condition[item as keyof EnumCouponCondition] = true;\r\n                          return item;\r\n                        });\r\n                      }\r\n                      values.condition = condition;\r\n                      console.log(values);\r\n\r\n                      try {\r\n                        await _postCoupon(values as any);\r\n                        message.success('創建優惠券成功');\r\n                      } catch (error) {\r\n                        message.error('創建優惠券失敗');\r\n                      } finally {\r\n                        actionRef.current?.reload();\r\n                      }\r\n                      return true;\r\n                    },\r\n                    grid: true,\r\n                    trigger: <Button icon={<PlusSquareOutlined />} type=\"text\" />,\r\n                    submitter: {\r\n                      searchConfig: {\r\n                        resetText: '取消',\r\n                        submitText: '確認',\r\n                      },\r\n                    },\r\n                  }}\r\n                  title=\"新增優惠券\"\r\n                >\r\n                  <ProFormText\r\n                    colProps={{ span: 12 }}\r\n                    label=\"優惠券名稱\"\r\n                    name=\"name\"\r\n                    rules={[{ required: true }]}\r\n                  />\r\n                  <ProFormDigit\r\n                    colProps={{ span: 12 }}\r\n                    label=\"優惠金額\"\r\n                    name=\"amount\"\r\n                    rules={[{ required: true }]}\r\n                    min={0}\r\n                  />\r\n                  <ProFormSelect\r\n                    colProps={{ span: 12 }}\r\n                    label=\"折扣方式\"\r\n                    name=\"unit\"\r\n                    rules={[{ required: true }]}\r\n                    options={discountUnitOptions.map((item) => ({\r\n                      label: item,\r\n                      value: item,\r\n                    }))}\r\n                  />\r\n                  <ProFormSelect\r\n                    colProps={{ span: 12 }}\r\n                    label=\"優惠券類型\"\r\n                    name=\"coupon_type\"\r\n                    rules={[{ required: true }]}\r\n                    options={couponTypeOptions.map((item) => ({\r\n                      label: item,\r\n                      value: item,\r\n                    }))}\r\n                  />\r\n                  <ProFormDigit\r\n                    colProps={{ span: 12 }}\r\n                    label=\"最低消費金額\"\r\n                    name=\"min_purchase_amount\"\r\n                    rules={[{ required: true }]}\r\n                    min={0}\r\n                  />\r\n                  <ProFormDigit\r\n                    colProps={{ span: 12 }}\r\n                    label=\"有效期限(天)\"\r\n                    name=\"valid_date\"\r\n                    rules={[{ required: true }]}\r\n                    min={1}\r\n                  />\r\n                  <ProFormTextArea\r\n                    colProps={{ span: 24 }}\r\n                    label=\"優惠券描述\"\r\n                    name=\"description\"\r\n                    rules={[{ required: true }]}\r\n                  />\r\n                  <ProFormCheckbox.Group\r\n                    colProps={{ span: 24 }}\r\n                    label=\"使用條件\"\r\n                    name={['condition']}\r\n                    options={Object.entries(conditionOptions).map(([key, value]) => ({\r\n                      label: value,\r\n                      value: key,\r\n                    }))}\r\n                  />\r\n                </BaseModel>\r\n              );\r\n              return [createCoupon, ...defaultDom];\r\n            },\r\n            columns: [\r\n              {\r\n                title: '優惠券名稱',\r\n                dataIndex: 'name',\r\n                width: 150,\r\n                ellipsis: true,\r\n              },\r\n              {\r\n                title: '優惠金額',\r\n                dataIndex: 'amount',\r\n                width: 100,\r\n                render: (amount, record) => `${record.unit}${amount}`,\r\n              },\r\n              {\r\n                title: '優惠券類型',\r\n                dataIndex: 'coupon_type',\r\n                width: 120,\r\n              },\r\n              {\r\n                title: '優惠券代碼',\r\n                dataIndex: 'redeem_code',\r\n                width: 150,\r\n                copyable: true,\r\n                ellipsis: {\r\n                  showTitle: true,\r\n                },\r\n                onCell: () => ({\r\n                  style: {\r\n                    whiteSpace: 'nowrap',\r\n                    overflow: 'hidden',\r\n                    textOverflow: 'ellipsis',\r\n                    maxWidth: 100,\r\n                  },\r\n                }),\r\n              },\r\n              {\r\n                title: '最低消費金額',\r\n                dataIndex: 'min_purchase_amount',\r\n                width: 120,\r\n                render: (amount, record) => `${record.unit}${amount}`,\r\n              },\r\n              {\r\n                title: '有效期限',\r\n                dataIndex: 'valid_date',\r\n                width: 100,\r\n                render: (days) => `${days}天`,\r\n              },\r\n              {\r\n                title: '使用條件',\r\n                dataIndex: 'condition',\r\n                width: 200,\r\n                render: (condition) => (\r\n                  <div>\r\n                    {(condition as any)?.CanCombine && <Tag color=\"blue\">可疊加</Tag>}\r\n                    {(condition as any)?.MinOrderAmount && <Tag color=\"green\">最低消費</Tag>}\r\n                    {(condition as any)?.OneCouponPerOrder && <Tag color=\"orange\">單筆限用</Tag>}\r\n                    {(condition as any)?.LimitByOrderAmount && <Tag color=\"purple\">金額限制</Tag>}\r\n                    {(condition as any)?.isRefundableRemain && <Tag color=\"cyan\">可退餘額</Tag>}\r\n                  </div>\r\n                ),\r\n              },\r\n              {\r\n                title: '描述',\r\n                dataIndex: 'description',\r\n                width: 300,\r\n                ellipsis: true,\r\n              },\r\n            ],\r\n            request: async () => {\r\n              const dataSource = await _getCoupon();\r\n              if (searchKey) {\r\n                return {\r\n                  success: true,\r\n                  data: Helper<API.CouponData>({\r\n                    dataSource: dataSource.data,\r\n                    keyWord: searchKey,\r\n                  }),\r\n                };\r\n              }\r\n              return {\r\n                success: true,\r\n                data: dataSource.data,\r\n              };\r\n            },\r\n          }}\r\n        />\r\n      </div>\r\n    );\r\n  };\r\n  const PriceEventTable = () => {\r\n    const actionRef = useRef<ActionType>();\r\n\r\n    return (\r\n      <>\r\n        <BaseTable<API.PriceEvent>\r\n          props={{\r\n            scroll: { x: 2000 },\r\n            headerTitle: '時段價格設置',\r\n            actionRef,\r\n            columns: PriceEventColumns({\r\n              mainTableReload: () => actionRef.current?.reload(),\r\n            }),\r\n            request: async () => {\r\n              const response = await _getPriceEvent();\r\n              return {\r\n                data: response.data,\r\n                success: true,\r\n              };\r\n            },\r\n            // toolBarRender: () => [\r\n            //   <CreateModal\r\n            //     key=\"add\"\r\n            //     initData={currentRecord}\r\n            //     mainTableReload={() => actionRef.current?.reload()}\r\n            //   />,\r\n            // ],\r\n          }}\r\n        />\r\n      </>\r\n    );\r\n  };\r\n\r\n  const PenaltyCard = () => {\r\n    return (\r\n      <>\r\n        <ProForm\r\n          formRef={penaltyRef}\r\n          onFinish={async (values) => {\r\n            console.log(values);\r\n            try {\r\n              await _putPenalty(values as any);\r\n              message.success('修改成功');\r\n            } catch (error) {\r\n              message.error('修改失敗');\r\n            } finally {\r\n              setPenaltyFormReadOnly(true);\r\n              await getPenalty();\r\n            }\r\n          }}\r\n          grid={true}\r\n          onInit={() => {\r\n            penaltyRef.current?.setFieldsValue(penaltyData);\r\n          }}\r\n          readonly={penaltyFormReadOnly}\r\n          submitter={{\r\n            render: (_, dom) => {\r\n              return penaltyFormReadOnly ? (\r\n                <Button\r\n                  type=\"primary\"\r\n                  icon={<EditOutlined />}\r\n                  onClick={() => setPenaltyFormReadOnly(false)}\r\n                />\r\n              ) : (\r\n                [\r\n                  ...dom,\r\n                  <Button\r\n                    type=\"primary\"\r\n                    icon={<UndoOutlined />}\r\n                    key=\"undo\"\r\n                    onClick={() => {\r\n                      setPenaltyFormReadOnly(true);\r\n                      penaltyRef.current?.setFieldsValue(penaltyData);\r\n                    }}\r\n                  />,\r\n                ]\r\n              );\r\n            },\r\n          }}\r\n        >\r\n          <ProFormText\r\n            name=\"overtime_penalty_fee_min\"\r\n            label=\"罰款價格/分鐘\"\r\n            rules={[{ required: true }]}\r\n            colProps={{ span: 6 }}\r\n          />\r\n          <ProFormDigit\r\n            name=\"overtime_penalty_time_min\"\r\n            label=\"可以停留時間\"\r\n            rules={[{ required: true }]}\r\n            colProps={{ span: 6, offset: 3 }}\r\n          />\r\n        </ProForm>\r\n      </>\r\n    );\r\n  };\r\n\r\n  const AdvertiseCard = () => {\r\n    return (\r\n      <>\r\n        <BaseSearch\r\n          title=\"Search bar\"\r\n          submitFun={actionRef.current?.reload}\r\n          inputProps={{\r\n            value: searchKey,\r\n            onChange: ({ currentTarget: { value } }) => setSearchKey(value),\r\n          }}\r\n        />\r\n        <BaseTable<API.Advertise>\r\n          searchKey={searchKey}\r\n          props={{\r\n            headerTitle: '廣告列表',\r\n            actionRef: advertiseActionRef,\r\n\r\n            columns: AdvertiseColumns({\r\n              mainTableReload: () => advertiseActionRef.current?.reload(),\r\n            }),\r\n            toolBarRender: () => [\r\n              <CreateModal\r\n                key=\"createModal\"\r\n                mainTableReload={() => advertiseActionRef.current?.reload()}\r\n              />,\r\n            ],\r\n            request: async () => {\r\n              const dataSource = await _getAdvertiseInfo();\r\n              console.log('dataSource', dataSource);\r\n              if (searchKey) {\r\n                dataSource.data = Helper<API.Advertise>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: searchKey,\r\n                }) as API.Advertise[];\r\n\r\n                return dataSource;\r\n              } else {\r\n                return dataSource;\r\n              }\r\n            },\r\n          }}\r\n        />\r\n      </>\r\n    );\r\n  };\r\n  /**********************************組件初始化**********************************/\r\n  /**********************************異步函數**********************************/\r\n  /**********************************異步函數**********************************/\r\n  return (\r\n    <BaseIndex title=\"其他設定\">\r\n      <ProCard\r\n        style={{ minHeight: '90vh' }}\r\n        tabs={{\r\n          tabPosition: 'left',\r\n          activeKey: tab,\r\n          items: [\r\n            {\r\n              label: `優惠券種類設置`,\r\n              key: 'tab1',\r\n              children: <CouponCard />,\r\n            },\r\n            {\r\n              label: `時段優惠設置`,\r\n              key: 'tab2',\r\n              children: <PriceEventTable />,\r\n            },\r\n            // {\r\n            //   label: `上傳車輛型號設定`,\r\n            //   key: 'tab3',\r\n            //   children: <div>Privacy policy</div>,\r\n            // },\r\n            {\r\n              label: `罰款設定`,\r\n              key: 'tab5',\r\n              children: <PenaltyCard />,\r\n            },\r\n            {\r\n              label: `廣告位相關設定`,\r\n              key: 'tab6',\r\n              children: <AdvertiseCard />,\r\n            },\r\n          ],\r\n          onChange: (key) => {\r\n            setTab(key);\r\n          },\r\n        }}\r\n      />\r\n    </BaseIndex>\r\n  );\r\n}\r\n//\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Settings/index.tsx"
    },
    "10": {
      "path": "/",
      "redirect": "/customer",
      "parentId": "ant-design-pro-layout",
      "id": "10",
      "absPath": "/"
    },
    "11": {
      "path": "*",
      "layout": false,
      "file": "@/pages/Customer/index.tsx",
      "id": "11",
      "absPath": "/*",
      "__content": "import BaseIndex from '@/components/Base/BaseIndex';\r\nimport BaseSearch from '@/components/Base/BaseSearch';\r\nimport BaseTable from '@/components/Base/BaseTable';\r\nimport { PageParams } from '@/services/commonType';\r\nimport { _getCustomerList } from '@/services/customer';\r\nimport Helper from '@/util/searchHelper';\r\nimport { ActionType } from '@ant-design/pro-components';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { CustomerTableColumns } from './columns';\r\nexport default function Index() {\r\n  /**********************************狀態管理**********************************/\r\n\r\n  const actionRef = useRef<ActionType>();\r\n  const [searchKey, setSearchKey] = useState('');\r\n  const [reload, setReload] = useState(() => actionRef.current?.reload);\r\n  useEffect(() => {\r\n    setReload(() => actionRef.current?.reload);\r\n    actionRef.current?.setPageInfo?.({\r\n      current: 1,\r\n      pageSize: 10,\r\n    });\r\n  }, [searchKey]);\r\n\r\n  /**********************************狀態管理**********************************/\r\n  /**********************************組件初始化**********************************/\r\n  /**********************************組件初始化**********************************/\r\n  /**********************************異步函數**********************************/\r\n\r\n  /**********************************異步函數**********************************/\r\n  return (\r\n    <div>\r\n      <BaseIndex title=\"Customer account page\">\r\n        <BaseSearch\r\n          title=\"Search bar\"\r\n          submitFun={actionRef.current?.reload}\r\n          inputProps={{\r\n            value: searchKey,\r\n            onChange: ({ currentTarget: { value } }) => setSearchKey(value),\r\n          }}\r\n        />\r\n        <BaseTable<Page_Customer.CustomerTable>\r\n          searchKey={searchKey}\r\n          props={{\r\n            headerTitle: 'Account List',\r\n            actionRef: actionRef,\r\n\r\n            columns: CustomerTableColumns({\r\n              mainTableReload: reload,\r\n            }),\r\n            request: async (pageParams: PageParams) => {\r\n              console.log('pageParams', pageParams);\r\n\r\n              const dataSource = await _getCustomerList(pageParams, searchKey);\r\n              console.log('dataSource', dataSource);\r\n              if (searchKey) {\r\n                dataSource.data = Helper<Page_Customer.CustomerTable>({\r\n                  dataSource: dataSource.data,\r\n                  keyWord: searchKey,\r\n                }) as Page_Customer.CustomerTable[];\r\n\r\n                return dataSource;\r\n              } else {\r\n                return dataSource;\r\n              }\r\n            },\r\n          }}\r\n        />\r\n      </BaseIndex>\r\n    </div>\r\n  );\r\n}\r\n",
      "__isJSFile": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/pages/Customer/index.tsx"
    },
    "ant-design-pro-layout": {
      "id": "ant-design-pro-layout",
      "path": "/",
      "file": "/usr/local/app-admin/crazycharge-admin/src/.umi-production/plugin-layout/Layout.tsx",
      "absPath": "/",
      "isLayout": true,
      "__absFile": "/usr/local/app-admin/crazycharge-admin/src/.umi-production/plugin-layout/Layout.tsx"
    }
  },
  "apiRoutes": {},
  "hasSrcDir": true,
  "npmClient": "cnpm",
  "umi": {
    "version": "4.4.11",
    "name": "Umi Max",
    "importSource": "@umijs/max",
    "cliName": "max"
  },
  "bundleStatus": {
    "done": false
  },
  "mfsuBundleStatus": {
    "done": false
  },
  "react": {
    "version": "18.3.1",
    "path": "/usr/local/app-admin/crazycharge-admin/node_modules/react"
  },
  "react-dom": {
    "version": "18.3.1",
    "path": "/usr/local/app-admin/crazycharge-admin/node_modules/react-dom"
  },
  "appJS": {
    "path": "/usr/local/app-admin/crazycharge-admin/src/app.tsx",
    "exports": [
      "getInitialState",
      "layout",
      "request"
    ]
  },
  "locale": "en-US",
  "globalCSS": [
    "/usr/local/app-admin/crazycharge-admin/src/global.less"
  ],
  "globalJS": [
    "/usr/local/app-admin/crazycharge-admin/src/global.tsx"
  ],
  "overridesCSS": [],
  "bundler": "webpack",
  "framework": "react",
  "typescript": {
    "tsVersion": "5.8.3",
    "tslibVersion": "2.8.1"
  },
  "faviconFiles": [],
  "antd": {
    "pkgPath": "/usr/local/app-admin/crazycharge-admin/node_modules/antd",
    "version": "5.26.4"
  },
  "pluginLayout": {
    "pkgPath": "/usr/local/app-admin/crazycharge-admin/node_modules/@ant-design/pro-components",
    "version": "2.8.9"
  }
}
