浏览代码

feat: 仓库迁移

wanggaokun 1 年之前
当前提交
5adcd39338
共有 100 个文件被更改,包括 4768 次插入0 次删除
  1. 15 0
      .editorconfig
  2. 11 0
      .env
  3. 24 0
      .env.development
  4. 28 0
      .env.production
  5. 25 0
      .env.test
  6. 15 0
      .eslintignore
  7. 67 0
      .eslintrc.cjs
  8. 26 0
      .gitignore
  9. 4 0
      .husky/commit-msg
  10. 4 0
      .husky/pre-commit
  11. 9 0
      .prettierignore
  12. 41 0
      .prettierrc.cjs
  13. 4 0
      .stylelintignore
  14. 40 0
      .stylelintrc.cjs
  15. 14 0
      .vscode/extensions.json
  16. 96 0
      .vscode/settings.json
  17. 21 0
      LICENSE
  18. 1 0
      README.md
  19. 46 0
      build/getEnv.ts
  20. 117 0
      build/plugins.ts
  21. 31 0
      build/proxy.ts
  22. 162 0
      commitlint.config.cjs
  23. 105 0
      index.html
  24. 8 0
      lint-staged.config.cjs
  25. 129 0
      package.json
  26. 5 0
      postcss.config.cjs
  27. 0 0
      public/logo.svg
  28. 44 0
      src/App.vue
  29. 3 0
      src/api/config/servicePort.ts
  30. 46 0
      src/api/helper/axiosCancel.ts
  31. 43 0
      src/api/helper/checkStatus.ts
  32. 180 0
      src/api/index.ts
  33. 94 0
      src/api/interface/index.ts
  34. 29 0
      src/api/interface/menu.ts
  35. 45 0
      src/api/modules/login.ts
  36. 70 0
      src/api/modules/manage/afterAnalysisResult.ts
  37. 86 0
      src/api/modules/manage/aircraft.ts
  38. 70 0
      src/api/modules/manage/analyzeCourseLog.ts
  39. 70 0
      src/api/modules/manage/analyzeDownLog.ts
  40. 70 0
      src/api/modules/manage/analyzeResult.ts
  41. 70 0
      src/api/modules/manage/backupRestoreLog.ts
  42. 79 0
      src/api/modules/manage/dataDown.ts
  43. 70 0
      src/api/modules/manage/deepIsolationModel.ts
  44. 70 0
      src/api/modules/manage/deriveParameter.ts
  45. 70 0
      src/api/modules/manage/diagnoseResult.ts
  46. 70 0
      src/api/modules/manage/falseAlarmRestrainModel.ts
  47. 70 0
      src/api/modules/manage/faultCase.ts
  48. 70 0
      src/api/modules/manage/feedbackRawData.ts
  49. 70 0
      src/api/modules/manage/fleet.ts
  50. 70 0
      src/api/modules/manage/forecastModel.ts
  51. 70 0
      src/api/modules/manage/forecastResult.ts
  52. 70 0
      src/api/modules/manage/groundDiagnosisModel.ts
  53. 70 0
      src/api/modules/manage/instructionInfo.ts
  54. 70 0
      src/api/modules/manage/lifePartConfig.ts
  55. 70 0
      src/api/modules/manage/maintenance.ts
  56. 70 0
      src/api/modules/manage/maintenanceTestControl.ts
  57. 70 0
      src/api/modules/manage/modelInfo.ts
  58. 70 0
      src/api/modules/manage/monitorParameterConfig.ts
  59. 87 0
      src/api/modules/manage/orderConfig.ts
  60. 70 0
      src/api/modules/manage/orderInfo.ts
  61. 70 0
      src/api/modules/manage/performanceMonitorModel.ts
  62. 70 0
      src/api/modules/manage/preHandleResult.ts
  63. 70 0
      src/api/modules/manage/product.ts
  64. 70 0
      src/api/modules/manage/softwareConfig.ts
  65. 87 0
      src/api/modules/manage/sortie.ts
  66. 160 0
      src/api/modules/manage/sortieParameter.ts
  67. 70 0
      src/api/modules/monitor/logininfor.ts
  68. 70 0
      src/api/modules/monitor/operlog.ts
  69. 70 0
      src/api/modules/system/dept.ts
  70. 78 0
      src/api/modules/system/dict.ts
  71. 63 0
      src/api/modules/system/dictData.ts
  72. 92 0
      src/api/modules/system/menu.ts
  73. 70 0
      src/api/modules/system/post.ts
  74. 70 0
      src/api/modules/system/role.ts
  75. 86 0
      src/api/modules/system/user.ts
  76. 91 0
      src/api/modules/tool/gen.ts
  77. 16 0
      src/api/modules/upload.ts
  78. 71 0
      src/api/modules/user copy.ts
  79. 二进制
      src/assets/fonts/DIN.otf
  80. 二进制
      src/assets/fonts/MetroDF.ttf
  81. 二进制
      src/assets/fonts/YouSheBiaoTiHei.ttf
  82. 14 0
      src/assets/fonts/font.scss
  83. 48 0
      src/assets/iconfont/iconfont.scss
  84. 二进制
      src/assets/iconfont/iconfont.ttf
  85. 1 0
      src/assets/icons/404.svg
  86. 1 0
      src/assets/icons/avatar-user.svg
  87. 1 0
      src/assets/icons/bug.svg
  88. 1 0
      src/assets/icons/build.svg
  89. 0 0
      src/assets/icons/button.svg
  90. 0 0
      src/assets/icons/cascader.svg
  91. 1 0
      src/assets/icons/chart.svg
  92. 1 0
      src/assets/icons/checkbox.svg
  93. 1 0
      src/assets/icons/clipboard.svg
  94. 1 0
      src/assets/icons/code.svg
  95. 0 0
      src/assets/icons/color.svg
  96. 0 0
      src/assets/icons/component.svg
  97. 0 0
      src/assets/icons/dashboard.svg
  98. 0 0
      src/assets/icons/date-range.svg
  99. 0 0
      src/assets/icons/date.svg
  100. 0 0
      src/assets/icons/dict.svg

+ 15 - 0
.editorconfig

@@ -0,0 +1,15 @@
+# @see: http://editorconfig.org
+
+root = true
+
+[*] # 表示所有文件适用
+charset = utf-8 # 设置文件字符集为 utf-8
+end_of_line = lf # 控制换行类型(lf | cr | crlf)
+insert_final_newline = true # 始终在文件末尾插入一个新行
+indent_style = space # 缩进风格(tab | space)
+indent_size = 2 # 缩进大小
+max_line_length = 130 # 最大行长度
+
+[*.md] # 表示仅对 md 文件适用以下规则
+max_line_length = off # 关闭最大行长度限制
+trim_trailing_whitespace = false # 关闭末尾空格修剪

+ 11 - 0
.env

@@ -0,0 +1,11 @@
+# title
+VITE_GLOB_APP_TITLE = 地面健康管理系统
+
+# 本地运行端口号
+VITE_PORT = 8848
+
+# 启动时自动打开浏览器
+VITE_OPEN = true
+
+# 打包后是否生成包分析文件
+VITE_REPORT = false

+ 24 - 0
.env.development

@@ -0,0 +1,24 @@
+# 本地环境
+VITE_USER_NODE_ENV = development
+
+# 公共基础路径
+VITE_PUBLIC_PATH = /
+
+# 路由模式
+# Optional: hash | history
+VITE_ROUTER_MODE = hash
+
+# 打包时是否删除 console
+VITE_DROP_CONSOLE = true
+
+# 是否开启 VitePWA
+VITE_PWA = false
+
+# 开发环境接口地址
+VITE_API_URL = /api-dev
+
+# 开发环境跨域代理,支持配置多个
+VITE_PROXY = [["/api-dev","http://localhost:8080"]]
+# VITE_PROXY = [["/api","https://mock.mengxuegu.com/mock/629d727e6163854a32e8307e"]]
+# VITE_PROXY = [["/api","https://www.fastmock.site/mock/f81e8333c1a9276214bcdbc170d9e0a0"]]
+# VITE_PROXY = [["/api-easymock","https://mock.mengxuegu.com"],["/api-fastmock","https://www.fastmock.site"]]

+ 28 - 0
.env.production

@@ -0,0 +1,28 @@
+# 线上环境
+VITE_USER_NODE_ENV = production
+
+# 公共基础路径
+VITE_PUBLIC_PATH = /
+
+# 路由模式
+# Optional: hash | history
+VITE_ROUTER_MODE = hash
+
+# 是否启用 gzip 或 brotli 压缩打包,如果需要多个压缩规则,可以使用 “,” 分隔
+# Optional: gzip | brotli | none
+VITE_BUILD_COMPRESS = none
+
+# 打包压缩后是否删除源文件
+VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
+
+# 打包时是否删除 console
+VITE_DROP_CONSOLE = true
+
+# 是否开启 VitePWA
+VITE_PWA = true
+
+# 线上环境接口地址
+VITE_API_URL = /api-pro
+
+# 开发环境跨域代理,支持配置多个
+VITE_PROXY = [["/api-pro","http://localhost:8080"]]

+ 25 - 0
.env.test

@@ -0,0 +1,25 @@
+# 测试环境
+VITE_USER_NODE_ENV = test
+
+# 公共基础路径
+VITE_PUBLIC_PATH = /
+
+# 路由模式
+# Optional: hash | history
+VITE_ROUTER_MODE = hash
+
+# 是否启用 gzip 或 brotli 压缩打包,如果需要多个压缩规则,可以使用 “,” 分隔
+# Optional: gzip | brotli | none
+VITE_BUILD_COMPRESS = none
+
+# 打包压缩后是否删除源文件
+VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
+
+# 打包时是否删除 console
+VITE_DROP_CONSOLE = true
+
+# 是否开启 VitePWA
+VITE_PWA = false
+
+# 测试环境接口地址
+VITE_API_URL = "https://mock.mengxuegu.com/mock/629d727e6163854a32e8307e"

+ 15 - 0
.eslintignore

@@ -0,0 +1,15 @@
+*.sh
+node_modules
+*.md
+*.woff
+*.ttf
+.vscode
+.idea
+dist
+/public
+/docs
+.husky
+.local
+/bin
+/src/mock/*
+stats.html

+ 67 - 0
.eslintrc.cjs

@@ -0,0 +1,67 @@
+// @see: http://eslint.cn
+
+module.exports = {
+  root: true,
+  env: {
+    browser: true,
+    node: true,
+    es6: true
+  },
+  // 指定如何解析语法
+  parser: 'vue-eslint-parser',
+  // 优先级低于 parse 的语法解析配置
+  parserOptions: {
+    parser: '@typescript-eslint/parser',
+    ecmaVersion: 2020,
+    sourceType: 'module',
+    jsxPragma: 'React',
+    ecmaFeatures: {
+      jsx: true
+    }
+  },
+  // 继承某些已有的规则
+  extends: ['plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
+  /**
+   * "off" 或 0    ==>  关闭规则
+   * "warn" 或 1   ==>  打开的规则作为警告(不影响代码执行)
+   * "error" 或 2  ==>  规则作为一个错误(代码不能执行,界面报错)
+   */
+  rules: {
+    // eslint (http://eslint.cn/docs/rules)
+    'no-var': 'error', // 要求使用 let 或 const 而不是 var
+    'no-multiple-empty-lines': ['error', { max: 1 }], // 不允许多个空行
+    'prefer-const': 'off', // 使用 let 关键字声明但在初始分配后从未重新分配的变量,要求使用 const
+    'no-use-before-define': 'off', // 禁止在 函数/类/变量 定义之前使用它们
+    'prettier/prettier': [
+      'warn',
+      {
+        singleQuote: true,
+        semi: false
+      }
+    ],
+    // typeScript (https://typescript-eslint.io/rules)
+    '@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
+    '@typescript-eslint/no-empty-function': 'error', // 禁止空函数
+    '@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用 @ts-ignore
+    '@typescript-eslint/ban-ts-comment': 'error', // 禁止 @ts-<directive> 使用注释或要求在指令后进行描述
+    '@typescript-eslint/no-inferrable-types': 'off', // 可以轻松推断的显式类型可能会增加不必要的冗长
+    '@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间
+    '@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
+    '@typescript-eslint/ban-types': 'off', // 禁止使用特定类型
+    '@typescript-eslint/no-var-requires': 'off', // 允许使用 require() 函数导入模块
+    '@typescript-eslint/no-non-null-assertion': 'off', // 不允许使用后缀运算符的非空断言(!)
+
+    // vue (https://eslint.vuejs.org/rules)
+    'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用,此规则仅在启用该 no-unused-vars 规则时有效
+    'vue/v-slot-style': 'error', // 强制执行 v-slot 指令样式
+    'vue/no-mutating-props': 'error', // 不允许改变组件 prop
+    'vue/custom-event-name-casing': 'error', // 为自定义事件名称强制使用特定大小写
+    'vue/html-closing-bracket-newline': 'error', // 在标签的右括号之前要求或禁止换行
+    'vue/attribute-hyphenation': 'error', // 对模板中的自定义组件强制执行属性命名样式:my-prop="prop"
+    'vue/attributes-order': 'off', // vue api使用顺序,强制执行属性顺序
+    'vue/no-v-html': 'off', // 禁止使用 v-html
+    'vue/require-default-prop': 'off', // 此规则要求为每个 prop 为必填时,必须提供默认值
+    'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
+    'vue/no-setup-props-destructure': 'off' // 禁止解构 props 传递给 setup
+  }
+}

+ 26 - 0
.gitignore

@@ -0,0 +1,26 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+stats.html
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+!.vscode/settings.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 4 - 0
.husky/commit-msg

@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+npx --no-install commitlint --edit $1

+ 4 - 0
.husky/pre-commit

@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+npm run lint:lint-staged

+ 9 - 0
.prettierignore

