Jelajahi Sumber

代码迁移

seeseele 2 bulan lalu
melakukan
b7ade489da
100 mengubah file dengan 6752 tambahan dan 0 penghapusan
  1. 21 0
      .editorconfig
  2. 25 0
      .env.development
  3. 28 0
      .env.production
  4. 17 0
      .eslintignore
  5. 312 0
      .eslintrc-auto-import.json
  6. 42 0
      .eslintrc.js
  7. 28 0
      .gitignore
  8. 9 0
      .prettierignore
  9. 46 0
      .prettierrc.cjs
  10. 20 0
      LICENSE
  11. 73 0
      README.md
  12. 12 0
      bin/build.bat
  13. 12 0
      bin/package.bat
  14. 12 0
      bin/run-web.bat
  15. 22 0
      commitlint.config.js
  16. 60 0
      html/ie.html
  17. 217 0
      index.html
  18. 85 0
      package.json
  19. TEMPAT SAMPAH
      public/favicon.ico
  20. 21 0
      src/App.vue
  21. 48 0
      src/animate.ts
  22. 62 0
      src/api/demo/demo/index.ts
  23. 90 0
      src/api/demo/demo/types.ts
  24. 62 0
      src/api/demo/tree/index.ts
  25. 80 0
      src/api/demo/tree/types.ts
  26. 100 0
      src/api/login.ts
  27. 11 0
      src/api/menu.ts
  28. 59 0
      src/api/monitor/cache/index.ts
  29. 7 0
      src/api/monitor/cache/types.ts
  30. 36 0
      src/api/monitor/loginInfo/index.ts
  31. 20 0
      src/api/monitor/loginInfo/types.ts
  32. 20 0
      src/api/monitor/online/index.ts
  33. 15 0
      src/api/monitor/online/types.ts
  34. 28 0
      src/api/monitor/operlog/index.ts
  35. 53 0
      src/api/monitor/operlog/types.ts
  36. 80 0
      src/api/system/client/index.ts
  37. 135 0
      src/api/system/client/types.ts
  38. 74 0
      src/api/system/config/index.ts
  39. 23 0
      src/api/system/config/types.ts
  40. 62 0
      src/api/system/dept/index.ts
  41. 45 0
      src/api/system/dept/types.ts
  42. 53 0
      src/api/system/dict/data/index.ts
  43. 26 0
      src/api/system/dict/data/types.ts
  44. 62 0
      src/api/system/dict/type/index.ts
  45. 18 0
      src/api/system/dict/type/types.ts
  46. 70 0
      src/api/system/menu/index.ts
  47. 69 0
      src/api/system/menu/types.ts
  48. 45 0
      src/api/system/notice/index.ts
  49. 26 0
      src/api/system/notice/types.ts
  50. 36 0
      src/api/system/oss/index.ts
  51. 22 0
      src/api/system/oss/types.ts
  52. 60 0
      src/api/system/ossConfig/index.ts
  53. 38 0
      src/api/system/ossConfig/types.ts
  54. 46 0
      src/api/system/post/index.ts
  55. 23 0
      src/api/system/post/types.ts
  56. 144 0
      src/api/system/role/index.ts
  57. 52 0
      src/api/system/role/types.ts
  58. 24 0
      src/api/system/social/auth.ts
  59. 92 0
      src/api/system/tenant/index.ts
  60. 46 0
      src/api/system/tenant/types.ts
  61. 67 0
      src/api/system/tenantPackage/index.ts
  62. 20 0
      src/api/system/tenantPackage/types.ts
  63. 215 0
      src/api/system/user/index.ts
  64. 84 0
      src/api/system/user/types.ts
  65. 86 0
      src/api/tool/gen/index.ts
  66. 180 0
      src/api/tool/gen/types.ts
  67. 59 0
      src/api/types.ts
  68. 63 0
      src/api/ygpassport/archivesGo/index.ts
  69. 71 0
      src/api/ygpassport/archivesGo/types.ts
  70. 63 0
      src/api/ygpassport/bug/index.ts
  71. 71 0
      src/api/ygpassport/bug/types.ts
  72. 63 0
      src/api/ygpassport/careerPlans/index.ts
  73. 71 0
      src/api/ygpassport/careerPlans/types.ts
  74. 63 0
      src/api/ygpassport/careerSkill/index.ts
  75. 56 0
      src/api/ygpassport/careerSkill/types.ts
  76. 64 0
      src/api/ygpassport/combatProject/index.ts
  77. 113 0
      src/api/ygpassport/combatProject/types.ts
  78. 63 0
      src/api/ygpassport/extracActivities/index.ts
  79. 141 0
      src/api/ygpassport/extracActivities/types.ts
  80. 63 0
      src/api/ygpassport/foreignLanguageSkill/index.ts
  81. 86 0
      src/api/ygpassport/foreignLanguageSkill/types.ts
  82. 63 0
      src/api/ygpassport/goal/index.ts
  83. 56 0
      src/api/ygpassport/goal/types.ts
  84. 63 0
      src/api/ygpassport/internships/index.ts
  85. 101 0
      src/api/ygpassport/internships/types.ts
  86. 63 0
      src/api/ygpassport/physiqueTest/index.ts
  87. 75 0
      src/api/ygpassport/physiqueTest/types.ts
  88. 63 0
      src/api/ygpassport/research/index.ts
  89. 130 0
      src/api/ygpassport/research/types.ts
  90. 63 0
      src/api/ygpassport/scholarship/index.ts
  91. 123 0
      src/api/ygpassport/scholarship/types.ts
  92. 63 0
      src/api/ygpassport/scoreList/index.ts
  93. 197 0
      src/api/ygpassport/scoreList/types.ts
  94. 63 0
      src/api/ygpassport/scoreListTotal/index.ts
  95. 154 0
      src/api/ygpassport/scoreListTotal/types.ts
  96. 63 0
      src/api/ygpassport/scoreplan/index.ts
  97. 101 0
      src/api/ygpassport/scoreplan/types.ts
  98. 75 0
      src/api/ygpassport/student/index.ts
  99. 350 0
      src/api/ygpassport/student/types.ts
  100. 0 0
      src/api/ygpassport/studentAlbum/index.ts

+ 21 - 0
.editorconfig

@@ -0,0 +1,21 @@
+# 告诉EditorConfig插件,这是根文件,不用继续往上查找
+root = true
+
+# 匹配全部文件
+[*]
+# 缩进风格,可选space、tab
+indent_style = space
+# 缩进的空格数
+indent_size = 2
+# 设置字符集
+charset = utf-8
+# 结尾换行符,可选lf、cr、crlf
+end_of_line = lf
+# 在文件结尾插入新行
+trim_trailing_whitespace = true
+# 删除一行中的前后空格
+insert_final_newline = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false

+ 25 - 0
.env.development

@@ -0,0 +1,25 @@
+# 页面标题
+VITE_APP_TITLE = YG学习历程管理后台
+
+# 开发环境配置
+VITE_APP_ENV = 'development'
+
+# 开发环境
+VITE_APP_BASE_API = '/dev-api'
+
+# 应用访问路径 例如使用前缀 /admin/
+VITE_APP_CONTEXT_PATH = '/'
+
+# 监控地址
+VITE_APP_MONITRO_ADMIN = 'http://localhost:9090/admin/applications'
+
+# powerjob 控制台地址
+VITE_APP_POWERJOB_ADMIN = 'http://localhost:7700/'
+
+VITE_APP_PORT = 30
+
+# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
+VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+
+# 客户端id
+VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'

+ 28 - 0
.env.production

@@ -0,0 +1,28 @@
+# 页面标题
+VITE_APP_TITLE = YG学习历程管理后台
+
+# 生产环境配置
+VITE_APP_ENV = 'production'
+
+# 应用访问路径 例如使用前缀 /admin/
+VITE_APP_CONTEXT_PATH = '/'
+
+# 监控地址
+VITE_APP_MONITRO_ADMIN = '/admin/applications'
+
+# powerjob 控制台地址
+VITE_APP_POWERJOB_ADMIN = '/powerjob'
+
+# 生产环境
+VITE_APP_BASE_API = '/prod-api'
+
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS = gzip
+
+VITE_APP_PORT = 30
+
+# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
+VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+
+# 客户端id
+VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'

+ 17 - 0
.eslintignore

@@ -0,0 +1,17 @@
+*.sh
+node_modules
+*.md
+*.woff
+*.ttf
+.vscode
+.idea
+dist
+/public
+/docs
+.husky
+.local
+/bin
+.eslintrc.js
+prettier.config.js
+src/assets
+tailwind.config.js

+ 312 - 0
.eslintrc-auto-import.json

@@ -0,0 +1,312 @@
+{
+  "globals": {
+    "ComponentInternalInstance": true,
+    "TransferKey": true,
+    "ElFormRules": true,
+    "CheckboxValueType": true,
+    "PropType": true,
+    "DateModelType": true,
+    "UploadFile": true,
+    "ElFormInstance": true,
+    "ElTableInstance": true,
+    "ElTreeInstance": true,
+    "ElTreeSelectInstance": true,
+    "ElSelectInstance": true,
+    "ElUploadInstance": true,
+    "ElCardInstance": true,
+    "ElDialogInstance": true,
+    "ElInputInstance": true,
+    "ElInputNumberInstance": true,
+    "ElRadioInstance": true,
+    "ElRadioGroupInstance": true,
+    "ElRadioButtonInstance": true,
+    "ElCheckboxInstance": true,
+    "ElCheckboxGroupInstance": true,
+    "ElSwitchInstance": true,
+    "ElDatePickerInstance": true,
+    "ElTimePickerInstance": true,
+    "ElTimeSelectInstance": true,
+    "ElScrollbarInstance": true,
+    "ElCascaderInstance": true,
+    "ElColorPickerInstance": true,
+    "ElRateInstance": true,
+    "ElSliderInstance": true,
+    "useRouter": true,
+    "useRoute": true,
+    "EffectScope": true,
+    "ElTable": true,
+    "ElSelect": true,
+    "ElUpload": true,
+    "ElForm": true,
+    "ElTree": true,
+    "ElMessage": true,
+    "ElMessageBox": true,
+    "asyncComputed": true,
+    "autoResetRef": true,
+    "computed": true,
+    "computedAsync": true,
+    "computedEager": true,
+    "computedInject": true,
+    "computedWithControl": true,
+    "controlledComputed": true,
+    "controlledRef": true,
+    "createApp": true,
+    "createEventHook": true,
+    "createGlobalState": true,
+    "createInjectionState": true,
+    "createReactiveFn": true,
+    "createSharedComposable": true,
+    "createUnrefFn": true,
+    "customRef": true,
+    "debouncedRef": true,
+    "debouncedWatch": true,
+    "defineAsyncComponent": true,
+    "defineComponent": true,
+    "eagerComputed": true,
+    "effectScope": true,
+    "extendRef": true,
+    "getCurrentInstance": true,
+    "getCurrentScope": true,
+    "h": true,
+    "ignorableWatch": true,
+    "inject": true,
+    "isDefined": true,
+    "isProxy": true,
+    "isReactive": true,
+    "isReadonly": true,
+    "isRef": true,
+    "makeDestructurable": true,
+    "markRaw": true,
+    "nextTick": true,
+    "onActivated": true,
+    "onBeforeMount": true,
+    "onBeforeUnmount": true,
+    "onBeforeUpdate": true,
+    "onClickOutside": true,
+    "onDeactivated": true,
+    "onErrorCaptured": true,
+    "onKeyStroke": true,
+    "onLongPress": true,
+    "onMounted": true,
+    "onRenderTracked": true,
+    "onRenderTriggered": true,
+    "onScopeDispose": true,
+    "onServerPrefetch": true,
+    "onStartTyping": true,
+    "onUnmounted": true,
+    "onUpdated": true,
+    "pausableWatch": true,
+    "provide": true,
+    "reactify": true,
+    "reactifyObject": true,
+    "reactive": true,
+    "reactiveComputed": true,
+    "reactiveOmit": true,
+    "reactivePick": true,
+    "readonly": true,
+    "ref": true,
+    "refAutoReset": true,
+    "refDebounced": true,
+    "refDefault": true,
+    "refThrottled": true,
+    "refWithControl": true,
+    "resolveComponent": true,
+    "resolveDirective": true,
+    "resolveRef": true,
+    "resolveUnref": true,
+    "shallowReactive": true,
+    "shallowReadonly": true,
+    "shallowRef": true,
+    "syncRef": true,
+    "syncRefs": true,
+    "templateRef": true,
+    "throttledRef": true,
+    "throttledWatch": true,
+    "toRaw": true,
+    "toReactive": true,
+    "toRef": true,
+    "toRefs": true,
+    "triggerRef": true,
+    "tryOnBeforeMount": true,
+    "tryOnBeforeUnmount": true,
+    "tryOnMounted": true,
+    "tryOnScopeDispose": true,
+    "tryOnUnmounted": true,
+    "unref": true,
+    "unrefElement": true,
+    "until": true,
+    "useActiveElement": true,
+    "useArrayEvery": true,
+    "useArrayFilter": true,
+    "useArrayFind": true,
+    "useArrayFindIndex": true,
+    "useArrayFindLast": true,
+    "useArrayJoin": true,
+    "useArrayMap": true,
+    "useArrayReduce": true,
+    "useArraySome": true,
+    "useArrayUnique": true,
+    "useAsyncQueue": true,
+    "useAsyncState": true,
+    "useAttrs": true,
+    "useBase64": true,
+    "useBattery": true,
+    "useBluetooth": true,
+    "useBreakpoints": true,
+    "useBroadcastChannel": true,
+    "useBrowserLocation": true,
+    "useCached": true,
+    "useClipboard": true,
+    "useCloned": true,
+    "useColorMode": true,
+    "useConfirmDialog": true,
+    "useCounter": true,
+    "useCssModule": true,
+    "useCssVar": true,
+    "useCssVars": true,
+    "useCurrentElement": true,
+    "useCycleList": true,
+    "useDark": true,
+    "useDateFormat": true,
+    "useDebounce": true,
+    "useDebounceFn": true,
+    "useDebouncedRefHistory": true,
+    "useDeviceMotion": true,
+    "useDeviceOrientation": true,
+    "useDevicePixelRatio": true,
+    "useDevicesList": true,
+    "useDisplayMedia": true,
+    "useDocumentVisibility": true,
+    "useDraggable": true,
+    "useDropZone": true,
+    "useElementBounding": true,
+    "useElementByPoint": true,
+    "useElementHover": true,
+    "useElementSize": true,
+    "useElementVisibility": true,
+    "useEventBus": true,
+    "useEventListener": true,
+    "useEventSource": true,
+    "useEyeDropper": true,
+    "useFavicon": true,
+    "useFetch": true,
+    "useFileDialog": true,
+    "useFileSystemAccess": true,
+    "useFocus": true,
+    "useFocusWithin": true,
+    "useFps": true,
+    "useFullscreen": true,
+    "useGamepad": true,
+    "useGeolocation": true,
+    "useIdle": true,
+    "useImage": true,
+    "useInfiniteScroll": true,
+    "useIntersectionObserver": true,
+    "useInterval": true,
+    "useIntervalFn": true,
+    "useKeyModifier": true,
+    "useLastChanged": true,
+    "useLocalStorage": true,
+    "useMagicKeys": true,
+    "useManualRefHistory": true,
+    "useMediaControls": true,
+    "useMediaQuery": true,
+    "useMemoize": true,
+    "useMemory": true,
+    "useMounted": true,
+    "useMouse": true,
+    "useMouseInElement": true,
+    "useMousePressed": true,
+    "useMutationObserver": true,
+    "useNavigatorLanguage": true,
+    "useNetwork": true,
+    "useNow": true,
+    "useObjectUrl": true,
+    "useOffsetPagination": true,
+    "useOnline": true,
+    "usePageLeave": true,
+    "useParallax": true,
+    "usePermission": true,
+    "usePointer": true,
+    "usePointerLock": true,
+    "usePointerSwipe": true,
+    "usePreferredColorScheme": true,
+    "usePreferredContrast": true,
+    "usePreferredDark": true,
+    "usePreferredLanguages": true,
+    "usePreferredReducedMotion": true,
+    "usePrevious": true,
+    "useRafFn": true,
+    "useRefHistory": true,
+    "useResizeObserver": true,
+    "useScreenOrientation": true,
+    "useScreenSafeArea": true,
+    "useScriptTag": true,
+    "useScroll": true,
+    "useScrollLock": true,
+    "useSessionStorage": true,
+    "useShare": true,
+    "useSlots": true,
+    "useSorted": true,
+    "useSpeechRecognition": true,
+    "useSpeechSynthesis": true,
+    "useStepper": true,
+    "useStorage": true,
+    "useStorageAsync": true,
+    "useStyleTag": true,
+    "useSupported": true,
+    "useSwipe": true,
+    "useTemplateRefsList": true,
+    "useTextDirection": true,
+    "useTextSelection": true,
+    "useTextareaAutosize": true,
+    "useThrottle": true,
+    "useThrottleFn": true,
+    "useThrottledRefHistory": true,
+    "useTimeAgo": true,
+    "useTimeout": true,
+    "useTimeoutFn": true,
+    "useTimeoutPoll": true,
+    "useTimestamp": true,
+    "useTitle": true,
+    "useToNumber": true,
+    "useToString": true,
+    "useToggle": true,
+    "useTransition": true,
+    "useUrlSearchParams": true,
+    "useUserMedia": true,
+    "useVModel": true,
+    "useVModels": true,
+    "useVibrate": true,
+    "useVirtualList": true,
+    "useWakeLock": true,
+    "useWebNotification": true,
+    "useWebSocket": true,
+    "useWebWorker": true,
+    "useWebWorkerFn": true,
+    "useWindowFocus": true,
+    "useWindowScroll": true,
+    "useWindowSize": true,
+    "watch": true,
+    "watchArray": true,
+    "watchAtMost": true,
+    "watchDebounced": true,
+    "watchEffect": true,
+    "watchIgnorable": true,
+    "watchOnce": true,
+    "watchPausable": true,
+    "watchPostEffect": true,
+    "watchSyncEffect": true,
+    "watchThrottled": true,
+    "watchTriggerable": true,
+    "watchWithFilter": true,
+    "whenever": true,
+    "ImportOption": true,
+    "TreeType": true,
+    "FieldOption": true,
+    "PageData": true,
+    "storeToRefs": true,
+    "DictDataOption": true,
+    "UploadOption": true
+  }
+}