@@ -0,0 +1,9 @@
+/dist/*
+.local
+/node_modules/**
+
+**/*.svg
+**/*.sh
+
+/public/*
+stats.html

+ 41 - 0
.prettierrc.cjs

@@ -0,0 +1,41 @@
+// @see: https://www.prettier.cn
+
+module.exports = {
+  // 指定最大换行长度
+  printWidth: 130,
+  // 缩进制表符宽度 | 空格数
+  tabWidth: 2,
+  // 使用制表符而不是空格缩进行 (true:制表符,false:空格)
+  useTabs: false,
+  // 结尾不用分号 (true:有,false:没有)
+  semi: false,
+  // 使用单引号 (true:单引号,false:双引号)
+  singleQuote: true,
+  // 在对象字面量中决定是否将属性名用引号括起来 可选值 "<as-needed|consistent|preserve>"
+  quoteProps: 'as-needed',
+  // 在JSX中使用单引号而不是双引号 (true:单引号,false:双引号)
+  jsxSingleQuote: false,
+  // 多行时尽可能打印尾随逗号 可选值"<none|es5|all>"
+  trailingComma: 'none',
+  // 在对象,数组括号与文字之间加空格 "{ foo: bar }" (true:有,false:没有)
+  bracketSpacing: true,
+  // 将 > 多行元素放在最后一行的末尾,而不是单独放在下一行 (true:放末尾,false:单独一行)
+  bracketSameLine: false,
+  // (x) => {} 箭头函数参数只有一个时是否要有小括号 (avoid:省略括号,always:不省略括号)
+  arrowParens: 'avoid',
+  // 指定要使用的解析器,不需要写文件开头的 @prettier
+  requirePragma: false,
+  // 可以在文件顶部插入一个特殊标记,指定该文件已使用 Prettier 格式化
+  insertPragma: false,
+  // 用于控制文本是否应该被换行以及如何进行换行
+  proseWrap: 'preserve',
+  // 在html中空格是否是敏感的 "css" - 遵守 CSS 显示属性的默认值, "strict" - 空格被认为是敏感的 ,"ignore" - 空格被认为是不敏感的
+  htmlWhitespaceSensitivity: 'css',
+  // 控制在 Vue 单文件组件中 <script> 和 <style> 标签内的代码缩进方式
+  vueIndentScriptAndStyle: false,
+  // 换行符使用 lf 结尾是 可选值 "<auto|lf|crlf|cr>"
+  endOfLine: 'auto',
+  // 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码 (rangeStart:开始,rangeEnd:结束)
+  rangeStart: 0,
+  rangeEnd: Infinity
+}

+ 4 - 0
.stylelintignore

@@ -0,0 +1,4 @@
+/dist/*
+/public/*
+public/*
+stats.html

+ 40 - 0
.stylelintrc.cjs

@@ -0,0 +1,40 @@
+// @see: https://stylelint.io
+
+module.exports = {
+  root: true,
+  // 继承某些已有的规则
+  extends: [
+    'stylelint-config-standard', // 配置 stylelint 拓展插件
+    'stylelint-config-html/vue', // 配置 vue 中 template 样式格式化
+    'stylelint-config-standard-scss', // 配置 stylelint scss 插件
+    'stylelint-config-recommended-vue/scss', // 配置 vue 中 scss 样式格式化
+    'stylelint-config-recess-order' // 配置 stylelint css 属性书写顺序插件,
+  ],
+  overrides: [
+    // 扫描 .vue/html 文件中的 <style> 标签内的样式
+    {
+      files: ['**/*.{vue,html}'],
+      customSyntax: 'postcss-html'
+    }
+  ],
+  rules: {
+    'function-url-quotes': 'always', // URL 的引号 "always(必须加上引号)"|"never(没有引号)"
+    'color-hex-length': 'long', // 指定 16 进制颜色的简写或扩写 "short(16进制简写)"|"long(16进制扩写)"
+    'rule-empty-line-before': 'never', // 要求或禁止在规则之前的空行 "always(规则之前必须始终有一个空行)"|"never(规则前绝不能有空行)"|"always-multi-line(多行规则之前必须始终有一个空行)"|"never-multi-line(多行规则之前绝不能有空行)"
+    'font-family-no-missing-generic-family-keyword': null, // 禁止在字体族名称列表中缺少通用字体族关键字
+    'scss/at-import-partial-extension': null, // 解决不能使用 @import 引入 scss 文件
+    'property-no-unknown': null, // 禁止未知的属性
+    'no-empty-source': null, // 禁止空源码
+    'selector-class-pattern': null, // 强制选择器类名的格式
+    'value-no-vendor-prefix': null, // 关闭 vendor-prefix (为了解决多行省略 -webkit-box)
+    'no-descending-specificity': null, // 不允许较低特异性的选择器出现在覆盖较高特异性的选择器
+    'value-keyword-case': null, // 解决在 scss 中使用 v-bind 大写单词报错
+    'selector-pseudo-class-no-unknown': [
+      true,
+      {
+        ignorePseudoClasses: ['global', 'v-deep', 'deep']
+      }
+    ]
+  },
+  ignoreFiles: ['**/*.js', '**/*.jsx', '**/*.tsx', '**/*.ts']
+}

+ 14 - 0
.vscode/extensions.json

@@ -0,0 +1,14 @@
+{
+  "recommendations": [
+    "vue.volar",
+    "vue.vscode-typescript-vue-plugin",
+    "hollowtree.vue-snippets",
+    "dbaeumer.vscode-eslint",
+    "stylelint.vscode-stylelint",
+    "esbenp.prettier-vscode",
+    "editorconfig.editorconfig",
+    "streetsidesoftware.code-spell-checker",
+    "syler.sass-indented",
+    "mikestead.dotenv"
+  ]
+}

+ 96 - 0
.vscode/settings.json

@@ -0,0 +1,96 @@
+{
+  "editor.formatOnSave": true,
+  "editor.codeActionsOnSave": {
+    "source.fixAll.stylelint": "explicit"
+  },
+  "stylelint.enable": true,
+  "stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass", "html"],
+  "files.eol": "\n",
+  "typescript.tsdk": "node_modules/typescript/lib",
+  "[vue]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[typescript]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[json]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[jsonc]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[javascript]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[typescriptreact]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[scss]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[html]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[markdown]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[less]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "cSpell.words": [
+    "AMAP",
+    "apng",
+    "axios",
+    "Biao",
+    "brotli",
+    "cascader",
+    "commitlint",
+    "contentleft",
+    "contentright",
+    "CSDN",
+    "daterange",
+    "datetimerange",
+    "echarts",
+    "fangda",
+    "geeker",
+    "Gitee",
+    "hexs",
+    "iconfont",
+    "juejin",
+    "liquidfill",
+    "longpress",
+    "monthrange",
+    "nprogress",
+    "officedocument",
+    "openxmlformats",
+    "Pageable",
+    "persistedstate",
+    "pinia",
+    "pjpeg",
+    "Prefixs",
+    "screenfull",
+    "sortablejs",
+    "sousuo",
+    "spreadsheetml",
+    "styl",
+    "stylelint",
+    "stylelintignore",
+    "stylelintrc",
+    "suoxiao",
+    "truetype",
+    "tuichu",
+    "unplugin",
+    "unref",
+    "VITE",
+    "vuedraggable",
+    "vueuse",
+    "Vuex",
+    "wangeditor",
+    "xiala",
+    "xiaoxi",
+    "Yahei",
+    "yiwen",
+    "zhongyingwen",
+    "zhuti"
+  ]
+}

+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Halsey
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 1 - 0
README.md

@@ -0,0 +1 @@
+# 地面健康管理系统

+ 46 - 0
build/getEnv.ts

@@ -0,0 +1,46 @@
+import path from 'path'
+
+export function isDevFn(mode: string): boolean {
+  return mode === 'development'
+}
+
+export function isProdFn(mode: string): boolean {
+  return mode === 'production'
+}
+
+export function isTestFn(mode: string): boolean {
+  return mode === 'test'
+}
+
+/**
+ * Whether to generate package preview
+ */
+export function isReportMode(): boolean {
+  return process.env.VITE_REPORT === 'true'
+}
+
+// Read all environment variable configuration files to process.env
+export function wrapperEnv(envConf: Recordable): ViteEnv {
+  const ret: any = {}
+
+  for (const envName of Object.keys(envConf)) {
+    let realName = envConf[envName].replace(/\\n/g, '\n')
+    realName = realName === 'true' ? true : realName === 'false' ? false : realName
+    if (envName === 'VITE_PORT') realName = Number(realName)
+    if (envName === 'VITE_PROXY') {
+      try {
+        realName = JSON.parse(realName)
+      } catch (error) {}
+    }
+    ret[envName] = realName
+  }
+  return ret
+}
+
+/**
+ * Get user root directory
+ * @param dir file path
+ */
+export function getRootPath(...dir: string[]) {
+  return path.resolve(process.cwd(), ...dir)
+}

+ 117 - 0
build/plugins.ts

@@ -0,0 +1,117 @@
+import { resolve } from 'path'
+import { PluginOption } from 'vite'
+import { VitePWA } from 'vite-plugin-pwa'
+import { visualizer } from 'rollup-plugin-visualizer'
+import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
+import vue from '@vitejs/plugin-vue'
+import vueJsx from '@vitejs/plugin-vue-jsx'
+import eslintPlugin from 'vite-plugin-eslint'
+import viteCompression from 'vite-plugin-compression'
+import simpleHtmlPlugin from 'vite-plugin-simple-html'
+import vueSetupExtend from 'unplugin-vue-setup-extend-plus/vite'
+import { prismjsPlugin } from 'vite-plugin-prismjs'
+
+/**
+ * 创建 vite 插件
+ * @param viteEnv
+ */
+export const createVitePlugins = (viteEnv: ViteEnv): (PluginOption | PluginOption[])[] => {
+  const { VITE_GLOB_APP_TITLE, VITE_REPORT, VITE_PWA } = viteEnv
+  return [
+    vue(),
+    // vue 可以使用 jsx/tsx 语法
+    vueJsx(),
+    // esLint 报错信息显示在浏览器界面上
+    eslintPlugin(),
+    // name 可以写在 script 标签上
+    vueSetupExtend({}),
+    // 创建打包压缩配置
+    createCompression(viteEnv),
+    // 注入变量到 html 文件
+    simpleHtmlPlugin({
+      minify: true,
+      inject: {
+        data: { title: VITE_GLOB_APP_TITLE }
+      }
+    }),
+    // 使用 svg 图标
+    createSvgIconsPlugin({
+      iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
+      symbolId: 'icon-[dir]-[name]'
+    }),
+    // 代码高亮
+    prismjsPlugin({
+      languages: ['json', 'js', 'xml', 'java', 'sql', 'ts'], //  languages: 'all',
+      plugins: ['line-numbers', 'copy-to-clipboard', 'inline-color'], //配置显示行号插件
+      theme: 'tomorrow', //主题名称
+      css: true
+    }),
+    // vitePWA
+    VITE_PWA && createVitePwa(viteEnv),
+    // 是否生成包预览,分析依赖包大小做优化处理
+    VITE_REPORT && (visualizer({ filename: 'stats.html', gzipSize: true, brotliSize: true }) as PluginOption)
+  ]
+}
+
+/**
+ * @description 根据 compress 配置,生成不同的压缩规则
+ * @param viteEnv
+ */
+const createCompression = (viteEnv: ViteEnv): PluginOption | PluginOption[] => {
+  const { VITE_BUILD_COMPRESS = 'none', VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv
+  const compressList = VITE_BUILD_COMPRESS.split(',')
+  const plugins: PluginOption[] = []
+  if (compressList.includes('gzip')) {
+    plugins.push(
+      viteCompression({
+        ext: '.gz',
+        algorithm: 'gzip',
+        deleteOriginFile: VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
+      })
+    )
+  }
+  if (compressList.includes('brotli')) {
+    plugins.push(
+      viteCompression({
+        ext: '.br',
+        algorithm: 'brotliCompress',
+        deleteOriginFile: VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
+      })
+    )
+  }
+  return plugins
+}
+
+/**
+ * @description VitePwa
+ * @param viteEnv
+ */
+const createVitePwa = (viteEnv: ViteEnv): PluginOption | PluginOption[] => {
+  const { VITE_GLOB_APP_TITLE } = viteEnv
+  return VitePWA({
+    registerType: 'autoUpdate',
+    manifest: {
+      name: VITE_GLOB_APP_TITLE,
+      short_name: VITE_GLOB_APP_TITLE,
+      theme_color: '#ffffff',
+      icons: [
+        {
+          src: '/logo.png',
+          sizes: '192x192',
+          type: 'image/png'
+        },
+        {
+          src: '/logo.png',
+          sizes: '512x512',
+          type: 'image/png'
+        },
+        {
+          src: '/logo.png',
+          sizes: '512x512',
+          type: 'image/png',
+          purpose: 'any maskable'
+        }
+      ]
+    }
+  })
+}

+ 31 - 0
build/proxy.ts

@@ -0,0 +1,31 @@
+import type { ProxyOptions } from 'vite'
+
+type ProxyItem = [string, string]
+
+type ProxyList = ProxyItem[]
+
+type ProxyTargetList = Record<string, ProxyOptions>
+
+/**
+ * 创建代理,用于解析 .env.development 代理配置
+ * @param list
+ */
+export function createProxy(list: ProxyList = []) {
+  const ret: ProxyTargetList = {}
+  for (const [prefix, target] of list) {
+    const httpsRE = /^https:\/\//
+    const isHttps = httpsRE.test(target)
+    console.log('list', list)
+
+    // https://github.com/http-party/node-http-proxy#options
+    ret[prefix] = {
+      target: target,
+      changeOrigin: true,
+      ws: true,
+      rewrite: path => path.replace(new RegExp(`^${prefix}`), ''),
+      // https is require secure=false
+      ...(isHttps ? { secure: false } : {})
+    }
+  }
+  return ret
+}

+ 162 - 0
commitlint.config.cjs

@@ -0,0 +1,162 @@
+// @see: https://cz-git.qbenben.com/zh/guide
+const fs = require('fs')
+const path = require('path')
+
+const scopes = fs
+  .readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
+  .filter(dirent => dirent.isDirectory())
+  .map(dirent => dirent.name.replace(/s$/, ''))
+
+/** @type {import('cz-git').UserConfig} */
+module.exports = {
+  ignores: [commit => commit.includes('init')],
+  extends: ['@commitlint/config-conventional'],
+  rules: {
+    // @see: https://commitlint.js.org/#/reference-rules
+    'body-leading-blank': [2, 'always'],
+    'footer-leading-blank': [1, 'always'],
+    'header-max-length': [2, 'always', 108],
+    'subject-empty': [2, 'never'],
+    'type-empty': [2, 'never'],
+    'subject-case': [0],
+    'type-enum': [
+      2,
+      'always',
+      [
+        'feat',
+        'fix',
+        'docs',
+        'style',
+        'refactor',
+        'perf',
+        'test',
+        'build',
+        'ci',
+        'chore',
+        'revert',
+        'wip',
+        'workflow',
+        'types',
+        'release'
+      ]
+    ]
+  },
+  prompt: {
+    messages: {
+      // type: "Select the type of change that you're committing:",
+      // scope: 'Denote the SCOPE of this change (optional):',
+      // customScope: 'Denote the SCOPE of this change:',
+      // subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n',
+      // body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
+      // breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',
+      // footerPrefixsSelect: 'Select the ISSUES type of changeList by this change (optional):',
+      // customFooterPrefixs: 'Input ISSUES prefix:',
+      // footer: 'List any ISSUES by this change. E.g.: #31, #34:\n',
+      // confirmCommit: 'Are you sure you want to proceed with the commit above?'
+      // 中文版
+      type: '选择你要提交的类型 :',
+      scope: '选择一个提交范围(可选):',
+      customScope: '请输入自定义的提交范围 :',
+      subject: '填写简短精炼的变更描述 :\n',
+      body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
+      breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
+      footerPrefixsSelect: '选择关联issue前缀(可选):',
+      customFooterPrefixs: '输入自定义issue前缀 :',
+      footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
+      confirmCommit: '是否提交或修改commit ?'
+    },
+    types: [
+      // {
+      //   value: 'feat',
+      //   name: 'feat:     🚀  A new feature',
+      //   emoji: '🚀'
+      // },
+      // {
+      //   value: 'fix',
+      //   name: 'fix:      🧩  A bug fix',
+      //   emoji: '🧩'
+      // },
+      // {
+      //   value: 'docs',
+      //   name: 'docs:     📚  Documentation only changes',
+      //   emoji: '📚'
+      // },
+      // {
+      //   value: 'style',
+      //   name: 'style:    🎨  Changes that do not affect the meaning of the code',
+      //   emoji: '🎨'
+      // },
+      // {
+      //   value: 'refactor',
+      //   name: 'refactor: ♻️   A code change that neither fixes a bug nor adds a feature',
+      //   emoji: '♻️'
+      // },
+      // {
+      //   value: 'perf',
+      //   name: 'perf:     ⚡️  A code change that improves performance',
+      //   emoji: '⚡️'
+      // },
+      // {
+      //   value: 'test',
+      //   name: 'test:     ✅  Adding missing tests or correcting existing tests',
+      //   emoji: '✅'
+      // },
+      // {
+      //   value: 'build',
+      //   name: 'build:    📦️   Changes that affect the build system or external dependencies',
+      //   emoji: '📦️'
+      // },
+      // {
+      //   value: 'ci',
+      //   name: 'ci:       🎡  Changes to our CI configuration files and scripts',
+      //   emoji: '🎡'
+      // },
+      // {
+      //   value: 'chore',
+      //   name: "chore:    🔨  Other changes that don't modify src or test files",
+      //   emoji: '🔨'
+      // },
+      // {
+      //   value: 'revert',
+      //   name: 'revert:   ⏪️  Reverts a previous commit',
+      //   emoji: '⏪️'
+      // },
+      // {
+      //   value: 'wip',
+      //   name: 'wip:      🕔  work in process',
+      //   emoji: '🕔'
+      // },
+      // {
+      //   value: 'workflow',
+      //   name: 'workflow: 📋  workflow improvements',
+      //   emoji: '📋'
+      // },
+      // {
+      //   value: 'type',
+      //   name: 'type:     🔰  type definition file changes',
+      //   emoji: '🔰'
+      // }
+      // 中文版
+      { value: 'feat', name: '特性:   🚀  新增功能', emoji: '🚀' },
+      { value: 'fix', name: '修复:   🧩  修复缺陷', emoji: '🧩' },
+      { value: 'docs', name: '文档:   📚  文档变更', emoji: '📚' },
+      { value: 'style', name: '格式:   🎨  代码格式(不影响功能,例如空格、分号等格式修正)', emoji: '🎨' },
+      { value: 'refactor', name: '重构:   ♻️  代码重构(不包括 bug 修复、功能新增)', emoji: '♻️' },
+      { value: 'perf', name: '性能:    ⚡️  性能优化', emoji: '⚡️' },
+      { value: 'test', name: '测试:   ✅  添加疏漏测试或已有测试改动', emoji: '✅' },
+      { value: 'build', name: '构建:   📦️  构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)', emoji: '📦️' },
+      { value: 'ci', name: '集成:   🎡  修改 CI 配置、脚本', emoji: '🎡' },
+      { value: 'revert', name: '回退:   ⏪️  回滚 commit', emoji: '⏪️' },
+      { value: 'chore', name: '其他:   🔨  对构建过程或辅助工具和库的更改(不影响源文件、测试用例)', emoji: '🔨' },
+      { value: 'wip', name: '开发:   🕔  正在开发中', emoji: '🕔' },
+      { value: 'workflow', name: '工作流:   📋  工作流程改进', emoji: '📋' },
+      { value: 'types', name: '类型:   🔰  类型定义文件修改', emoji: '🔰' }
+    ],
+    useEmoji: true,
+    scopes: [...scopes],
+    customScopesAlign: 'bottom',
+    emptyScopesAlias: 'empty',
+    customScopesAlias: 'custom',
+    allowBreakingChanges: ['feat', 'fix']
+  }
+}

+ 105 - 0
index.html

@@ -0,0 +1,105 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/logo.svg" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title><%= title %></title>
+  </head>
+  <body>
+    <div id="app">
+      <style>
+        html,
+        body,
+        #app {
+          width: 100%;
+          height: 100%;
+          padding: 0;
+          margin: 0;
+        }
+        .loading-box {
+          display: flex;
+          flex-direction: column;
+          align-items: center;
+          justify-content: center;
+          width: 100%;
+          height: 100%;
+        }
+        .loading-box .loading-wrap {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          padding: 98px;
+        }
+        .dot {
+          position: relative;
+          box-sizing: border-box;
+          display: inline-block;
+          width: 32px;
+          height: 32px;
+          font-size: 32px;
+          transform: rotate(45deg);
+          animation: ant-rotate 1.2s infinite linear;
+        }
+        .dot i {
+          position: absolute;
+          display: block;
+          width: 14px;
+          height: 14px;
+          background-color: #409eff;
+          border-radius: 100%;
+          opacity: 0.3;
+          transform: scale(0.75);
+          transform-origin: 50% 50%;
+          animation: ant-spin-move 1s infinite linear alternate;
+        }
+        .dot i:nth-child(1) {
+          top: 0;
+          left: 0;
+        }
+        .dot i:nth-child(2) {
+          top: 0;
+          right: 0;
+          animation-delay: 0.4s;
+        }
+        .dot i:nth-child(3) {
+          right: 0;
+          bottom: 0;
+          animation-delay: 0.8s;
+        }
+        .dot i:nth-child(4) {
+          bottom: 0;
+          left: 0;
+          animation-delay: 1.2s;
+        }
+
+        @keyframes ant-rotate {
+          to {
+            transform: rotate(405deg);
+          }
+        }
+
+        @keyframes ant-spin-move {
+          to {
+            opacity: 1;
+          }
+        }
+      </style>
+      <div class="loading-box">
+        <div class="loading-wrap">
+          <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
+        </div>
+      </div>
+    </div>
+    <script>
+      const globalState = JSON.parse(window.localStorage.getItem('admin-global'))
+      if (globalState) {
+        const dot = document.querySelectorAll('.dot i')
+        const html = document.querySelector('html')
+        dot.forEach(item => (item.style.background = globalState.primary))
+        if (globalState.isDark) html.style.background = '#141414'
+      }
+    </script>
+    <script type="module" src="/src/main.ts"></script>
+  </body>
+</html>