+ 42 - 0
.eslintrc.js

@@ -0,0 +1,42 @@
+module.exports = {
+  env: {
+    browser: true,
+    es2021: true,
+    node: true
+  },
+  parser: 'vue-eslint-parser',
+  extends: [
+    'eslint:recommended',
+    'plugin:vue/vue3-essential',
+    'plugin:@typescript-eslint/recommended',
+    './.eslintrc-auto-import.json',
+    'plugin:prettier/recommended'
+  ],
+  parserOptions: {
+    ecmaVersion: '2020',
+    sourceType: 'module',
+    parser: '@typescript-eslint/parser'
+  },
+  plugins: ['vue', '@typescript-eslint'],
+  rules: {
+    'vue/multi-word-component-names': 'off',
+    '@typescript-eslint/no-empty-function': 'off',
+    '@typescript-eslint/no-explicit-any': 'off',
+    'vue/no-v-model-argument': 'off',
+    '@typescript-eslint/ban-types': [
+      'error',
+      {
+        // 关闭空类型检查 {}
+        extendDefaults: true,
+        types: {
+          '{}': false,
+          Function: false
+        }
+      }
+    ]
+  },
+  globals: {
+    DialogOption: 'readonly',
+    OptionType: 'readonly'
+  }
+};

+ 28 - 0
.gitignore

@@ -0,0 +1,28 @@
+.DS_Store
+.history
+node_modules/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+**/*.log
+
+tests/**/coverage/
+tests/e2e/reports
+selenium-debug.log
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+
+package-lock.json
+yarn.lock
+
+# 编译生成的文件
+auto-imports.d.ts
+components.d.ts

+ 9 - 0
.prettierignore

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

+ 46 - 0
.prettierrc.cjs

@@ -0,0 +1,46 @@
+/**
+ * 代码格式化配置
+ */
+module.exports = {
+  // 一行最多多少个字符
+  printWidth: 150,
+  // 指定每个缩进级别的空格数
+  tabWidth: 2,
+  // 使用制表符而不是空格缩进行
+  useTabs: false,
+  // 在语句末尾是否需要分号
+  semi: true,
+  // 是否使用单引号
+  singleQuote: true,
+  // 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
+  quoteProps: 'as-needed',
+  // 在JSX中使用单引号而不是双引号
+  jsxSingleQuote: false,
+  // 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>",默认none
+  trailingComma: 'none',
+  // 在对象文字中的括号之间打印空格
+  bracketSpacing: true,
+  // jsx 标签的反尖括号需要换行
+  jsxBracketSameLine: false,
+  embeddedLanguageFormatting: 'off',
+  // 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
+  arrowParens: 'always',
+  // 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
+  rangeStart: 0,
+  rangeEnd: Infinity,
+  // 指定要使用的解析器,不需要写文件开头的 @prettier
+  requirePragma: false,
+  // 不需要自动在文件开头插入 @prettier
+  insertPragma: false,
+  // 使用默认的折行标准 always\never\preserve
+  proseWrap: 'preserve',
+  // 指定HTML文件的全局空格敏感度 css\strict\ignore
+  htmlWhitespaceSensitivity: 'css',
+  // Vue文件脚本和样式标签缩进
+  vueIndentScriptAndStyle: false,
+  // 在 windows 操作系统中换行符通常是回车 (CR) 加换行分隔符 (LF),也就是回车换行(CRLF),
+  // 然而在 Linux 和 Unix 中只使用简单的换行分隔符 (LF)。
+  // 对应的控制字符为 "\n" (LF) 和 "\r\n"(CRLF)。auto意为保持现有的行尾
+  // 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
+  endOfLine: 'auto'
+};

+ 20 - 0
LICENSE

@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2019 RuoYi-Vue-Plus
+
+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.

+ 73 - 0
README.md

@@ -0,0 +1,73 @@
+## 平台简介
+
+* 本仓库为前端技术栈 [Vue3](https://v3.cn.vuejs.org) + [TS](https://www.typescriptlang.org/) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 版本。
+* 配套后端代码仓库地址
+* [RuoYi-Vue-Plus 5.X(注意版本号)](https://gitee.com/dromara/RuoYi-Vue-Plus)
+* [RuoYi-Cloud-Plus 2.X(注意版本号)](https://gitee.com/dromara/RuoYi-Cloud-Plus)
+
+## 前端运行
+
+```bash
+# 克隆项目
+git clone https://gitee.com/JavaLionLi/plus-ui.git
+
+# 安装依赖
+npm install --registry=https://registry.npmmirror.com
+
+# 启动服务
+npm run dev
+
+# 构建生产环境 yarn build:prod
+# 前端访问地址 http://localhost:80
+```
+
+## 本框架与RuoYi的业务差异
+
+| 业务     | 功能说明                                    | 本框架 | RuoYi            |
+|--------|-----------------------------------------|-----|------------------|
+| 租户管理   | 系统内租户的管理 如:租户套餐、过期时间、用户数量、企业信息等         | 支持  | 无                |
+| 租户套餐管理 | 系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等             | 支持  | 无                |
+| 用户管理   | 用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等          | 支持  | 支持               |
+| 部门管理   | 配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限          | 支持  | 支持               |
+| 岗位管理   | 配置系统用户所属担任职务                            | 支持  | 支持               |
+| 菜单管理   | 配置系统菜单、操作权限、按钮权限标识等                     | 支持  | 支持               |
+| 角色管理   | 角色菜单权限分配、设置角色按机构进行数据范围权限划分              | 支持  | 支持               |
+| 字典管理   | 对系统中经常使用的一些较为固定的数据进行维护                  | 支持  | 支持               |
+| 参数管理   | 对系统动态配置常用参数                             | 支持  | 支持               |
+| 通知公告   | 系统通知公告信息发布维护                            | 支持  | 支持               |
+| 操作日志   | 系统正常操作日志记录和查询 系统异常信息日志记录和查询             | 支持  | 支持               |
+| 登录日志   | 系统登录日志记录查询包含登录异常                        | 支持  | 支持               |
+| 文件管理   | 系统文件展示、上传、下载、删除等管理                      | 支持  | 无                |
+| 文件配置管理 | 系统文件上传、下载所需要的配置信息动态添加、修改、删除等管理          | 支持  | 无                |
+| 在线用户管理 | 已登录系统的在线用户信息监控与强制踢出操作                   | 支持  | 支持               |
+| 定时任务   | 运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等         | 支持  | 仅支持任务与日志管理       |
+| 代码生成   | 多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载 | 支持  | 仅支持单数据源          |
+| 系统接口   | 根据业务代码自动生成相关的api接口文档                    | 支持  | 支持               |
+| 服务监控   | 监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等     | 支持  | 仅支持单机CPU、内存、磁盘监控 |
+| 缓存监控   | 对系统的缓存信息查询,命令统计等。                       | 支持  | 支持               |
+| 在线构建器  | 拖动表单元素生成相应的HTML代码。                      | 支持  | 支持               |
+| 使用案例   | 系统的一些功能案例                               | 支持  | 不支持              |
+
+## 演示图例
+
+|                                                                                            |                                                                                            |
+|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
+| ![输入图片说明](https://foruda.gitee.com/images/1680077524361362822/270bb429_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680077619939771291/989bf9b6_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680077681751513929/1c27c5bd_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680077721559267315/74d63e23_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680077765638904515/1b75d4a6_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078026375951297/eded7a4b_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078237104531207/0eb1b6a7_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078254306078709/5931e22f_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078287971528493/0b9af60a_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078308138770249/8d3b6696_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078352553634393/db5ef880_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078378238393374/601e4357_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078414983206024/2aae27c1_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078446738419874/ecce7d59_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078475971341775/149e8634_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078491666717143/3fadece7_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078558863188826/fb8ced2a_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078574561685461/ae68a0b2_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078594932772013/9d8bfec6_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078626493093532/fcfe4ff6_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078643608812515/0295bd4f_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078685196286463/d7612c81_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078703877318597/56fce0bc_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078716586545643/b6dbd68f_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078734103217688/eb1e6aa6_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078759131415480/73c525d8_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078779416197879/75e3ed02_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078802329118061/77e10915_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078893627848351/34a1c342_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078928175016986/f126ec4a_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078941718318363/b68a0f72_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680078963175518631/3bb769a1_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680078982294090567/b31c343d_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680079000642440444/77ca82a9_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680079020995074177/03b7d52e_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680079039367822173/76811806_1766278.png "屏幕截图") |
+| ![输入图片说明](https://foruda.gitee.com/images/1680079274333484664/4dfdc7c0_1766278.png "屏幕截图") | ![输入图片说明](https://foruda.gitee.com/images/1680079290467458224/d6715fcf_1766278.png "屏幕截图") |

+ 12 - 0
bin/build.bat

@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 打包Web工程,生成dist文件。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+yarn build:prod
+
+pause

+ 12 - 0
bin/package.bat

@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 安装Web工程,生成node_modules文件。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+yarn --registry=https://registry.npmmirror.com
+
+pause

+ 12 - 0
bin/run-web.bat

@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [信息] 使用 Vite 命令运行 Web 工程。
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+yarn dev
+
+pause

+ 22 - 0
commitlint.config.js

@@ -0,0 +1,22 @@
+module.exports = {
+  extends: ['@commitlint/config-conventional'],
+  rules: {
+    'type-enum': [
+      2,
+      'always',
+      [
+        'feat', // 新功能 feature
+        'fix', // 修复 bug
+        'docs', // 文档注释
+        'style', // 代码格式
+        'refactor', // 重构
+        'perf', // 性能优化
+        'test', // 增加测试
+        'chore', // 构建过程或辅助工具的变动
+        'revert', // 回退
+        'build' // 打包
+      ]
+    ],
+    'subject-case': [0]
+  }
+};

File diff ditekan karena terlalu besar
+ 60 - 0
html/ie.html


+ 217 - 0
index.html

@@ -0,0 +1,217 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <meta name="renderer" content="webkit" />
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
+    <link rel="icon" href="/favicon.ico" />
+    <title>YG学习历程管理后台</title>
+    <!--[if lt IE 11
+      ]><script>
+        window.location.href='/html/ie.html';
+      </script><!
+    [endif]-->
+    <style>
+      html,
+      body,
+      #app {
+        height: 100%;
+        margin: 0px;
+        padding: 0px;
+      }
+
+      .chromeframe {
+        margin: 0.2em 0;
+        background: #ccc;
+        color: #000;
+        padding: 0.2em 0;
+      }
+
+      #loader-wrapper {
+        position: fixed;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        z-index: 999999;
+      }
+
+      #loader {
+        display: block;
+        position: relative;
+        left: 50%;
+        top: 50%;
+        width: 150px;
+        height: 150px;
+        margin: -75px 0 0 -75px;
+        border-radius: 50%;
+        border: 3px solid transparent;
+        border-top-color: #FFF;
+        -webkit-animation: spin 2s linear infinite;
+        -ms-animation: spin 2s linear infinite;
+        -moz-animation: spin 2s linear infinite;
+        -o-animation: spin 2s linear infinite;
+        animation: spin 2s linear infinite;
+        z-index: 1001;
+      }
+
+      #loader:before {
+        content: "";
+        position: absolute;
+        top: 5px;
+        left: 5px;
+        right: 5px;
+        bottom: 5px;
+        border-radius: 50%;
+        border: 3px solid transparent;
+        border-top-color: #FFF;
+        -webkit-animation: spin 3s linear infinite;
+        -moz-animation: spin 3s linear infinite;
+        -o-animation: spin 3s linear infinite;
+        -ms-animation: spin 3s linear infinite;
+        animation: spin 3s linear infinite;
+      }
+
+      #loader:after {
+        content: "";
+        position: absolute;
+        top: 15px;
+        left: 15px;
+        right: 15px;
+        bottom: 15px;
+        border-radius: 50%;
+        border: 3px solid transparent;
+        border-top-color: #FFF;
+        -moz-animation: spin 1.5s linear infinite;
+        -o-animation: spin 1.5s linear infinite;
+        -ms-animation: spin 1.5s linear infinite;
+        -webkit-animation: spin 1.5s linear infinite;
+        animation: spin 1.5s linear infinite;
+      }
+
+
+      @-webkit-keyframes spin {
+        0% {
+          -webkit-transform: rotate(0deg);
+          -ms-transform: rotate(0deg);
+          transform: rotate(0deg);
+        }
+
+        100% {
+          -webkit-transform: rotate(360deg);
+          -ms-transform: rotate(360deg);
+          transform: rotate(360deg);
+        }
+      }
+
+      @keyframes spin {
+        0% {
+          -webkit-transform: rotate(0deg);
+          -ms-transform: rotate(0deg);
+          transform: rotate(0deg);
+        }
+
+        100% {
+          -webkit-transform: rotate(360deg);
+          -ms-transform: rotate(360deg);
+          transform: rotate(360deg);
+        }
+      }
+
+
+      #loader-wrapper .loader-section {
+        position: fixed;
+        top: 0;
+        width: 51%;
+        height: 100%;
+        background: #7171C6;
+        z-index: 1000;
+        -webkit-transform: translateX(0);
+        -ms-transform: translateX(0);
+        transform: translateX(0);
+      }
+
+      #loader-wrapper .loader-section.section-left {
+        left: 0;
+      }
+
+      #loader-wrapper .loader-section.section-right {
+        right: 0;
+      }
+
+
+      .loaded #loader-wrapper .loader-section.section-left {
+        -webkit-transform: translateX(-100%);
+        -ms-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+      }
+
+      .loaded #loader-wrapper .loader-section.section-right {
+        -webkit-transform: translateX(100%);
+        -ms-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+      }
+
+      .loaded #loader {
+        opacity: 0;
+        -webkit-transition: all 0.3s ease-out;
+        transition: all 0.3s ease-out;
+      }
+
+      .loaded #loader-wrapper {
+        visibility: hidden;
+        -webkit-transform: translateY(-100%);
+        -ms-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transition: all 0.3s 1s ease-out;
+        transition: all 0.3s 1s ease-out;
+      }
+
+      .no-js #loader-wrapper {
+        display: none;
+      }
+
+      .no-js h1 {
+        color: #222222;
+      }
+
+      #loader-wrapper .load_title {
+        font-family: 'Open Sans';
+        color: #FFF;
+        font-size: 19px;
+        width: 100%;
+        text-align: center;
+        z-index: 9999999999999;
+        position: absolute;
+        top: 60%;
+        opacity: 1;
+        line-height: 30px;
+      }
+
+      #loader-wrapper .load_title span {
+        font-weight: normal;
+        font-style: italic;
+        font-size: 13px;
+        color: #FFF;
+        opacity: 0.5;
+      }
+    </style>
+  </head>
+
+  <body>
+    <div id="app">
+      <div id="loader-wrapper">
+        <div id="loader"></div>
+        <div class="loader-section section-left"></div>
+        <div class="loader-section section-right"></div>
+        <div class="load_title">正在加载系统资源,请耐心等待</div>
+      </div>
+    </div>
+    <script type="module" src="/src/main.ts"></script>
+  </body>
+</html>

+ 85 - 0
package.json

@@ -0,0 +1,85 @@
+{
+  "name": "ruoyi-vue-plus",
+  "version": "5.1.0",
+  "description": "RuoYi-Vue-Plus多租户管理系统",
+  "author": "LionLi",
+  "license": "MIT",
+  "scripts": {
+    "dev": "vite serve --mode development",
+    "build:prod": "vite build --mode production &&vue-tsc --noEmit",
+    "preview": "vite preview",
+    "lint": "eslint src/**/*.{ts,js,vue} --fix",
+    "prepare": "husky install",
+    "prettier": "prettier --write ."
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://gitee.com/JavaLionLi/plus-ui.git"
+  },
+  "dependencies": {
+    "@element-plus/icons-vue": "2.1.0",
+    "@vueup/vue-quill": "1.2.0",
+    "@vueuse/core": "9.5.0",
+    "animate.css": "4.1.1",
+    "await-to-js": "^3.0.0",
+    "axios": "^1.3.4",
+    "echarts": "5.4.0",
+    "element-plus": "2.2.27",
+    "file-saver": "2.0.5",
+    "fuse.js": "6.6.2",
+    "js-cookie": "3.0.1",
+    "jsencrypt": "3.3.1",
+    "crypto-js": "^4.1.1",
+    "nprogress": "0.2.0",
+    "path-browserify": "1.0.1",
+    "path-to-regexp": "6.2.0",
+    "pinia": "2.0.22",
+    "screenfull": "6.0.0",
+    "vform3-builds": "3.0.8",
+    "vue": "3.2.45",
+    "vue-cropper": "1.0.3",
+    "vue-i18n": "9.2.2",
+    "vue-router": "4.1.4",
+    "vue-types": "^5.0.3"
+  },
+  "devDependencies": {
+    "@iconify/json": "^2.2.40",
+    "@intlify/unplugin-vue-i18n": "0.8.2",
+    "@types/crypto-js": "^4.1.1",
+    "@types/file-saver": "2.0.5",
+    "@types/js-cookie": "3.0.3",
+    "@types/node": "18.14.2",
+    "@types/nprogress": "0.2.0",
+    "@types/path-browserify": "^1.0.0",
+    "@typescript-eslint/eslint-plugin": "5.56.0",
+    "@typescript-eslint/parser": "5.56.0",
+    "@unocss/preset-attributify": "^0.50.6",
+    "@unocss/preset-icons": "^0.50.6",
+    "@unocss/preset-uno": "^0.50.6",
+    "@vitejs/plugin-vue": "4.0.0",
+    "@vue/compiler-sfc": "3.2.45",
+    "autoprefixer": "10.4.14",
+    "eslint": "8.36.0",
+    "eslint-config-prettier": "8.8.0",
+    "eslint-plugin-prettier": "4.2.1",
+    "eslint-plugin-vue": "9.9.0",
+    "fast-glob": "^3.2.11",
+    "husky": "7.0.4",
+    "postcss": "^8.4.21",
+    "prettier": "2.8.6",
+    "sass": "1.56.1",
+    "typescript": "4.9.5",
+    "unocss": "^0.50.6",
+    "unplugin-auto-import": "0.13.0",
+    "unplugin-icons": "0.15.1",
+    "unplugin-vue-components": "0.23.0",
+    "vite": "4.3.1",
+    "vite-plugin-compression": "0.5.1",
+    "vite-plugin-svg-icons": "2.0.1",
+    "unplugin-vue-setup-extend-plus": "0.4.9",
+    "vitest": "^0.29.7",
+    "vue-eslint-parser": "9.1.0",
+    "vue-tsc": "0.35.0"
+  },
+  "__npminstall_done": false
+}

TEMPAT SAMPAH
public/favicon.ico


+ 21 - 0
src/App.vue

@@ -0,0 +1,21 @@
+<template>
+  <el-config-provider :locale="appStore.locale" :size="size">
+    <router-view />
+  </el-config-provider>
+</template>
+
+<script setup lang="ts">
+import useSettingsStore from '@/store/modules/settings'
+import { handleThemeStyle } from '@/utils/theme'
+import useAppStore from '@/store/modules/app';
+
+const appStore = useAppStore();
+const size = computed(() => appStore.size as any);
+
+onMounted(() => {
+  nextTick(() => {
+    // 初始化主题样式
+    handleThemeStyle(useSettingsStore().theme)
+  })
+})
+</script>

+ 48 - 0
src/animate.ts

@@ -0,0 +1,48 @@
+// 前缀
+const animatePrefix = 'animate__animated ';
+// 开启随机动画 随机动画值
+const animateList: string[] = [
+  animatePrefix + 'animate__pulse',
+  animatePrefix + 'animate__rubberBand',
+  animatePrefix + 'animate__bounceIn',
+  animatePrefix + 'animate__bounceInLeft',
+  animatePrefix + 'animate__fadeIn',
+  animatePrefix + 'animate__fadeInLeft',
+  animatePrefix + 'animate__fadeInDown',
+  animatePrefix + 'animate__fadeInUp',
+  animatePrefix + 'animate__flipInX',
+  animatePrefix + 'animate__lightSpeedInLeft',
+  animatePrefix + 'animate__rotateInDownLeft',
+  animatePrefix + 'animate__rollIn',
+  animatePrefix + 'animate__rotateInDownLeft',
+  animatePrefix + 'animate__zoomIn',
+  animatePrefix + 'animate__zoomInDown',
+  animatePrefix + 'animate__slideInLeft',
+  animatePrefix + 'animate__lightSpeedIn'
+];
+// 关闭随机动画后的默认效果
+const defaultAnimate = animatePrefix + 'animate__fadeIn';
+// 搜索隐藏显示动画
+const searchAnimate = {
+  enter: '',
+  leave: ''
+};
+
+// 菜单搜索动画
+const menuSearchAnimate = {
+  enter: animatePrefix + 'animate__fadeIn',
+  leave: animatePrefix + 'animate__fadeOut'
+};
+// logo动画
+const logoAnimate = {
+  enter: animatePrefix + 'animate__fadeIn',
+  leave: animatePrefix + 'animate__fadeOut'
+};
+
+export default {
+  animateList,
+  defaultAnimate,
+  searchAnimate,
+  menuSearchAnimate,
+  logoAnimate
+};

+ 62 - 0
src/api/demo/demo/index.ts