+ 8 - 0
lint-staged.config.cjs

@@ -0,0 +1,8 @@
+module.exports = {
+  '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
+  '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': ['prettier --write--parser json'],
+  'package.json': ['prettier --write'],
+  '*.vue': ['eslint --fix', 'prettier --write', 'stylelint --fix'],
+  '*.{scss,less,styl,html}': ['stylelint --fix', 'prettier --write'],
+  '*.md': ['prettier --write']
+}

+ 129 - 0
package.json

@@ -0,0 +1,129 @@
+{
+  "name": "g_phm",
+  "private": true,
+  "version": "1.0.0",
+  "type": "module",
+  "description": "地面健康管理系统",
+  "author": {
+    "name": "gaoKun Wang",
+    "email": "wanggaokun@wo.cn"
+  },
+  "license": "MIT",
+  "homepage": "",
+  "repository": {
+    "type": "git",
+    "url": ""
+  },
+  "scripts": {
+    "dev": "vite",
+    "serve": "vite",
+    "build:dev": "vue-tsc && vite build --mode development",
+    "build:test": "vue-tsc && vite build --mode test",
+    "build:pro": "vue-tsc && vite build --mode production",
+    "type:check": "vue-tsc --noEmit --skipLibCheck",
+    "preview": "npm run build:dev && vite preview",
+    "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
+    "lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
+    "lint:stylelint": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
+    "lint:lint-staged": "lint-staged",
+    "prepare": "husky install",
+    "release": "standard-version",
+    "commit": "git add -A && czg && git push"
+  },
+  "dependencies": {
+    "@element-plus/icons-vue": "^2.3.1",
+    "@types/file-saver": "^2.0.7",
+    "@types/js-cookie": "^3.0.6",
+    "@vueuse/core": "^10.6.1",
+    "@wangeditor/editor": "^5.1.23",
+    "@wangeditor/editor-for-vue": "^5.1.12",
+    "axios": "^1.6.2",
+    "dayjs": "^1.11.10",
+    "driver.js": "^1.3.1",
+    "echarts": "^5.4.3",
+    "echarts-liquidfill": "^3.1.0",
+    "element-plus": "^2.4.3",
+    "file-saver": "^2.0.5",
+    "js-cookie": "^3.0.5",
+    "jsencrypt": "^3.3.2",
+    "md5": "^2.3.0",
+    "mitt": "^3.0.1",
+    "nanoid": "^5.0.4",
+    "nprogress": "^0.2.0",
+    "pinia": "^2.1.7",
+    "pinia-plugin-persistedstate": "^3.2.0",
+    "prismjs": "^1.29.0",
+    "qs": "^6.11.2",
+    "screenfull": "^6.0.2",
+    "sortablejs": "^1.15.1",
+    "vue": "^3.3.11",
+    "vue-i18n": "^9.6.4",
+    "vue-router": "^4.2.5",
+    "vuedraggable": "^4.1.0"
+  },
+  "devDependencies": {
+    "@commitlint/cli": "^18.4.3",
+    "@commitlint/config-conventional": "^18.4.3",
+    "@types/md5": "^2.3.5",
+    "@types/nprogress": "^0.2.3",
+    "@types/prismjs": "^1.26.3",
+    "@types/qs": "^6.9.10",
+    "@types/sortablejs": "^1.15.7",
+    "@typescript-eslint/eslint-plugin": "^6.14.0",
+    "@typescript-eslint/parser": "^6.14.0",
+    "@vitejs/plugin-vue": "^4.5.2",
+    "@vitejs/plugin-vue-jsx": "^3.1.0",
+    "autoprefixer": "^10.4.16",
+    "cz-git": "^1.7.1",
+    "czg": "^1.7.1",
+    "eslint": "^8.55.0",
+    "eslint-config-prettier": "^9.1.0",
+    "eslint-plugin-prettier": "^5.0.1",
+    "eslint-plugin-vue": "^9.19.2",
+    "husky": "^8.0.3",
+    "lint-staged": "^15.1.0",
+    "postcss": "^8.4.32",
+    "postcss-html": "^1.5.0",
+    "prettier": "^3.1.0",
+    "rollup-plugin-visualizer": "^5.9.3",
+    "sass": "^1.69.5",
+    "standard-version": "^9.5.0",
+    "stylelint": "^16.0.2",
+    "stylelint-config-html": "^1.1.0",
+    "stylelint-config-recess-order": "^4.4.0",
+    "stylelint-config-recommended-scss": "^14.0.0",
+    "stylelint-config-recommended-vue": "^1.5.0",
+    "stylelint-config-standard": "^35.0.0",
+    "stylelint-config-standard-scss": "^12.0.0",
+    "typescript": "4.9.5",
+    "unplugin-vue-setup-extend-plus": "^1.0.0",
+    "vite": "^5.0.8",
+    "vite-plugin-compression": "^0.5.1",
+    "vite-plugin-eslint": "^1.8.1",
+    "vite-plugin-prismjs": "^0.0.8",
+    "vite-plugin-pwa": "^0.17.2",
+    "vite-plugin-simple-html": "^0.1.0",
+    "vite-plugin-svg-icons": "^2.0.1",
+    "vue-tsc": "^1.8.25"
+  },
+  "engines": {
+    "node": ">=16.0.0"
+  },
+  "browserslist": {
+    "production": [
+      "> 1%",
+      "not dead",
+      "not op_mini all"
+    ],
+    "development": [
+      "last 1 chrome version",
+      "last 1 firefox version",
+      "last 1 safari version"
+    ]
+  },
+  "config": {
+    "commitizen": {
+      "path": "node_modules/cz-git"
+    }
+  }
+}

+ 5 - 0
postcss.config.cjs

@@ -0,0 +1,5 @@
+module.exports = {
+  plugins: {
+    autoprefixer: {}
+  }
+}

文件差异内容过多而无法显示
+ 0 - 0
public/logo.svg


+ 44 - 0
src/App.vue

@@ -0,0 +1,44 @@
+<template>
+  <el-config-provider :locale="locale" :size="assemblySize" :button="buttonConfig">
+    <router-view></router-view>
+  </el-config-provider>
+</template>
+
+<script setup lang="ts">
+import { onMounted, reactive, computed } from 'vue'
+import { useI18n } from 'vue-i18n'
+import { getBrowserLang } from '@/utils'
+import { useTheme } from '@/hooks/useTheme'
+import { ElConfigProvider } from 'element-plus'
+import { LanguageType } from './stores/interface'
+import { useGlobalStore } from '@/stores/modules/global'
+import en from 'element-plus/es/locale/lang/en'
+import zhCn from 'element-plus/es/locale/lang/zh-cn'
+
+const globalStore = useGlobalStore()
+
+// init theme
+const { initTheme } = useTheme()
+initTheme()
+
+// init 语言
+const i18n = useI18n()
+onMounted(() => {
+  const language = globalStore.language ?? getBrowserLang()
+  i18n.locale.value = language
+  globalStore.setGlobalState('language', language as LanguageType)
+})
+
+// element 语言
+const locale = computed(() => {
+  if (globalStore.language == 'zh') return zhCn
+  if (globalStore.language == 'en') return en
+  return getBrowserLang() == 'zh' ? zhCn : en
+})
+
+// element assemblySize
+const assemblySize = computed(() => globalStore.assemblySize)
+
+// element 配置按钮
+const buttonConfig = reactive({ autoInsertSpace: false })
+</script>

+ 3 - 0
src/api/config/servicePort.ts

@@ -0,0 +1,3 @@
+// 后端微服务模块前缀
+export const PORT1 = '/dev-api'
+export const PORT2 = '/hooks'

+ 46 - 0
src/api/helper/axiosCancel.ts

@@ -0,0 +1,46 @@
+import { CustomAxiosRequestConfig } from '../index'
+import qs from 'qs'
+
+// 声明一个 Map 用于存储每个请求的标识 和 取消函数
+let pendingMap = new Map<string, AbortController>()
+
+// 序列化参数
+export const getPendingUrl = (config: CustomAxiosRequestConfig) =>
+  [config.method, config.url, qs.stringify(config.data), qs.stringify(config.params)].join('&')
+
+export class AxiosCanceler {
+  /**
+   * @description: 添加请求
+   * @param {Object} config
+   * @return void
+   */
+  addPending(config: CustomAxiosRequestConfig) {
+    // 在请求开始前,对之前的请求做检查取消操作
+    this.removePending(config)
+    const url = getPendingUrl(config)
+    const controller = new AbortController()
+    config.signal = controller.signal
+    pendingMap.set(url, controller)
+  }
+
+  /**
+   * @description: 移除请求
+   * @param {Object} config
+   */
+  removePending(config: CustomAxiosRequestConfig) {
+    const url = getPendingUrl(config)
+    // 如果在 pending 中存在当前请求标识,需要取消当前请求
+    const controller = pendingMap.get(url)
+    controller && controller.abort()
+  }
+
+  /**
+   * @description: 清空所有pending
+   */
+  removeAllPending() {
+    pendingMap.forEach(controller => {
+      controller && controller.abort()
+    })
+    pendingMap.clear()
+  }
+}

+ 43 - 0
src/api/helper/checkStatus.ts

@@ -0,0 +1,43 @@
+import { ElMessage } from 'element-plus'
+
+/**
+ * @description: 校验网络请求状态码
+ * @param {Number} status
+ * @return void
+ */
+export const checkStatus = (status: number) => {
+  switch (status) {
+    case 400:
+      ElMessage.error('请求失败!请您稍后重试')
+      break
+    case 401:
+      ElMessage.error('登录失效!请您重新登录')
+      break
+    case 403:
+      ElMessage.error('当前账号无权限访问!')
+      break
+    case 404:
+      ElMessage.error('你所访问的资源不存在!')
+      break
+    case 405:
+      ElMessage.error('请求方式错误!请您稍后重试')
+      break
+    case 408:
+      ElMessage.error('请求超时!请您稍后重试')
+      break
+    case 500:
+      ElMessage.error('服务异常!')
+      break
+    case 502:
+      ElMessage.error('网关错误!')
+      break
+    case 503:
+      ElMessage.error('服务不可用!')
+      break
+    case 504:
+      ElMessage.error('网关超时!')
+      break
+    default:
+      ElMessage.error('请求失败!')
+  }
+}

+ 180 - 0
src/api/index.ts

@@ -0,0 +1,180 @@
+import axios, { AxiosInstance, AxiosError, AxiosRequestConfig, InternalAxiosRequestConfig, AxiosResponse } from 'axios'
+import { showFullScreenLoading, tryHideFullScreenLoading } from '@/components/Loading/fullScreen'
+import { LOGIN_URL } from '@/config'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ResultData } from '@/api/interface'
+import { ResultEnum } from '@/enums/httpEnum'
+import { checkStatus } from './helper/checkStatus'
+import { AxiosCanceler } from './helper/axiosCancel'
+import { useUserStore } from '@/stores/modules/user'
+import router from '@/routers'
+import { getToken } from '@/utils/token'
+import { tansParams } from '@/utils/common'
+import { nanoid } from 'nanoid'
+import cache from '@/plugins/cache'
+
+export interface CustomAxiosRequestConfig extends InternalAxiosRequestConfig {
+  loading?: boolean
+  cancel?: boolean
+}
+
+const config = {
+  // 默认地址请求地址,可在 .env.** 文件中修改
+  baseURL: import.meta.env.VITE_API_URL as string,
+  // 设置超时时间
+  timeout: ResultEnum.TIMEOUT as number,
+  // 跨域时候允许携带凭证
+  withCredentials: true
+}
+// 是否显示重新登录
+export let isReLogin = { show: false }
+const axiosCanceler = new AxiosCanceler()
+
+class RequestHttp {
+  service: AxiosInstance
+  public constructor(config: AxiosRequestConfig) {
+    // instantiation
+    this.service = axios.create(config)
+
+    /**
+     * @description 请求拦截器
+     * 客户端发送请求 -> [请求拦截器] -> 服务器
+     * token校验(JWT) : 接受服务器返回的 token,存储到 vuex/pinia/本地储存当中
+     */
+    this.service.interceptors.request.use(
+      (config: CustomAxiosRequestConfig) => {
+        // 重复请求不需要取消,在 api 服务中通过指定的第三个参数: { cancel: false } 来控制
+        config.cancel ?? (config.cancel = true)
+        config.cancel && axiosCanceler.addPending(config)
+        // 当前请求不需要显示 loading,在 api 服务中通过指定的第三个参数: { loading: false } 来控制
+        config.loading ?? (config.loading = true)
+        config.loading && showFullScreenLoading()
+        // 是否需要设置 token
+        const isToken = (config.headers || {}).isToken === false
+        // 是否需要防止数据重复提交
+        const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
+        const requestId = nanoid()
+        const userStore = useUserStore()
+        if (getToken() && !isToken) {
+          // 请求加上随机ID
+          config.headers.set('RequestId', requestId)
+          if (config.headers && typeof config.headers.set === 'function') {
+            config.headers.set('Authorization', 'Bearer ' + userStore.token)
+          }
+        }
+        // get请求映射params参数
+        if (config.method === 'get' && config.params) {
+          let url = config.url + '?' + tansParams(config.params)
+          url = url.slice(0, -1)
+          config.params = {}
+          config.url = url
+        }
+        if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
+          const requestObj = {
+            url: config.url,
+            data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
+            time: new Date().getTime()
+          }
+          const sessionObj = cache.session.getJSON('sessionObj')
+          if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
+            cache.session.setJSON('sessionObj', requestObj)
+          } else {
+            const s_url = sessionObj.url // 请求地址
+            const s_data = sessionObj.data // 请求数据
+            const s_time = sessionObj.time // 请求时间
+            const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交
+            if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
+              const message = '数据正在处理,请勿重复提交'
+              console.warn(`[${s_url}]: ` + message)
+              return Promise.reject(new Error(message))
+            } else {
+              cache.session.setJSON('sessionObj', requestObj)
+            }
+          }
+        }
+        return config
+      },
+      (error: AxiosError) => {
+        console.log(error)
+        return Promise.reject(error)
+      }
+    )
+
+    /**
+     * @description 响应拦截器
+     *  服务器换返回信息 -> [拦截统一处理] -> 客户端JS获取到信息
+     */
+    this.service.interceptors.response.use(
+      (response: AxiosResponse) => {
+        const { data, config, request } = response
+        axiosCanceler.removePending(config)
+        tryHideFullScreenLoading()
+        if (request.responseType === 'blob' || request.responseType === 'arraybuffer') {
+          return data
+        }
+        // 登录失效
+        if (data.code == ResultEnum.OVERDUE) {
+          const userStore = useUserStore()
+          if (!isReLogin.show) {
+            isReLogin.show = true
+            ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
+              confirmButtonText: '重新登录',
+              cancelButtonText: '取消',
+              type: 'warning'
+            })
+              .then(() => {
+                isReLogin.show = false
+                userStore.logOut().then(() => {
+                  router.replace(LOGIN_URL)
+                })
+              })
+              .catch(() => {
+                isReLogin.show = false
+              })
+          }
+          return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
+        }
+        // 全局错误信息拦截(防止下载文件的时候返回数据流,没有 code 直接报错)
+        if (data.code && data.code == ResultEnum.ERROR) {
+          ElMessage.error(data.msg)
+          return Promise.reject(data)
+        }
+        // 成功请求(在页面上除非特殊情况,否则不用处理失败逻辑)
+        return data
+      },
+      async (error: AxiosError) => {
+        const { response } = error
+        tryHideFullScreenLoading()
+        // 请求超时 && 网络错误单独判断,没有 response
+        if (error.message.indexOf('timeout') !== -1) ElMessage.error('请求超时!请您稍后重试')
+        if (error.message.indexOf('Network Error') !== -1) ElMessage.error('网络错误!请您稍后重试')
+        // 根据服务器响应的错误状态码,做不同的处理
+        if (response) checkStatus(response.status)
+        // 服务器结果都没有返回(可能服务器错误可能客户端断网),断网处理:可以跳转到断网页面
+        if (!window.navigator.onLine) router.replace('/500')
+        return Promise.reject(error)
+      }
+    )
+  }
+
+  /**
+   * @description 常用请求方法封装
+   */
+  get<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {
+    return this.service.get(url, { params, ..._object })
+  }
+  post<T>(url: string, params?: object | string, _object = {}): Promise<ResultData<T>> {
+    return this.service.post(url, params, _object)
+  }
+  put<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {
+    return this.service.put(url, params, _object)
+  }
+  delete<T>(url: string, params?: any, _object = {}): Promise<ResultData<T>> {
+    return this.service.delete(url, { params, ..._object })
+  }
+  download(url: string, params?: object, _object = {}): Promise<BlobPart> {
+    return this.service.post(url, params, { ..._object, responseType: 'blob' })
+  }
+}
+
+export default new RequestHttp(config)

+ 94 - 0
src/api/interface/index.ts

@@ -0,0 +1,94 @@
+// 请求响应参数(不包含data)
+export interface Result {
+  code: string | number
+  msg: string
+}
+
+// 请求响应参数(包含data)
+export interface ResultData<T = any> extends Result {
+  data: T
+}
+
+// 分页响应参数
+export interface ResPage<T> {
+  list: T[]
+  pageNum: number
+  pageSize: number
+  total: number
+}
+
+// 分页请求参数
+export interface ReqPage {
+  pageNum: number
+  pageSize: number
+}
+
+// 文件上传模块
+export namespace Upload {
+  export interface ResFileUrl {
+    fileUrl: string
+  }
+}
+
+// 登录模块
+export namespace Login {
+  export interface ReqLoginForm {
+    username: string
+    password: string
+    rememberMe: boolean
+    code: string
+    uuid: string
+  }
+  export interface ResLogin {
+    access_token: string
+  }
+  export interface ResAuthButtons {
+    [key: string]: string[]
+  }
+}
+
+// 用户管理模块
+export namespace User {
+  export interface ReqUserParams extends ReqPage {
+    username: string
+    gender: number
+    idCard: string
+    email: string
+    address: string
+    createTime: string[]
+    status: string
+  }
+  export interface ResUserList {
+    userId: number
+    id: string
+    userName: string
+    gender: number
+    user: { detail: { age: number } }
+    idCard: string
+    email: string
+    address: string
+    createTime: string
+    status: string
+    avatar: string
+    photo: any[]
+    children?: ResUserList[]
+  }
+  export interface ResStatus {
+    userLabel: string
+    userValue: number
+  }
+  export interface ResGender {
+    genderLabel: string
+    genderValue: number
+  }
+  export interface ResDepartment {
+    id: string
+    name: string
+    children?: ResDepartment[]
+  }
+  export interface ResRole {
+    id: string
+    name: string
+    children?: ResDepartment[]
+  }
+}

+ 29 - 0
src/api/interface/menu.ts

@@ -0,0 +1,29 @@
+import { ReqPage } from '@/api/interface/index'
+// 用户管理模块
+export namespace Menu {
+  export interface ReqMenuParams extends ReqPage {
+    username: string
+    gender: number
+    idCard: string
+    email: string
+    address: string
+    createTime: string[]
+    status: number
+  }
+  export interface ResMenuList {
+    menuId: string
+    menuName: string
+    parentName: string
+    parentId: number
+    orderNum: number
+    path: string
+    component: string
+    query: string
+    isFrame: string
+    isCache: string
+    menuType: string
+    visible: string
+    status: string
+    children?: ResMenuList[]
+  }
+}

+ 45 - 0
src/api/modules/login.ts

@@ -0,0 +1,45 @@
+import { Login } from '@/api/interface/index'
+import { PORT1 } from '@/api/config/servicePort'
+import authMenuList from '@/assets/json/authMenuList.json'
+import authButtonList from '@/assets/json/authButtonList.json'
+import http from '@/api'
+
+/**
+ * @name 登录模块
+ */
+// 用户登录
+export const loginApi = (params: Login.ReqLoginForm) => {
+  return http.post<Login.ResLogin>('/login', params, { loading: true }) // 正常 post json 请求  ==>  application/json
+  // return http.post<Login.ResLogin>(PORT1 + `/login`, params, { loading: false }); // 控制当前请求不显示 loading
+  // return http.post<Login.ResLogin>(PORT1 + `/login`, {}, { params }); // post 请求携带 query 参数  ==>  ?username=admin&password=123456
+  // return http.post<Login.ResLogin>(PORT1 + `/login`, qs.stringify(params)); // post 请求携带表单参数  ==>  application/x-www-form-urlencoded
+  // return http.get<Login.ResLogin>(PORT1 + `/login?${qs.stringify(params, { arrayFormat: "repeat" })}`); // get 请求可以携带数组等复杂参数
+}
+
+// 获取菜单列表
+export const getRoutersApi = () => {
+  // return http.get<Menu.MenuOptions[]>(PORT1 + `/menu/list`, {}, { loading: false })
+  // 如果想让菜单变为本地数据,注释上一行代码,并引入本地 authMenuList.json 数据
+  return authMenuList
+}
+
+// 获取按钮权限
+export const getAuthButtonListApi = () => {
+  return http.get<Login.ResAuthButtons>(PORT1 + `/auth/buttons`, {}, { loading: false })
+  // 如果想让按钮权限变为本地数据,注释上一行代码,并引入本地 authButtonList.json 数据
+  return authButtonList
+}
+
+// 用户退出登录
+export const logoutApi = () => {
+  return http.post('/logout', {}, { loading: false })
+}
+
+// 用户退出登录
+export const getInfoApi = () => {
+  return http.get('/getInfo', {}, { loading: false })
+}
+// 用户退出登录
+export const getCodeImg = () => {
+  return http.get('/captchaImage', {}, { loading: false })
+}

+ 70 - 0
src/api/modules/manage/afterAnalysisResult.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询维修测试控制解析后数据列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listAfterAnalysisResultApi = (query: any) => {
+  return http.get<any>('/manage/afterAnalysisResult/list', query, { loading: true })
+}
+
+/**
+ * @name 查询维修测试控制解析后数据详细
+ * @param id id
+ * @returns returns
+ */
+export const getAfterAnalysisResultApi = (id: any) => {
+  return http.get<any>(`/manage/afterAnalysisResult/${id}`)
+}
+
+/**
+ * @name 新增维修测试控制解析后数据
+ * @param data data
+ * @returns returns
+ */
+export const addAfterAnalysisResultApi = (data: any) => {
+  return http.post<any>('/manage/afterAnalysisResult', data, { loading: false })
+}
+
+/**
+ * @name 修改维修测试控制解析后数据
+ * @param data data
+ * @returns returns
+ */
+export const updateAfterAnalysisResultApi = (data: any) => {
+  return http.put<any>('/manage/afterAnalysisResult', data, { loading: false })
+}
+
+/**
+ * @name 删除维修测试控制解析后数据
+ * @param id id
+ * @returns returns
+ */
+export const delAfterAnalysisResultApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/afterAnalysisResult/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/afterAnalysisResult/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/afterAnalysisResult/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/afterAnalysisResult/export', data)
+}

+ 86 - 0
src/api/modules/manage/aircraft.ts

@@ -0,0 +1,86 @@
+import http from '@/api'
+
+/**
+ * @name 查询单机信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listAircraftApi = (query: any) => {
+  return http.get<any>('/manage/aircraft/list', query, { loading: true })
+}
+
+/**
+ * @name 查询单机信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getAircraftApi = (id: any) => {
+  return http.get<any>(`/manage/aircraft/${id}`)
+}
+
+/**
+ * @name 新增单机信息
+ * @param data data
+ * @returns returns
+ */
+export const addAircraftApi = (data: any) => {
+  return http.post<any>('/manage/aircraft', data, { loading: false })
+}
+
+/**
+ * @name 修改单机信息
+ * @param data data
+ * @returns returns
+ */
+export const updateAircraftApi = (data: any) => {
+  return http.put<any>('/manage/aircraft', data, { loading: false })
+}
+
+/**
+ * @name 删除单机信息
+ * @param id id
+ * @returns returns
+ */
+export const delAircraftApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/aircraft/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/aircraft/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/aircraft/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/aircraft/export', data)
+}
+
+/**
+ * @name 查询机队信息列表
+ * @returns returns
+ */
+export const fleetListSelectApi = () => {
+  return http.get<any>(`/manage/aircraft/fleetList`)
+}
+
+/**
+ * @name 查询产品信息列表
+ * @returns returns
+ */
+export const productListSelectApi = () => {
+  return http.get<any>(`/manage/aircraft/productList`)
+}

+ 70 - 0
src/api/modules/manage/analyzeCourseLog.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询分析过程日志列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listAnalyzeCourseLogApi = (query: any) => {
+  return http.get<any>('/manage/analyzeCourseLog/list', query, { loading: true })
+}
+
+/**
+ * @name 查询分析过程日志详细
+ * @param id id
+ * @returns returns
+ */
+export const getAnalyzeCourseLogApi = (id: any) => {
+  return http.get<any>(`/manage/analyzeCourseLog/${id}`)
+}
+
+/**
+ * @name 新增分析过程日志
+ * @param data data
+ * @returns returns
+ */
+export const addAnalyzeCourseLogApi = (data: any) => {
+  return http.post<any>('/manage/analyzeCourseLog', data, { loading: false })
+}
+
+/**
+ * @name 修改分析过程日志
+ * @param data data
+ * @returns returns
+ */
+export const updateAnalyzeCourseLogApi = (data: any) => {
+  return http.put<any>('/manage/analyzeCourseLog', data, { loading: false })
+}
+
+/**
+ * @name 删除分析过程日志
+ * @param id id
+ * @returns returns
+ */
+export const delAnalyzeCourseLogApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/analyzeCourseLog/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/analyzeCourseLog/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/analyzeCourseLog/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/analyzeCourseLog/export', data)
+}

+ 70 - 0
src/api/modules/manage/analyzeDownLog.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询数据解析下载日志列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listAnalyzeDownLogApi = (query: any) => {
+  return http.get<any>('/manage/analyzeDownLog/list', query, { loading: true })
+}
+
+/**
+ * @name 查询数据解析下载日志详细
+ * @param id id
+ * @returns returns
+ */
+export const getAnalyzeDownLogApi = (id: any) => {
+  return http.get<any>(`/manage/analyzeDownLog/${id}`)
+}
+
+/**
+ * @name 新增数据解析下载日志
+ * @param data data
+ * @returns returns
+ */
+export const addAnalyzeDownLogApi = (data: any) => {
+  return http.post<any>('/manage/analyzeDownLog', data, { loading: false })
+}
+
+/**
+ * @name 修改数据解析下载日志
+ * @param data data
+ * @returns returns
+ */
+export const updateAnalyzeDownLogApi = (data: any) => {
+  return http.put<any>('/manage/analyzeDownLog', data, { loading: false })
+}
+
+/**
+ * @name 删除数据解析下载日志
+ * @param id id
+ * @returns returns
+ */
+export const delAnalyzeDownLogApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/analyzeDownLog/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/analyzeDownLog/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/analyzeDownLog/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/analyzeDownLog/export', data)
+}

+ 70 - 0
src/api/modules/manage/analyzeResult.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询数据解析结果列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listAnalyzeResultApi = (query: any) => {
+  return http.get<any>('/manage/analyzeResult/list', query, { loading: true })
+}
+
+/**
+ * @name 查询数据解析结果详细
+ * @param id id
+ * @returns returns
+ */
+export const getAnalyzeResultApi = (id: any) => {
+  return http.get<any>(`/manage/analyzeResult/${id}`)
+}
+
+/**
+ * @name 新增数据解析结果
+ * @param data data
+ * @returns returns
+ */
+export const addAnalyzeResultApi = (data: any) => {
+  return http.post<any>('/manage/analyzeResult', data, { loading: false })
+}
+
+/**
+ * @name 修改数据解析结果
+ * @param data data
+ * @returns returns
+ */
+export const updateAnalyzeResultApi = (data: any) => {
+  return http.put<any>('/manage/analyzeResult', data, { loading: false })
+}
+
+/**
+ * @name 删除数据解析结果
+ * @param id id
+ * @returns returns
+ */
+export const delAnalyzeResultApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/analyzeResult/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/analyzeResult/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/analyzeResult/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/analyzeResult/export', data)
+}

+ 70 - 0
src/api/modules/manage/backupRestoreLog.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询备份恢复日志列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listBackupRestoreLogApi = (query: any) => {
+  return http.get<any>('/manage/backupRestoreLog/list', query, { loading: true })
+}
+
+/**
+ * @name 查询备份恢复日志详细
+ * @param id id
+ * @returns returns
+ */
+export const getBackupRestoreLogApi = (id: any) => {
+  return http.get<any>(`/manage/backupRestoreLog/${id}`)
+}
+
+/**
+ * @name 新增备份恢复日志
+ * @param data data
+ * @returns returns
+ */
+export const addBackupRestoreLogApi = (data: any) => {
+  return http.post<any>('/manage/backupRestoreLog', data, { loading: false })
+}
+
+/**
+ * @name 修改备份恢复日志
+ * @param data data
+ * @returns returns
+ */
+export const updateBackupRestoreLogApi = (data: any) => {
+  return http.put<any>('/manage/backupRestoreLog', data, { loading: false })
+}
+
+/**
+ * @name 删除备份恢复日志
+ * @param id id
+ * @returns returns
+ */
+export const delBackupRestoreLogApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/backupRestoreLog/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/backupRestoreLog/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/backupRestoreLog/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/backupRestoreLog/export', data)
+}

+ 79 - 0
src/api/modules/manage/dataDown.ts

@@ -0,0 +1,79 @@
+import http from '@/api'
+
+/**
+ * @name 查询数据下载结果列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDataDownApi = (query: any) => {
+  return http.get<any>('/manage/dataDown/list', query, { loading: true })
+}
+
+/**
+ * @name 查询数据下载结果详细
+ * @param id id
+ * @returns returns
+ */
+export const getDataDownApi = (id: any) => {
+  return http.get<any>(`/manage/dataDown/${id}`)
+}
+
+/**
+ * @name 新增数据下载结果
+ * @param data data
+ * @returns returns
+ */
+export const addDataDownApi = (data: any) => {
+  return http.post<any>('/manage/dataDown', data, { loading: false })
+}
+
+/**
+ * @name 修改数据下载结果
+ * @param data data
+ * @returns returns
+ */
+export const updateDataDownApi = (data: any) => {
+  return http.put<any>('/manage/dataDown', data, { loading: false })
+}
+
+/**
+ * @name 删除数据下载结果
+ * @param id id
+ * @returns returns
+ */
+export const delDataDownApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/dataDown/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/dataDown/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/dataDown/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/dataDown/export', data)
+}
+
+/**
+ * @name 在线下载
+ * @param id id
+ * @returns returns
+ */
+export const dataDownApi = (data: any) => {
+  return http.get<any>(`/data/down`, data, { loading: true })
+}

+ 70 - 0
src/api/modules/manage/deepIsolationModel.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询深度隔离模型列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDeepIsolationModelApi = (query: any) => {
+  return http.get<any>('/manage/deepIsolationModel/list', query, { loading: true })
+}
+
+/**
+ * @name 查询深度隔离模型详细
+ * @param id id
+ * @returns returns
+ */
+export const getDeepIsolationModelApi = (id: any) => {
+  return http.get<any>(`/manage/deepIsolationModel/${id}`)
+}
+
+/**
+ * @name 新增深度隔离模型
+ * @param data data
+ * @returns returns
+ */
+export const addDeepIsolationModelApi = (data: any) => {
+  return http.post<any>('/manage/deepIsolationModel', data, { loading: false })
+}
+
+/**
+ * @name 修改深度隔离模型
+ * @param data data
+ * @returns returns
+ */
+export const updateDeepIsolationModelApi = (data: any) => {
+  return http.put<any>('/manage/deepIsolationModel', data, { loading: false })
+}
+
+/**
+ * @name 删除深度隔离模型
+ * @param id id
+ * @returns returns
+ */
+export const delDeepIsolationModelApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/deepIsolationModel/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/deepIsolationModel/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/deepIsolationModel/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/deepIsolationModel/export', data)
+}

+ 70 - 0
src/api/modules/manage/deriveParameter.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询衍生参数信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDeriveParameterApi = (query: any) => {
+  return http.get<any>('/manage/deriveParameter/list', query, { loading: true })
+}
+
+/**
+ * @name 查询衍生参数信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getDeriveParameterApi = (id: any) => {
+  return http.get<any>(`/manage/deriveParameter/${id}`)
+}
+
+/**
+ * @name 新增衍生参数信息
+ * @param data data
+ * @returns returns
+ */
+export const addDeriveParameterApi = (data: any) => {
+  return http.post<any>('/manage/deriveParameter', data, { loading: false })
+}
+
+/**
+ * @name 修改衍生参数信息
+ * @param data data
+ * @returns returns
+ */
+export const updateDeriveParameterApi = (data: any) => {
+  return http.put<any>('/manage/deriveParameter', data, { loading: false })
+}
+
+/**
+ * @name 删除衍生参数信息
+ * @param id id
+ * @returns returns
+ */
+export const delDeriveParameterApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/deriveParameter/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/deriveParameter/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/deriveParameter/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/deriveParameter/export', data)
+}

+ 70 - 0
src/api/modules/manage/diagnoseResult.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询诊断结果列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDiagnoseResultApi = (query: any) => {
+  return http.get<any>('/manage/diagnoseResult/list', query, { loading: true })
+}
+
+/**
+ * @name 查询诊断结果详细
+ * @param id id
+ * @returns returns
+ */
+export const getDiagnoseResultApi = (id: any) => {
+  return http.get<any>(`/manage/diagnoseResult/${id}`)
+}
+
+/**
+ * @name 新增诊断结果
+ * @param data data
+ * @returns returns
+ */
+export const addDiagnoseResultApi = (data: any) => {
+  return http.post<any>('/manage/diagnoseResult', data, { loading: false })
+}
+
+/**
+ * @name 修改诊断结果
+ * @param data data
+ * @returns returns
+ */
+export const updateDiagnoseResultApi = (data: any) => {
+  return http.put<any>('/manage/diagnoseResult', data, { loading: false })
+}
+
+/**
+ * @name 删除诊断结果
+ * @param id id
+ * @returns returns
+ */
+export const delDiagnoseResultApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/diagnoseResult/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/diagnoseResult/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/diagnoseResult/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/diagnoseResult/export', data)
+}

+ 70 - 0
src/api/modules/manage/falseAlarmRestrainModel.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询虚警抑制模型列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listFalseAlarmRestrainModelApi = (query: any) => {
+  return http.get<any>('/manage/falseAlarmRestrainModel/list', query, { loading: true })
+}
+
+/**
+ * @name 查询虚警抑制模型详细
+ * @param id id
+ * @returns returns
+ */
+export const getFalseAlarmRestrainModelApi = (id: any) => {
+  return http.get<any>(`/manage/falseAlarmRestrainModel/${id}`)
+}
+
+/**
+ * @name 新增虚警抑制模型
+ * @param data data
+ * @returns returns
+ */
+export const addFalseAlarmRestrainModelApi = (data: any) => {
+  return http.post<any>('/manage/falseAlarmRestrainModel', data, { loading: false })
+}
+
+/**
+ * @name 修改虚警抑制模型
+ * @param data data
+ * @returns returns
+ */
+export const updateFalseAlarmRestrainModelApi = (data: any) => {
+  return http.put<any>('/manage/falseAlarmRestrainModel', data, { loading: false })
+}
+
+/**
+ * @name 删除虚警抑制模型
+ * @param id id
+ * @returns returns
+ */
+export const delFalseAlarmRestrainModelApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/falseAlarmRestrainModel/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/falseAlarmRestrainModel/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/falseAlarmRestrainModel/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/falseAlarmRestrainModel/export', data)
+}

+ 70 - 0
src/api/modules/manage/faultCase.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询故障案例信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listFaultCaseApi = (query: any) => {
+  return http.get<any>('/manage/faultCase/list', query, { loading: true })
+}
+
+/**
+ * @name 查询故障案例信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getFaultCaseApi = (id: any) => {
+  return http.get<any>(`/manage/faultCase/${id}`)
+}
+
+/**
+ * @name 新增故障案例信息
+ * @param data data
+ * @returns returns
+ */
+export const addFaultCaseApi = (data: any) => {
+  return http.post<any>('/manage/faultCase', data, { loading: false })
+}
+
+/**
+ * @name 修改故障案例信息
+ * @param data data
+ * @returns returns
+ */
+export const updateFaultCaseApi = (data: any) => {
+  return http.put<any>('/manage/faultCase', data, { loading: false })
+}
+
+/**
+ * @name 删除故障案例信息
+ * @param id id
+ * @returns returns
+ */
+export const delFaultCaseApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/faultCase/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/faultCase/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/faultCase/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/faultCase/export', data)
+}

+ 70 - 0
src/api/modules/manage/feedbackRawData.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询反馈的源数据列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listFeedbackRawDataApi = (query: any) => {
+  return http.get<any>('/manage/feedbackRawData/list', query, { loading: true })
+}
+
+/**
+ * @name 查询反馈的源数据详细
+ * @param id id
+ * @returns returns
+ */
+export const getFeedbackRawDataApi = (id: any) => {
+  return http.get<any>(`/manage/feedbackRawData/${id}`)
+}
+
+/**
+ * @name 新增反馈的源数据
+ * @param data data
+ * @returns returns
+ */
+export const addFeedbackRawDataApi = (data: any) => {
+  return http.post<any>('/manage/feedbackRawData', data, { loading: false })
+}
+
+/**
+ * @name 修改反馈的源数据
+ * @param data data
+ * @returns returns
+ */
+export const updateFeedbackRawDataApi = (data: any) => {
+  return http.put<any>('/manage/feedbackRawData', data, { loading: false })
+}
+
+/**
+ * @name 删除反馈的源数据
+ * @param id id
+ * @returns returns
+ */
+export const delFeedbackRawDataApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/feedbackRawData/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/feedbackRawData/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/feedbackRawData/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/feedbackRawData/export', data)
+}

+ 70 - 0
src/api/modules/manage/fleet.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询机队信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listFleetApi = (query: any) => {
+  return http.get<any>('/manage/fleet/list', query, { loading: true })
+}
+
+/**
+ * @name 查询机队信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getFleetApi = (id: any) => {
+  return http.get<any>(`/manage/fleet/${id}`)
+}
+
+/**
+ * @name 新增机队信息
+ * @param data data
+ * @returns returns
+ */
+export const addFleetApi = (data: any) => {
+  return http.post<any>('/manage/fleet', data, { loading: false })
+}
+
+/**
+ * @name 修改机队信息
+ * @param data data
+ * @returns returns
+ */
+export const updateFleetApi = (data: any) => {
+  return http.put<any>('/manage/fleet', data, { loading: false })
+}
+
+/**
+ * @name 删除机队信息
+ * @param id id
+ * @returns returns
+ */
+export const delFleetApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/fleet/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/fleet/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/fleet/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/fleet/export', data)
+}

+ 70 - 0
src/api/modules/manage/forecastModel.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询预测模型信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listForecastModelApi = (query: any) => {
+  return http.get<any>('/manage/forecastModel/list', query, { loading: true })
+}
+
+/**
+ * @name 查询预测模型信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getForecastModelApi = (id: any) => {
+  return http.get<any>(`/manage/forecastModel/${id}`)
+}
+
+/**
+ * @name 新增预测模型信息
+ * @param data data
+ * @returns returns
+ */
+export const addForecastModelApi = (data: any) => {
+  return http.post<any>('/manage/forecastModel', data, { loading: false })
+}
+
+/**
+ * @name 修改预测模型信息
+ * @param data data
+ * @returns returns
+ */
+export const updateForecastModelApi = (data: any) => {
+  return http.put<any>('/manage/forecastModel', data, { loading: false })
+}
+
+/**
+ * @name 删除预测模型信息
+ * @param id id
+ * @returns returns
+ */
+export const delForecastModelApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/forecastModel/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/forecastModel/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/forecastModel/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/forecastModel/export', data)
+}

+ 70 - 0
src/api/modules/manage/forecastResult.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询预测结果列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listForecastResultApi = (query: any) => {
+  return http.get<any>('/manage/forecastResult/list', query, { loading: true })
+}
+
+/**
+ * @name 查询预测结果详细
+ * @param id id
+ * @returns returns
+ */
+export const getForecastResultApi = (id: any) => {
+  return http.get<any>(`/manage/forecastResult/${id}`)
+}
+
+/**
+ * @name 新增预测结果
+ * @param data data
+ * @returns returns
+ */
+export const addForecastResultApi = (data: any) => {
+  return http.post<any>('/manage/forecastResult', data, { loading: false })
+}
+
+/**
+ * @name 修改预测结果
+ * @param data data
+ * @returns returns
+ */
+export const updateForecastResultApi = (data: any) => {
+  return http.put<any>('/manage/forecastResult', data, { loading: false })
+}
+
+/**
+ * @name 删除预测结果
+ * @param id id
+ * @returns returns
+ */
+export const delForecastResultApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/forecastResult/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/forecastResult/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/forecastResult/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/forecastResult/export', data)
+}

+ 70 - 0
src/api/modules/manage/groundDiagnosisModel.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询地面诊断模型信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listGroundDiagnosisModelApi = (query: any) => {
+  return http.get<any>('/manage/groundDiagnosisModel/list', query, { loading: true })
+}
+
+/**
+ * @name 查询地面诊断模型信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getGroundDiagnosisModelApi = (id: any) => {
+  return http.get<any>(`/manage/groundDiagnosisModel/${id}`)
+}
+
+/**
+ * @name 新增地面诊断模型信息
+ * @param data data
+ * @returns returns
+ */
+export const addGroundDiagnosisModelApi = (data: any) => {
+  return http.post<any>('/manage/groundDiagnosisModel', data, { loading: false })
+}
+
+/**
+ * @name 修改地面诊断模型信息
+ * @param data data
+ * @returns returns
+ */
+export const updateGroundDiagnosisModelApi = (data: any) => {
+  return http.put<any>('/manage/groundDiagnosisModel', data, { loading: false })
+}
+
+/**
+ * @name 删除地面诊断模型信息
+ * @param id id
+ * @returns returns
+ */
+export const delGroundDiagnosisModelApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/groundDiagnosisModel/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/groundDiagnosisModel/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/groundDiagnosisModel/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/groundDiagnosisModel/export', data)
+}

+ 70 - 0
src/api/modules/manage/instructionInfo.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询指令信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listInstructionInfoApi = (query: any) => {
+  return http.get<any>('/manage/instructionInfo/list', query, { loading: true })
+}
+
+/**
+ * @name 查询指令信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getInstructionInfoApi = (id: any) => {
+  return http.get<any>(`/manage/instructionInfo/${id}`)
+}
+
+/**
+ * @name 新增指令信息
+ * @param data data
+ * @returns returns
+ */
+export const addInstructionInfoApi = (data: any) => {
+  return http.post<any>('/manage/instructionInfo', data, { loading: false })
+}
+
+/**
+ * @name 修改指令信息
+ * @param data data
+ * @returns returns
+ */
+export const updateInstructionInfoApi = (data: any) => {
+  return http.put<any>('/manage/instructionInfo', data, { loading: false })
+}
+
+/**
+ * @name 删除指令信息
+ * @param id id
+ * @returns returns
+ */
+export const delInstructionInfoApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/instructionInfo/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/instructionInfo/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/instructionInfo/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/instructionInfo/export', data)
+}

+ 70 - 0
src/api/modules/manage/lifePartConfig.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询寿命件配置库信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listLifePartConfigApi = (query: any) => {
+  return http.get<any>('/manage/lifePartConfig/list', query, { loading: true })
+}
+
+/**
+ * @name 查询寿命件配置库信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getLifePartConfigApi = (id: any) => {
+  return http.get<any>(`/manage/lifePartConfig/${id}`)
+}
+
+/**
+ * @name 新增寿命件配置库信息
+ * @param data data
+ * @returns returns
+ */
+export const addLifePartConfigApi = (data: any) => {
+  return http.post<any>('/manage/lifePartConfig', data, { loading: false })
+}
+
+/**
+ * @name 修改寿命件配置库信息
+ * @param data data
+ * @returns returns
+ */
+export const updateLifePartConfigApi = (data: any) => {
+  return http.put<any>('/manage/lifePartConfig', data, { loading: false })
+}
+
+/**
+ * @name 删除寿命件配置库信息
+ * @param id id
+ * @returns returns
+ */
+export const delLifePartConfigApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/lifePartConfig/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/lifePartConfig/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/lifePartConfig/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/lifePartConfig/export', data)
+}

+ 70 - 0
src/api/modules/manage/maintenance.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询维护信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listMaintenanceApi = (query: any) => {
+  return http.get<any>('/manage/maintenance/list', query, { loading: true })
+}
+
+/**
+ * @name 查询维护信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getMaintenanceApi = (id: any) => {
+  return http.get<any>(`/manage/maintenance/${id}`)
+}
+
+/**
+ * @name 新增维护信息
+ * @param data data
+ * @returns returns
+ */
+export const addMaintenanceApi = (data: any) => {
+  return http.post<any>('/manage/maintenance', data, { loading: false })
+}
+
+/**
+ * @name 修改维护信息
+ * @param data data
+ * @returns returns
+ */
+export const updateMaintenanceApi = (data: any) => {
+  return http.put<any>('/manage/maintenance', data, { loading: false })
+}
+
+/**
+ * @name 删除维护信息
+ * @param id id
+ * @returns returns
+ */
+export const delMaintenanceApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/maintenance/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/maintenance/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/maintenance/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/maintenance/export', data)
+}

+ 70 - 0
src/api/modules/manage/maintenanceTestControl.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询维修测试控制列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listMaintenanceTestControlApi = (query: any) => {
+  return http.get<any>('/manage/maintenanceTestControl/list', query, { loading: true })
+}
+
+/**
+ * @name 查询维修测试控制详细
+ * @param id id
+ * @returns returns
+ */
+export const getMaintenanceTestControlApi = (id: any) => {
+  return http.get<any>(`/manage/maintenanceTestControl/${id}`)
+}
+
+/**
+ * @name 新增维修测试控制
+ * @param data data
+ * @returns returns
+ */
+export const addMaintenanceTestControlApi = (data: any) => {
+  return http.post<any>('/manage/maintenanceTestControl', data, { loading: false })
+}
+
+/**
+ * @name 修改维修测试控制
+ * @param data data
+ * @returns returns
+ */
+export const updateMaintenanceTestControlApi = (data: any) => {
+  return http.put<any>('/manage/maintenanceTestControl', data, { loading: false })
+}
+
+/**
+ * @name 删除维修测试控制
+ * @param id id
+ * @returns returns
+ */
+export const delMaintenanceTestControlApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/maintenanceTestControl/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/maintenanceTestControl/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/maintenanceTestControl/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/maintenanceTestControl/export', data)
+}

+ 70 - 0
src/api/modules/manage/modelInfo.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询模型参数信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listModelInfoApi = (query: any) => {
+  return http.get<any>('/manage/modelInfo/list', query, { loading: true })
+}
+
+/**
+ * @name 查询模型参数信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getModelInfoApi = (id: any) => {
+  return http.get<any>(`/manage/modelInfo/${id}`)
+}
+
+/**
+ * @name 新增模型参数信息
+ * @param data data
+ * @returns returns
+ */
+export const addModelInfoApi = (data: any) => {
+  return http.post<any>('/manage/modelInfo', data, { loading: false })
+}
+
+/**
+ * @name 修改模型参数信息
+ * @param data data
+ * @returns returns
+ */
+export const updateModelInfoApi = (data: any) => {
+  return http.put<any>('/manage/modelInfo', data, { loading: false })
+}
+
+/**
+ * @name 删除模型参数信息
+ * @param id id
+ * @returns returns
+ */
+export const delModelInfoApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/modelInfo/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/modelInfo/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/modelInfo/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/modelInfo/export', data)
+}

+ 70 - 0
src/api/modules/manage/monitorParameterConfig.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询状态监控参数配置信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listMonitorParameterConfigApi = (query: any) => {
+  return http.get<any>('/manage/monitorParameterConfig/list', query, { loading: true })
+}
+
+/**
+ * @name 查询状态监控参数配置信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getMonitorParameterConfigApi = (id: any) => {
+  return http.get<any>(`/manage/monitorParameterConfig/${id}`)
+}
+
+/**
+ * @name 新增状态监控参数配置信息
+ * @param data data
+ * @returns returns
+ */
+export const addMonitorParameterConfigApi = (data: any) => {
+  return http.post<any>('/manage/monitorParameterConfig', data, { loading: false })
+}
+
+/**
+ * @name 修改状态监控参数配置信息
+ * @param data data
+ * @returns returns
+ */
+export const updateMonitorParameterConfigApi = (data: any) => {
+  return http.put<any>('/manage/monitorParameterConfig', data, { loading: false })
+}
+
+/**
+ * @name 删除状态监控参数配置信息
+ * @param id id
+ * @returns returns
+ */
+export const delMonitorParameterConfigApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/monitorParameterConfig/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/monitorParameterConfig/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/monitorParameterConfig/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/monitorParameterConfig/export', data)
+}

+ 87 - 0
src/api/modules/manage/orderConfig.ts

@@ -0,0 +1,87 @@
+import http from '@/api'
+
+/**
+ * @name 查询指令配置列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listOrderConfigApi = (query: any) => {
+  return http.get<any>('/manage/orderConfig/list', query, { loading: true })
+}
+
+/**
+ * @name 查询指令配置详细
+ * @param id id
+ * @returns returns
+ */
+export const getOrderConfigApi = (id: any) => {
+  return http.get<any>(`/manage/orderConfig/${id}`)
+}
+/**
+ * @name 查询指令配置详细
+ * @param id id
+ * @returns returns
+ */
+export const getOrderConfigByCodeApi = (code: any) => {
+  return http.get<any>(`/manage/orderConfig/byCode/${code}`)
+}
+
+/**
+ * @name 新增指令配置
+ * @param data data
+ * @returns returns
+ */
+export const addOrderConfigApi = (data: any) => {
+  return http.post<any>('/manage/orderConfig', data, { loading: false })
+}
+
+/**
+ * @name 修改指令配置
+ * @param data data
+ * @returns returns
+ */
+export const updateOrderConfigApi = (data: any) => {
+  return http.put<any>('/manage/orderConfig', data, { loading: false })
+}
+
+/**
+ * @name 删除指令配置
+ * @param id id
+ * @returns returns
+ */
+export const delOrderConfigApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/orderConfig/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/orderConfig/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/orderConfig/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/orderConfig/export', data)
+}
+
+/**
+ * @name 查询指令XML内容
+ * @param id 参数
+ * @returns 返回列表
+ */
+export const orderConfigXmlApi = (id: any) => {
+  return http.get<any>(`/manage/orderConfig/xml/${id}`)
+}

+ 70 - 0
src/api/modules/manage/orderInfo.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询系统指令信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listOrderInfoApi = (query: any) => {
+  return http.get<any>('/manage/orderInfo/list', query, { loading: true })
+}
+
+/**
+ * @name 查询系统指令信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getOrderInfoApi = (id: any) => {
+  return http.get<any>(`/manage/orderInfo/${id}`)
+}
+
+/**
+ * @name 新增系统指令信息
+ * @param data data
+ * @returns returns
+ */
+export const addOrderInfoApi = (data: any) => {
+  return http.post<any>('/manage/orderInfo', data, { loading: false })
+}
+
+/**
+ * @name 修改系统指令信息
+ * @param data data
+ * @returns returns
+ */
+export const updateOrderInfoApi = (data: any) => {
+  return http.put<any>('/manage/orderInfo', data, { loading: false })
+}
+
+/**
+ * @name 删除系统指令信息
+ * @param id id
+ * @returns returns
+ */
+export const delOrderInfoApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/orderInfo/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/orderInfo/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/orderInfo/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/orderInfo/export', data)
+}

+ 70 - 0
src/api/modules/manage/performanceMonitorModel.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询性能监测模型信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listPerformanceMonitorModelApi = (query: any) => {
+  return http.get<any>('/manage/performanceMonitorModel/list', query, { loading: true })
+}
+
+/**
+ * @name 查询性能监测模型信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getPerformanceMonitorModelApi = (id: any) => {
+  return http.get<any>(`/manage/performanceMonitorModel/${id}`)
+}
+
+/**
+ * @name 新增性能监测模型信息
+ * @param data data
+ * @returns returns
+ */
+export const addPerformanceMonitorModelApi = (data: any) => {
+  return http.post<any>('/manage/performanceMonitorModel', data, { loading: false })
+}
+
+/**
+ * @name 修改性能监测模型信息
+ * @param data data
+ * @returns returns
+ */
+export const updatePerformanceMonitorModelApi = (data: any) => {
+  return http.put<any>('/manage/performanceMonitorModel', data, { loading: false })
+}
+
+/**
+ * @name 删除性能监测模型信息
+ * @param id id
+ * @returns returns
+ */
+export const delPerformanceMonitorModelApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/performanceMonitorModel/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/performanceMonitorModel/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/performanceMonitorModel/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/performanceMonitorModel/export', data)
+}

+ 70 - 0
src/api/modules/manage/preHandleResult.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询数据预处理结果列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listPreHandleResultApi = (query: any) => {
+  return http.get<any>('/manage/preHandleResult/list', query, { loading: true })
+}
+
+/**
+ * @name 查询数据预处理结果详细
+ * @param id id
+ * @returns returns
+ */
+export const getPreHandleResultApi = (id: any) => {
+  return http.get<any>(`/manage/preHandleResult/${id}`)
+}
+
+/**
+ * @name 新增数据预处理结果
+ * @param data data
+ * @returns returns
+ */
+export const addPreHandleResultApi = (data: any) => {
+  return http.post<any>('/manage/preHandleResult', data, { loading: false })
+}
+
+/**
+ * @name 修改数据预处理结果
+ * @param data data
+ * @returns returns
+ */
+export const updatePreHandleResultApi = (data: any) => {
+  return http.put<any>('/manage/preHandleResult', data, { loading: false })
+}
+
+/**
+ * @name 删除数据预处理结果
+ * @param id id
+ * @returns returns
+ */
+export const delPreHandleResultApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/preHandleResult/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/preHandleResult/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/preHandleResult/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/preHandleResult/export', data)
+}

+ 70 - 0
src/api/modules/manage/product.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询产品树信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listProductApi = (query: any) => {
+  return http.get<any>('/manage/product/list', query, { loading: true })
+}
+
+/**
+ * @name 查询产品树信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getProductApi = (id: any) => {
+  return http.get<any>(`/manage/product/${id}`)
+}
+
+/**
+ * @name 新增产品树信息
+ * @param data data
+ * @returns returns
+ */
+export const addProductApi = (data: any) => {
+  return http.post<any>('/manage/product', data, { loading: false })
+}
+
+/**
+ * @name 修改产品树信息
+ * @param data data
+ * @returns returns
+ */
+export const updateProductApi = (data: any) => {
+  return http.put<any>('/manage/product', data, { loading: false })
+}
+
+/**
+ * @name 删除产品树信息
+ * @param id id
+ * @returns returns
+ */
+export const delProductApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/product/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/product/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/product/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/product/export', data)
+}

+ 70 - 0
src/api/modules/manage/softwareConfig.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询软件配置库信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listSoftwareConfigApi = (query: any) => {
+  return http.get<any>('/manage/softwareConfig/list', query, { loading: true })
+}
+
+/**
+ * @name 查询软件配置库信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getSoftwareConfigApi = (id: any) => {
+  return http.get<any>(`/manage/softwareConfig/${id}`)
+}
+
+/**
+ * @name 新增软件配置库信息
+ * @param data data
+ * @returns returns
+ */
+export const addSoftwareConfigApi = (data: any) => {
+  return http.post<any>('/manage/softwareConfig', data, { loading: false })
+}
+
+/**
+ * @name 修改软件配置库信息
+ * @param data data
+ * @returns returns
+ */
+export const updateSoftwareConfigApi = (data: any) => {
+  return http.put<any>('/manage/softwareConfig', data, { loading: false })
+}
+
+/**
+ * @name 删除软件配置库信息
+ * @param id id
+ * @returns returns
+ */
+export const delSoftwareConfigApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/softwareConfig/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/softwareConfig/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/softwareConfig/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/softwareConfig/export', data)
+}

+ 87 - 0
src/api/modules/manage/sortie.ts

@@ -0,0 +1,87 @@
+import http from '@/api'
+
+/**
+ * @name 查询架次信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listSortieApi = (query: any) => {
+  return http.get<any>('/manage/sortie/list', query, { loading: true })
+}
+
+/**
+ * @name 查询架次信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getSortieApi = (id: any) => {
+  return http.get<any>(`/manage/sortie/${id}`)
+}
+/**
+ * @name 查询架次信息详细
+ * @param no 架次号
+ * @returns returns
+ */
+export const getSortieByNoApi = (no: any) => {
+  return http.get<any>(`/manage/sortie/byNo/${no}`)
+}
+
+/**
+ * @name 新增架次信息
+ * @param data data
+ * @returns returns
+ */
+export const addSortieApi = (data: any) => {
+  return http.post<any>('/manage/sortie', data, { loading: false })
+}
+
+/**
+ * @name 修改架次信息
+ * @param data data
+ * @returns returns
+ */
+export const updateSortieApi = (data: any) => {
+  return http.put<any>('/manage/sortie', data, { loading: false })
+}
+
+/**
+ * @name 删除架次信息
+ * @param id id
+ * @returns returns
+ */
+export const delSortieApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/sortie/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/sortie/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/sortie/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/sortie/export', data)
+}
+
+/**
+ * @name 查询架次列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listSortieAllApi = (query: any) => {
+  return http.get<any>('/manage/sortie/list/all', query, { loading: false })
+}

+ 160 - 0
src/api/modules/manage/sortieParameter.ts

@@ -0,0 +1,160 @@
+import http from '@/api'
+
+/**
+ * @name 查询模型参数信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listSortieParameterApi = (query: any) => {
+  return http.get<any>('/manage/sortieParameter/list', query, { loading: true })
+}
+
+/**
+ * @name 查询模型参数信息列表不分页
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listSortieParameterAllApi = (query: any) => {
+  return http.get<any>('/manage/sortieParameter/list/all', query, { loading: false })
+}
+
+/**
+ * @name 查询模型参数信息详细
+ * @param id id
+ * @returns returns
+ */
+export const getSortieParameterApi = (id: any) => {
+  return http.get<any>(`/manage/sortieParameter/${id}`)
+}
+
+/**
+ * @name 查询模型参数信息详细,根据架次号
+ * @param id id
+ * @returns returns
+ */
+export const getSortieDataNameApi = (id: any) => {
+  return http.get<any>(`/manage/sortieParameter/dataName/${id}`)
+}
+
+/**
+ * @name 查询模型参数信息详细,根据架次号
+ * @param id id
+ * @returns returns
+ */
+export const getSortieDataByIdApi = (id: any) => {
+  return http.get<any>(`/manage/sortieParameter/data/${id}`)
+}
+
+/**
+ * @name 查询架次参数
+ * @param data data
+ * @returns returns
+ */
+export const getSortieDataApi = (data: any) => {
+  return http.post<any>('/manage/sortieParameter/dataByName', data, { loading: false })
+}
+
+/**
+ * @name 查询架次参数回放
+ * @param data data
+ * @returns returns
+ */
+export const getPlaybackDataApi = (data: any) => {
+  return http.post<any>('/manage/sortieParameter/playbackData', data, { loading: false })
+}
+
+/**
+ * @name 新增模型参数信息
+ * @param data data
+ * @returns returns
+ */
+export const addSortieParameterApi = (data: any) => {
+  return http.post<any>('/manage/sortieParameter', data, { loading: false })
+}
+
+/**
+ * @name 修改模型参数信息
+ * @param data data
+ * @returns returns
+ */
+export const updateSortieParameterApi = (data: any) => {
+  return http.put<any>('/manage/sortieParameter', data, { loading: false })
+}
+
+/**
+ * @name 删除模型参数信息
+ * @param id id
+ * @returns returns
+ */
+export const delSortieParameterApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/manage/sortieParameter/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/manage/sortieParameter/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/manage/sortieParameter/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/manage/sortieParameter/export', data)
+}
+
+/**
+ * @name 查询模型信息列表
+ * @param query query
+ * @returns returns
+ */
+export const modelListAllApi = (query: any) => {
+  return http.get<any>(`/manage/modelInfo/list/all`, query, { loading: false })
+}
+
+/**
+ * @name 查询模型参数信息列表
+ * @param id id
+ * @returns 返回列表
+ */
+export const getSortieParamsApi = (id: any) => {
+  return http.get<any>(`/manage/sortieParameter/dataParams/${id}`)
+}
+
+/**
+ * @name 执行模型
+ * @param data data
+ * @returns returns
+ */
+export const exeModelApi = (data: any) => {
+  return http.post<any>('/model_api/execute', data, { loading: false })
+}
+
+/**
+ * @name 查询警告清单,根据架次号
+ * @param id id
+ * @returns returns
+ */
+export const getWarningListApi = (query: any) => {
+  return http.get<any>('/manage/sortieParameter/warningList', query, { loading: false })
+}
+
+/**
+ * @name 处理异常值
+ * @param id id
+ * @returns returns
+ */
+export const abnormalByIdApi = (id: any) => {
+  return http.post<any>(`/manage/sortieParameter/abnormal/${id}`)
+}

+ 70 - 0
src/api/modules/monitor/logininfor.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询系统访问记录列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listLogininforApi = (query: any) => {
+  return http.get<any>('/monitor/logininfor/list', query, { loading: true })
+}
+
+/**
+ * @name 查询系统访问记录详细
+ * @param infoId infoId
+ * @returns returns
+ */
+export const getLogininforApi = (infoId: any) => {
+  return http.get<any>(`/monitor/logininfor/${infoId}`)
+}
+
+/**
+ * @name 新增系统访问记录
+ * @param data data
+ * @returns returns
+ */
+export const addLogininforApi = (data: any) => {
+  return http.post<any>('/monitor/logininfor', data, { loading: false })
+}
+
+/**
+ * @name 修改系统访问记录
+ * @param data data
+ * @returns returns
+ */
+export const updateLogininforApi = (data: any) => {
+  return http.put<any>('/monitor/logininfor', data, { loading: false })
+}
+
+/**
+ * @name 删除系统访问记录
+ * @param infoId infoId
+ * @returns returns
+ */
+export const delLogininforApi = ({ infoId }: { infoId: any }) => {
+  return http.delete<any>(`/monitor/logininfor/${infoId}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/monitor/logininfor/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/monitor/logininfor/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/monitor/logininfor/export', data)
+}

+ 70 - 0
src/api/modules/monitor/operlog.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询操作日志记录列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listOperlogApi = (query: any) => {
+  return http.get<any>('/monitor/operlog/list', query, { loading: true })
+}
+
+/**
+ * @name 查询操作日志记录详细
+ * @param operId operId
+ * @returns returns
+ */
+export const getOperlogApi = (operId: any) => {
+  return http.get<any>(`/monitor/operlog/${operId}`)
+}
+
+/**
+ * @name 新增操作日志记录
+ * @param data data
+ * @returns returns
+ */
+export const addOperlogApi = (data: any) => {
+  return http.post<any>('/monitor/operlog', data, { loading: false })
+}
+
+/**
+ * @name 修改操作日志记录
+ * @param data data
+ * @returns returns
+ */
+export const updateOperlogApi = (data: any) => {
+  return http.put<any>('/monitor/operlog', data, { loading: false })
+}
+
+/**
+ * @name 删除操作日志记录
+ * @param operId operId
+ * @returns returns
+ */
+export const delOperlogApi = ({ operId }: { operId: any }) => {
+  return http.delete<any>(`/monitor/operlog/${operId}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/monitor/operlog/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/monitor/operlog/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/monitor/operlog/export', data)
+}

+ 70 - 0
src/api/modules/system/dept.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询部门列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDeptApi = (query: any) => {
+  return http.get<any>('/system/dept/list', query, { loading: true })
+}
+
+/**
+ * @name 查询部门详细
+ * @param deptId deptId
+ * @returns returns
+ */
+export const getDeptApi = (deptId: any) => {
+  return http.get<any>(`/system/dept/${deptId}`)
+}
+
+/**
+ * @name 新增部门
+ * @param data data
+ * @returns returns
+ */
+export const addDeptApi = (data: any) => {
+  return http.post<any>('/system/dept', data, { loading: false })
+}
+
+/**
+ * @name 修改部门
+ * @param data data
+ * @returns returns
+ */
+export const updateDeptApi = (data: any) => {
+  return http.put<any>('/system/dept', data, { loading: false })
+}
+
+/**
+ * @name 删除部门
+ * @param deptId deptId
+ * @returns returns
+ */
+export const delDeptApi = (deptId: any) => {
+  return http.delete<any>(`/system/dept/${deptId}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/system/dept/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/system/dept/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/dept/export', data)
+}

+ 78 - 0
src/api/modules/system/dict.ts

@@ -0,0 +1,78 @@
+import http from '@/api'
+
+/**
+ * @name 查询字典类型列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDictApi = (query: any) => {
+  return http.get<any>('/system/dict/type/list', query, { loading: false })
+}
+
+/**
+ * @name 查询字典类型详细
+ * @param dictId dictId
+ * @returns returns
+ */
+export const getDictApi = (dictId: any) => {
+  return http.get<any>(`/system/dict/type/${dictId}`)
+}
+
+/**
+ * @name 新增字典类型
+ * @param data data
+ * @returns returns
+ */
+export const addDictApi = (data: any) => {
+  return http.post<any>('/system/dict/type', data, { loading: false })
+}
+
+/**
+ * @name 修改字典类型
+ * @param data data
+ * @returns returns
+ */
+export const updateDictApi = (data: any) => {
+  return http.put<any>('/system/dict/type', data, { loading: false })
+}
+
+/**
+ * @name 删除字典类型
+ * @param dictId dictId
+ * @returns returns
+ */
+export const delDictApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/system/dict/type/${id}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/system/dict/type/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/system/dict/type/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/dict/type/export', data)
+}
+
+/**
+ * @name 获取字典选择框列表
+ * @returns returns
+ */
+export const optionSelectApi = () => {
+  return http.get<any>(`/system/dict/type/optionselect`)
+}

+ 63 - 0
src/api/modules/system/dictData.ts

@@ -0,0 +1,63 @@
+import http from '@/api'
+
+/**
+ * @name 查询字典数据列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDataApi = (query: any) => {
+  return http.get<any>('/system/dict/data/list', query, { loading: true })
+}
+
+/**
+ * @name 查询字典数据详细
+ * @param dictCode dictCode
+ * @returns returns
+ */
+export const getDataApi = (dictCode: any) => {
+  return http.get<any>(`/system/dict/data/${dictCode}`)
+}
+
+/**
+ * @name 根据字典类型查询字典数据信息
+ * @param dictType dictType
+ * @returns returns
+ */
+export const getDictsApi = (dictType: string) => {
+  return http.get<any>(`/system/dict/data/type/${dictType}`)
+}
+
+/**
+ * @name 新增字典数据
+ * @param data data
+ * @returns returns
+ */
+export const addDataApi = (data: any) => {
+  return http.post<any>('/system/dict/data', data, { loading: false })
+}
+
+/**
+ * @name 修改字典数据
+ * @param data data
+ * @returns returns
+ */
+export const updateDataApi = (data: any) => {
+  return http.put<any>('/system/dict/data', data, { loading: false })
+}
+
+/**
+ * @name 删除字典数据
+ * @param dictCode dictCode
+ * @returns returns
+ */
+export const delDataApi = ({ id }: { id: any }) => {
+  return http.delete<any>(`/system/dict/data/${id}`)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/dict/data/export', data)
+}

+ 92 - 0
src/api/modules/system/menu.ts

@@ -0,0 +1,92 @@
+import http from '@/api'
+
+// 获取路由
+export const getRoutersApi = () => {
+  return http.get<Menu.MenuOptions[]>('/getRouters', {}, { loading: false })
+}
+
+/**
+ * @name 查询菜单列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listMenuApi = (query?: any) => {
+  return http.get<any>('/system/menu/list', query, { loading: true })
+}
+
+/**
+ * @name 查询菜单详细
+ * @param menuId menuId
+ * @returns returns
+ */
+export const getMenuApi = (menuId: any) => {
+  return http.get<any>(`/system/menu/${menuId}`)
+}
+
+/**
+ * @name 新增菜单
+ * @param data data
+ * @returns returns
+ */
+export const addMenuApi = (data: any) => {
+  return http.post<any>('/system/menu', data, { loading: false })
+}
+
+/**
+ * @name 修改菜单
+ * @param data data
+ * @returns returns
+ */
+export const updateMenuApi = (data: any) => {
+  return http.put<any>('/system/menu', data, { loading: false })
+}
+
+/**
+ * @name 删除菜单
+ * @param menuId menuId
+ * @returns returns
+ */
+export const delMenuApi = (menuId: any) => {
+  return http.delete<any>(`/system/menu/${menuId}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/system/menu/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/system/menu/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/menu/export', data)
+}
+
+/**
+ * @name 查询菜单下拉树结构
+ * @returns returns
+ */
+export const treeselectApi = () => {
+  return http.get<any>(`/system/menu/treeselect`)
+}
+
+/**
+ * @name 根据角色ID查询菜单下拉树结构
+ * @param roleId roleId
+ * @returns returns
+ */
+export const roleMenuTreeselectApi = (roleId: any) => {
+  return http.get<any>(`/system/menu/roleMenuTreeselect/${roleId}`)
+}

+ 70 - 0
src/api/modules/system/post.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询岗位信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listPostApi = (query: any) => {
+  return http.get<any>('/system/post/list', query, { loading: true })
+}
+
+/**
+ * @name 查询岗位信息详细
+ * @param postId postId
+ * @returns returns
+ */
+export const getPostApi = (postId: any) => {
+  return http.get<any>(`/system/post/${postId}`)
+}
+
+/**
+ * @name 新增岗位信息
+ * @param data data
+ * @returns returns
+ */
+export const addPostApi = (data: any) => {
+  return http.post<any>('/system/post', data, { loading: false })
+}
+
+/**
+ * @name 修改岗位信息
+ * @param data data
+ * @returns returns
+ */
+export const updatePostApi = (data: any) => {
+  return http.put<any>('/system/post', data, { loading: false })
+}
+
+/**
+ * @name 删除岗位信息
+ * @param postId postId
+ * @returns returns
+ */
+export const delPostApi = ({ postId }: { postId: any }) => {
+  return http.delete<any>(`/system/post/${postId}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/system/post/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/system/post/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/post/export', data)
+}

+ 70 - 0
src/api/modules/system/role.ts

@@ -0,0 +1,70 @@
+import http from '@/api'
+
+/**
+ * @name 查询角色信息列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listRoleApi = (query: any) => {
+  return http.get<any>('/system/role/list', query, { loading: true })
+}
+
+/**
+ * @name 查询角色信息详细
+ * @param roleId roleId
+ * @returns returns
+ */
+export const getRoleApi = (roleId: any) => {
+  return http.get<any>(`/system/role/${roleId}`)
+}
+
+/**
+ * @name 新增角色信息
+ * @param data data
+ * @returns returns
+ */
+export const addRoleApi = (data: any) => {
+  return http.post<any>('/system/role', data, { loading: false })
+}
+
+/**
+ * @name 修改角色信息
+ * @param data data
+ * @returns returns
+ */
+export const updateRoleApi = (data: any) => {
+  return http.put<any>('/system/role', data, { loading: false })
+}
+
+/**
+ * @name 删除角色信息
+ * @param roleId roleId
+ * @returns returns
+ */
+export const delRoleApi = ({ roleId }: { roleId: any }) => {
+  return http.delete<any>(`/system/role/${roleId}`)
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/system/role/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/system/role/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/role/export', data)
+}

+ 86 - 0
src/api/modules/system/user.ts

@@ -0,0 +1,86 @@
+import http from '@/api'
+import { parseStrEmpty } from '@/utils/common'
+
+/**
+ * @name 查询用户列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listUserApi = (query: any) => {
+  return http.get<any>('/system/user/list', query, { loading: true })
+}
+
+/**
+ * @name 查询用户详细
+ * @param userId userId
+ * @returns returns
+ */
+export const getUserApi = (userId?: string) => {
+  return http.get<any>(`/system/user/` + parseStrEmpty(userId))
+}
+
+/**
+ * @name 查询部门下拉树结构
+ * @returns returns
+ */
+export const deptTreeSelectApi = () => {
+  return http.get<any>(`/system/user/deptTree`)
+}
+
+/**
+ * @name 新增用户
+ * @returns returns
+ */
+export const addUserApi = (data: any) => {
+  return http.post<any>('/system/user', data, { loading: false })
+}
+
+/**
+ * @name 修改用户
+ * @returns returns
+ */
+export const updateUserApi = (data: any) => {
+  return http.put<any>('/system/user', data, { loading: false })
+}
+
+/**
+ * @name 删除用户
+ * @returns returns
+ */
+export const delUserApi = (userId: any) => {
+  return http.delete<any>(`/system/user/${userId}`)
+}
+
+/**
+ * @name 用户状态修改
+ * @param userId userId
+ * @param status status
+ * @returns returns
+ */
+export const changeUserStatus = (data: any) => {
+  return http.put<any>('/system/user/changeStatus', data, { loading: false })
+}
+
+/**
+ * @name 下载模板
+ * @returns returns
+ */
+export const importTemplateApi = () => {
+  return http.download('/system/user/importTemplate', {})
+}
+
+/**
+ * @name 导入数据
+ * @returns returns
+ */
+export const importDataApi = (data: any) => {
+  return http.post('/system/user/importData', data)
+}
+
+/**
+ * @name 导出数据
+ * @returns returns
+ */
+export const exportApi = (data: any) => {
+  return http.download('/system/user/export', data)
+}

+ 91 - 0
src/api/modules/tool/gen.ts

@@ -0,0 +1,91 @@
+import http from '@/api'
+
+/**
+ * @name 查询生成表数据
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listTableApi = (query: any) => {
+  return http.get<any>('/tool/gen/list', query, { loading: true })
+}
+
+/**
+ * @name 查询db数据库列表
+ * @param query 参数
+ * @returns 返回列表
+ */
+export const listDbTableApi = (query: any) => {
+  return http.get<any>('/tool/gen/db/list', query, { loading: true })
+}
+
+/**
+ * @name 查询表详细信息
+ * @param tableId tableId
+ * @returns returns
+ */
+export const getTableApi = (tableId: any) => {
+  return http.get<any>(`/tool/gen/${tableId}`)
+}
+
+/**
+ * @name 修改代码生成信息
+ * @param data data
+ * @returns returns
+ */
+export const updateGenTableApi = (data: any) => {
+  return http.put<any>('/tool/gen', data, { loading: false })
+}
+
+/**
+ * @name 导入表
+ * @param data data
+ * @returns returns
+ */
+export const importTableApi = (data: any) => {
+  return http.post<any>('/tool/gen/importTable', data, { loading: false })
+}
+
+/**
+ * @name 预览生成代码
+ * @param tableId tableId
+ * @returns returns
+ */
+export const previewTableApi = (tableId: any) => {
+  return http.get<any>(`/tool/gen/preview/${tableId}`)
+}
+
+/**
+ * @name 删除表数据
+ * @param tableId tableId
+ * @returns returns
+ */
+export const delTableApi = (tableId: any) => {
+  return http.delete<any>(`/tool/gen/${tableId}`)
+}
+
+/**
+ * @name 生成代码(自定义路径)
+ * @param tableId tableId
+ * @returns returns
+ */
+export const genCodeApi = (tableId: any) => {
+  return http.get<any>(`/tool/gen/genCode/${tableId}`)
+}
+
+/**
+ * @name 同步数据库
+ * @param tableName tableName
+ * @returns returns
+ */
+export const synchDbApi = (tableName: any) => {
+  return http.get<any>(`/tool/gen/syncDb/${tableName}`)
+}
+
+/**
+ * @name 生成代码操作
+ * @param tableId tableId
+ * @returns returns
+ */
+export const batchGenCodeApi = (tableId: any) => {
+  return http.get<any>(`/tool/gen/batchGenCode?tables=${tableId}`)
+}

+ 16 - 0
src/api/modules/upload.ts

@@ -0,0 +1,16 @@
+import { Upload } from '@/api/interface/index'
+import { PORT1 } from '@/api/config/servicePort'
+import http from '@/api'
+
+/**
+ * @name 文件上传模块
+ */
+// 图片上传
+export const uploadImg = (params: FormData) => {
+  return http.post<Upload.ResFileUrl>(PORT1 + `/file/upload/img`, params, { cancel: false })
+}
+
+// 视频上传
+export const uploadVideo = (params: FormData) => {
+  return http.post<Upload.ResFileUrl>(PORT1 + `/file/upload/video`, params, { cancel: false })
+}

+ 71 - 0
src/api/modules/user copy.ts

@@ -0,0 +1,71 @@
+import { ResPage, User } from '@/api/interface/index'
+import { PORT1 } from '@/api/config/servicePort'
+import http from '@/api'
+
+/**
+ * @name 用户管理模块
+ */
+// 获取用户列表
+export const getUserList = (params: User.ReqUserParams) => {
+  return http.post<ResPage<User.ResUserList>>(PORT1 + `/user/list`, params)
+}
+
+// 获取树形用户列表
+export const getUserTreeList = (params: User.ReqUserParams) => {
+  return http.post<ResPage<User.ResUserList>>(PORT1 + `/user/tree/list`, params)
+}
+
+// 新增用户
+export const addUser = (params: { id: string }) => {
+  return http.post(PORT1 + `/user/add`, params)
+}
+
+// 批量添加用户
+export const BatchAddUser = (params: FormData) => {
+  return http.post(PORT1 + `/user/import`, params)
+}
+
+// 编辑用户
+export const editUser = (params: { id: string }) => {
+  return http.post(PORT1 + `/user/edit`, params)
+}
+
+// 删除用户
+export const deleteUser = (params: { id: string[] }) => {
+  return http.post(PORT1 + `/user/delete`, params)
+}
+
+// 切换用户状态
+export const changeUserStatus = (params: { id: string; status: number }) => {
+  return http.post(PORT1 + `/user/change`, params)
+}
+
+// 重置用户密码
+export const resetUserPassWord = (params: { id: string }) => {
+  return http.post(PORT1 + `/user/rest_password`, params)
+}
+
+// 导出用户数据
+export const exportUserInfo = (params: User.ReqUserParams) => {
+  return http.download(PORT1 + `/user/export`, params)
+}
+
+// 获取用户状态字典
+export const getUserStatus = () => {
+  return http.get<User.ResStatus[]>(PORT1 + `/user/status`)
+}
+
+// 获取用户性别字典
+export const getUserGender = () => {
+  return http.get<User.ResGender[]>(PORT1 + `/user/gender`)
+}
+
+// 获取用户部门列表
+export const getUserDepartment = () => {
+  return http.get<User.ResDepartment[]>(PORT1 + `/user/department`, {}, { cancel: false })
+}
+
+// 获取用户角色字典
+export const getUserRole = () => {
+  return http.get<User.ResRole[]>(PORT1 + `/user/role`)
+}

二进制
src/assets/fonts/DIN.otf


二进制
src/assets/fonts/MetroDF.ttf


二进制
src/assets/fonts/YouSheBiaoTiHei.ttf


+ 14 - 0
src/assets/fonts/font.scss

@@ -0,0 +1,14 @@
+@font-face {
+  font-family: YouSheBiaoTiHei;
+  src: url('./YouSheBiaoTiHei.ttf');
+}
+
+@font-face {
+  font-family: MetroDF;
+  src: url('./MetroDF.ttf');
+}
+
+@font-face {
+  font-family: DIN;
+  src: url('./DIN.Otf');
+}

+ 48 - 0
src/assets/iconfont/iconfont.scss

@@ -0,0 +1,48 @@
+@font-face {
+  font-family: iconfont; /* Project id 2667653 */
+  src: url('iconfont.ttf?t=1694681005434') format('truetype');
+}
+.iconfont {
+  font-family: iconfont !important;
+  font-size: 20px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  cursor: pointer;
+}
+.icon-yiwen::before {
+  font-size: 15px;
+  content: '\e693';
+}
+.icon-xiala::before {
+  content: '\e62b';
+}
+.icon-tuichu::before {
+  content: '\e645';
+}
+.icon-xiaoxi::before {
+  font-size: 21.2px;
+  content: '\e61f';
+}
+.icon-zhuti::before {
+  font-size: 22.4px;
+  content: '\e638';
+}
+.icon-sousuo::before {
+  content: '\e611';
+}
+.icon-contentright::before {
+  content: '\e8c9';
+}
+.icon-contentleft::before {
+  content: '\e8ca';
+}
+.icon-fangda::before {
+  content: '\e826';
+}
+.icon-suoxiao::before {
+  content: '\e641';
+}
+.icon-zhongyingwen::before {
+  content: '\e8cb';
+}

二进制
src/assets/iconfont/iconfont.ttf


+ 1 - 0
src/assets/icons/404.svg

@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M121.718 73.272v9.953c3.957-7.584 6.199-16.05 6.199-24.995C127.917 26.079 99.273 0 63.958 0 28.644 0 0 26.079 0 58.23c0 .403.028.806.028 1.21l22.97-25.953h13.34l-19.76 27.187h6.42V53.77l13.728-19.477v49.361H22.998V73.272H2.158c5.951 20.284 23.608 36.208 45.998 41.399-1.44 3.3-5.618 11.263-12.565 12.674-8.607 1.764 23.358.428 46.163-13.178 17.519-4.611 31.938-15.849 39.77-30.513h-13.506V73.272H85.02V59.464l22.998-25.977h13.008l-19.429 27.187h6.421v-7.433l13.727-19.402v39.433h-.027zm-78.24 2.822a10.516 10.516 0 0 1-.996-4.535V44.548c0-1.613.332-3.124.996-4.535a11.66 11.66 0 0 1 2.713-3.68c1.134-1.032 2.49-1.864 4.04-2.468 1.55-.605 3.21-.908 4.982-.908h11.292c1.77 0 3.431.303 4.981.908 1.522.604 2.85 1.41 3.986 2.418l-12.26 16.303v-2.898a1.96 1.96 0 0 0-.665-1.512c-.443-.403-.996-.604-1.66-.604-.665 0-1.218.201-1.661.604a1.96 1.96 0 0 0-.664 1.512v9.071L44.364 77.606a10.556 10.556 0 0 1-.886-1.512zm35.73-4.535c0 1.613-.332 3.124-.997 4.535a11.66 11.66 0 0 1-2.712 3.68c-1.134 1.032-2.49 1.864-4.04 2.469-1.55.604-3.21.907-4.982.907H55.185c-1.77 0-3.431-.303-4.981-.907-1.55-.605-2.906-1.437-4.041-2.47a12.49 12.49 0 0 1-1.384-1.512l13.727-18.217v6.375c0 .605.222 1.109.665 1.512.442.403.996.604 1.66.604.664 0 1.218-.201 1.66-.604a1.96 1.96 0 0 0 .665-1.512V53.87L75.97 36.838c.913.932 1.66 1.99 2.214 3.175.664 1.41.996 2.922.996 4.535v27.011h.028z"/></svg>

+ 1 - 0
src/assets/icons/avatar-user.svg

@@ -0,0 +1 @@
+<?xml version="1.0" ?><svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><title/><path d="M256,48C141.31,48,48,141.31,48,256s93.31,208,208,208,208-93.31,208-208S370.69,48,256,48Zm2,96a72,72,0,1,1-72,72A72,72,0,0,1,258,144Zm-2,288a175.55,175.55,0,0,1-129.18-56.6C135.66,329.62,215.06,320,256,320s120.34,9.62,129.18,55.39A175.52,175.52,0,0,1,256,432Z"/></svg>

+ 1 - 0
src/assets/icons/bug.svg

@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M127.88 73.143c0 1.412-.506 2.635-1.518 3.669-1.011 1.033-2.209 1.55-3.592 1.55h-17.887c0 9.296-1.783 17.178-5.35 23.645l16.609 17.044c1.011 1.034 1.517 2.257 1.517 3.67 0 1.412-.506 2.635-1.517 3.668-.958 1.033-2.155 1.55-3.593 1.55-1.438 0-2.635-.517-3.593-1.55l-15.811-16.063a15.49 15.49 0 0 1-1.196 1.06c-.532.434-1.65 1.208-3.353 2.322a50.104 50.104 0 0 1-5.192 2.974c-1.758.87-3.94 1.658-6.546 2.364-2.607.706-5.189 1.06-7.748 1.06V47.044H58.89v73.062c-2.716 0-5.417-.367-8.106-1.102-2.688-.734-5.003-1.631-6.945-2.692a66.769 66.769 0 0 1-5.268-3.179c-1.571-1.057-2.73-1.94-3.476-2.65L33.9 109.34l-14.611 16.877c-1.066 1.14-2.344 1.711-3.833 1.711-1.277 0-2.422-.434-3.434-1.304-1.012-.978-1.557-2.187-1.635-3.627-.079-1.44.333-2.705 1.236-3.794l16.129-18.51c-3.087-6.197-4.63-13.644-4.63-22.342H5.235c-1.383 0-2.58-.517-3.592-1.55S.125 74.545.125 73.132c0-1.412.506-2.635 1.518-3.668 1.012-1.034 2.21-1.55 3.592-1.55h17.887V43.939L9.308 29.833c-1.012-1.033-1.517-2.256-1.517-3.669 0-1.412.505-2.635 1.517-3.668 1.012-1.034 2.21-1.55 3.593-1.55s2.58.516 3.593 1.55l13.813 14.106h67.396l13.814-14.106c1.012-1.034 2.21-1.55 3.592-1.55 1.384 0 2.581.516 3.593 1.55 1.012 1.033 1.518 2.256 1.518 3.668 0 1.413-.506 2.636-1.518 3.67l-13.814 14.105v23.975h17.887c1.383 0 2.58.516 3.593 1.55 1.011 1.033 1.517 2.256 1.517 3.668l-.005.01zM89.552 26.175H38.448c0-7.23 2.489-13.386 7.466-18.469C50.892 2.623 56.92.082 64 .082c7.08 0 13.108 2.541 18.086 7.624 4.977 5.083 7.466 11.24 7.466 18.469z"/></svg>

+ 1 - 0
src/assets/icons/build.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1568899741379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2054" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M960 591.424V368.96c0-0.288 0.16-0.512 0.16-0.768S960 367.68 960 367.424V192a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v175.424c0 0.288-0.16 0.512-0.16 0.768s0.16 0.48 0.16 0.768v222.464c0 0.288-0.16 0.512-0.16 0.768s0.16 0.48 0.16 0.768V864a32 32 0 0 0 32 32h832a32 32 0 0 0 32-32v-271.04c0-0.288 0.16-0.512 0.16-0.768S960 591.68 960 591.424z m-560-31.232v-160H608v160h-208z m208 64V832h-208v-207.808H608z m-480-224h208v160H128v-160z m544 0h224v160h-224v-160zM896 224v112.192H128V224h768zM128 624.192h208V832H128v-207.808zM672 832v-207.808h224V832h-224z" p-id="2055"></path></svg>

文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/button.svg


文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/cascader.svg


+ 1 - 0
src/assets/icons/chart.svg

@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h36.571V128H0V54.857zM91.429 27.43H128V128H91.429V27.429zM45.714 0h36.572v128H45.714V0z"/></svg>

+ 1 - 0
src/assets/icons/checkbox.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1575982282951" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="902" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M828.40625 90.125H195.59375C137.375 90.125 90.125 137.375 90.125 195.59375v632.8125c0 58.21875 47.25 105.46875 105.46875 105.46875h632.8125c58.21875 0 105.46875-47.25 105.46875-105.46875V195.59375c0-58.21875-47.25-105.46875-105.46875-105.46875z m52.734375 738.28125c0 29.16-23.57015625 52.734375-52.734375 52.734375H195.59375c-29.109375 0-52.734375-23.574375-52.734375-52.734375V195.59375c0-29.109375 23.625-52.734375 52.734375-52.734375h632.8125c29.16 0 52.734375 23.625 52.734375 52.734375v632.8125z" p-id="903"></path><path d="M421.52890625 709.55984375a36.28125 36.28125 0 0 1-27.55265625-12.66890625L205.17453125 476.613125a36.28546875 36.28546875 0 0 1 55.10109375-47.22890625l164.986875 192.4846875 342.16171875-298.48078125a36.2896875 36.2896875 0 0 1 47.70984375 54.68765625L445.3859375 700.6203125a36.3234375 36.3234375 0 0 1-23.85703125 8.93953125z" p-id="904"></path></svg>

+ 1 - 0
src/assets/icons/clipboard.svg

@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.857 118.857h64V73.143H89.143c-1.902 0-3.52-.668-4.855-2.002-1.335-1.335-2.002-2.954-2.002-4.855V36.57H54.857v82.286zM73.143 16v-4.571a2.2 2.2 0 0 0-.677-1.61 2.198 2.198 0 0 0-1.609-.676H20.571c-.621 0-1.158.225-1.609.676a2.198 2.198 0 0 0-.676 1.61V16a2.2 2.2 0 0 0 .676 1.61c.451.45.988.676 1.61.676h50.285c.622 0 1.158-.226 1.61-.677.45-.45.676-.987.676-1.609zm18.286 48h21.357L91.43 42.642V64zM128 73.143v48c0 1.902-.667 3.52-2.002 4.855-1.335 1.335-2.953 2.002-4.855 2.002H52.57c-1.901 0-3.52-.667-4.854-2.002-1.335-1.335-2.003-2.953-2.003-4.855v-11.429H6.857c-1.902 0-3.52-.667-4.855-2.002C.667 106.377 0 104.759 0 102.857v-96c0-1.902.667-3.52 2.002-4.855C3.337.667 4.955 0 6.857 0h77.714c1.902 0 3.52.667 4.855 2.002 1.335 1.335 2.003 2.953 2.003 4.855V30.29c1 .622 1.856 1.29 2.569 2.003l29.147 29.147c1.335 1.335 2.478 3.145 3.429 5.43.95 2.287 1.426 4.383 1.426 6.291v-.018z"/></svg>

+ 1 - 0
src/assets/icons/code.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1546567861908" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2422" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M318.577778 819.2L17.066667 512l301.511111-307.2 45.511111 45.511111L96.711111 512l267.377778 261.688889zM705.422222 819.2l-45.511111-45.511111L927.288889 512l-267.377778-261.688889 45.511111-45.511111L1006.933333 512zM540.785778 221.866667l55.751111 11.150222L483.157333 802.133333l-55.751111-11.093333z" fill="#bfbfbf" p-id="2423"></path></svg>

文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/color.svg


文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/component.svg


文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/dashboard.svg


文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/date-range.svg


文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/date.svg


文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/dict.svg


部分文件因为文件数量过多而无法显示