@@ -0,0 +1,62 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { DemoVO, DemoForm, DemoQuery } from '@/api/demo/demo/types';
+
+/**
+ * 查询测试单列表
+ * @param query
+ * @returns {*}
+ */
+export const listDemo = (query?: DemoQuery): AxiosPromise<DemoVO[]> => {
+  return request({
+    url: '/demo/demo/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询测试单详细
+ * @param id
+ */
+export const getDemo = (id: string | number): AxiosPromise<DemoVO> => {
+  return request({
+    url: '/demo/demo/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增测试单
+ * @param data
+ */
+export const addDemo = (data: DemoForm) => {
+  return request({
+    url: '/demo/demo',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改测试单
+ * @param data
+ */
+export const updateDemo = (data: DemoForm) => {
+  return request({
+    url: '/demo/demo',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除测试单
+ * @param id
+ */
+export const delDemo = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/demo/demo/' + id,
+    method: 'delete'
+  });
+};

+ 90 - 0
src/api/demo/demo/types.ts

@@ -0,0 +1,90 @@
+export interface DemoVO {
+  /**
+   * 主键
+   */
+  id: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId: string | number;
+
+  /**
+   * 用户id
+   */
+  userId: string | number;
+
+  /**
+   * 排序号
+   */
+  orderNum: number;
+
+  /**
+   * key键
+   */
+  testKey: string;
+
+  /**
+   * 值
+   */
+  value: string;
+}
+
+export interface DemoForm extends BaseEntity {
+  /**
+   * 主键
+   */
+  id?: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 排序号
+   */
+  orderNum?: number;
+
+  /**
+   * key键
+   */
+  testKey?: string;
+
+  /**
+   * 值
+   */
+  value?: string;
+}
+
+export interface DemoQuery extends PageQuery {
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 排序号
+   */
+  orderNum?: number;
+
+  /**
+   * key键
+   */
+  testKey?: string;
+
+  /**
+   * 值
+   */
+  value?: string;
+}

+ 62 - 0
src/api/demo/tree/index.ts

@@ -0,0 +1,62 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { TreeVO, TreeForm, TreeQuery } from '@/api/demo/tree/types';
+
+/**
+ * 查询测试树列表
+ * @param query
+ * @returns {*}
+ */
+export const listTree = (query?: TreeQuery): AxiosPromise<TreeVO[]> => {
+  return request({
+    url: '/demo/tree/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询测试树详细
+ * @param id
+ */
+export const getTree = (id: string | number): AxiosPromise<TreeVO> => {
+  return request({
+    url: '/demo/tree/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增测试树
+ * @param data
+ */
+export const addTree = (data: TreeForm) => {
+  return request({
+    url: '/demo/tree',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改测试树
+ * @param data
+ */
+export const updateTree = (data: TreeForm) => {
+  return request({
+    url: '/demo/tree',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除测试树
+ * @param id
+ */
+export const delTree = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/demo/tree/' + id,
+    method: 'delete'
+  });
+};

+ 80 - 0
src/api/demo/tree/types.ts

@@ -0,0 +1,80 @@
+export interface TreeVO {
+  /**
+   * 主键
+   */
+  id: string | number;
+
+  /**
+   * 父id
+   */
+  parentId: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId: string | number;
+
+  /**
+   * 用户id
+   */
+  userId: string | number;
+
+  /**
+   * 值
+   */
+  treeName: string;
+
+  /**
+   * 子对象
+   */
+  children: TreeVO[];
+}
+
+export interface TreeForm extends BaseEntity {
+  /**
+   * 主键
+   */
+  id?: string | number;
+
+  /**
+   * 父id
+   */
+  parentId?: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 值
+   */
+  treeName?: string;
+}
+
+export interface TreeQuery {
+  /**
+   * 父id
+   */
+  parentId?: string | number;
+
+  /**
+   * 部门id
+   */
+  deptId?: string | number;
+
+  /**
+   * 用户id
+   */
+  userId?: string | number;
+
+  /**
+   * 值
+   */
+  treeName?: string;
+}

+ 100 - 0
src/api/login.ts

@@ -0,0 +1,100 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { LoginData, LoginResult, VerifyCodeResult, TenantInfo } from './types';
+import { UserInfo } from '@/api/system/user/types';
+
+// pc端固定客户端授权id
+const clientId = import.meta.env.VITE_APP_CLIENT_ID;
+
+/**
+ * @param data {LoginData}
+ * @returns
+ */
+export function login(data: LoginData): AxiosPromise<LoginResult> {
+  const params = {
+    ...data,
+    clientId: data.clientId || clientId,
+    grantType: data.grantType || 'password'
+  };
+  return request({
+    url: '/auth/login',
+    headers: {
+      isToken: false,
+      isEncrypt: true
+    },
+    method: 'post',
+    data: params
+  });
+}
+
+// 注册方法
+export function register(data: any) {
+  return request({
+    url: '/auth/register',
+    headers: {
+      isToken: false,
+      isEncrypt: true
+    },
+    method: 'post',
+    data: data
+  });
+}
+
+/**
+ * 注销
+ */
+export function logout() {
+  return request({
+    url: '/auth/logout',
+    method: 'post'
+  });
+}
+
+/**
+ * 获取验证码
+ */
+export function getCodeImg(): AxiosPromise<VerifyCodeResult> {
+  return request({
+    url: '/auth/code',
+    headers: {
+      isToken: false
+    },
+    method: 'get',
+    timeout: 20000
+  });
+}
+
+/**
+ * 第三方登录
+ */
+export function callback(data: LoginData): AxiosPromise<any> {
+  const LoginData = {
+    ...data,
+    clientId: clientId,
+    grantType: 'social'
+  };
+  return request({
+    url: '/auth/social/callback',
+    method: 'post',
+    data: LoginData
+  });
+}
+
+// 获取用户详细信息
+export function getInfo(): AxiosPromise<UserInfo> {
+  return request({
+    url: '/system/user/getInfo',
+    method: 'get'
+  });
+}
+
+// 获取租户列表
+export function getTenantList(): AxiosPromise<TenantInfo> {
+  return request({
+    url: '/auth/tenant/list',
+    headers: {
+      isToken: false
+    },
+    method: 'get'
+  });
+}

+ 11 - 0
src/api/menu.ts

@@ -0,0 +1,11 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { RouteRecordRaw } from 'vue-router';
+
+// 获取路由
+export function getRouters(): AxiosPromise<RouteRecordRaw[]> {
+  return request({
+    url: '/system/menu/getRouters',
+    method: 'get'
+  });
+}

+ 59 - 0
src/api/monitor/cache/index.ts

@@ -0,0 +1,59 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { CacheVO } from './types';
+
+// 查询缓存详细
+export function getCache(): AxiosPromise<CacheVO> {
+  return request({
+    url: '/monitor/cache',
+    method: 'get'
+  });
+}
+
+// 查询缓存名称列表
+export function listCacheName() {
+  return request({
+    url: '/monitor/cache/getNames',
+    method: 'get'
+  });
+}
+
+// 查询缓存键名列表
+export function listCacheKey(cacheName: string) {
+  return request({
+    url: '/monitor/cache/getKeys/' + cacheName,
+    method: 'get'
+  });
+}
+
+// 查询缓存内容
+export function getCacheValue(cacheName: string, cacheKey: string) {
+  return request({
+    url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey,
+    method: 'get'
+  });
+}
+
+// 清理指定名称缓存
+export function clearCacheName(cacheName: string) {
+  return request({
+    url: '/monitor/cache/clearCacheName/' + cacheName,
+    method: 'delete'
+  });
+}
+
+// 清理指定键名缓存
+export function clearCacheKey(cacheName: string, cacheKey: string) {
+  return request({
+    url: '/monitor/cache/clearCacheKey/' + cacheName + '/' + cacheKey,
+    method: 'delete'
+  });
+}
+
+// 清理全部缓存
+export function clearCacheAll() {
+  return request({
+    url: '/monitor/cache/clearCacheAll',
+    method: 'delete'
+  });
+}

+ 7 - 0
src/api/monitor/cache/types.ts

@@ -0,0 +1,7 @@
+export interface CacheVO {
+  commandStats: Array<{ name: string; value: string }>;
+
+  dbSize: number;
+
+  info: { [key: string]: string };
+}

+ 36 - 0
src/api/monitor/loginInfo/index.ts

@@ -0,0 +1,36 @@
+import request from '@/utils/request';
+import { LoginInfoQuery, LoginInfoVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询登录日志列表
+export function list(query: LoginInfoQuery): AxiosPromise<LoginInfoVO[]> {
+  return request({
+    url: '/monitor/logininfor/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 删除登录日志
+export function delLoginInfo(infoId: string | number | Array<string | number>) {
+  return request({
+    url: '/monitor/logininfor/' + infoId,
+    method: 'delete'
+  });
+}
+
+// 解锁用户登录状态
+export function unlockLoginInfo(userName: string | Array<string>) {
+  return request({
+    url: '/monitor/logininfor/unlock/' + userName,
+    method: 'get'
+  });
+}
+
+// 清空登录日志
+export function cleanLoginInfo() {
+  return request({
+    url: '/monitor/logininfor/clean',
+    method: 'delete'
+  });
+}

+ 20 - 0
src/api/monitor/loginInfo/types.ts

@@ -0,0 +1,20 @@
+export interface LoginInfoVO {
+  infoId: string | number;
+  tenantId: string | number;
+  userName: string;
+  status: string;
+  ipaddr: string;
+  loginLocation: string;
+  browser: string;
+  os: string;
+  msg: string;
+  loginTime: string;
+}
+
+export interface LoginInfoQuery extends PageQuery {
+  ipaddr: string;
+  userName: string;
+  status: string;
+  orderByColumn: string;
+  isAsc: string;
+}

+ 20 - 0
src/api/monitor/online/index.ts

@@ -0,0 +1,20 @@
+import request from '@/utils/request';
+import { OnlineQuery, OnlineVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询在线用户列表
+export function list(query: OnlineQuery): AxiosPromise<OnlineVO[]> {
+  return request({
+    url: '/monitor/online/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 强退用户
+export function forceLogout(tokenId: string) {
+  return request({
+    url: '/monitor/online/' + tokenId,
+    method: 'delete'
+  });
+}

+ 15 - 0
src/api/monitor/online/types.ts

@@ -0,0 +1,15 @@
+export interface OnlineQuery extends PageQuery {
+  ipaddr: string;
+  userName: string;
+}
+
+export interface OnlineVO extends BaseEntity {
+  tokenId: string;
+  deptName: string;
+  userName: string;
+  ipaddr: string;
+  loginLocation: string;
+  browser: string;
+  os: string;
+  loginTime: number;
+}

+ 28 - 0
src/api/monitor/operlog/index.ts

@@ -0,0 +1,28 @@
+import request from '@/utils/request';
+import { OperLogQuery, OperLogVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询操作日志列表
+export function list(query: OperLogQuery): AxiosPromise<OperLogVO[]> {
+  return request({
+    url: '/monitor/operlog/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 删除操作日志
+export function delOperlog(operId: string | number | Array<string | number>) {
+  return request({
+    url: '/monitor/operlog/' + operId,
+    method: 'delete'
+  });
+}
+
+// 清空操作日志
+export function cleanOperlog() {
+  return request({
+    url: '/monitor/operlog/clean',
+    method: 'delete'
+  });
+}

+ 53 - 0
src/api/monitor/operlog/types.ts

@@ -0,0 +1,53 @@
+export interface OperLogQuery extends PageQuery {
+  operIp: string;
+  title: string;
+  operName: string;
+  businessType: string;
+  status: string;
+  orderByColumn: string;
+  isAsc: string;
+}
+
+export interface OperLogVO extends BaseEntity {
+  operId: string | number;
+  tenantId: string;
+  title: string;
+  businessType: number;
+  businessTypes: number[] | undefined;
+  method: string;
+  requestMethod: string;
+  operatorType: number;
+  operName: string;
+  deptName: string;
+  operUrl: string;
+  operIp: string;
+  operLocation: string;
+  operParam: string;
+  jsonResult: string;
+  status: number;
+  errorMsg: string;
+  operTime: string;
+  costTime: number;
+}
+
+export interface OperLogForm {
+  operId: number | string | undefined;
+  tenantId: string | number | undefined;
+  title: string;
+  businessType: number;
+  businessTypes: number[] | undefined;
+  method: string;
+  requestMethod: string;
+  operatorType: number;
+  operName: string;
+  deptName: string;
+  operUrl: string;
+  operIp: string;
+  operLocation: string;
+  operParam: string;
+  jsonResult: string;
+  status: number;
+  errorMsg: string;
+  operTime: string;
+  costTime: number;
+}

+ 80 - 0
src/api/system/client/index.ts

@@ -0,0 +1,80 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ClientVO, ClientForm, ClientQuery } from '@/api/system/client/types';
+
+/**
+ * 查询客户端管理列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listClient = (query?: ClientQuery): AxiosPromise<ClientVO[]> => {
+  return request({
+    url: '/system/client/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询客户端管理详细
+ * @param id
+ */
+export const getClient = (id: string | number): AxiosPromise<ClientVO> => {
+  return request({
+    url: '/system/client/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增客户端管理
+ * @param data
+ */
+export const addClient = (data: ClientForm) => {
+  return request({
+    url: '/system/client',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改客户端管理
+ * @param data
+ */
+export const updateClient = (data: ClientForm) => {
+  return request({
+    url: '/system/client',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除客户端管理
+ * @param id
+ */
+export const delClient = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/system/client/' + id,
+    method: 'delete'
+  });
+};
+
+/**
+ * 状态修改
+ * @param id ID
+ * @param status 状态
+ */
+export function changeStatus(id: number | string, status: string) {
+  const data = {
+    id,
+    status
+  };
+  return request({
+    url: '/system/client/changeStatus',
+    method: 'put',
+    data: data
+  });
+}

+ 135 - 0
src/api/system/client/types.ts

@@ -0,0 +1,135 @@
+export interface ClientVO {
+  /**
+   * id
+   */
+  id: string | number;
+
+  /**
+   * 客户端id
+   */
+  clientId: string | number;
+
+  /**
+   * 客户端key
+   */
+  clientKey: string;
+
+  /**
+   * 客户端秘钥
+   */
+  clientSecret: string;
+
+  /**
+   * 授权类型
+   */
+  grantTypeList: string[];
+
+  /**
+   * 设备类型
+   */
+  deviceType: string;
+
+  /**
+   * token活跃超时时间
+   */
+  activeTimeout: number;
+
+  /**
+   * token固定超时
+   */
+  timeout: number;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status: string;
+}
+
+export interface ClientForm extends BaseEntity {
+  /**
+   * id
+   */
+  id?: string | number;
+
+  /**
+   * 客户端id
+   */
+  clientId?: string | number;
+
+  /**
+   * 客户端key
+   */
+  clientKey?: string;
+
+  /**
+   * 客户端秘钥
+   */
+  clientSecret?: string;
+
+  /**
+   * 授权类型
+   */
+  grantTypeList?: string[];
+
+  /**
+   * 设备类型
+   */
+  deviceType?: string;
+
+  /**
+   * token活跃超时时间
+   */
+  activeTimeout?: number;
+
+  /**
+   * token固定超时
+   */
+  timeout?: number;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+}
+
+export interface ClientQuery extends PageQuery {
+  /**
+   * 客户端id
+   */
+  clientId?: string | number;
+
+  /**
+   * 客户端key
+   */
+  clientKey?: string;
+
+  /**
+   * 客户端秘钥
+   */
+  clientSecret?: string;
+
+  /**
+   * 授权类型
+   */
+  grantType?: string;
+
+  /**
+   * 设备类型
+   */
+  deviceType?: string;
+
+  /**
+   * token活跃超时时间
+   */
+  activeTimeout?: number;
+
+  /**
+   * token固定超时
+   */
+  timeout?: number;
+
+  /**
+   * 状态(0正常 1停用)
+   */
+  status?: string;
+}

+ 74 - 0
src/api/system/config/index.ts

@@ -0,0 +1,74 @@
+import request from '@/utils/request';
+import { ConfigForm, ConfigQuery, ConfigVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询参数列表
+export function listConfig(query: ConfigQuery): AxiosPromise<ConfigVO[]> {
+  return request({
+    url: '/system/config/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询参数详细
+export function getConfig(configId: string | number): AxiosPromise<ConfigVO> {
+  return request({
+    url: '/system/config/' + configId,
+    method: 'get'
+  });
+}
+
+// 根据参数键名查询参数值
+export function getConfigKey(configKey: string): AxiosPromise<String> {
+  return request({
+    url: '/system/config/configKey/' + configKey,
+    method: 'get'
+  });
+}
+
+// 新增参数配置
+export function addConfig(data: ConfigForm) {
+  return request({
+    url: '/system/config',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改参数配置
+export function updateConfig(data: ConfigForm) {
+  return request({
+    url: '/system/config',
+    method: 'put',
+    data: data
+  });
+}
+
+// 修改参数配置
+export function updateConfigByKey(key: string, value: any) {
+  return request({
+    url: '/system/config/updateByKey',
+    method: 'put',
+    data: {
+      configKey: key,
+      configValue: value
+    }
+  });
+}
+
+// 删除参数配置
+export function delConfig(configId: string | number | Array<string | number>) {
+  return request({
+    url: '/system/config/' + configId,
+    method: 'delete'
+  });
+}
+
+// 刷新参数缓存
+export function refreshCache() {
+  return request({
+    url: '/system/config/refreshCache',
+    method: 'delete'
+  });
+}

+ 23 - 0
src/api/system/config/types.ts

@@ -0,0 +1,23 @@
+export interface ConfigVO extends BaseEntity {
+  configId: number | string;
+  configName: string;
+  configKey: string;
+  configValue: string;
+  configType: string;
+  remark: string;
+}
+
+export interface ConfigForm {
+  configId: number | string | undefined;
+  configName: string;
+  configKey: string;
+  configValue: string;
+  configType: string;
+  remark: string;
+}
+
+export interface ConfigQuery extends PageQuery {
+  configName: string;
+  configKey: string;
+  configType: string;
+}

+ 62 - 0
src/api/system/dept/index.ts

@@ -0,0 +1,62 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { DeptForm, DeptQuery, DeptVO } from './types';
+
+// 查询部门列表
+export const listDept = (query?: DeptQuery) => {
+  return request({
+    url: '/system/dept/list',
+    method: 'get',
+    params: query
+  });
+};
+
+// 查询部门列表(排除节点)
+export const listDeptExcludeChild = (deptId: string | number): AxiosPromise<DeptVO[]> => {
+  return request({
+    url: '/system/dept/list/exclude/' + deptId,
+    method: 'get'
+  });
+};
+
+// 查询部门详细
+export const getDept = (deptId: string | number): AxiosPromise<DeptVO> => {
+  return request({
+    url: '/system/dept/' + deptId,
+    method: 'get'
+  });
+};
+
+// 查询部门下拉树结构
+export const treeselect = (): AxiosPromise<DeptVO[]> => {
+  return request({
+    url: '/system/dept/treeselect',
+    method: 'get'
+  });
+};
+
+// 新增部门
+export const addDept = (data: DeptForm) => {
+  return request({
+    url: '/system/dept',
+    method: 'post',
+    data: data
+  });
+};
+
+// 修改部门
+export const updateDept = (data: DeptForm) => {
+  return request({
+    url: '/system/dept',
+    method: 'put',
+    data: data
+  });
+};
+
+// 删除部门
+export const delDept = (deptId: number | string) => {
+  return request({
+    url: '/system/dept/' + deptId,
+    method: 'delete'
+  });
+};

+ 45 - 0
src/api/system/dept/types.ts

@@ -0,0 +1,45 @@
+/**
+ * 部门查询参数
+ */
+export interface DeptQuery extends PageQuery {
+  deptName?: string;
+  status?: number;
+}
+
+/**
+ * 部门类型
+ */
+export interface DeptVO extends BaseEntity {
+  id: number | string;
+  parentName: string;
+  parentId: number | string;
+  children: DeptVO[];
+  deptId: number | string;
+  deptName: string;
+  orderNum: number;
+  leader: string;
+  phone: string;
+  email: string;
+  status: string;
+  delFlag: string;
+  ancestors: string;
+  menuId: string | number;
+}
+
+/**
+ * 部门表单类型
+ */
+export interface DeptForm {
+  parentName?: string;
+  parentId?: number | string;
+  children?: DeptForm[];
+  deptId?: number | string;
+  deptName?: string;
+  orderNum?: number;
+  leader?: string;
+  phone?: string;
+  email?: string;
+  status?: string;
+  delFlag?: string;
+  ancestors?: string;
+}

+ 53 - 0
src/api/system/dict/data/index.ts

@@ -0,0 +1,53 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { DictDataForm, DictDataQuery, DictDataVO } from './types';
+// 根据字典类型查询字典数据信息
+export function getDicts(dictType: string): AxiosPromise<DictDataVO[]> {
+  return request({
+    url: '/system/dict/data/type/' + dictType,
+    method: 'get'
+  });
+}
+
+// 查询字典数据列表
+export function listData(query: DictDataQuery): AxiosPromise<DictDataVO[]> {
+  return request({
+    url: '/system/dict/data/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询字典数据详细
+export function getData(dictCode: string | number): AxiosPromise<DictDataVO> {
+  return request({
+    url: '/system/dict/data/' + dictCode,
+    method: 'get'
+  });
+}
+
+// 新增字典数据
+export function addData(data: DictDataForm) {
+  return request({
+    url: '/system/dict/data',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改字典数据
+export function updateData(data: DictDataForm) {
+  return request({
+    url: '/system/dict/data',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除字典数据
+export function delData(dictCode: string | number | Array<string | number>) {
+  return request({
+    url: '/system/dict/data/' + dictCode,
+    method: 'delete'
+  });
+}

+ 26 - 0
src/api/system/dict/data/types.ts

@@ -0,0 +1,26 @@
+export interface DictDataQuery extends PageQuery {
+  dictName: string;
+  dictType: string;
+  dictLabel: string;
+}
+
+export interface DictDataVO extends BaseEntity {
+  dictCode: string;
+  dictLabel: string;
+  dictValue: string;
+  cssClass: string;
+  listClass: ElTagType;
+  dictSort: number;
+  remark: string;
+}
+
+export interface DictDataForm {
+  dictType?: string;
+  dictCode: string | undefined;
+  dictLabel: string;
+  dictValue: string;
+  cssClass: string;
+  listClass: ElTagType;
+  dictSort: number;
+  remark: string;
+}

+ 62 - 0
src/api/system/dict/type/index.ts

@@ -0,0 +1,62 @@
+import request from '@/utils/request';
+import { DictTypeForm, DictTypeVO, DictTypeQuery } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询字典类型列表
+export function listType(query: DictTypeQuery): AxiosPromise<DictTypeVO[]> {
+  return request({
+    url: '/system/dict/type/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询字典类型详细
+export function getType(dictId: number | string): AxiosPromise<DictTypeVO> {
+  return request({
+    url: '/system/dict/type/' + dictId,
+    method: 'get'
+  });
+}
+
+// 新增字典类型
+export function addType(data: DictTypeForm) {
+  return request({
+    url: '/system/dict/type',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改字典类型
+export function updateType(data: DictTypeForm) {
+  return request({
+    url: '/system/dict/type',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除字典类型
+export function delType(dictId: string | number | Array<string | number>) {
+  return request({
+    url: '/system/dict/type/' + dictId,
+    method: 'delete'
+  });
+}
+
+// 刷新字典缓存
+export function refreshCache() {
+  return request({
+    url: '/system/dict/type/refreshCache',
+    method: 'delete'
+  });
+}
+
+// 获取字典选择框列表
+export function optionselect(): AxiosPromise<DictTypeVO[]> {
+  return request({
+    url: '/system/dict/type/optionselect',
+    method: 'get'
+  });
+}

+ 18 - 0
src/api/system/dict/type/types.ts

@@ -0,0 +1,18 @@
+export interface DictTypeVO extends BaseEntity {
+  dictId: number | string;
+  dictName: string;
+  dictType: string;
+  remark: string;
+}
+
+export interface DictTypeForm {
+  dictId: number | string | undefined;
+  dictName: string;
+  dictType: string;
+  remark: string;
+}
+
+export interface DictTypeQuery extends PageQuery {
+  dictName: string;
+  dictType: string;
+}

+ 70 - 0
src/api/system/menu/index.ts

@@ -0,0 +1,70 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { MenuQuery, MenuVO, MenuForm, MenuTreeOption, RoleMenuTree } from './types';
+
+// 查询菜单列表
+export const listMenu = (query?: MenuQuery): AxiosPromise<MenuVO[]> => {
+  return request({
+    url: '/system/menu/list',
+    method: 'get',
+    params: query
+  });
+};
+
+// 查询菜单详细
+export const getMenu = (menuId: string | number): AxiosPromise<MenuVO> => {
+  return request({
+    url: '/system/menu/' + menuId,
+    method: 'get'
+  });
+};
+
+// 查询菜单下拉树结构
+export const treeselect = (): AxiosPromise<MenuTreeOption[]> => {
+  return request({
+    url: '/system/menu/treeselect',
+    method: 'get'
+  });
+};
+
+// 根据角色ID查询菜单下拉树结构
+export const roleMenuTreeselect = (roleId: string | number): AxiosPromise<RoleMenuTree> => {
+  return request({
+    url: '/system/menu/roleMenuTreeselect/' + roleId,
+    method: 'get'
+  });
+};
+
+// 根据角色ID查询菜单下拉树结构
+export const tenantPackageMenuTreeselect = (packageId: string | number): AxiosPromise<RoleMenuTree> => {
+  return request({
+    url: '/system/menu/tenantPackageMenuTreeselect/' + packageId,
+    method: 'get'
+  });
+};
+
+// 新增菜单
+export const addMenu = (data: MenuForm) => {
+  return request({
+    url: '/system/menu',
+    method: 'post',
+    data: data
+  });
+};
+
+// 修改菜单
+export const updateMenu = (data: MenuForm) => {
+  return request({
+    url: '/system/menu',
+    method: 'put',
+    data: data
+  });
+};
+
+// 删除菜单
+export const delMenu = (menuId: string | number) => {
+  return request({
+    url: '/system/menu/' + menuId,
+    method: 'delete'
+  });
+};

+ 69 - 0
src/api/system/menu/types.ts

@@ -0,0 +1,69 @@
+import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
+
+/**
+ * 菜单树形结构类型
+ */
+export interface MenuTreeOption {
+  id: string | number;
+  label: string;
+  parentId: string | number;
+  weight: number;
+  children?: MenuTreeOption[];
+}
+
+export interface RoleMenuTree {
+  menus: MenuTreeOption[];
+  checkedKeys: string[];
+}
+
+/**
+ * 菜单查询参数类型
+ */
+export interface MenuQuery {
+  keywords?: string;
+  menuName?: string;
+  status?: string;
+}
+
+/**
+ * 菜单视图对象类型
+ */
+export interface MenuVO extends BaseEntity {
+  parentName: string;
+  parentId: string | number;
+  children: MenuVO[];
+  menuId: string | number;
+  menuName: string;
+  orderNum: number;
+  path: string;
+  component: string;
+  queryParam: string;
+  isFrame: string;
+  isCache: string;
+  menuType: MenuTypeEnum;
+  visible: string;
+  status: string;
+  icon: string;
+  remark: string;
+}
+
+export interface MenuForm {
+  parentName?: string;
+  parentId?: string | number;
+  children?: MenuForm[];
+  menuId?: string | number;
+  menuName: string;
+  orderNum: number;
+  path: string;
+  component?: string;
+  queryParam?: string;
+  isFrame?: string;
+  isCache?: string;
+  menuType?: MenuTypeEnum;
+  visible?: string;
+  status?: string;
+  icon?: string;
+  remark?: string;
+  query?: string;
+  perms?: string;
+}

+ 45 - 0
src/api/system/notice/index.ts

@@ -0,0 +1,45 @@
+import request from '@/utils/request';
+import { NoticeForm, NoticeQuery, NoticeVO } from './types';
+import { AxiosPromise } from 'axios';
+// 查询公告列表
+export function listNotice(query: NoticeQuery): AxiosPromise<NoticeVO[]> {
+  return request({
+    url: '/system/notice/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询公告详细
+export function getNotice(noticeId: string | number): AxiosPromise<NoticeVO> {
+  return request({
+    url: '/system/notice/' + noticeId,
+    method: 'get'
+  });
+}
+
+// 新增公告
+export function addNotice(data: NoticeForm) {
+  return request({
+    url: '/system/notice',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改公告
+export function updateNotice(data: NoticeForm) {
+  return request({
+    url: '/system/notice',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除公告
+export function delNotice(noticeId: string | number | Array<string | number>) {
+  return request({
+    url: '/system/notice/' + noticeId,
+    method: 'delete'
+  });
+}

+ 26 - 0
src/api/system/notice/types.ts

@@ -0,0 +1,26 @@
+export interface NoticeVO extends BaseEntity {
+  noticeId: number;
+  noticeTitle: string;
+  noticeType: string;
+  noticeContent: string;
+  status: string;
+  remark: string;
+  createByName: string;
+}
+
+export interface NoticeQuery extends PageQuery {
+  noticeTitle: string;
+  createByName: string;
+  status: string;
+  noticeType: string;
+}
+
+export interface NoticeForm {
+  noticeId: number | string | undefined;
+  noticeTitle: string;
+  noticeType: string;
+  noticeContent: string;
+  status: string;
+  remark: string;
+  createByName: string;
+}

+ 36 - 0
src/api/system/oss/index.ts

@@ -0,0 +1,36 @@
+import request from '@/utils/request';
+import { OssQuery, OssVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询OSS对象存储列表
+export function listOss(query: OssQuery): AxiosPromise<OssVO[]> {
+  return request({
+    url: '/resource/oss/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询OSS对象基于id串
+export function listByIds(ossId: string | number): AxiosPromise<OssVO[]> {
+  return request({
+    url: '/resource/oss/listByIds/' + ossId,
+    method: 'get'
+  });
+}
+
+// 删除OSS对象存储
+export function delOss(ossId: string | number | Array<string | number>) {
+  return request({
+    url: '/resource/oss/' + ossId,
+    method: 'delete'
+  });
+}
+
+// 删除OSS对象存储
+export function removeOss(ossId: string | number | Array<string | number>) {
+  return request({
+    url: '/system/file/delete/' + ossId,
+    method: 'delete'
+  });
+}

+ 22 - 0
src/api/system/oss/types.ts

@@ -0,0 +1,22 @@
+export interface OssVO extends BaseEntity {
+  ossId: string | number;
+  fileName: string;
+  originalName: string;
+  fileSuffix: string;
+  url: string;
+  createByName: string;
+  service: string;
+}
+
+export interface OssQuery extends PageQuery {
+  fileName: string;
+  originalName: string;
+  fileSuffix: string;
+  createTime: string;
+  service: string;
+  orderByColumn: string;
+  isAsc: string;
+}
+export interface OssForm {
+  file: undefined | string;
+}

+ 60 - 0
src/api/system/ossConfig/index.ts

@@ -0,0 +1,60 @@
+import request from '@/utils/request';
+import { OssConfigForm, OssConfigQuery, OssConfigVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询对象存储配置列表
+export function listOssConfig(query: OssConfigQuery): AxiosPromise<OssConfigVO[]> {
+  return request({
+    url: '/resource/oss/config/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询对象存储配置详细
+export function getOssConfig(ossConfigId: string | number): AxiosPromise<OssConfigVO> {
+  return request({
+    url: '/resource/oss/config/' + ossConfigId,
+    method: 'get'
+  });
+}
+
+// 新增对象存储配置
+export function addOssConfig(data: OssConfigForm) {
+  return request({
+    url: '/resource/oss/config',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改对象存储配置
+export function updateOssConfig(data: OssConfigForm) {
+  return request({
+    url: '/resource/oss/config',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除对象存储配置
+export function delOssConfig(ossConfigId: string | number | Array<string | number>) {
+  return request({
+    url: '/resource/oss/config/' + ossConfigId,
+    method: 'delete'
+  });
+}
+
+// 对象存储状态修改
+export function changeOssConfigStatus(ossConfigId: string | number, status: string, configKey: string) {
+  const data = {
+    ossConfigId,
+    status,
+    configKey
+  };
+  return request({
+    url: '/resource/oss/config/changeStatus',
+    method: 'put',
+    data: data
+  });
+}

+ 38 - 0
src/api/system/ossConfig/types.ts

@@ -0,0 +1,38 @@
+export interface OssConfigVO extends BaseEntity {
+  ossConfigId: number | string;
+  configKey: string;
+  accessKey: string;
+  secretKey: string;
+  bucketName: string;
+  prefix: string;
+  endpoint: string;
+  domain: string;
+  isHttps: string;
+  region: string;
+  status: string;
+  ext1: string;
+  remark: string;
+  accessPolicy: string;
+}
+
+export interface OssConfigQuery extends PageQuery {
+  configKey: string;
+  bucketName: string;
+  status: string;
+}
+
+export interface OssConfigForm {
+  ossConfigId: string | number | undefined;
+  configKey: string;
+  accessKey: string;
+  secretKey: string;
+  bucketName: string;
+  prefix: string;
+  endpoint: string;
+  domain: string;
+  isHttps: string;
+  accessPolicy: string;
+  region: string;
+  status: string;
+  remark: string;
+}

+ 46 - 0
src/api/system/post/index.ts

@@ -0,0 +1,46 @@
+import request from '@/utils/request';
+import { PostForm, PostQuery, PostVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询岗位列表
+export function listPost(query: PostQuery): AxiosPromise<PostVO[]> {
+  return request({
+    url: '/system/post/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询岗位详细
+export function getPost(postId: string | number): AxiosPromise<PostVO> {
+  return request({
+    url: '/system/post/' + postId,
+    method: 'get'
+  });
+}
+
+// 新增岗位
+export function addPost(data: PostForm) {
+  return request({
+    url: '/system/post',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改岗位
+export function updatePost(data: PostForm) {
+  return request({
+    url: '/system/post',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除岗位
+export function delPost(postId: string | number | (string | number)[]) {
+  return request({
+    url: '/system/post/' + postId,
+    method: 'delete'
+  });
+}

+ 23 - 0
src/api/system/post/types.ts

@@ -0,0 +1,23 @@
+export interface PostVO extends BaseEntity {
+  postId: number | string;
+  postCode: string;
+  postName: string;
+  postSort: number;
+  status: string;
+  remark: string;
+}
+
+export interface PostForm {
+  postId: number | string | undefined;
+  postCode: string;
+  postName: string;
+  postSort: number;
+  status: string;
+  remark: string;
+}
+
+export interface PostQuery extends PageQuery {
+  postCode: string;
+  postName: string;
+  status: string;
+}

+ 144 - 0
src/api/system/role/index.ts

@@ -0,0 +1,144 @@
+import { UserVO } from '@/api/system/user/types';
+import { UserQuery } from '@/api/system/user/types';
+import { AxiosPromise } from 'axios';
+import { RoleQuery, RoleVO, RoleDeptTree } from './types';
+import request from '@/utils/request';
+
+export const listRole = (query: RoleQuery): AxiosPromise<RoleVO[]> => {
+  return request({
+    url: '/system/role/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询角色详细
+ */
+export const getRole = (roleId: string | number): AxiosPromise<RoleVO> => {
+  return request({
+    url: '/system/role/' + roleId,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增角色
+ */
+export const addRole = (data: any) => {
+  return request({
+    url: '/system/role',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改角色
+ * @param data
+ */
+export const updateRole = (data: any) => {
+  return request({
+    url: '/system/role',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 角色数据权限
+ */
+export const dataScope = (data: any) => {
+  return request({
+    url: '/system/role/dataScope',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 角色状态修改
+ */
+export const changeRoleStatus = (roleId: string | number, status: string) => {
+  const data = {
+    roleId,
+    status
+  };
+  return request({
+    url: '/system/role/changeStatus',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除角色
+ */
+export const delRole = (roleId: Array<string | number> | string | number) => {
+  return request({
+    url: '/system/role/' + roleId,
+    method: 'delete'
+  });
+};
+
+/**
+ * 查询角色已授权用户列表
+ */
+export const allocatedUserList = (query: UserQuery): AxiosPromise<UserVO[]> => {
+  return request({
+    url: '/system/role/authUser/allocatedList',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询角色未授权用户列表
+ */
+export const unallocatedUserList = (query: UserQuery): AxiosPromise<UserVO[]> => {
+  return request({
+    url: '/system/role/authUser/unallocatedList',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 取消用户授权角色
+ */
+export const authUserCancel = (data: any) => {
+  return request({
+    url: '/system/role/authUser/cancel',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 批量取消用户授权角色
+ */
+export const authUserCancelAll = (data: any) => {
+  return request({
+    url: '/system/role/authUser/cancelAll',
+    method: 'put',
+    params: data
+  });
+};
+
+/**
+ * 授权用户选择
+ */
+export const authUserSelectAll = (data: any) => {
+  return request({
+    url: '/system/role/authUser/selectAll',
+    method: 'put',
+    params: data
+  });
+};
+// 根据角色ID查询部门树结构
+export const deptTreeSelect = (roleId: string | number): AxiosPromise<RoleDeptTree> => {
+  return request({
+    url: '/system/role/deptTree/' + roleId,
+    method: 'get'
+  });
+};

+ 52 - 0
src/api/system/role/types.ts

@@ -0,0 +1,52 @@
+/**
+ * 菜单树形结构类型
+ */
+export interface DeptTreeOption {
+  id: string;
+  label: string;
+  parentId: string;
+  weight: number;
+  children?: DeptTreeOption[];
+}
+
+export interface RoleDeptTree {
+  checkedKeys: string[];
+  depts: DeptTreeOption[];
+}
+
+export interface RoleVO extends BaseEntity {
+  roleId: string | number;
+  roleName: string;
+  roleKey: string;
+  roleSort: number;
+  dataScope: string;
+  menuCheckStrictly: boolean;
+  deptCheckStrictly: boolean;
+  status: string;
+  delFlag: string;
+  remark?: any;
+  flag: boolean;
+  menuIds?: Array<string | number>;
+  deptIds?: Array<string | number>;
+  admin: boolean;
+}
+
+export interface RoleQuery extends PageQuery {
+  roleName: string;
+  roleKey: string;
+  status: string;
+}
+
+export interface RoleForm {
+  roleName: string;
+  roleKey: string;
+  roleSort: number;
+  status: string;
+  menuCheckStrictly: boolean;
+  deptCheckStrictly: boolean;
+  remark: string;
+  dataScope?: string;
+  roleId: string | undefined;
+  menuIds: Array<string | number>;
+  deptIds: Array<string | number>;
+}

+ 24 - 0
src/api/system/social/auth.ts

@@ -0,0 +1,24 @@
+import request from '@/utils/request';
+
+// 绑定账号
+export function authBinding(source: string) {
+  return request({
+    url: '/auth/binding/' + source,
+    method: 'get'
+  });
+}
+
+// 解绑账号
+export function authUnlock(authId: string) {
+  return request({
+    url: '/auth/unlock/' + authId,
+    method: 'delete'
+  });
+}
+//获取授权列表
+export function getAuthList() {
+  return request({
+    url: '/system/social/list',
+    method: 'get'
+  });
+}

+ 92 - 0
src/api/system/tenant/index.ts

@@ -0,0 +1,92 @@
+import request from '@/utils/request';
+import { TenantForm, TenantQuery, TenantVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询租户列表
+export function listTenant(query: TenantQuery): AxiosPromise<TenantVO[]> {
+  return request({
+    url: '/system/tenant/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询租户详细
+export function getTenant(id: string | number): AxiosPromise<TenantVO> {
+  return request({
+    url: '/system/tenant/' + id,
+    method: 'get'
+  });
+}
+
+// 新增租户
+export function addTenant(data: TenantForm) {
+  return request({
+    url: '/system/tenant',
+    method: 'post',
+    headers: {
+      isEncrypt: true
+    },
+    data: data
+  });
+}
+
+// 修改租户
+export function updateTenant(data: TenantForm) {
+  return request({
+    url: '/system/tenant',
+    method: 'put',
+    data: data
+  });
+}
+
+// 租户状态修改
+export function changeTenantStatus(id: string | number, tenantId: string | number, status: string) {
+  const data = {
+    id,
+    tenantId,
+    status
+  };
+  return request({
+    url: '/system/tenant/changeStatus',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除租户
+export function delTenant(id: string | number | Array<string | number>) {
+  return request({
+    url: '/system/tenant/' + id,
+    method: 'delete'
+  });
+}
+
+// 动态切换租户
+export function dynamicTenant(tenantId: string | number) {
+  return request({
+    url: '/system/tenant/dynamic/' + tenantId,
+    method: 'get'
+  });
+}
+
+// 清除动态租户
+export function dynamicClear() {
+  return request({
+    url: '/system/tenant/dynamic/clear',
+    method: 'get'
+  });
+}
+
+// 同步租户套餐
+export function syncTenantPackage(tenantId: string | number, packageId: string | number) {
+  const data = {
+    tenantId,
+    packageId
+  };
+  return request({
+    url: '/system/tenant/syncTenantPackage',
+    method: 'get',
+    params: data
+  });
+}

+ 46 - 0
src/api/system/tenant/types.ts

@@ -0,0 +1,46 @@
+export interface TenantVO extends BaseEntity {
+  id: number | string;
+  tenantId: number | string;
+  username: string;
+  contactUserName: string;
+  contactPhone: string;
+  companyName: string;
+  licenseNumber: string;
+  address: string;
+  domain: string;
+  intro: string;
+  remark: string;
+  packageId: string | number;
+  expireTime: string;
+  accountCount: number;
+  status: string;
+}
+
+export interface TenantQuery extends PageQuery {
+  tenantId: string | number;
+
+  contactUserName: string;
+
+  contactPhone: string;
+
+  companyName: string;
+}
+
+export interface TenantForm {
+  id: number | string | undefined;
+  tenantId: number | string | undefined;
+  username: string;
+  password: string;
+  contactUserName: string;
+  contactPhone: string;
+  companyName: string;
+  licenseNumber: string;
+  domain: string;
+  address: string;
+  intro: string;
+  remark: string;
+  packageId: string | number;
+  expireTime: string;
+  accountCount: number;
+  status: string;
+}

+ 67 - 0
src/api/system/tenantPackage/index.ts

@@ -0,0 +1,67 @@
+import request from '@/utils/request';
+import { TenantPkgForm, TenantPkgQuery, TenantPkgVO } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询租户套餐列表
+export function listTenantPackage(query?: TenantPkgQuery): AxiosPromise<TenantPkgVO[]> {
+  return request({
+    url: '/system/tenant/package/list',
+    method: 'get',
+    params: query
+  });
+}
+
+// 查询租户套餐下拉选列表
+export function selectTenantPackage(): AxiosPromise<TenantPkgVO[]> {
+  return request({
+    url: '/system/tenant/package/selectList',
+    method: 'get'
+  });
+}
+
+// 查询租户套餐详细
+export function getTenantPackage(packageId: string | number): AxiosPromise<TenantPkgVO> {
+  return request({
+    url: '/system/tenant/package/' + packageId,
+    method: 'get'
+  });
+}
+
+// 新增租户套餐
+export function addTenantPackage(data: TenantPkgForm) {
+  return request({
+    url: '/system/tenant/package',
+    method: 'post',
+    data: data
+  });
+}
+
+// 修改租户套餐
+export function updateTenantPackage(data: TenantPkgForm) {
+  return request({
+    url: '/system/tenant/package',
+    method: 'put',
+    data: data
+  });
+}
+
+// 租户套餐状态修改
+export function changePackageStatus(packageId: number | string, status: string) {
+  const data = {
+    packageId,
+    status
+  };
+  return request({
+    url: '/system/tenant/package/changeStatus',
+    method: 'put',
+    data: data
+  });
+}
+
+// 删除租户套餐
+export function delTenantPackage(packageId: string | number | Array<string | number>) {
+  return request({
+    url: '/system/tenant/package/' + packageId,
+    method: 'delete'
+  });
+}

+ 20 - 0
src/api/system/tenantPackage/types.ts

@@ -0,0 +1,20 @@
+export interface TenantPkgVO extends BaseEntity {
+  packageId: string | number;
+  packageName: string;
+  menuIds: string;
+  remark: string;
+  menuCheckStrictly: boolean;
+  status: string;
+}
+
+export interface TenantPkgQuery extends PageQuery {
+  packageName: string;
+}
+
+export interface TenantPkgForm {
+  packageId: string | number | undefined;
+  packageName: string;
+  menuIds: string;
+  remark: string;
+  menuCheckStrictly: boolean;
+}

+ 215 - 0
src/api/system/user/index.ts

@@ -0,0 +1,215 @@
+import { DeptVO } from './../dept/types';
+import { RoleVO } from '@/api/system/role/types';
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { UserForm, UserQuery, UserVO, UserInfoVO } from './types';
+import { parseStrEmpty } from '@/utils/ruoyi';
+
+/**
+ * 查询用户列表
+ * @param query
+ */
+export const listUser = (query: UserQuery): AxiosPromise<UserVO[]> => {
+  return request({
+    url: '/system/user/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 获取用户详情
+ * @param userId
+ */
+export const getUser = (userId?: string | number): AxiosPromise<UserInfoVO> => {
+  return request({
+    url: '/system/user/' + parseStrEmpty(userId),
+    method: 'get'
+  });
+};
+
+/**
+ * 新增用户
+ */
+export const addUser = (data: UserForm) => {
+  return request({
+    url: '/system/user',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改用户
+ */
+export const updateUser = (data: UserForm) => {
+  return request({
+    url: '/system/user',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除用户
+ * @param userId 用户ID
+ */
+export const delUser = (userId: Array<string | number> | string | number) => {
+  return request({
+    url: '/system/user/' + userId,
+    method: 'delete'
+  });
+};
+
+/**
+ * 用户密码重置
+ * @param userId 用户ID
+ * @param password 密码
+ */
+export const resetUserPwd = (userId: string | number, password: string) => {
+  const data = {
+    userId,
+    password
+  };
+  return request({
+    url: '/system/user/resetPwd',
+    method: 'put',
+    headers: {
+      isEncrypt: true
+    },
+    data: data
+  });
+};
+
+/**
+ * 用户状态修改
+ * @param userId 用户ID
+ * @param status 用户状态
+ */
+export const changeUserStatus = (userId: number | string, status: string) => {
+  const data = {
+    userId,
+    status
+  };
+  return request({
+    url: '/system/user/changeStatus',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 查询用户个人信息
+ */
+export const getUserProfile = (): AxiosPromise<UserInfoVO> => {
+  return request({
+    url: '/system/user/profile',
+    method: 'get'
+  });
+};
+
+/**
+ * 修改用户个人信息
+ * @param data 用户信息
+ */
+export const updateUserProfile = (data: UserForm) => {
+  return request({
+    url: '/system/user/profile',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 用户密码重置
+ * @param oldPassword 旧密码
+ * @param newPassword 新密码
+ */
+export const updateUserPwd = (oldPassword: string, newPassword: string) => {
+  const data = {
+    oldPassword,
+    newPassword
+  };
+  return request({
+    url: '/system/user/profile/updatePwd',
+    method: 'put',
+    headers: {
+      isEncrypt: true
+    },
+    data: data
+  });
+};
+
+/**
+ * 用户头像上传
+ * @param data 头像文件
+ */
+export const uploadAvatar = (data: FormData) => {
+  return request({
+    url: '/system/user/profile/avatar',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 查询授权角色
+ * @param userId 用户ID
+ */
+export const getAuthRole = (userId: string | number): AxiosPromise<{ user: UserVO; roles: RoleVO[] }> => {
+  return request({
+    url: '/system/user/authRole/' + userId,
+    method: 'get'
+  });
+};
+
+/**
+ * 保存授权角色
+ * @param data 用户ID
+ */
+export const updateAuthRole = (data: { userId: string; roleIds: string }) => {
+  return request({
+    url: '/system/user/authRole',
+    method: 'put',
+    params: data
+  });
+};
+
+/**
+ * 查询当前部门的所有用户信息
+ * @param deptId
+ */
+export const listUserByDeptId = (deptId: string | number): AxiosPromise<UserVO[]> => {
+  return request({
+    url: '/system/user/list/dept/' + deptId,
+    method: 'get'
+  });
+};
+
+/**
+ * 查询部门下拉树结构
+ */
+export const deptTreeSelect = (): AxiosPromise<DeptVO[]> => {
+  return request({
+    url: '/system/user/deptTree',
+    method: 'get'
+  });
+};
+
+export default {
+  listUser,
+  getUser,
+  addUser,
+  updateUser,
+  delUser,
+  resetUserPwd,
+  changeUserStatus,
+  getUserProfile,
+  updateUserProfile,
+  updateUserPwd,
+  uploadAvatar,
+  getAuthRole,
+  updateAuthRole,
+  deptTreeSelect,
+  listUserByDeptId
+};

+ 84 - 0
src/api/system/user/types.ts

@@ -0,0 +1,84 @@
+import { DeptVO } from './../dept/types';
+import { RoleVO } from '@/api/system/role/types';
+import { PostVO } from '@/api/system/post/types';
+
+/**
+ * 用户信息
+ */
+export interface UserInfo {
+  user: UserVO;
+  roles: string[];
+  permissions: string[];
+}
+
+/**
+ * 用户查询对象类型
+ */
+export interface UserQuery extends PageQuery {
+  userName?: string;
+  phonenumber?: string;
+  status?: string;
+  deptId?: string | number;
+  roleId?: string | number;
+}
+
+/**
+ * 用户返回对象
+ */
+export interface UserVO extends BaseEntity {
+  userId: string | number;
+  deptId: number;
+  userName: string;
+  nickName: string;
+  userType: string;
+  email: string;
+  phonenumber: string;
+  sex: string;
+  avatar: string;
+  status: string;
+  delFlag: string;
+  loginIp: string;
+  loginDate: string;
+  remark: string;
+  dept: DeptVO;
+  roles: RoleVO[];
+  roleIds: any;
+  postIds: any;
+  roleId: any;
+  admin: boolean;
+}
+
+/**
+ * 用户表单类型
+ */
+export interface UserForm {
+  id?: string;
+  userId?: string;
+  deptId?: number;
+  userName: string;
+  nickName?: string;
+  password: string;
+  phonenumber?: string;
+  email?: string;
+  sex?: string;
+  status: string;
+  remark?: string;
+  postIds: string[];
+  roleIds: string[];
+}
+
+export interface UserInfoVO {
+  user: UserVO;
+  roles: RoleVO[];
+  roleIds: string[];
+  posts: PostVO[];
+  postIds: string[];
+  roleGroup: string;
+  postGroup: string;
+}
+
+export interface ResetPwdForm {
+  oldPassword: string;
+  newPassword: string;
+  confirmPassword: string;
+}

+ 86 - 0
src/api/tool/gen/index.ts

@@ -0,0 +1,86 @@
+import request from '@/utils/request';
+import { DbTableQuery, DbTableVO, TableQuery, TableVO, GenTableVO, DbTableForm } from './types';
+import { AxiosPromise } from 'axios';
+
+// 查询生成表数据
+export const listTable = (query: TableQuery): AxiosPromise<TableVO[]> => {
+  return request({
+    url: '/tool/gen/list',
+    method: 'get',
+    params: query
+  });
+};
+// 查询db数据库列表
+export const listDbTable = (query: DbTableQuery): AxiosPromise<DbTableVO[]> => {
+  return request({
+    url: '/tool/gen/db/list',
+    method: 'get',
+    params: query
+  });
+};
+
+// 查询表详细信息
+export const getGenTable = (tableId: string | number): AxiosPromise<GenTableVO> => {
+  return request({
+    url: '/tool/gen/' + tableId,
+    method: 'get'
+  });
+};
+
+// 修改代码生成信息
+export const updateGenTable = (data: DbTableForm) => {
+  return request({
+    url: '/tool/gen',
+    method: 'put',
+    data: data
+  });
+};
+
+// 导入表
+export const importTable = (data: { tables: string; dataName: string }) => {
+  return request({
+    url: '/tool/gen/importTable',
+    method: 'post',
+    params: data
+  });
+};
+
+// 预览生成代码
+export const previewTable = (tableId: string | number) => {
+  return request({
+    url: '/tool/gen/preview/' + tableId,
+    method: 'get'
+  });
+};
+
+// 删除表数据
+export const delTable = (tableId: string | number | Array<string | number>) => {
+  return request({
+    url: '/tool/gen/' + tableId,
+    method: 'delete'
+  });
+};
+
+// 生成代码(自定义路径)
+export const genCode = (tableId: string | number) => {
+  return request({
+    url: '/tool/gen/genCode/' + tableId,
+    method: 'get'
+  });
+};
+
+// 同步数据库
+export const synchDb = (tableId: string | number) => {
+  return request({
+    url: '/tool/gen/synchDb/' + tableId,
+    method: 'get'
+  });
+};
+
+// 获取数据源名称
+export const getDataNames = () => {
+  return request({
+    url: '/tool/gen/getDataNames',
+    method: 'get'
+  });
+};

+ 180 - 0
src/api/tool/gen/types.ts

@@ -0,0 +1,180 @@
+export interface TableVO extends BaseEntity {
+  createDept: number | string;
+  tableId: string | number;
+  dataName: string;
+  tableName: string;
+  tableComment: string;
+  subTableName?: any;
+  subTableFkName?: any;
+  className: string;
+  tplCategory: string;
+  packageName: string;
+  moduleName: string;
+  businessName: string;
+  functionName: string;
+  functionAuthor: string;
+  genType: string;
+  genPath: string;
+  pkColumn?: any;
+  columns?: any;
+  options?: any;
+  remark?: any;
+  treeCode?: any;
+  treeParentCode?: any;
+  treeName?: any;
+  menuIds?: any;
+  parentMenuId?: any;
+  parentMenuName?: any;
+  tree: boolean;
+  crud: boolean;
+}
+
+export interface TableQuery extends PageQuery {
+  tableName: string;
+  tableComment: string;
+  dataName: string;
+}
+
+export interface DbColumnVO extends BaseEntity {
+  createDept?: any;
+  columnId?: any;
+  tableId?: any;
+  columnName?: any;
+  columnComment?: any;
+  columnType?: any;
+  javaType?: any;
+  javaField?: any;
+  isPk?: any;
+  isIncrement?: any;
+  isRequired?: any;
+  isInsert?: any;
+  isEdit?: any;
+  isList?: any;
+  isQuery?: any;
+  queryType?: any;
+  htmlType?: any;
+  dictType?: any;
+  sort?: any;
+  increment: boolean;
+  capJavaField?: any;
+  usableColumn: boolean;
+  superColumn: boolean;
+  list: boolean;
+  pk: boolean;
+  insert: boolean;
+  edit: boolean;
+  query: boolean;
+  required: boolean;
+}
+
+export interface DbTableVO {
+  createDept?: any;
+  tableId?: any;
+  tableName: string;
+  tableComment: string;
+  subTableName?: any;
+  subTableFkName?: any;
+  className?: any;
+  tplCategory?: any;
+  packageName?: any;
+  moduleName?: any;
+  businessName?: any;
+  functionName?: any;
+  functionAuthor?: any;
+  genType?: any;
+  genPath?: any;
+  pkColumn?: any;
+  columns: DbColumnVO[];
+  options?: any;
+  remark?: any;
+  treeCode?: any;
+  treeParentCode?: any;
+  treeName?: any;
+  menuIds?: any;
+  parentMenuId?: any;
+  parentMenuName?: any;
+  tree: boolean;
+  crud: boolean;
+}
+
+export interface DbTableQuery extends PageQuery {
+  dataName: string;
+  tableName: string;
+  tableComment: string;
+}
+
+export interface GenTableVO {
+  info: DbTableVO;
+  rows: DbColumnVO[];
+  tables: DbTableVO[];
+}
+
+export interface DbColumnForm extends BaseEntity {
+  createDept: number;
+  columnId: string;
+  tableId: string;
+  columnName: string;
+  columnComment: string;
+  columnType: string;
+  javaType: string;
+  javaField: string;
+  isPk: string;
+  isIncrement: string;
+  isRequired: string;
+  isInsert?: any;
+  isEdit: string;
+  isList: string;
+  isQuery?: any;
+  queryType: string;
+  htmlType: string;
+  dictType: string;
+  sort: number;
+  increment: boolean;
+  capJavaField: string;
+  usableColumn: boolean;
+  superColumn: boolean;
+  list: boolean;
+  pk: boolean;
+  insert: boolean;
+  edit: boolean;
+  query: boolean;
+  required: boolean;
+}
+
+export interface DbParamForm {
+  treeCode?: any;
+  treeName?: any;
+  treeParentCode?: any;
+  parentMenuId: string;
+}
+
+export interface DbTableForm extends BaseEntity {
+  createDept?: any;
+  tableId: string | string;
+  tableName: string;
+  tableComment: string;
+  subTableName?: any;
+  subTableFkName?: any;
+  className: string;
+  tplCategory: string;
+  packageName: string;
+  moduleName: string;
+  businessName: string;
+  functionName: string;
+  functionAuthor: string;
+  genType: string;
+  genPath: string;
+  pkColumn?: any;
+  columns: DbColumnForm[];
+  options: string;
+  remark?: any;
+  treeCode?: any;
+  treeParentCode?: any;
+  treeName?: any;
+  menuIds?: any;
+  parentMenuId: string;
+  parentMenuName?: any;
+  tree: boolean;
+  crud: boolean;
+  params: DbParamForm;
+}

+ 59 - 0
src/api/types.ts

@@ -0,0 +1,59 @@
+/**
+ * 注册
+ */
+export type RegisterForm = {
+  tenantId: string;
+  username: string;
+  password: string;
+  confirmPassword?: string;
+  code?: string;
+  uuid?: string;
+  userType?: string;
+};
+
+/**
+ * 登录请求
+ */
+export interface LoginData {
+  tenantId?: string;
+  username?: string;
+  password?: string;
+  rememberMe?: boolean;
+  socialCode?: string;
+  socialState?: string;
+  source?: string;
+  code?: string;
+  uuid?: string;
+  clientId: string;
+  grantType: string;
+}
+
+/**
+ * 登录响应
+ */
+export interface LoginResult {
+  access_token: string;
+}
+
+/**
+ * 验证码返回
+ */
+export interface VerifyCodeResult {
+  captchaEnabled: boolean;
+  uuid?: string;
+  img?: string;
+}
+
+/**
+ * 租户
+ */
+export interface TenantVO {
+  companyName: string;
+  domain: any;
+  tenantId: string;
+}
+
+export interface TenantInfo {
+  tenantEnabled: boolean;
+  voList: TenantVO[];
+}

+ 63 - 0
src/api/ygpassport/archivesGo/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ArchivesGoVO, ArchivesGoForm, ArchivesGoQuery } from '@/api/ygpassport/archivesGo/types';
+
+/**
+ * 查询档案去向列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listArchivesGo = (query?: ArchivesGoQuery): AxiosPromise<ArchivesGoVO[]> => {
+  return request({
+    url: '/ygpassport/archivesGo/listNew',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询档案去向详细
+ * @param id
+ */
+export const getArchivesGo = (id: string | number): AxiosPromise<ArchivesGoVO> => {
+  return request({
+    url: '/ygpassport/archivesGo/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增档案去向
+ * @param data
+ */
+export const addArchivesGo = (data: ArchivesGoForm) => {
+  return request({
+    url: '/ygpassport/archivesGo',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改档案去向
+ * @param data
+ */
+export const updateArchivesGo = (data: ArchivesGoForm) => {
+  return request({
+    url: '/ygpassport/archivesGo',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除档案去向
+ * @param id
+ */
+export const delArchivesGo = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/archivesGo/' + id,
+    method: 'delete'
+  });
+};

+ 71 - 0
src/api/ygpassport/archivesGo/types.ts

@@ -0,0 +1,71 @@
+export interface ArchivesGoVO {
+  /**
+   * 序号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 档案去向
+   */
+  archivesMethod: number;
+
+  stuName: string;
+}
+
+export interface ArchivesGoForm extends BaseEntity {
+  /**
+   * 序号
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 档案去向
+   */
+  archivesMethod?: number;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+  stuName?: string;
+}
+
+export interface ArchivesGoQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 档案去向
+   */
+  archivesMethod?: number;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  stuName?: string;
+}

+ 63 - 0
src/api/ygpassport/bug/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { BugVO, BugForm, BugQuery } from '@/api/ygpassport/bug/types';
+
+/**
+ * 查询Bug信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listBug = (query?: BugQuery): AxiosPromise<BugVO[]> => {
+  return request({
+    url: '/ygpassport/bug/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询Bug信息详细
+ * @param id
+ */
+export const getBug = (id: string | number): AxiosPromise<BugVO> => {
+  return request({
+    url: '/ygpassport/bug/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增Bug信息
+ * @param data
+ */
+export const addBug = (data: BugForm) => {
+  return request({
+    url: '/ygpassport/bug',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改Bug信息
+ * @param data
+ */
+export const updateBug = (data: BugForm) => {
+  return request({
+    url: '/ygpassport/bug',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除Bug信息
+ * @param id
+ */
+export const delBug = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/system/bug/' + id,
+    method: 'delete'
+  });
+};

+ 71 - 0
src/api/ygpassport/bug/types.ts

@@ -0,0 +1,71 @@
+export interface BugVO {
+  /**
+   * id
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * bug类型
+   */
+  bugType: number;
+
+  /**
+   * bug描述
+   */
+  bugDerp: string;
+
+}
+
+export interface BugForm extends BaseEntity {
+  /**
+   * id
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * bug类型
+   */
+  bugType?: number;
+
+  /**
+   * bug描述
+   */
+  bugDerp?: string;
+
+}
+
+export interface BugQuery extends PageQuery {
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * bug类型
+   */
+  bugType?: number;
+
+  /**
+   * bug描述
+   */
+  bugDerp?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}
+
+
+

+ 63 - 0
src/api/ygpassport/careerPlans/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { CareerPlansVO, CareerPlansForm, CareerPlansQuery } from '@/api/ygpassport/careerPlans/types';
+
+/**
+ * 查询生涯规划相关信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listCareerPlans = (query?: CareerPlansQuery): AxiosPromise<CareerPlansVO[]> => {
+  return request({
+    url: '/ygpassport/careerPlans/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询生涯规划相关信息详细
+ * @param id
+ */
+export const getCareerPlans = (id: string | number): AxiosPromise<CareerPlansVO> => {
+  return request({
+    url: '/ygpassport/careerPlans/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增生涯规划相关信息
+ * @param data
+ */
+export const addCareerPlans = (data: CareerPlansForm) => {
+  return request({
+    url: '/ygpassport/careerPlans',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改生涯规划相关信息
+ * @param data
+ */
+export const updateCareerPlans = (data: CareerPlansForm) => {
+  return request({
+    url: '/ygpassport/careerPlans',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除生涯规划相关信息
+ * @param id
+ */
+export const delCareerPlans = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/careerPlans/' + id,
+    method: 'delete'
+  });
+};

+ 71 - 0
src/api/ygpassport/careerPlans/types.ts

@@ -0,0 +1,71 @@
+export interface CareerPlansVO {
+  /**
+   * 编号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  /**
+   * 上传文件路径
+   */
+  path: string;
+
+}
+
+export interface CareerPlansForm extends BaseEntity {
+  /**
+   * 编号
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 上传文件路径
+   */
+  path?: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+}
+
+export interface CareerPlansQuery extends PageQuery {
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}
+
+
+

+ 63 - 0
src/api/ygpassport/careerSkill/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { CareerSkillVO, CareerSkillForm, CareerSkillQuery } from '@/api/ygpassport/careerSkill/types';
+
+/**
+ * 查询职业技能证书列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listCareerSkill = (query?: CareerSkillQuery): AxiosPromise<CareerSkillVO[]> => {
+  return request({
+    url: '/ygpassport/careerSkill/listNew',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询职业技能证书详细
+ * @param id
+ */
+export const getCareerSkill = (id: string | number): AxiosPromise<CareerSkillVO> => {
+  return request({
+    url: '/ygpassport/careerSkill/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增职业技能证书
+ * @param data
+ */
+export const addCareerSkill = (data: CareerSkillForm) => {
+  return request({
+    url: '/ygpassport/careerSkill',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改职业技能证书
+ * @param data
+ */
+export const updateCareerSkill = (data: CareerSkillForm) => {
+  return request({
+    url: '/ygpassport/careerSkill',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除职业技能证书
+ * @param id
+ */
+export const delCareerSkill = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/careerSkill/' + id,
+    method: 'delete'
+  });
+};

+ 56 - 0
src/api/ygpassport/careerSkill/types.ts

@@ -0,0 +1,56 @@
+export interface CareerSkillVO {
+  /**
+   * 序号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  stuName: string;
+}
+
+export interface CareerSkillForm extends BaseEntity {
+  /**
+   * 序号
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+  stuName?: string;
+}
+
+export interface CareerSkillQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  stuName?: string;
+}

+ 64 - 0
src/api/ygpassport/combatProject/index.ts

@@ -0,0 +1,64 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { CombatProjectVO, CombatProjectForm, CombatProjectQuery } from '@/api/ygpassport/combatProject/types';
+
+/**
+ * 查询实战项目经历列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listCombatProject = (query?: CombatProjectQuery): AxiosPromise<CombatProjectVO[]> => {
+  const data = { query: query }
+  return request({
+    url: '/ygpassport/combatProject/listNew',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 查询实战项目经历详细
+ * @param id
+ */
+export const getCombatProject = (id: string | number): AxiosPromise<CombatProjectVO> => {
+  return request({
+    url: '/ygpassport/combatProject/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增实战项目经历
+ * @param data
+ */
+export const addCombatProject = (data: CombatProjectForm) => {
+  return request({
+    url: '/ygpassport/combatProject',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改实战项目经历
+ * @param data
+ */
+export const updateCombatProject = (data: CombatProjectForm) => {
+  return request({
+    url: '/ygpassport/combatProject',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除实战项目经历
+ * @param id
+ */
+export const delCombatProject = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/combatProject/' + id,
+    method: 'delete'
+  });
+};

+ 113 - 0
src/api/ygpassport/combatProject/types.ts

@@ -0,0 +1,113 @@
+export interface CombatProjectVO {
+  /**
+   * id
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  /**
+   * 项目组/导师名称
+   */
+  tutorName: string;
+
+  /**
+   * 项目名称
+   */
+  projectName: string;
+
+  /**
+   * 成绩
+   */
+  score: number;
+
+  stuName: string;
+
+  jobRole: string;
+
+  participateDuration: string;
+}
+
+export interface CombatProjectForm extends BaseEntity {
+  /**
+   * id
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 成绩
+   */
+  semester?: string;
+
+  /**
+   * 项目组/导师名称
+   */
+  tutorName?: string;
+
+  /**
+   * 项目名称
+   */
+  projectName?: string;
+
+  /**
+   * 成绩
+   */
+  score?: number;
+
+  stuName?: string;
+
+  jobRole?: string;
+
+  participateDuration?: string;
+}
+
+export interface CombatProjectQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 成绩
+   */
+  semester?: string;
+
+  /**
+   * 项目组/导师名称
+   */
+  tutorName?: string;
+
+  /**
+   * 项目名称
+   */
+  projectName?: string;
+
+  /**
+   * 成绩
+   */
+  score?: number;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  stuName?: string;
+
+  jobRole?: string;
+
+  participateDuration?: string;
+}

+ 63 - 0
src/api/ygpassport/extracActivities/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ExtracActivitiesVO, ExtracActivitiesForm, ExtracActivitiesQuery } from '@/api/ygpassport/extracActivities/types';
+
+/**
+ * 查询第二课堂活动记录列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listExtracActivities = (query?: ExtracActivitiesQuery): AxiosPromise<ExtracActivitiesVO[]> => {
+  return request({
+    url: '/ygpassport/extracActivities/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询第二课堂活动记录详细
+ * @param id
+ */
+export const getExtracActivities = (id: string | number): AxiosPromise<ExtracActivitiesVO> => {
+  return request({
+    url: '/ygpassport/extracActivities/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增第二课堂活动记录
+ * @param data
+ */
+export const addExtracActivities = (data: ExtracActivitiesForm) => {
+  return request({
+    url: '/ygpassport/extracActivities',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改第二课堂活动记录
+ * @param data
+ */
+export const updateExtracActivities = (data: ExtracActivitiesForm) => {
+  return request({
+    url: '/ygpassport/extracActivities',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除第二课堂活动记录
+ * @param id
+ */
+export const delExtracActivities = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/extracActivities/' + id,
+    method: 'delete'
+  });
+};

+ 141 - 0
src/api/ygpassport/extracActivities/types.ts

@@ -0,0 +1,141 @@
+export interface ExtracActivitiesVO {
+  /**
+   * 编号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string | number;
+
+  /**
+   * 活动id
+   */
+  activeTypeId: string | number;
+
+  /**
+   * 活动名称
+   */
+  activeTypeName: string;
+
+  /**
+   * 分值
+   */
+  score: number;
+
+  /**
+   * 分值单位
+   */
+  scoreUnitId: string | number;
+
+  /**
+   * 成绩单编号
+   */
+  reeportCardNumber: number;
+
+  /**
+   * 总分
+   */
+  totalScore: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark: string;
+
+}
+
+export interface ExtracActivitiesForm extends BaseEntity {
+  /**
+   * 学生学号
+   */
+  stuNo?: string | number;
+
+  /**
+   * 活动id
+   */
+  activeTypeId?: string | number;
+
+  /**
+   * 活动名称
+   */
+  activeTypeName?: string;
+
+  /**
+   * 分值
+   */
+  score?: number;
+
+  /**
+   * 分值单位
+   */
+  scoreUnitId?: string | number;
+
+  /**
+   * 成绩单编号
+   */
+  reeportCardNumber?: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+}
+
+export interface ExtracActivitiesQuery extends PageQuery {
+
+  /**
+   * 编号
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string | number;
+
+  /**
+   * 活动id
+   */
+  activeTypeId?: string | number;
+
+  /**
+   * 活动名称
+   */
+  activeTypeName?: string;
+
+  /**
+   * 分值
+   */
+  score?: number;
+
+  /**
+   * 分值单位
+   */
+  scoreUnitId?: string | number;
+
+  /**
+   * 成绩单编号
+   */
+  reeportCardNumber?: number;
+
+  /**
+   * 总分
+   */
+  totalScore?: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 63 - 0
src/api/ygpassport/foreignLanguageSkill/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ForeignLanguageSkillVO, ForeignLanguageSkillForm, ForeignLanguageSkillQuery } from '@/api/ygpassport/foreignLanguageSkill/types';
+
+/**
+ * 查询外语能力水平列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listForeignLanguageSkill = (query?: ForeignLanguageSkillQuery): AxiosPromise<ForeignLanguageSkillVO[]> => {
+  return request({
+    url: '/ygpassport/foreignLanguageSkill/listNew',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询外语能力水平详细
+ * @param id
+ */
+export const getForeignLanguageSkill = (id: string | number): AxiosPromise<ForeignLanguageSkillVO> => {
+  return request({
+    url: '/ygpassport/foreignLanguageSkill/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增外语能力水平
+ * @param data
+ */
+export const addForeignLanguageSkill = (data: ForeignLanguageSkillForm) => {
+  return request({
+    url: '/ygpassport/foreignLanguageSkill',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改外语能力水平
+ * @param data
+ */
+export const updateForeignLanguageSkill = (data: ForeignLanguageSkillForm) => {
+  return request({
+    url: '/ygpassport/foreignLanguageSkill',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除外语能力水平
+ * @param id
+ */
+export const delForeignLanguageSkill = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/foreignLanguageSkill/' + id,
+    method: 'delete'
+  });
+};

+ 86 - 0
src/api/ygpassport/foreignLanguageSkill/types.ts

@@ -0,0 +1,86 @@
+export interface ForeignLanguageSkillVO {
+  /**
+   * 序号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 语言等级
+   */
+  languageLevel: number;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  stuName: string;
+}
+
+export interface ForeignLanguageSkillForm extends BaseEntity {
+  /**
+   * 序号
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 语言等级
+   */
+  languageLevel?: number;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+  stuName?: string;
+}
+
+export interface ForeignLanguageSkillQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 语言等级
+   */
+  languageLevel?: number;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  stuName?: string;
+}

+ 63 - 0
src/api/ygpassport/goal/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { GoalVO, GoalForm, GoalQuery } from '@/api/ygpassport/goal/types';
+
+/**
+ * 查询目标信息列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listGoal = (query?: GoalQuery): AxiosPromise<GoalVO[]> => {
+  return request({
+    url: '/ygpassport/goal/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询目标信息详细
+ * @param id
+ */
+export const getGoal = (id: string | number): AxiosPromise<GoalVO> => {
+  return request({
+    url: '/ygpassport/goal/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增目标信息
+ * @param data
+ */
+export const addGoal = (data: GoalForm) => {
+  return request({
+    url: '/ygpassport/goal',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改目标信息
+ * @param data
+ */
+export const updateGoal = (data: GoalForm) => {
+  return request({
+    url: '/ygpassport/goal',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除目标信息
+ * @param id
+ */
+export const delGoal = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/goal/' + id,
+    method: 'delete'
+  });
+};

+ 56 - 0
src/api/ygpassport/goal/types.ts

@@ -0,0 +1,56 @@
+export interface GoalVO {
+  /**
+   * id
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 目标
+   */
+  goal: string;
+
+}
+
+export interface GoalForm extends BaseEntity {
+  /**
+   * id
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 目标
+   */
+  goal?: string;
+
+}
+
+export interface GoalQuery extends PageQuery {
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 目标
+   */
+  goal?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}
+
+
+

+ 63 - 0
src/api/ygpassport/internships/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { InternshipsVO, InternshipsForm, InternshipsQuery } from '@/api/ygpassport/internships/types';
+
+/**
+ * 查询实习情况列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listInternships = (query?: InternshipsQuery): AxiosPromise<InternshipsVO[]> => {
+  return request({
+    url: '/ygpassport/internships/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询实习情况详细
+ * @param id
+ */
+export const getInternships = (id: string | number): AxiosPromise<InternshipsVO> => {
+  return request({
+    url: '/ygpassport/internships/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增实习情况
+ * @param data
+ */
+export const addInternships = (data: InternshipsForm) => {
+  return request({
+    url: '/ygpassport/internships',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改实习情况
+ * @param data
+ */
+export const updateInternships = (data: InternshipsForm) => {
+  return request({
+    url: '/ygpassport/internships',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除实习情况
+ * @param id
+ */
+export const delInternships = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/internships/' + id,
+    method: 'delete'
+  });
+};

+ 101 - 0
src/api/ygpassport/internships/types.ts

@@ -0,0 +1,101 @@
+export interface InternshipsVO {
+  /**
+   * 
+   */
+  id: string | number;
+
+  /**
+   * 学号
+   */
+  stuNo: string;
+
+  /**
+   * 公司名称
+   */
+  companyName: string;
+
+  /**
+   * 工作时间
+   */
+  workingHours: string;
+
+  /**
+   * 职务
+   */
+  job: string;
+
+  /**
+   * 职务内容
+   */
+  jobDescription: string;
+
+}
+
+export interface InternshipsForm extends BaseEntity {
+  /**
+   * 
+   */
+  id?: string | number;
+
+  /**
+   * 学号
+   */
+  stuNo?: string;
+
+  /**
+   * 公司名称
+   */
+  companyName?: string;
+
+  /**
+   * 工作时间
+   */
+  workingHours?: string;
+
+  /**
+   * 职务
+   */
+  job?: string;
+
+  /**
+   * 职务内容
+   */
+  jobDescription?: string;
+
+}
+
+export interface InternshipsQuery extends PageQuery {
+
+  /**
+   * 学号
+   */
+  stuNo?: string;
+
+  /**
+   * 公司名称
+   */
+  companyName?: string;
+
+  /**
+   * 工作时间
+   */
+  workingHours?: string;
+
+  /**
+   * 职务
+   */
+  job?: string;
+
+  /**
+   * 职务内容
+   */
+  jobDescription?: string;
+
+    /**
+     * 日期范围参数
+     */
+    params?: any;
+}
+
+
+

+ 63 - 0
src/api/ygpassport/physiqueTest/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { PhysiqueTestVO, PhysiqueTestForm, PhysiqueTestQuery } from '@/api/ygpassport/physiqueTest/types';
+
+/**
+ * 查询学生体质健康测试数据列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listPhysiqueTest = (query?: PhysiqueTestQuery): AxiosPromise<PhysiqueTestVO[]> => {
+  return request({
+    url: '/ygpassport/physiqueTest/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询学生体质健康测试数据详细
+ * @param id
+ */
+export const getPhysiqueTest = (id: string | number): AxiosPromise<PhysiqueTestVO> => {
+  return request({
+    url: '/ygpassport/physiqueTest/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增学生体质健康测试数据
+ * @param data
+ */
+export const addPhysiqueTest = (data: PhysiqueTestForm) => {
+  return request({
+    url: '/ygpassport/physiqueTest',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改学生体质健康测试数据
+ * @param data
+ */
+export const updatePhysiqueTest = (data: PhysiqueTestForm) => {
+  return request({
+    url: '/ygpassport/physiqueTest',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除学生体质健康测试数据
+ * @param id
+ */
+export const delPhysiqueTest = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/physiqueTest/' + id,
+    method: 'delete'
+  });
+};

+ 75 - 0
src/api/ygpassport/physiqueTest/types.ts

@@ -0,0 +1,75 @@
+export interface PhysiqueTestVO {
+  /**
+   *
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 文件路径
+   */
+  path: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark: string;
+
+  /**
+   * 是否删除
+   */
+  deleted: number;
+}
+
+export interface PhysiqueTestForm extends BaseEntity {
+  /**
+   * 序号
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 文件路径
+   */
+  path?: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+  /**
+   * 是否删除
+   */
+  deleted?: number;
+
+}
+
+export interface PhysiqueTestQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 文件路径
+   */
+  path?: string;
+  /**
+   * 是否删除
+   */
+  deleted?: number;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}

+ 63 - 0
src/api/ygpassport/research/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ResearchVO, ResearchForm, ResearchQuery } from '@/api/ygpassport/research/types';
+
+/**
+ * 查询科研列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listResearch = (query?: ResearchQuery): AxiosPromise<ResearchVO[]> => {
+  return request({
+    url: '/system/research/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询科研详细
+ * @param id
+ */
+export const getResearch = (id: string | number): AxiosPromise<ResearchVO> => {
+  return request({
+    url: '/system/research/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增科研
+ * @param data
+ */
+export const addResearch = (data: ResearchForm) => {
+  return request({
+    url: '/system/research',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改科研
+ * @param data
+ */
+export const updateResearch = (data: ResearchForm) => {
+  return request({
+    url: '/system/research',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除科研
+ * @param id
+ */
+export const delResearch = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/system/research/' + id,
+    method: 'delete'
+  });
+};

+ 130 - 0
src/api/ygpassport/research/types.ts

@@ -0,0 +1,130 @@
+export interface ResearchVO {
+  /**
+   *
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  /**
+   *
+   */
+  researchName: string;
+
+  /**
+   *
+   */
+  researchNo: string;
+
+  /**
+   *
+   */
+  isOnetow: number;
+
+  /**
+   *
+   */
+  publishDate: string;
+
+  /**
+   *
+   */
+  researchFilePath: string;
+
+}
+
+export interface ResearchForm extends BaseEntity {
+  /**
+   *
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   *
+   */
+  researchName?: string;
+
+  /**
+   *
+   */
+  researchNo?: string;
+
+  /**
+   *
+   */
+  isOnetow?: number;
+
+  /**
+   *
+   */
+  publishDate?: string;
+
+  /**
+   *
+   */
+  researchFilePath?: string;
+
+}
+
+export interface ResearchQuery extends PageQuery {
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   *
+   */
+  researchName?: string;
+
+  /**
+   *
+   */
+  researchNo?: string;
+
+  /**
+   *
+   */
+  isOnetow?: number;
+
+  /**
+   *
+   */
+  publishDate?: string;
+
+  /**
+   *
+   */
+  researchFilePath?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}
+
+

+ 63 - 0
src/api/ygpassport/scholarship/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ScholarshipVO, ScholarshipForm, ScholarshipQuery } from '@/api/ygpassport/scholarship/types';
+
+/**
+ * 查询奖学金获评记录列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listScholarship = (query?: ScholarshipQuery): AxiosPromise<ScholarshipVO[]> => {
+  return request({
+    url: '/ygpassport/scholarship/listNew',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询奖学金获评记录详细
+ * @param id
+ */
+export const getScholarship = (id: string | number): AxiosPromise<ScholarshipVO> => {
+  return request({
+    url: '/ygpassport/scholarship/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增奖学金获评记录
+ * @param data
+ */
+export const addScholarship = (data: ScholarshipForm) => {
+  return request({
+    url: '/ygpassport/scholarship',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改奖学金获评记录
+ * @param data
+ */
+export const updateScholarship = (data: ScholarshipForm) => {
+  return request({
+    url: '/ygpassport/scholarship',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除奖学金获评记录
+ * @param id
+ */
+export const delScholarship = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/scholarship/' + id,
+    method: 'delete'
+  });
+};

+ 123 - 0
src/api/ygpassport/scholarship/types.ts

@@ -0,0 +1,123 @@
+export interface ScholarshipVO {
+  /**
+   * 序号
+   */
+  id: string | number;
+
+  /**
+   * 奖项名称
+   */
+  scholarshipName: string;
+
+  /**
+   * 奖项内容
+   */
+  scholarshipDetail: string;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 等级
+   */
+  grade: number;
+
+  /**
+   * 学期
+   */
+  semester: number;
+  /**
+   * 学生姓名
+   */
+  stuName: string;
+}
+
+export interface ScholarshipForm extends BaseEntity {
+  /**
+   * 序号
+   */
+  id?: string | number;
+
+  /**
+   * 奖项名称
+   */
+  scholarshipName?: string;
+
+  /**
+   * 奖项内容
+   */
+  scholarshipDetail?: string;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 等级
+   */
+  grade?: number;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+  /**
+   * 学生姓名
+   */
+  stuName?: string;
+}
+
+export interface ScholarshipQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 奖项名称
+   */
+  scholarshipName?: string;
+
+  /**
+   * 奖项内容
+   */
+  scholarshipDetail?: string;
+
+  /**
+   * 等级
+   */
+  grade?: number;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 附件信息存放路径
+   */
+  experienceFilePath?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  /**
+   * 学生姓名
+   */
+  stuName?: string;
+}

+ 63 - 0
src/api/ygpassport/scoreList/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ScoreListVO, ScoreListForm, ScoreListQuery } from '@/api/ygpassport/scoreList/types';
+
+/**
+ * 查询学生成绩信息列列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listScoreList = (query?: ScoreListQuery): AxiosPromise<ScoreListVO[]> => {
+  return request({
+    url: '/ygpassport/scoreList/listNew',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询学生成绩信息列详细
+ * @param id
+ */
+export const getScoreList = (id: string | number): AxiosPromise<ScoreListVO> => {
+  return request({
+    url: '/ygpassport/scoreList/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增学生成绩信息列
+ * @param data
+ */
+export const addScoreList = (data: ScoreListForm) => {
+  return request({
+    url: '/ygpassport/scoreList',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改学生成绩信息列
+ * @param data
+ */
+export const updateScoreList = (data: ScoreListForm) => {
+  return request({
+    url: '/ygpassport/scoreList',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除学生成绩信息列
+ * @param id
+ */
+export const delScoreList = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/scoreList/' + id,
+    method: 'delete'
+  });
+};

+ 197 - 0
src/api/ygpassport/scoreList/types.ts

@@ -0,0 +1,197 @@
+export interface ScoreListVO {
+  /**
+   * 编号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string | number;
+
+  /**
+   * 专业
+   */
+  major: number;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  /**
+   * 课程代码
+   */
+  courseCode: number;
+
+  /**
+   * 课程类型
+   */
+  courseType: number;
+
+  /**
+   * 课程名称
+   */
+  courseName: string;
+
+  /**
+   * 学分值
+   */
+  hourCredit: number;
+
+  /**
+   * 分数值
+   */
+  score: number;
+
+  /**
+   * 绩点
+   */
+  gradePoints: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark: string;
+
+  /**
+   * 是否删除
+   */
+  deleted: number;
+
+  stuName: string;
+}
+
+export interface ScoreListForm extends BaseEntity {
+  /**
+   * 编号
+   */
+  id?: string | number;
+
+  /**
+   * 学生id
+   */
+  stuId?: string | number;
+
+  /**
+   * 分数值
+   */
+  score?: number;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 专业
+   */
+  major?: number;
+
+  /**
+   * 学号
+   */
+  stuNo?: string;
+
+  /**
+   * 课程名称
+   */
+  courseName?: string;
+
+  /**
+   * 课程代码
+   */
+  courseCode?: number;
+
+  /**
+   * 课程类型
+   */
+  courseType?: number;
+
+  /**
+   * 学分值
+   */
+  hourCredit?: number;
+
+  /**
+   * 绩点
+   */
+  gradePoints?: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+  /**
+   * 是否删除
+   */
+  deleted?: number;
+
+  stuName?: string;
+}
+
+export interface ScoreListQuery extends PageQuery {
+  /**
+   * 学生id
+   */
+  stuId?: string | number;
+
+  /**
+   * 学号
+   */
+  stuNo?: string;
+
+  /**
+   * 分数值
+   */
+  score?: number;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   * 专业
+   */
+  major?: number;
+
+  /**
+   * 课程名称
+   */
+  courseName?: string;
+
+
+  /**
+   * 课程代码
+   */
+  courseCode?: number;
+
+  /**
+   * 课程类型
+   */
+  courseType?: number;
+
+  /**
+   * 学分值
+   */
+  hourCredit?: number;
+
+  /**
+   * 绩点
+   */
+  gradePoints?: number;
+
+  /**
+   * 是否删除
+   */
+  deleted?: number;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  stuName?: string;
+}

+ 63 - 0
src/api/ygpassport/scoreListTotal/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ScoreListVO, ScoreListForm, ScoreListQuery } from '@/api/ygpassport/scoreList/types';
+
+/**
+ * 查询学生成绩信息列列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listScoreList = (query?: ScoreListQuery): AxiosPromise<ScoreListVO[]> => {
+  return request({
+    url: '/ygpassport/scoreList/listNew',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询学生成绩信息列详细
+ * @param id
+ */
+export const getScoreList = (id: string | number): AxiosPromise<ScoreListVO> => {
+  return request({
+    url: '/ygpassport/scoreList/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增学生成绩信息列
+ * @param data
+ */
+export const addScoreList = (data: ScoreListForm) => {
+  return request({
+    url: '/ygpassport/scoreList',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改学生成绩信息列
+ * @param data
+ */
+export const updateScoreList = (data: ScoreListForm) => {
+  return request({
+    url: '/ygpassport/scoreList',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除学生成绩信息列
+ * @param id
+ */
+export const delScoreList = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/scoreList/' + id,
+    method: 'delete'
+  });
+};

+ 154 - 0
src/api/ygpassport/scoreListTotal/types.ts

@@ -0,0 +1,154 @@
+export interface ScoreListVO {
+  /**
+   * 编号
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string | number;
+
+  /**
+   * 专业
+   */
+  major: number;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  /**
+   * 课程代码
+   */
+  courseCode: number;
+
+  /**
+   * 课程类型
+   */
+  courseType: number;
+
+  /**
+   * 课程名称
+   */
+  courseName: string;
+
+  /**
+   * 学分值
+   */
+  hourCredit: number;
+
+  /**
+   * 分数值
+   */
+  score: number;
+
+  /**
+   * 绩点
+   */
+  gradePoints: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark: string;
+
+  /**
+   * 是否删除
+   */
+  deleted: number;
+
+  stuName: string;
+
+  stuSex: number;
+
+  stuClass: string;
+
+  faculties: number;
+}
+
+export interface ScoreListForm extends BaseEntity {
+  /**
+   * 编号
+   */
+  id?: string | number;
+
+  /**
+   * 学生id
+   */
+  stuId?: string | number;
+
+  /**
+   * 分数值
+   */
+  score?: number;
+
+  /**
+   * 课程名称
+   */
+  courseName?: string;
+
+  /**
+   * 学分值
+   */
+  hourCredit?: number;
+
+  /**
+   * 预留备注字段
+   */
+  remark?: string;
+
+  /**
+   * 是否删除
+   */
+  deleted?: number;
+
+  stuName?: string;
+
+  stuSex?: number;
+
+  faculties?: number;
+
+  stuClass?: string;
+}
+
+export interface ScoreListQuery extends PageQuery {
+  /**
+   * 学生id
+   */
+  stuId?: string | number;
+
+  /**
+   * 分数值
+   */
+  score?: number;
+
+  /**
+   * 课程名称
+   */
+  courseName?: string;
+
+  /**
+   * 学分值
+   */
+  hourCredit?: number;
+
+  /**
+   * 是否删除
+   */
+  deleted?: number;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+
+  stuName?: string;
+
+  stuSex?: number;
+
+  faculties?: number;
+
+  stuClass?: string;
+}

+ 63 - 0
src/api/ygpassport/scoreplan/index.ts

@@ -0,0 +1,63 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { ScoreplanVO, ScoreplanForm, ScoreplanQuery } from '@/api/ygpassport/scoreplan/types';
+
+/**
+ * 查询个人目标与成长计划列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listScoreplan = (query?: ScoreplanQuery): AxiosPromise<ScoreplanVO[]> => {
+  return request({
+    url: '/system/scoreplan/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询个人目标与成长计划详细
+ * @param id
+ */
+export const getScoreplan = (id: string | number): AxiosPromise<ScoreplanVO> => {
+  return request({
+    url: '/system/scoreplan/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 新增个人目标与成长计划
+ * @param data
+ */
+export const addScoreplan = (data: ScoreplanForm) => {
+  return request({
+    url: '/system/scoreplan',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改个人目标与成长计划
+ * @param data
+ */
+export const updateScoreplan = (data: ScoreplanForm) => {
+  return request({
+    url: '/system/scoreplan',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除个人目标与成长计划
+ * @param id
+ */
+export const delScoreplan = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/system/scoreplan/' + id,
+    method: 'delete'
+  });
+};

+ 101 - 0
src/api/ygpassport/scoreplan/types.ts

@@ -0,0 +1,101 @@
+export interface ScoreplanVO {
+  /**
+   *
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 学期
+   */
+  semester: number;
+
+  /**
+   *
+   */
+  score: string;
+
+  /**
+   *
+   */
+  plan: string;
+
+  /**
+   *
+   */
+  filePath: string;
+
+}
+
+export interface ScoreplanForm extends BaseEntity {
+  /**
+   *
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   *
+   */
+  score?: string;
+
+  /**
+   *
+   */
+  plan?: string;
+
+  /**
+   *
+   */
+  filePath?: string;
+
+}
+
+export interface ScoreplanQuery extends PageQuery {
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学期
+   */
+  semester?: number;
+
+  /**
+   *
+   */
+  score?: string;
+
+  /**
+   *
+   */
+  plan?: string;
+
+  /**
+   *
+   */
+  filePath?: string;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}
+
+
+

+ 75 - 0
src/api/ygpassport/student/index.ts

@@ -0,0 +1,75 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { StudentVO, StudentForm, StudentQuery } from '@/api/ygpassport/student/types';
+
+/**
+ * 查询学生详情列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listStudent = (query?: StudentQuery): AxiosPromise<StudentVO[]> => {
+  return request({
+    url: '/ygpassport/student/list',
+    method: 'get',
+    params: query
+  });
+};
+
+/**
+ * 查询学生详情详细
+ * @param id
+ */
+export const getStudent = (id: string | number): AxiosPromise<StudentVO> => {
+  return request({
+    url: '/ygpassport/student/' + id,
+    method: 'get'
+  });
+};
+
+/**
+ * 查询学生详情详细
+ * @param stuNo
+ */
+export const getStudentByStuNo = (data: JSON): AxiosPromise<StudentVO> => {
+  return request({
+    url: '/ygpassport/student/getInfoByStuNo',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 新增学生详情
+ * @param data
+ */
+export const addStudent = (data: StudentForm) => {
+  return request({
+    url: '/ygpassport/student',
+    method: 'post',
+    data: data
+  });
+};
+
+/**
+ * 修改学生详情
+ * @param data
+ */
+export const updateStudent = (data: StudentForm) => {
+  return request({
+    url: '/ygpassport/student',
+    method: 'put',
+    data: data
+  });
+};
+
+/**
+ * 删除学生详情
+ * @param id
+ */
+export const delStudent = (id: string | number | Array<string | number>) => {
+  return request({
+    url: '/ygpassport/student/' + id,
+    method: 'delete'
+  });
+};

+ 350 - 0
src/api/ygpassport/student/types.ts

@@ -0,0 +1,350 @@
+export interface StudentVO {
+  /**
+   * id
+   */
+  id: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo: string;
+
+  /**
+   * 学生姓名
+   */
+  stuName: string;
+
+  /**
+   * 学生年龄
+   */
+  age: number;
+
+  /**
+   * 性别
+   */
+  sex: number;
+
+  /**
+   * 所属校区
+   */
+  stuCampus: number;
+
+  /**
+   * 所属学院
+   */
+  faculties: number;
+
+  /**
+   * 专业
+   */
+  stuMajor: number;
+
+  /**
+   * 年级
+   */
+  stuGrade: string;
+
+  /**
+   * 班级名称
+   */
+  stuClass: string;
+
+  /**
+   * 学制
+   */
+  academic: number;
+
+  /**
+   * 培养层次
+   */
+  stuLevels: number;
+
+  /**
+   * 照片路径
+   */
+  imagePath: string;
+
+  /**
+   * 姓名拼音
+   */
+  pinyin: string;
+
+  /**
+   * 国籍
+   */
+  nationality: string;
+
+  /**
+   * 籍贯
+   */
+  origin: string;
+
+  /**
+   * 民族
+   */
+  ethnic: string;
+
+  /**
+   * 出生日期
+   */
+  birthTime: string;
+
+  /**
+   * 手机号码
+   */
+  phone: string;
+
+  /**
+   * 邮箱
+   */
+  email: string;
+
+  /**
+   * 特长
+   */
+  specialty: string;
+
+  /**
+   * 地址
+   */
+  address: string;
+
+  /**
+   * 导师
+   */
+  mintorId: string | number;
+}
+
+export interface StudentForm extends BaseEntity {
+  /**
+   * id
+   */
+  id?: string | number;
+
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学生姓名
+   */
+  stuName?: string;
+
+  /**
+   * 学生年龄
+   */
+  age?: number;
+
+  /**
+   * 性别
+   */
+  sex?: number;
+
+  /**
+   * 所属校区
+   */
+  stuCampus?: number;
+
+  /**
+   * 所属学院
+   */
+  faculties?: number;
+
+  /**
+   * 专业
+   */
+  stuMajor?: number;
+
+  /**
+   * 年级
+   */
+  stuGrade?: string;
+
+  /**
+   * 班级名称
+   */
+  stuClass?: string;
+
+  /**
+   * 学制
+   */
+  academic?: number;
+
+  /**
+   * 培养层次
+   */
+  stuLevels?: number;
+
+  /**
+   * 照片路径
+   */
+  imagePath?: string;
+
+  /**
+   * 姓名拼音
+   */
+  pinyin?: string;
+
+  /**
+   * 国籍
+   */
+  nationality?: string;
+
+  /**
+   * 籍贯
+   */
+  origin?: string;
+
+  /**
+   * 民族
+   */
+  ethnic?: string;
+
+  /**
+   * 出生日期
+   */
+  birthTime?: string;
+
+  /**
+   * 手机号码
+   */
+  phone?: string;
+
+  /**
+   * 邮箱
+   */
+  email?: string;
+
+  /**
+   * 特长
+   */
+  specialty?: string;
+
+  /**
+   * 地址
+   */
+  address?: string;
+
+  /**
+   * 导师
+   */
+  mintorId?: string | number;
+}
+
+export interface StudentQuery extends PageQuery {
+  /**
+   * 学生学号
+   */
+  stuNo?: string;
+
+  /**
+   * 学生姓名
+   */
+  stuName?: string;
+
+  /**
+   * 学生年龄
+   */
+  age?: number;
+
+  /**
+   * 性别
+   */
+  sex?: number;
+
+  /**
+   * 所属校区
+   */
+  stuCampus?: number;
+
+  /**
+   * 所属学院
+   */
+  faculties?: number;
+
+  /**
+   * 专业
+   */
+  stuMajor?: number;
+
+  /**
+   * 年级
+   */
+  stuGrade?: string;
+
+  /**
+   * 班级名称
+   */
+  stuClass?: string;
+
+  /**
+   * 学制
+   */
+  academic?: number;
+
+  /**
+   * 培养层次
+   */
+  stuLevels?: number;
+
+  /**
+   * 照片路径
+   */
+  imagePath?: string;
+
+  /**
+   * 姓名拼音
+   */
+  pinyin?: string;
+
+  /**
+   * 国籍
+   */
+  nationality?: string;
+
+  /**
+   * 籍贯
+   */
+  origin?: string;
+
+  /**
+   * 民族
+   */
+  ethnic?: string;
+
+  /**
+   * 出生日期
+   */
+  birthTime?: string;
+
+  /**
+   * 手机号码
+   */
+  phone?: string;
+
+  /**
+   * 邮箱
+   */
+  email?: string;
+
+  /**
+   * 特长
+   */
+  specialty?: string;
+
+  /**
+   * 地址
+   */
+  address?: string;
+
+  /**
+   * 导师
+   */
+  mintorId?: string | number;
+
+  /**
+   * 日期范围参数
+   */
+  params?: any;
+}

+ 0 - 0
src/api/ygpassport/studentAlbum/index.ts


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini