parent
3f2749b6c4
commit
58929c05ef
@ -0,0 +1,12 @@ |
|||||||
|
root = true |
||||||
|
[*.{js,ts,vue}] |
||||||
|
charset = utf-8 # 设置文件字符集为 utf-8 |
||||||
|
end_of_line = lf # 控制换行类型(lf | cr | crlf) |
||||||
|
insert_final_newline = true # 始终在文件末尾插入一个新行 |
||||||
|
indent_style = space # 缩进风格(tab | space) |
||||||
|
indent_size = 2 # 缩进大小 |
||||||
|
max_line_length = 120 # 最大行长度 |
||||||
|
|
||||||
|
[*.md] # 仅 md 文件适用以下规则 |
||||||
|
max_line_length = off # 关闭最大行长度限制 |
||||||
|
trim_trailing_whitespace = false # 关闭末尾空格修剪 |
@ -0,0 +1,17 @@ |
|||||||
|
# 标题 |
||||||
|
VITE_APP_TITLE=CRM管理系统 |
||||||
|
|
||||||
|
# 项目本地运行端口号 |
||||||
|
VITE_PORT=80 |
||||||
|
|
||||||
|
# open 运行 npm run dev 时自动打开浏览器 |
||||||
|
VITE_OPEN=true |
||||||
|
|
||||||
|
# 租户开关 |
||||||
|
VITE_APP_TENANT_ENABLE=true |
||||||
|
|
||||||
|
# 验证码的开关 |
||||||
|
VITE_APP_CAPTCHA_ENABLE=true |
||||||
|
|
||||||
|
# 百度统计 |
||||||
|
VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc |
@ -0,0 +1,19 @@ |
|||||||
|
# 本地开发环境 |
||||||
|
NODE_ENV=development |
||||||
|
|
||||||
|
VITE_DEV=true |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH=/dev-api |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH=/ |
@ -0,0 +1,31 @@ |
|||||||
|
# 开发环境 |
||||||
|
NODE_ENV=production |
||||||
|
|
||||||
|
VITE_DEV=false |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://localhost:48080' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH=/dev-api |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH=/ |
||||||
|
|
||||||
|
# 是否删除debugger |
||||||
|
VITE_DROP_DEBUGGER=false |
||||||
|
|
||||||
|
# 是否删除console.log |
||||||
|
VITE_DROP_CONSOLE=false |
||||||
|
|
||||||
|
# 是否sourcemap |
||||||
|
VITE_SOURCEMAP=true |
||||||
|
|
||||||
|
# 输出路径 |
||||||
|
VITE_OUT_DIR=dist-dev |
@ -0,0 +1,34 @@ |
|||||||
|
# 本地开发环境 |
||||||
|
NODE_ENV=development |
||||||
|
|
||||||
|
VITE_DEV=true |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH=/dev-api |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH=/ |
||||||
|
|
||||||
|
# 项目本地运行端口号, 与.vscode/launch.json配合 |
||||||
|
VITE_PORT=80 |
||||||
|
|
||||||
|
# 是否删除debugger |
||||||
|
VITE_DROP_DEBUGGER=false |
||||||
|
|
||||||
|
# 是否删除console.log |
||||||
|
VITE_DROP_CONSOLE=false |
||||||
|
|
||||||
|
# 是否sourcemap |
||||||
|
VITE_SOURCEMAP=true |
||||||
|
|
||||||
|
# 验证码的开关 |
||||||
|
VITE_APP_CAPTCHA_ENABLE=false |
@ -0,0 +1,31 @@ |
|||||||
|
# 生产环境 |
||||||
|
NODE_ENV=production |
||||||
|
|
||||||
|
VITE_DEV=false |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://localhost:48080' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH= |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 是否删除debugger |
||||||
|
VITE_DROP_DEBUGGER=true |
||||||
|
|
||||||
|
# 是否删除console.log |
||||||
|
VITE_DROP_CONSOLE=true |
||||||
|
|
||||||
|
# 是否sourcemap |
||||||
|
VITE_SOURCEMAP=false |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH=/ |
||||||
|
|
||||||
|
# 输出路径 |
||||||
|
VITE_OUT_DIR=dist-pro |
@ -0,0 +1,31 @@ |
|||||||
|
# 生产环境 |
||||||
|
NODE_ENV=production |
||||||
|
|
||||||
|
VITE_DEV=false |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH= |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 是否删除debugger |
||||||
|
VITE_DROP_DEBUGGER=true |
||||||
|
|
||||||
|
# 是否删除console.log |
||||||
|
VITE_DROP_CONSOLE=true |
||||||
|
|
||||||
|
# 是否sourcemap |
||||||
|
VITE_SOURCEMAP=false |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH='http://static-vue3.yudao.iocoder.cn/' |
||||||
|
|
||||||
|
# 输出路径 |
||||||
|
VITE_OUT_DIR=dist-stage |
@ -0,0 +1,31 @@ |
|||||||
|
# 开发环境 |
||||||
|
NODE_ENV=production |
||||||
|
|
||||||
|
VITE_DEV=false |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://localhost:48080' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH= |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 是否删除debugger |
||||||
|
VITE_DROP_DEBUGGER=true |
||||||
|
|
||||||
|
# 是否删除console.log |
||||||
|
VITE_DROP_CONSOLE=true |
||||||
|
|
||||||
|
# 是否sourcemap |
||||||
|
VITE_SOURCEMAP=false |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH=/admin-ui-vue3/ |
||||||
|
|
||||||
|
# 输出路径 |
||||||
|
VITE_OUT_DIR=dist-dev |
@ -0,0 +1,31 @@ |
|||||||
|
# 测试环境 |
||||||
|
NODE_ENV=production |
||||||
|
|
||||||
|
VITE_DEV=false |
||||||
|
|
||||||
|
# 请求路径 |
||||||
|
VITE_BASE_URL='http://localhost:48080' |
||||||
|
|
||||||
|
# 上传路径 |
||||||
|
VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' |
||||||
|
|
||||||
|
# 接口前缀 |
||||||
|
VITE_API_BASEPATH= |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VITE_API_URL=/admin-api |
||||||
|
|
||||||
|
# 是否删除debugger |
||||||
|
VITE_DROP_DEBUGGER=false |
||||||
|
|
||||||
|
# 是否删除console.log |
||||||
|
VITE_DROP_CONSOLE=false |
||||||
|
|
||||||
|
# 是否sourcemap |
||||||
|
VITE_SOURCEMAP=true |
||||||
|
|
||||||
|
# 打包路径 |
||||||
|
VITE_BASE_PATH=/ |
||||||
|
|
||||||
|
# 输出路径 |
||||||
|
VITE_OUT_DIR=dist-test |
@ -0,0 +1,8 @@ |
|||||||
|
/build/ |
||||||
|
/config/ |
||||||
|
/dist/ |
||||||
|
/*.js |
||||||
|
/test/unit/coverage/ |
||||||
|
/node_modules/* |
||||||
|
/dist* |
||||||
|
/src/main.ts |
@ -0,0 +1,259 @@ |
|||||||
|
{ |
||||||
|
"globals": { |
||||||
|
"EffectScope": true, |
||||||
|
"ElMessage": true, |
||||||
|
"ElMessageBox": true, |
||||||
|
"ElTag": 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, |
||||||
|
"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, |
||||||
|
"useArrayJoin": true, |
||||||
|
"useArrayMap": true, |
||||||
|
"useArrayReduce": true, |
||||||
|
"useArraySome": true, |
||||||
|
"useAsyncQueue": true, |
||||||
|
"useAsyncState": true, |
||||||
|
"useAttrs": true, |
||||||
|
"useBase64": true, |
||||||
|
"useBattery": true, |
||||||
|
"useBluetooth": true, |
||||||
|
"useBreakpoints": true, |
||||||
|
"useBroadcastChannel": true, |
||||||
|
"useBrowserLocation": true, |
||||||
|
"useCached": true, |
||||||
|
"useClipboard": 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, |
||||||
|
"usePointerSwipe": true, |
||||||
|
"usePreferredColorScheme": true, |
||||||
|
"usePreferredDark": true, |
||||||
|
"usePreferredLanguages": true, |
||||||
|
"useRafFn": true, |
||||||
|
"useRefHistory": true, |
||||||
|
"useResizeObserver": true, |
||||||
|
"useRoute": true, |
||||||
|
"useRouter": true, |
||||||
|
"useScreenOrientation": true, |
||||||
|
"useScreenSafeArea": true, |
||||||
|
"useScriptTag": true, |
||||||
|
"useScroll": true, |
||||||
|
"useScrollLock": true, |
||||||
|
"useSessionStorage": true, |
||||||
|
"useShare": true, |
||||||
|
"useSlots": 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, |
||||||
|
"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 |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
// @ts-check
|
||||||
|
const { defineConfig } = require('eslint-define-config') |
||||||
|
module.exports = defineConfig({ |
||||||
|
root: true, |
||||||
|
env: { |
||||||
|
browser: true, |
||||||
|
node: true, |
||||||
|
es6: true |
||||||
|
}, |
||||||
|
parser: 'vue-eslint-parser', |
||||||
|
parserOptions: { |
||||||
|
parser: '@typescript-eslint/parser', |
||||||
|
ecmaVersion: 2020, |
||||||
|
sourceType: 'module', |
||||||
|
jsxPragma: 'React', |
||||||
|
ecmaFeatures: { |
||||||
|
jsx: true |
||||||
|
} |
||||||
|
}, |
||||||
|
extends: [ |
||||||
|
'plugin:vue/vue3-recommended', |
||||||
|
'plugin:@typescript-eslint/recommended', |
||||||
|
'prettier', |
||||||
|
'plugin:prettier/recommended', |
||||||
|
'./.eslintrc-auto-import.json' |
||||||
|
], |
||||||
|
rules: { |
||||||
|
'vue/script-setup-uses-vars': 'error', |
||||||
|
'vue/no-reserved-component-names': 'off', |
||||||
|
'@typescript-eslint/ban-ts-ignore': 'off', |
||||||
|
'@typescript-eslint/explicit-function-return-type': 'off', |
||||||
|
'@typescript-eslint/no-explicit-any': 'off', |
||||||
|
'@typescript-eslint/no-var-requires': 'off', |
||||||
|
'@typescript-eslint/no-empty-function': 'off', |
||||||
|
'vue/custom-event-name-casing': 'off', |
||||||
|
'no-use-before-define': 'off', |
||||||
|
'@typescript-eslint/no-use-before-define': 'off', |
||||||
|
'@typescript-eslint/ban-ts-comment': 'off', |
||||||
|
'@typescript-eslint/ban-types': 'off', |
||||||
|
'@typescript-eslint/no-non-null-assertion': 'off', |
||||||
|
'@typescript-eslint/explicit-module-boundary-types': 'off', |
||||||
|
'@typescript-eslint/no-unused-vars': 'error', |
||||||
|
'no-unused-vars': 'error', |
||||||
|
'space-before-function-paren': 'off', |
||||||
|
|
||||||
|
'vue/attributes-order': 'off', |
||||||
|
'vue/one-component-per-file': 'off', |
||||||
|
'vue/html-closing-bracket-newline': 'off', |
||||||
|
'vue/max-attributes-per-line': 'off', |
||||||
|
'vue/multiline-html-element-content-newline': 'off', |
||||||
|
'vue/singleline-html-element-content-newline': 'off', |
||||||
|
'vue/attribute-hyphenation': 'off', |
||||||
|
'vue/require-default-prop': 'off', |
||||||
|
'vue/require-explicit-emits': 'off', |
||||||
|
'vue/html-self-closing': [ |
||||||
|
'error', |
||||||
|
{ |
||||||
|
html: { |
||||||
|
void: 'always', |
||||||
|
normal: 'never', |
||||||
|
component: 'always' |
||||||
|
}, |
||||||
|
svg: 'always', |
||||||
|
math: 'always' |
||||||
|
} |
||||||
|
], |
||||||
|
'vue/multi-word-component-names': 'off' |
||||||
|
} |
||||||
|
}) |
@ -1,11 +1,11 @@ |
|||||||
# ---> Vue |
node_modules |
||||||
# gitignore template for Vue.js projects |
.DS_Store |
||||||
# |
dist |
||||||
# Recommended template: Node.gitignore |
dist-ssr |
||||||
|
*.local |
||||||
# TODO: where does this rule come from? |
/dist* |
||||||
docs/_book |
*-lock.* |
||||||
|
pnpm-debug |
||||||
# TODO: where does this rule come from? |
auto-*.d.ts |
||||||
test/ |
.idea |
||||||
|
.history |
||||||
|
@ -0,0 +1,11 @@ |
|||||||
|
/node_modules/** |
||||||
|
/dist/ |
||||||
|
/dist* |
||||||
|
/public/* |
||||||
|
/docs/* |
||||||
|
/vite.config.ts |
||||||
|
/src/types/env.d.ts |
||||||
|
/src/types/auto-components.d.ts |
||||||
|
/src/types/auto-imports.d.ts |
||||||
|
/docs/**/* |
||||||
|
CHANGELOG |
@ -0,0 +1,6 @@ |
|||||||
|
/dist/* |
||||||
|
/public/* |
||||||
|
public/* |
||||||
|
/dist* |
||||||
|
/src/types/env.d.ts |
||||||
|
/docs/**/* |
@ -0,0 +1,15 @@ |
|||||||
|
{ |
||||||
|
"recommendations": [ |
||||||
|
"voorjaar.windicss-intellisense", |
||||||
|
"vscode-icons-team.vscode-icons", |
||||||
|
"davidanson.vscode-markdownlint", |
||||||
|
"stylelint.vscode-stylelint", |
||||||
|
"dbaeumer.vscode-eslint", |
||||||
|
"esbenp.prettier-vscode", |
||||||
|
"vue.volar", |
||||||
|
"lokalise.i18n-ally", |
||||||
|
"mikestead.dotenv", |
||||||
|
"eamodio.gitlens", |
||||||
|
"antfu.iconify" |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
{ |
||||||
|
// Use IntelliSense to learn about possible attributes. |
||||||
|
// Hover to view descriptions of existing attributes. |
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 |
||||||
|
"version": "0.2.0", |
||||||
|
"configurations": [ |
||||||
|
{ |
||||||
|
"type": "msedge", |
||||||
|
"request": "launch", |
||||||
|
"name": "Launch Edge against localhost", |
||||||
|
"url": "http://localhost", |
||||||
|
"webRoot": "${workspaceFolder}/src", |
||||||
|
"sourceMaps": true |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
{ |
||||||
|
"typescript.tsdk": "node_modules/typescript/lib", |
||||||
|
"prettier.enable": true, |
||||||
|
"editor.formatOnType": true, |
||||||
|
"editor.formatOnSave": true, |
||||||
|
"editor.formatOnPaste": true, |
||||||
|
"editor.codeActionsOnSave": { |
||||||
|
"source.fixAll.eslint": "explicit" |
||||||
|
}, |
||||||
|
"[vue]": { |
||||||
|
"editor.defaultFormatter": "Vue.volar" |
||||||
|
}, |
||||||
|
"[javascript]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"[typescript]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"[json]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"[jsonc]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"[html]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"[css]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"[scss]": { |
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode" |
||||||
|
}, |
||||||
|
"i18n-ally.localesPaths": ["src/locales"], |
||||||
|
"i18n-ally.keystyle": "nested", |
||||||
|
"i18n-ally.sortKeys": true, |
||||||
|
"i18n-ally.namespace": true, |
||||||
|
"i18n-ally.enabledParsers": ["ts"], |
||||||
|
"i18n-ally.sourceLanguage": "en", |
||||||
|
"i18n-ally.displayLanguage": "zh-CN", |
||||||
|
"i18n-ally.enabledFrameworks": ["vue", "react"], |
||||||
|
"god.tsconfig": "./tsconfig.json", |
||||||
|
"vue-i18n.i18nPaths": "src/locales", |
||||||
|
"explorer.fileNesting.enabled": true, |
||||||
|
"explorer.fileNesting.expand": false, |
||||||
|
"explorer.fileNesting.patterns": { |
||||||
|
"*.ts": "$(capture).test.ts, $(capture).test.tsx", |
||||||
|
"*.tsx": "$(capture).test.ts, $(capture).test.tsx", |
||||||
|
"*.env": "$(capture).env.*", |
||||||
|
"CHANGELOG.md": "CHANGELOG*", |
||||||
|
"package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,LICENSE,.gitattributes,.gitignore,.gitpod.yml,CNAME,README*,.npmrc,.browserslistrc,vite.config.*,windi.*,tailwind.*,tsconfig.*,postcss*", |
||||||
|
".eslintrc.js": ".eslintignore,.eslintrc-*,.prettierignore,.stylelintignore,.commitlintrc.js,.prettierrc.js,.stylelint*,stylelint*,prettier.*,.editorconfig" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
MIT License |
||||||
|
|
||||||
|
Copyright (c) 2021-present Archer |
||||||
|
|
||||||
|
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. |
@ -0,0 +1,109 @@ |
|||||||
|
import { resolve } from 'path' |
||||||
|
import Vue from '@vitejs/plugin-vue' |
||||||
|
import VueJsx from '@vitejs/plugin-vue-jsx' |
||||||
|
import WindiCSS from 'vite-plugin-windicss' |
||||||
|
import progress from 'vite-plugin-progress' |
||||||
|
import EslintPlugin from 'vite-plugin-eslint' |
||||||
|
import PurgeIcons from 'vite-plugin-purge-icons' |
||||||
|
import { ViteEjsPlugin } from 'vite-plugin-ejs' |
||||||
|
// @ts-ignore
|
||||||
|
import ElementPlus from 'unplugin-element-plus/vite' |
||||||
|
import AutoImport from 'unplugin-auto-import/vite' |
||||||
|
import Components from 'unplugin-vue-components/vite' |
||||||
|
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' |
||||||
|
import viteCompression from 'vite-plugin-compression' |
||||||
|
import topLevelAwait from 'vite-plugin-top-level-await' |
||||||
|
import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus' |
||||||
|
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' |
||||||
|
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' |
||||||
|
|
||||||
|
export function createVitePlugins() { |
||||||
|
const root = process.cwd() |
||||||
|
|
||||||
|
// 路径查找
|
||||||
|
function pathResolve(dir: string) { |
||||||
|
return resolve(root, '.', dir) |
||||||
|
} |
||||||
|
|
||||||
|
return [ |
||||||
|
Vue(), |
||||||
|
VueJsx(), |
||||||
|
WindiCSS(), |
||||||
|
progress(), |
||||||
|
PurgeIcons(), |
||||||
|
vueSetupExtend(), |
||||||
|
ElementPlus({}), |
||||||
|
AutoImport({ |
||||||
|
include: [ |
||||||
|
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
|
||||||
|
/\.vue$/, |
||||||
|
/\.vue\?vue/, // .vue
|
||||||
|
/\.md$/ // .md
|
||||||
|
], |
||||||
|
imports: [ |
||||||
|
'vue', |
||||||
|
'vue-router', |
||||||
|
// 可额外添加需要 autoImport 的组件
|
||||||
|
{ |
||||||
|
'@/hooks/web/useI18n': ['useI18n'], |
||||||
|
'@/hooks/web/useMessage': ['useMessage'], |
||||||
|
'@/hooks/web/useTable': ['useTable'], |
||||||
|
'@/hooks/web/useCrudSchemas': ['useCrudSchemas'], |
||||||
|
'@/utils/formRules': ['required'], |
||||||
|
'@/utils/dict': ['DICT_TYPE'] |
||||||
|
} |
||||||
|
], |
||||||
|
dts: 'src/types/auto-imports.d.ts', |
||||||
|
resolvers: [ElementPlusResolver()], |
||||||
|
eslintrc: { |
||||||
|
enabled: false, // Default `false`
|
||||||
|
filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
|
||||||
|
globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
|
||||||
|
} |
||||||
|
}), |
||||||
|
Components({ |
||||||
|
// 要搜索组件的目录的相对路径
|
||||||
|
dirs: ['src/components'], |
||||||
|
// 组件的有效文件扩展名
|
||||||
|
extensions: ['vue', 'md'], |
||||||
|
// 搜索子目录
|
||||||
|
deep: true, |
||||||
|
include: [/\.vue$/, /\.vue\?vue/], |
||||||
|
// 生成自定义 `auto-components.d.ts` 全局声明
|
||||||
|
dts: 'src/types/auto-components.d.ts', |
||||||
|
// 自定义组件的解析器
|
||||||
|
resolvers: [ElementPlusResolver()], |
||||||
|
exclude: [/[\\/]node_modules[\\/]/] |
||||||
|
}), |
||||||
|
EslintPlugin({ |
||||||
|
cache: false, |
||||||
|
include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件
|
||||||
|
}), |
||||||
|
VueI18nPlugin({ |
||||||
|
runtimeOnly: true, |
||||||
|
compositionOnly: true, |
||||||
|
include: [resolve(__dirname, 'src/locales/**')] |
||||||
|
}), |
||||||
|
createSvgIconsPlugin({ |
||||||
|
iconDirs: [pathResolve('src/assets/svgs')], |
||||||
|
symbolId: 'icon-[dir]-[name]', |
||||||
|
svgoOptions: true |
||||||
|
}), |
||||||
|
viteCompression({ |
||||||
|
verbose: true, // 是否在控制台输出压缩结果
|
||||||
|
disable: false, // 是否禁用
|
||||||
|
threshold: 10240, // 体积大于 threshold 才会被压缩,单位 b
|
||||||
|
algorithm: 'gzip', // 压缩算法,可选 [ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw']
|
||||||
|
ext: '.gz', // 生成的压缩包后缀
|
||||||
|
deleteOriginFile: false //压缩后是否删除源文件
|
||||||
|
}), |
||||||
|
ViteEjsPlugin(), |
||||||
|
topLevelAwait({ |
||||||
|
// https://juejin.cn/post/7152191742513512485
|
||||||
|
// The export name of top-level await promise for each chunk module
|
||||||
|
promiseExportName: '__tla', |
||||||
|
// The function to generate import names of top-level await promise in each chunk module
|
||||||
|
promiseImportName: (i) => `__tla_${i}` |
||||||
|
}) |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,111 @@ |
|||||||
|
const include = [ |
||||||
|
'qs', |
||||||
|
'url', |
||||||
|
'vue', |
||||||
|
'sass', |
||||||
|
'mitt', |
||||||
|
'axios', |
||||||
|
'pinia', |
||||||
|
'dayjs', |
||||||
|
'qrcode', |
||||||
|
'windicss', |
||||||
|
'vue-router', |
||||||
|
'vue-types', |
||||||
|
'vue-i18n', |
||||||
|
'xe-utils', |
||||||
|
'crypto-js', |
||||||
|
'cropperjs', |
||||||
|
'lodash-es', |
||||||
|
'nprogress', |
||||||
|
'web-storage-cache', |
||||||
|
'@iconify/iconify', |
||||||
|
'@vueuse/core', |
||||||
|
'@zxcvbn-ts/core', |
||||||
|
'echarts/core', |
||||||
|
'echarts/charts', |
||||||
|
'echarts/components', |
||||||
|
'echarts/renderers', |
||||||
|
'echarts-wordcloud', |
||||||
|
'@wangeditor/editor', |
||||||
|
'@wangeditor/editor-for-vue', |
||||||
|
'element-plus', |
||||||
|
'element-plus/es', |
||||||
|
'element-plus/es/locale/lang/zh-cn', |
||||||
|
'element-plus/es/locale/lang/en', |
||||||
|
'element-plus/es/components/backtop/style/css', |
||||||
|
'element-plus/es/components/form/style/css', |
||||||
|
'element-plus/es/components/radio-group/style/css', |
||||||
|
'element-plus/es/components/radio/style/css', |
||||||
|
'element-plus/es/components/checkbox/style/css', |
||||||
|
'element-plus/es/components/checkbox-group/style/css', |
||||||
|
'element-plus/es/components/switch/style/css', |
||||||
|
'element-plus/es/components/time-picker/style/css', |
||||||
|
'element-plus/es/components/date-picker/style/css', |
||||||
|
'element-plus/es/components/descriptions/style/css', |
||||||
|
'element-plus/es/components/descriptions-item/style/css', |
||||||
|
'element-plus/es/components/link/style/css', |
||||||
|
'element-plus/es/components/tooltip/style/css', |
||||||
|
'element-plus/es/components/drawer/style/css', |
||||||
|
'element-plus/es/components/dialog/style/css', |
||||||
|
'element-plus/es/components/checkbox-button/style/css', |
||||||
|
'element-plus/es/components/option-group/style/css', |
||||||
|
'element-plus/es/components/radio-button/style/css', |
||||||
|
'element-plus/es/components/cascader/style/css', |
||||||
|
'element-plus/es/components/color-picker/style/css', |
||||||
|
'element-plus/es/components/input-number/style/css', |
||||||
|
'element-plus/es/components/rate/style/css', |
||||||
|
'element-plus/es/components/select-v2/style/css', |
||||||
|
'element-plus/es/components/tree-select/style/css', |
||||||
|
'element-plus/es/components/slider/style/css', |
||||||
|
'element-plus/es/components/time-select/style/css', |
||||||
|
'element-plus/es/components/autocomplete/style/css', |
||||||
|
'element-plus/es/components/image-viewer/style/css', |
||||||
|
'element-plus/es/components/upload/style/css', |
||||||
|
'element-plus/es/components/col/style/css', |
||||||
|
'element-plus/es/components/form-item/style/css', |
||||||
|
'element-plus/es/components/alert/style/css', |
||||||
|
'element-plus/es/components/breadcrumb/style/css', |
||||||
|
'element-plus/es/components/select/style/css', |
||||||
|
'element-plus/es/components/input/style/css', |
||||||
|
'element-plus/es/components/breadcrumb-item/style/css', |
||||||
|
'element-plus/es/components/tag/style/css', |
||||||
|
'element-plus/es/components/pagination/style/css', |
||||||
|
'element-plus/es/components/table/style/css', |
||||||
|
'element-plus/es/components/table-v2/style/css', |
||||||
|
'element-plus/es/components/table-column/style/css', |
||||||
|
'element-plus/es/components/card/style/css', |
||||||
|
'element-plus/es/components/row/style/css', |
||||||
|
'element-plus/es/components/button/style/css', |
||||||
|
'element-plus/es/components/menu/style/css', |
||||||
|
'element-plus/es/components/sub-menu/style/css', |
||||||
|
'element-plus/es/components/menu-item/style/css', |
||||||
|
'element-plus/es/components/option/style/css', |
||||||
|
'element-plus/es/components/dropdown/style/css', |
||||||
|
'element-plus/es/components/dropdown-menu/style/css', |
||||||
|
'element-plus/es/components/dropdown-item/style/css', |
||||||
|
'element-plus/es/components/skeleton/style/css', |
||||||
|
'element-plus/es/components/skeleton/style/css', |
||||||
|
'element-plus/es/components/backtop/style/css', |
||||||
|
'element-plus/es/components/menu/style/css', |
||||||
|
'element-plus/es/components/sub-menu/style/css', |
||||||
|
'element-plus/es/components/menu-item/style/css', |
||||||
|
'element-plus/es/components/dropdown/style/css', |
||||||
|
'element-plus/es/components/tree/style/css', |
||||||
|
'element-plus/es/components/dropdown-menu/style/css', |
||||||
|
'element-plus/es/components/dropdown-item/style/css', |
||||||
|
'element-plus/es/components/badge/style/css', |
||||||
|
'element-plus/es/components/breadcrumb/style/css', |
||||||
|
'element-plus/es/components/breadcrumb-item/style/css', |
||||||
|
'element-plus/es/components/image/style/css', |
||||||
|
'element-plus/es/components/collapse-transition/style/css', |
||||||
|
'element-plus/es/components/timeline/style/css', |
||||||
|
'element-plus/es/components/timeline-item/style/css', |
||||||
|
'element-plus/es/components/collapse/style/css', |
||||||
|
'element-plus/es/components/collapse-item/style/css', |
||||||
|
'element-plus/es/components/button-group/style/css', |
||||||
|
'element-plus/es/components/text/style/css' |
||||||
|
] |
||||||
|
|
||||||
|
const exclude = ['@iconify/json'] |
||||||
|
|
||||||
|
export { include, exclude } |
@ -0,0 +1,148 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8" /> |
||||||
|
<link rel="icon" href="/favicon.ico" /> |
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
||||||
|
<title>%VITE_APP_TITLE%</title> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="app"> |
||||||
|
<style> |
||||||
|
.app-loading { |
||||||
|
display: flex; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
justify-content: center; |
||||||
|
align-items: center; |
||||||
|
flex-direction: column; |
||||||
|
background: #f0f2f5; |
||||||
|
} |
||||||
|
|
||||||
|
.app-loading .app-loading-wrap { |
||||||
|
position: absolute; |
||||||
|
top: 50%; |
||||||
|
left: 50%; |
||||||
|
display: flex; |
||||||
|
-webkit-transform: translate3d(-50%, -50%, 0); |
||||||
|
transform: translate3d(-50%, -50%, 0); |
||||||
|
justify-content: center; |
||||||
|
align-items: center; |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
|
||||||
|
.app-loading .app-loading-title { |
||||||
|
margin-bottom: 30px; |
||||||
|
font-size: 20px; |
||||||
|
font-weight: bold; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.app-loading .app-loading-logo { |
||||||
|
width: 100px; |
||||||
|
margin: 0 auto 15px auto; |
||||||
|
} |
||||||
|
|
||||||
|
.app-loading .app-loading-item { |
||||||
|
position: relative; |
||||||
|
display: inline-block; |
||||||
|
width: 60px; |
||||||
|
height: 60px; |
||||||
|
vertical-align: middle; |
||||||
|
border-radius: 50%; |
||||||
|
} |
||||||
|
|
||||||
|
.app-loading .app-loading-outter { |
||||||
|
position: absolute; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
border: 4px solid #2d8cf0; |
||||||
|
border-bottom: 0; |
||||||
|
border-left-color: transparent; |
||||||
|
border-radius: 50%; |
||||||
|
animation: loader-outter 1s cubic-bezier(0.42, 0.61, 0.58, 0.41) infinite; |
||||||
|
} |
||||||
|
|
||||||
|
.app-loading .app-loading-inner { |
||||||
|
position: absolute; |
||||||
|
top: calc(50% - 20px); |
||||||
|
left: calc(50% - 20px); |
||||||
|
width: 40px; |
||||||
|
height: 40px; |
||||||
|
border: 4px solid #87bdff; |
||||||
|
border-right: 0; |
||||||
|
border-top-color: transparent; |
||||||
|
border-radius: 50%; |
||||||
|
animation: loader-inner 1s cubic-bezier(0.42, 0.61, 0.58, 0.41) infinite; |
||||||
|
} |
||||||
|
|
||||||
|
@-webkit-keyframes loader-outter { |
||||||
|
0% { |
||||||
|
-webkit-transform: rotate(0deg); |
||||||
|
transform: rotate(0deg); |
||||||
|
} |
||||||
|
|
||||||
|
100% { |
||||||
|
-webkit-transform: rotate(360deg); |
||||||
|
transform: rotate(360deg); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@keyframes loader-outter { |
||||||
|
0% { |
||||||
|
-webkit-transform: rotate(0deg); |
||||||
|
transform: rotate(0deg); |
||||||
|
} |
||||||
|
|
||||||
|
100% { |
||||||
|
-webkit-transform: rotate(360deg); |
||||||
|
transform: rotate(360deg); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@-webkit-keyframes loader-inner { |
||||||
|
0% { |
||||||
|
-webkit-transform: rotate(0deg); |
||||||
|
transform: rotate(0deg); |
||||||
|
} |
||||||
|
|
||||||
|
100% { |
||||||
|
-webkit-transform: rotate(-360deg); |
||||||
|
transform: rotate(-360deg); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@keyframes loader-inner { |
||||||
|
0% { |
||||||
|
-webkit-transform: rotate(0deg); |
||||||
|
transform: rotate(0deg); |
||||||
|
} |
||||||
|
|
||||||
|
100% { |
||||||
|
-webkit-transform: rotate(-360deg); |
||||||
|
transform: rotate(-360deg); |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
||||||
|
<div class="app-loading"> |
||||||
|
<div class="app-loading-wrap"> |
||||||
|
<div class="app-loading-title"> |
||||||
|
<img src="/logo.gif" class="app-loading-logo" alt="Logo" /> |
||||||
|
<div class="app-loading-title">%VITE_APP_TITLE%</div> |
||||||
|
</div> |
||||||
|
<div class="app-loading-item"> |
||||||
|
<div class="app-loading-outter"></div> |
||||||
|
<div class="app-loading-inner"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<script type="module" src="/src/main.js"></script> |
||||||
|
<script type="text/javascript"> |
||||||
|
window._AMapSecurityConfig = { |
||||||
|
securityJsCode: 'a2f0d14a4c5c1e387f9271b1045a781d' // 你的密钥 |
||||||
|
} |
||||||
|
</script> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,149 @@ |
|||||||
|
{ |
||||||
|
"name": "yudao-ui-admin-vue3", |
||||||
|
"version": "1.7.3-snapshot", |
||||||
|
"description": "基于vue3、vite4、element-plus、typesScript", |
||||||
|
"author": "xingyu", |
||||||
|
"private": false, |
||||||
|
"scripts": { |
||||||
|
"i": "pnpm install", |
||||||
|
"dev": "vite --mode base", |
||||||
|
"dev-front": "vite --mode front", |
||||||
|
"front": "vite --mode front", |
||||||
|
"ts:check": "vue-tsc --noEmit", |
||||||
|
"build:pro": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode pro", |
||||||
|
"build:dev": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode dev", |
||||||
|
"build:stage": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode stage", |
||||||
|
"build:test": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode test", |
||||||
|
"build:static": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode static", |
||||||
|
"build:front": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode front", |
||||||
|
"serve:pro": "vite preview --mode pro", |
||||||
|
"serve:dev": "vite preview --mode dev", |
||||||
|
"serve:test": "vite preview --mode test", |
||||||
|
"preview": "pnpm build && vite preview", |
||||||
|
"npm:check": "npx npm-check-updates", |
||||||
|
"clean": "npx rimraf node_modules", |
||||||
|
"clean:cache": "npx rimraf node_modules/.cache", |
||||||
|
"lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src", |
||||||
|
"lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", |
||||||
|
"lint:style": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", |
||||||
|
"lint:lint-staged": "lint-staged -c ", |
||||||
|
"lint:pretty": "pretty-quick --staged" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"@amap/amap-jsapi-loader": "^1.0.1", |
||||||
|
"@element-plus/icons-vue": "^2.1.0", |
||||||
|
"@form-create/designer": "^3.1.0", |
||||||
|
"@form-create/element-ui": "^3.1.17", |
||||||
|
"@iconify/iconify": "^3.1.0", |
||||||
|
"@videojs-player/vue": "^1.0.0", |
||||||
|
"@vueuse/core": "^10.1.2", |
||||||
|
"@wangeditor/editor": "^5.1.23", |
||||||
|
"@wangeditor/editor-for-vue": "^5.1.10", |
||||||
|
"@zxcvbn-ts/core": "^3.0.1", |
||||||
|
"animate.css": "^4.1.1", |
||||||
|
"axios": "^1.4.0", |
||||||
|
"benz-amr-recorder": "^1.1.5", |
||||||
|
"bpmn-js-token-simulation": "^0.10.0", |
||||||
|
"camunda-bpmn-moddle": "^7.0.1", |
||||||
|
"cropperjs": "^1.5.13", |
||||||
|
"crypto-js": "^4.1.1", |
||||||
|
"dayjs": "^1.11.7", |
||||||
|
"diagram-js": "^11.6.0", |
||||||
|
"echarts": "^5.4.2", |
||||||
|
"echarts-wordcloud": "^2.1.0", |
||||||
|
"element-plus": "2.3.4", |
||||||
|
"fast-xml-parser": "^4.2.2", |
||||||
|
"highlight.js": "^11.8.0", |
||||||
|
"intro.js": "^7.0.1", |
||||||
|
"jsencrypt": "^3.3.2", |
||||||
|
"lodash-es": "^4.17.21", |
||||||
|
"min-dash": "^4.1.1", |
||||||
|
"mitt": "^3.0.0", |
||||||
|
"nprogress": "^0.2.0", |
||||||
|
"pinia": "^2.1.3", |
||||||
|
"qrcode": "^1.5.3", |
||||||
|
"qs": "^6.11.2", |
||||||
|
"steady-xml": "^0.1.0", |
||||||
|
"url": "^0.11.0", |
||||||
|
"video.js": "^8.3.0", |
||||||
|
"vue": "3.3.4", |
||||||
|
"vue-amap": "^0.5.10", |
||||||
|
"vue-dompurify-html": "^5.0.1", |
||||||
|
"vue-i18n": "9.2.2", |
||||||
|
"vue-router": "^4.2.1", |
||||||
|
"vue-types": "^5.0.3", |
||||||
|
"vuedraggable": "^4.1.0", |
||||||
|
"web-storage-cache": "^1.1.1", |
||||||
|
"xe-utils": "^3.5.7", |
||||||
|
"xml-js": "^1.6.11" |
||||||
|
}, |
||||||
|
"devDependencies": { |
||||||
|
"@commitlint/cli": "^17.6.3", |
||||||
|
"@commitlint/config-conventional": "^17.6.3", |
||||||
|
"@iconify/json": "^2.2.67", |
||||||
|
"@intlify/unplugin-vue-i18n": "^0.10.0", |
||||||
|
"@purge-icons/generated": "^0.9.0", |
||||||
|
"@types/intro.js": "^5.1.1", |
||||||
|
"@types/lodash-es": "^4.17.7", |
||||||
|
"@types/node": "^18.16.0", |
||||||
|
"@types/nprogress": "^0.2.0", |
||||||
|
"@types/qrcode": "^1.5.0", |
||||||
|
"@types/qs": "^6.9.7", |
||||||
|
"@typescript-eslint/eslint-plugin": "^5.59.6", |
||||||
|
"@typescript-eslint/parser": "^5.59.6", |
||||||
|
"@vitejs/plugin-legacy": "^4.0.3", |
||||||
|
"@vitejs/plugin-vue": "^4.2.3", |
||||||
|
"@vitejs/plugin-vue-jsx": "^3.0.1", |
||||||
|
"autoprefixer": "^10.4.14", |
||||||
|
"bpmn-js": "^8.9.0", |
||||||
|
"bpmn-js-properties-panel": "^0.46.0", |
||||||
|
"consola": "^3.1.0", |
||||||
|
"eslint": "^8.40.0", |
||||||
|
"eslint-config-prettier": "^8.8.0", |
||||||
|
"eslint-define-config": "^1.20.0", |
||||||
|
"eslint-plugin-prettier": "^4.2.1", |
||||||
|
"eslint-plugin-vue": "^9.13.0", |
||||||
|
"lint-staged": "^13.2.2", |
||||||
|
"postcss": "^8.4.23", |
||||||
|
"postcss-html": "^1.5.0", |
||||||
|
"postcss-scss": "^4.0.6", |
||||||
|
"prettier": "^2.8.8", |
||||||
|
"rimraf": "^5.0.1", |
||||||
|
"rollup": "^3.22.0", |
||||||
|
"sass": "^1.62.1", |
||||||
|
"stylelint": "^15.6.2", |
||||||
|
"stylelint-config-html": "^1.1.0", |
||||||
|
"stylelint-config-recommended": "^12.0.0", |
||||||
|
"stylelint-config-standard": "^33.0.0", |
||||||
|
"stylelint-order": "^6.0.3", |
||||||
|
"terser": "^5.17.4", |
||||||
|
"typescript": "5.0.4", |
||||||
|
"unplugin-auto-import": "^0.16.0", |
||||||
|
"unplugin-element-plus": "^0.7.1", |
||||||
|
"unplugin-vue-components": "^0.24.1", |
||||||
|
"vite": "4.3.8", |
||||||
|
"vite-plugin-compression": "^0.5.1", |
||||||
|
"vite-plugin-ejs": "^1.6.4", |
||||||
|
"vite-plugin-eslint": "^1.8.1", |
||||||
|
"vite-plugin-progress": "^0.0.7", |
||||||
|
"vite-plugin-purge-icons": "^0.9.2", |
||||||
|
"vite-plugin-svg-icons": "^2.0.1", |
||||||
|
"vite-plugin-top-level-await": "^1.3.0", |
||||||
|
"vite-plugin-vue-setup-extend-plus": "^0.1.0", |
||||||
|
"vite-plugin-windicss": "^1.9.0", |
||||||
|
"vue-tsc": "^1.6.5", |
||||||
|
"windicss": "^3.5.6" |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=16.0.0" |
||||||
|
}, |
||||||
|
"license": "MIT", |
||||||
|
"repository": { |
||||||
|
"type": "git", |
||||||
|
"url": "git+https://gitee.com/yudaocode/yudao-ui-admin-vue3" |
||||||
|
}, |
||||||
|
"bugs": { |
||||||
|
"url": "https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues" |
||||||
|
}, |
||||||
|
"homepage": "https://gitee.com/yudaocode/yudao-ui-admin-vue3" |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
module.exports = { |
||||||
|
plugins: { |
||||||
|
autoprefixer: {} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
module.exports = { |
||||||
|
printWidth: 100, // 每行代码长度(默认80)
|
||||||
|
tabWidth: 2, // 每个tab相当于多少个空格(默认2)ab进行缩进(默认false)
|
||||||
|
useTabs: false, // 是否使用tab
|
||||||
|
semi: false, // 声明结尾使用分号(默认true)
|
||||||
|
vueIndentScriptAndStyle: false, |
||||||
|
singleQuote: true, // 使用单引号(默认false)
|
||||||
|
quoteProps: 'as-needed', |
||||||
|
bracketSpacing: true, // 对象字面量的大括号间使用空格(默认true)
|
||||||
|
trailingComma: 'none', // 多行使用拖尾逗号(默认none)
|
||||||
|
jsxSingleQuote: false, |
||||||
|
// 箭头函数参数括号 默认avoid 可选 avoid| always
|
||||||
|
// avoid 能省略括号的时候就省略 例如x => x
|
||||||
|
// always 总是有括号
|
||||||
|
arrowParens: 'always', |
||||||
|
insertPragma: false, |
||||||
|
requirePragma: false, |
||||||
|
proseWrap: 'never', |
||||||
|
htmlWhitespaceSensitivity: 'strict', |
||||||
|
endOfLine: 'auto', |
||||||
|
rangeStart: 0 |
||||||
|
} |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 6.2 KiB |
@ -0,0 +1,54 @@ |
|||||||
|
<script lang="ts" name="APP" setup> |
||||||
|
import { isDark } from '@/utils/is' |
||||||
|
import { useAppStore } from '@/store/modules/app' |
||||||
|
import { useDesign } from '@/hooks/web/useDesign' |
||||||
|
import { CACHE_KEY, useCache } from '@/hooks/web/useCache' |
||||||
|
import routerSearch from '@/components/RouterSearch/index.vue' |
||||||
|
|
||||||
|
const { getPrefixCls } = useDesign() |
||||||
|
const prefixCls = getPrefixCls('app') |
||||||
|
const appStore = useAppStore() |
||||||
|
const currentSize = computed(() => appStore.getCurrentSize) |
||||||
|
const greyMode = computed(() => appStore.getGreyMode) |
||||||
|
const { wsCache } = useCache() |
||||||
|
|
||||||
|
// 根据浏览器当前主题设置系统主题色 |
||||||
|
const setDefaultTheme = () => { |
||||||
|
let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK) |
||||||
|
if (isDarkTheme === null) { |
||||||
|
isDarkTheme = isDark() |
||||||
|
} |
||||||
|
appStore.setIsDark(isDarkTheme) |
||||||
|
} |
||||||
|
setDefaultTheme() |
||||||
|
</script> |
||||||
|
<template> |
||||||
|
<ConfigGlobal :size="currentSize"> |
||||||
|
<RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" /> |
||||||
|
<routerSearch /> |
||||||
|
</ConfigGlobal> |
||||||
|
</template> |
||||||
|
<style lang="scss"> |
||||||
|
$prefix-cls: #{$namespace}-app; |
||||||
|
|
||||||
|
.size { |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
html, |
||||||
|
body { |
||||||
|
padding: 0 !important; |
||||||
|
margin: 0; |
||||||
|
overflow: hidden; |
||||||
|
@extend .size; |
||||||
|
|
||||||
|
#app { |
||||||
|
@extend .size; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.#{$prefix-cls}-grey-mode { |
||||||
|
filter: grayscale(100%); |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,8 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export const getActivityList = async (params) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/activity/list', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export const getProcessDefinitionBpmnXML = async (id: number) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/process-definition/get-bpmn-xml?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const getProcessDefinitionPage = async (params) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/process-definition/page', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const getProcessDefinitionList = async (params) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/process-definition/list', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,56 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type FormVO = { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
conf: string |
||||||
|
fields: string[] |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
createTime: string |
||||||
|
} |
||||||
|
|
||||||
|
// 创建工作流的表单定义
|
||||||
|
export const createForm = async (data: FormVO) => { |
||||||
|
return await request.post({ |
||||||
|
url: '/bpm/form/create', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新工作流的表单定义
|
||||||
|
export const updateForm = async (data: FormVO) => { |
||||||
|
return await request.put({ |
||||||
|
url: '/bpm/form/update', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除工作流的表单定义
|
||||||
|
export const deleteForm = async (id: number) => { |
||||||
|
return await request.delete({ |
||||||
|
url: '/bpm/form/delete?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得工作流的表单定义
|
||||||
|
export const getForm = async (id: number) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/form/get?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得工作流的表单定义分页
|
||||||
|
export const getFormPage = async (params) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/form/page', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得动态表单的精简列表
|
||||||
|
export const getSimpleFormList = async () => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/form/list-all-simple' |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type LeaveVO = { |
||||||
|
id: number |
||||||
|
result: number |
||||||
|
type: number |
||||||
|
reason: string |
||||||
|
processInstanceId: string |
||||||
|
startTime: string |
||||||
|
endTime: string |
||||||
|
createTime: string |
||||||
|
} |
||||||
|
|
||||||
|
// 创建请假申请
|
||||||
|
export const createLeave = async (data: LeaveVO) => { |
||||||
|
return await request.post({ url: '/bpm/oa/leave/create', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得请假申请
|
||||||
|
export const getLeave = async (id: number) => { |
||||||
|
return await request.get({ url: '/bpm/oa/leave/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得请假申请分页
|
||||||
|
export const getLeavePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/bpm/oa/leave/page', params }) |
||||||
|
} |
@ -0,0 +1,59 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type ProcessDefinitionVO = { |
||||||
|
id: string |
||||||
|
version: number |
||||||
|
deploymentTIme: string |
||||||
|
suspensionState: number |
||||||
|
} |
||||||
|
|
||||||
|
export type ModelVO = { |
||||||
|
id: number |
||||||
|
formName: string |
||||||
|
key: string |
||||||
|
name: string |
||||||
|
description: string |
||||||
|
category: string |
||||||
|
formType: number |
||||||
|
formId: number |
||||||
|
formCustomCreatePath: string |
||||||
|
formCustomViewPath: string |
||||||
|
processDefinition: ProcessDefinitionVO |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
createTime: string |
||||||
|
bpmnXml: string |
||||||
|
} |
||||||
|
|
||||||
|
export const getModelPage = async (params) => { |
||||||
|
return await request.get({ url: '/bpm/model/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
export const getModel = async (id: number) => { |
||||||
|
return await request.get({ url: '/bpm/model/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
export const updateModel = async (data: ModelVO) => { |
||||||
|
return await request.put({ url: '/bpm/model/update', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 任务状态修改
|
||||||
|
export const updateModelState = async (id: number, state: number) => { |
||||||
|
const data = { |
||||||
|
id: id, |
||||||
|
state: state |
||||||
|
} |
||||||
|
return await request.put({ url: '/bpm/model/update-state', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const createModel = async (data: ModelVO) => { |
||||||
|
return await request.post({ url: '/bpm/model/create', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const deleteModel = async (id: number) => { |
||||||
|
return await request.delete({ url: '/bpm/model/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
export const deployModel = async (id: number) => { |
||||||
|
return await request.post({ url: '/bpm/model/deploy?id=' + id }) |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type Task = { |
||||||
|
id: string |
||||||
|
name: string |
||||||
|
} |
||||||
|
|
||||||
|
export type ProcessInstanceVO = { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
processDefinitionId: string |
||||||
|
category: string |
||||||
|
result: number |
||||||
|
tasks: Task[] |
||||||
|
fields: string[] |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
businessKey: string |
||||||
|
createTime: string |
||||||
|
endTime: string |
||||||
|
} |
||||||
|
|
||||||
|
export const getMyProcessInstancePage = async (params) => { |
||||||
|
return await request.get({ url: '/bpm/process-instance/my-page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
export const createProcessInstance = async (data) => { |
||||||
|
return await request.post({ url: '/bpm/process-instance/create', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const cancelProcessInstance = async (id: number, reason: string) => { |
||||||
|
const data = { |
||||||
|
id: id, |
||||||
|
reason: reason |
||||||
|
} |
||||||
|
return await request.delete({ url: '/bpm/process-instance/cancel', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const getProcessInstance = async (id: number) => { |
||||||
|
return await request.get({ url: '/bpm/process-instance/get?id=' + id }) |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type TaskVO = { |
||||||
|
id: number |
||||||
|
} |
||||||
|
|
||||||
|
export const getTodoTaskPage = async (params) => { |
||||||
|
return await request.get({ url: '/bpm/task/todo-page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
export const getDoneTaskPage = async (params) => { |
||||||
|
return await request.get({ url: '/bpm/task/done-page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
export const completeTask = async (data) => { |
||||||
|
return await request.put({ url: '/bpm/task/complete', data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const approveTask = async (data) => { |
||||||
|
return await request.put({ url: '/bpm/task/approve', data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const rejectTask = async (data) => { |
||||||
|
return await request.put({ url: '/bpm/task/reject', data }) |
||||||
|
} |
||||||
|
export const backTask = async (data) => { |
||||||
|
return await request.put({ url: '/bpm/task/back', data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const updateTaskAssignee = async (data) => { |
||||||
|
return await request.put({ url: '/bpm/task/update-assignee', data }) |
||||||
|
} |
||||||
|
|
||||||
|
export const getTaskListByProcessInstanceId = async (processInstanceId) => { |
||||||
|
return await request.get({ |
||||||
|
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出任务
|
||||||
|
export const exportTask = async (params) => { |
||||||
|
return await request.download({ url: '/bpm/task/export', params }) |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type TaskAssignVO = { |
||||||
|
id: number |
||||||
|
modelId: string |
||||||
|
processDefinitionId: string |
||||||
|
taskDefinitionKey: string |
||||||
|
taskDefinitionName: string |
||||||
|
options: string[] |
||||||
|
type: number |
||||||
|
} |
||||||
|
|
||||||
|
export const getTaskAssignRuleList = async (params) => { |
||||||
|
return await request.get({ url: '/bpm/task-assign-rule/list', params }) |
||||||
|
} |
||||||
|
|
||||||
|
export const createTaskAssignRule = async (data: TaskAssignVO) => { |
||||||
|
return await request.post({ |
||||||
|
url: '/bpm/task-assign-rule/create', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export const updateTaskAssignRule = async (data: TaskAssignVO) => { |
||||||
|
return await request.put({ |
||||||
|
url: '/bpm/task-assign-rule/update', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type UserGroupVO = { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
description: string |
||||||
|
memberUserIds: number[] |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
createTime: string |
||||||
|
} |
||||||
|
|
||||||
|
// 创建用户组
|
||||||
|
export const createUserGroup = async (data: UserGroupVO) => { |
||||||
|
return await request.post({ |
||||||
|
url: '/bpm/user-group/create', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新用户组
|
||||||
|
export const updateUserGroup = async (data: UserGroupVO) => { |
||||||
|
return await request.put({ |
||||||
|
url: '/bpm/user-group/update', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除用户组
|
||||||
|
export const deleteUserGroup = async (id: number) => { |
||||||
|
return await request.delete({ url: '/bpm/user-group/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得用户组
|
||||||
|
export const getUserGroup = async (id: number) => { |
||||||
|
return await request.get({ url: '/bpm/user-group/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得用户组分页
|
||||||
|
export const getUserGroupPage = async (params) => { |
||||||
|
return await request.get({ url: '/bpm/user-group/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取用户组精简信息列表
|
||||||
|
export const getSimpleUserGroupList = async (): Promise<UserGroupVO[]> => { |
||||||
|
return await request.get({ url: '/bpm/user-group/list-all-simple' }) |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface ApiAccessLogVO { |
||||||
|
id: number |
||||||
|
traceId: string |
||||||
|
userId: number |
||||||
|
userType: number |
||||||
|
applicationName: string |
||||||
|
requestMethod: string |
||||||
|
requestParams: string |
||||||
|
requestUrl: string |
||||||
|
userIp: string |
||||||
|
userAgent: string |
||||||
|
beginTime: Date |
||||||
|
endTIme: Date |
||||||
|
duration: number |
||||||
|
resultCode: number |
||||||
|
resultMsg: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表API 访问日志
|
||||||
|
export const getApiAccessLogPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/api-access-log/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出API 访问日志
|
||||||
|
export const exportApiAccessLog = (params) => { |
||||||
|
return request.download({ url: '/infra/api-access-log/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface ApiErrorLogVO { |
||||||
|
id: number |
||||||
|
traceId: string |
||||||
|
userId: number |
||||||
|
userType: number |
||||||
|
applicationName: string |
||||||
|
requestMethod: string |
||||||
|
requestParams: string |
||||||
|
requestUrl: string |
||||||
|
userIp: string |
||||||
|
userAgent: string |
||||||
|
exceptionTime: Date |
||||||
|
exceptionName: string |
||||||
|
exceptionMessage: string |
||||||
|
exceptionRootCauseMessage: string |
||||||
|
exceptionStackTrace: string |
||||||
|
exceptionClassName: string |
||||||
|
exceptionFileName: string |
||||||
|
exceptionMethodName: string |
||||||
|
exceptionLineNumber: number |
||||||
|
processUserId: number |
||||||
|
processStatus: number |
||||||
|
processTime: Date |
||||||
|
resultCode: number |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表API 访问日志
|
||||||
|
export const getApiErrorLogPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/api-error-log/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新 API 错误日志的处理状态
|
||||||
|
export const updateApiErrorLogPage = (id: number, processStatus: number) => { |
||||||
|
return request.put({ |
||||||
|
url: '/infra/api-error-log/update-status?id=' + id + '&processStatus=' + processStatus |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出API 访问日志
|
||||||
|
export const exportApiErrorLog = (params) => { |
||||||
|
return request.download({ |
||||||
|
url: '/infra/api-error-log/export-excel', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,123 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type CodegenTableVO = { |
||||||
|
id: number |
||||||
|
tableId: number |
||||||
|
isParentMenuIdValid: boolean |
||||||
|
dataSourceConfigId: number |
||||||
|
scene: number |
||||||
|
tableName: string |
||||||
|
tableComment: string |
||||||
|
remark: string |
||||||
|
moduleName: string |
||||||
|
businessName: string |
||||||
|
className: string |
||||||
|
classComment: string |
||||||
|
author: string |
||||||
|
createTime: Date |
||||||
|
updateTime: Date |
||||||
|
templateType: number |
||||||
|
parentMenuId: number |
||||||
|
} |
||||||
|
|
||||||
|
export type CodegenColumnVO = { |
||||||
|
id: number |
||||||
|
tableId: number |
||||||
|
columnName: string |
||||||
|
dataType: string |
||||||
|
columnComment: string |
||||||
|
nullable: number |
||||||
|
primaryKey: number |
||||||
|
autoIncrement: string |
||||||
|
ordinalPosition: number |
||||||
|
javaType: string |
||||||
|
javaField: string |
||||||
|
dictType: string |
||||||
|
example: string |
||||||
|
createOperation: number |
||||||
|
updateOperation: number |
||||||
|
listOperation: number |
||||||
|
listOperationCondition: string |
||||||
|
listOperationResult: number |
||||||
|
htmlType: string |
||||||
|
} |
||||||
|
|
||||||
|
export type DatabaseTableVO = { |
||||||
|
name: string |
||||||
|
comment: string |
||||||
|
} |
||||||
|
|
||||||
|
export type CodegenDetailVO = { |
||||||
|
table: CodegenTableVO |
||||||
|
columns: CodegenColumnVO[] |
||||||
|
} |
||||||
|
|
||||||
|
export type CodegenPreviewVO = { |
||||||
|
filePath: string |
||||||
|
code: string |
||||||
|
} |
||||||
|
|
||||||
|
export type CodegenUpdateReqVO = { |
||||||
|
table: CodegenTableVO | any |
||||||
|
columns: CodegenColumnVO[] |
||||||
|
} |
||||||
|
|
||||||
|
export type CodegenCreateListReqVO = { |
||||||
|
dataSourceConfigId: number |
||||||
|
tableNames: string[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表代码生成表定义
|
||||||
|
export const getCodegenTablePage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/codegen/table/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询详情代码生成表定义
|
||||||
|
export const getCodegenTable = (id: number) => { |
||||||
|
return request.get({ url: '/infra/codegen/detail?tableId=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增代码生成表定义
|
||||||
|
export const createCodegenTable = (data: CodegenCreateListReqVO) => { |
||||||
|
return request.post({ url: '/infra/codegen/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改代码生成表定义
|
||||||
|
export const updateCodegenTable = (data: CodegenUpdateReqVO) => { |
||||||
|
return request.put({ url: '/infra/codegen/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 基于数据库的表结构,同步数据库的表和字段定义
|
||||||
|
export const syncCodegenFromDB = (id: number) => { |
||||||
|
return request.put({ url: '/infra/codegen/sync-from-db?tableId=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 基于 SQL 建表语句,同步数据库的表和字段定义
|
||||||
|
export const syncCodegenFromSQL = (id: number, sql: string) => { |
||||||
|
return request.put({ url: '/infra/codegen/sync-from-sql?tableId=' + id + '&sql=' + sql }) |
||||||
|
} |
||||||
|
|
||||||
|
// 预览生成代码
|
||||||
|
export const previewCodegen = (id: number) => { |
||||||
|
return request.get({ url: '/infra/codegen/preview?tableId=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 下载生成代码
|
||||||
|
export const downloadCodegen = (id: number) => { |
||||||
|
return request.download({ url: '/infra/codegen/download?tableId=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得表定义
|
||||||
|
export const getSchemaTableList = (params) => { |
||||||
|
return request.get({ url: '/infra/codegen/db/table/list', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 基于数据库的表结构,创建代码生成器的表定义
|
||||||
|
export const createCodegenList = (data) => { |
||||||
|
return request.post({ url: '/infra/codegen/create-list', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除代码生成表定义
|
||||||
|
export const deleteCodegenTable = (id: number) => { |
||||||
|
return request.delete({ url: '/infra/codegen/delete?tableId=' + id }) |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface ConfigVO { |
||||||
|
id: number | undefined |
||||||
|
category: string |
||||||
|
name: string |
||||||
|
key: string |
||||||
|
value: string |
||||||
|
type: number |
||||||
|
visible: boolean |
||||||
|
remark: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询参数列表
|
||||||
|
export const getConfigPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/config/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询参数详情
|
||||||
|
export const getConfig = (id: number) => { |
||||||
|
return request.get({ url: '/infra/config/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 根据参数键名查询参数值
|
||||||
|
export const getConfigKey = (configKey: string) => { |
||||||
|
return request.get({ url: '/infra/config/get-value-by-key?key=' + configKey }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增参数
|
||||||
|
export const createConfig = (data: ConfigVO) => { |
||||||
|
return request.post({ url: '/infra/config/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改参数
|
||||||
|
export const updateConfig = (data: ConfigVO) => { |
||||||
|
return request.put({ url: '/infra/config/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除参数
|
||||||
|
export const deleteConfig = (id: number) => { |
||||||
|
return request.delete({ url: '/infra/config/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出参数
|
||||||
|
export const exportConfig = (params) => { |
||||||
|
return request.download({ url: '/infra/config/export', params }) |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface DataSourceConfigVO { |
||||||
|
id: number | undefined |
||||||
|
name: string |
||||||
|
url: string |
||||||
|
username: string |
||||||
|
password: string |
||||||
|
createTime?: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 新增数据源配置
|
||||||
|
export const createDataSourceConfig = (data: DataSourceConfigVO) => { |
||||||
|
return request.post({ url: '/infra/data-source-config/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改数据源配置
|
||||||
|
export const updateDataSourceConfig = (data: DataSourceConfigVO) => { |
||||||
|
return request.put({ url: '/infra/data-source-config/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除数据源配置
|
||||||
|
export const deleteDataSourceConfig = (id: number) => { |
||||||
|
return request.delete({ url: '/infra/data-source-config/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询数据源配置详情
|
||||||
|
export const getDataSourceConfig = (id: number) => { |
||||||
|
return request.get({ url: '/infra/data-source-config/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询数据源配置列表
|
||||||
|
export const getDataSourceConfigList = () => { |
||||||
|
return request.get({ url: '/infra/data-source-config/list' }) |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 导出Html
|
||||||
|
export const exportHtml = () => { |
||||||
|
return request.download({ url: '/infra/db-doc/export-html' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出Word
|
||||||
|
export const exportWord = () => { |
||||||
|
return request.download({ url: '/infra/db-doc/export-word' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出Markdown
|
||||||
|
export const exportMarkdown = () => { |
||||||
|
return request.download({ url: '/infra/db-doc/export-markdown' }) |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface FilePageReqVO extends PageParam { |
||||||
|
path?: string |
||||||
|
type?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询文件列表
|
||||||
|
export const getFilePage = (params: FilePageReqVO) => { |
||||||
|
return request.get({ url: '/infra/file/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除文件
|
||||||
|
export const deleteFile = (id: number) => { |
||||||
|
return request.delete({ url: '/infra/file/delete?id=' + id }) |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface FileClientConfig { |
||||||
|
basePath: string |
||||||
|
host?: string |
||||||
|
port?: number |
||||||
|
username?: string |
||||||
|
password?: string |
||||||
|
mode?: string |
||||||
|
endpoint?: string |
||||||
|
bucket?: string |
||||||
|
accessKey?: string |
||||||
|
accessSecret?: string |
||||||
|
domain: string |
||||||
|
} |
||||||
|
|
||||||
|
export interface FileConfigVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
storage: any |
||||||
|
master: boolean |
||||||
|
visible: boolean |
||||||
|
config: FileClientConfig |
||||||
|
remark: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询文件配置列表
|
||||||
|
export const getFileConfigPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/file-config/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询文件配置详情
|
||||||
|
export const getFileConfig = (id: number) => { |
||||||
|
return request.get({ url: '/infra/file-config/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新文件配置为主配置
|
||||||
|
export const updateFileConfigMaster = (id: number) => { |
||||||
|
return request.put({ url: '/infra/file-config/update-master?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增文件配置
|
||||||
|
export const createFileConfig = (data: FileConfigVO) => { |
||||||
|
return request.post({ url: '/infra/file-config/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改文件配置
|
||||||
|
export const updateFileConfig = (data: FileConfigVO) => { |
||||||
|
return request.put({ url: '/infra/file-config/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除文件配置
|
||||||
|
export const deleteFileConfig = (id: number) => { |
||||||
|
return request.delete({ url: '/infra/file-config/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 测试文件配置
|
||||||
|
export const testFileConfig = (id: number) => { |
||||||
|
return request.get({ url: '/infra/file-config/test?id=' + id }) |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface JobVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
status: number |
||||||
|
handlerName: string |
||||||
|
handlerParam: string |
||||||
|
cronExpression: string |
||||||
|
retryCount: number |
||||||
|
retryInterval: number |
||||||
|
monitorTimeout: number |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 任务列表
|
||||||
|
export const getJobPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/job/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 任务详情
|
||||||
|
export const getJob = (id: number) => { |
||||||
|
return request.get({ url: '/infra/job/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增任务
|
||||||
|
export const createJob = (data: JobVO) => { |
||||||
|
return request.post({ url: '/infra/job/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改定时任务调度
|
||||||
|
export const updateJob = (data: JobVO) => { |
||||||
|
return request.put({ url: '/infra/job/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除定时任务调度
|
||||||
|
export const deleteJob = (id: number) => { |
||||||
|
return request.delete({ url: '/infra/job/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出定时任务调度
|
||||||
|
export const exportJob = (params) => { |
||||||
|
return request.download({ url: '/infra/job/export-excel', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 任务状态修改
|
||||||
|
export const updateJobStatus = (id: number, status: number) => { |
||||||
|
const params = { |
||||||
|
id, |
||||||
|
status |
||||||
|
} |
||||||
|
return request.put({ url: '/infra/job/update-status', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 定时任务立即执行一次
|
||||||
|
export const runJob = (id: number) => { |
||||||
|
return request.put({ url: '/infra/job/trigger?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得定时任务的下 n 次执行时间
|
||||||
|
export const getJobNextTimes = (id: number) => { |
||||||
|
return request.get({ url: '/infra/job/get_next_times?id=' + id }) |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface JobLogVO { |
||||||
|
id: number |
||||||
|
jobId: number |
||||||
|
handlerName: string |
||||||
|
handlerParam: string |
||||||
|
cronExpression: string |
||||||
|
executeIndex: string |
||||||
|
beginTime: string |
||||||
|
endTime: string |
||||||
|
duration: string |
||||||
|
status: number |
||||||
|
createTime: string |
||||||
|
} |
||||||
|
|
||||||
|
// 任务日志列表
|
||||||
|
export const getJobLogPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/infra/job-log/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 任务日志详情
|
||||||
|
export const getJobLog = (id: number) => { |
||||||
|
return request.get({ url: '/infra/job-log/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出定时任务日志
|
||||||
|
export const exportJobLog = (params) => { |
||||||
|
return request.download({ |
||||||
|
url: '/infra/job-log/export-excel', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取redis 监控信息 |
||||||
|
*/ |
||||||
|
export const getCache = () => { |
||||||
|
return request.get({ url: '/infra/redis/get-monitor-info' }) |
||||||
|
} |
@ -0,0 +1,176 @@ |
|||||||
|
export interface RedisMonitorInfoVO { |
||||||
|
info: RedisInfoVO |
||||||
|
dbSize: number |
||||||
|
commandStats: RedisCommandStatsVO[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface RedisInfoVO { |
||||||
|
io_threaded_reads_processed: string |
||||||
|
tracking_clients: string |
||||||
|
uptime_in_seconds: string |
||||||
|
cluster_connections: string |
||||||
|
current_cow_size: string |
||||||
|
maxmemory_human: string |
||||||
|
aof_last_cow_size: string |
||||||
|
master_replid2: string |
||||||
|
mem_replication_backlog: string |
||||||
|
aof_rewrite_scheduled: string |
||||||
|
total_net_input_bytes: string |
||||||
|
rss_overhead_ratio: string |
||||||
|
hz: string |
||||||
|
current_cow_size_age: string |
||||||
|
redis_build_id: string |
||||||
|
errorstat_BUSYGROUP: string |
||||||
|
aof_last_bgrewrite_status: string |
||||||
|
multiplexing_api: string |
||||||
|
client_recent_max_output_buffer: string |
||||||
|
allocator_resident: string |
||||||
|
mem_fragmentation_bytes: string |
||||||
|
aof_current_size: string |
||||||
|
repl_backlog_first_byte_offset: string |
||||||
|
tracking_total_prefixes: string |
||||||
|
redis_mode: string |
||||||
|
redis_git_dirty: string |
||||||
|
aof_delayed_fsync: string |
||||||
|
allocator_rss_bytes: string |
||||||
|
repl_backlog_histlen: string |
||||||
|
io_threads_active: string |
||||||
|
rss_overhead_bytes: string |
||||||
|
total_system_memory: string |
||||||
|
loading: string |
||||||
|
evicted_keys: string |
||||||
|
maxclients: string |
||||||
|
cluster_enabled: string |
||||||
|
redis_version: string |
||||||
|
repl_backlog_active: string |
||||||
|
mem_aof_buffer: string |
||||||
|
allocator_frag_bytes: string |
||||||
|
io_threaded_writes_processed: string |
||||||
|
instantaneous_ops_per_sec: string |
||||||
|
used_memory_human: string |
||||||
|
total_error_replies: string |
||||||
|
role: string |
||||||
|
maxmemory: string |
||||||
|
used_memory_lua: string |
||||||
|
rdb_current_bgsave_time_sec: string |
||||||
|
used_memory_startup: string |
||||||
|
used_cpu_sys_main_thread: string |
||||||
|
lazyfree_pending_objects: string |
||||||
|
aof_pending_bio_fsync: string |
||||||
|
used_memory_dataset_perc: string |
||||||
|
allocator_frag_ratio: string |
||||||
|
arch_bits: string |
||||||
|
used_cpu_user_main_thread: string |
||||||
|
mem_clients_normal: string |
||||||
|
expired_time_cap_reached_count: string |
||||||
|
unexpected_error_replies: string |
||||||
|
mem_fragmentation_ratio: string |
||||||
|
aof_last_rewrite_time_sec: string |
||||||
|
master_replid: string |
||||||
|
aof_rewrite_in_progress: string |
||||||
|
lru_clock: string |
||||||
|
maxmemory_policy: string |
||||||
|
run_id: string |
||||||
|
latest_fork_usec: string |
||||||
|
tracking_total_items: string |
||||||
|
total_commands_processed: string |
||||||
|
expired_keys: string |
||||||
|
errorstat_ERR: string |
||||||
|
used_memory: string |
||||||
|
module_fork_in_progress: string |
||||||
|
errorstat_WRONGPASS: string |
||||||
|
aof_buffer_length: string |
||||||
|
dump_payload_sanitizations: string |
||||||
|
mem_clients_slaves: string |
||||||
|
keyspace_misses: string |
||||||
|
server_time_usec: string |
||||||
|
executable: string |
||||||
|
lazyfreed_objects: string |
||||||
|
db0: string |
||||||
|
used_memory_peak_human: string |
||||||
|
keyspace_hits: string |
||||||
|
rdb_last_cow_size: string |
||||||
|
aof_pending_rewrite: string |
||||||
|
used_memory_overhead: string |
||||||
|
active_defrag_hits: string |
||||||
|
tcp_port: string |
||||||
|
uptime_in_days: string |
||||||
|
used_memory_peak_perc: string |
||||||
|
current_save_keys_processed: string |
||||||
|
blocked_clients: string |
||||||
|
total_reads_processed: string |
||||||
|
expire_cycle_cpu_milliseconds: string |
||||||
|
sync_partial_err: string |
||||||
|
used_memory_scripts_human: string |
||||||
|
aof_current_rewrite_time_sec: string |
||||||
|
aof_enabled: string |
||||||
|
process_supervised: string |
||||||
|
master_repl_offset: string |
||||||
|
used_memory_dataset: string |
||||||
|
used_cpu_user: string |
||||||
|
rdb_last_bgsave_status: string |
||||||
|
tracking_total_keys: string |
||||||
|
atomicvar_api: string |
||||||
|
allocator_rss_ratio: string |
||||||
|
client_recent_max_input_buffer: string |
||||||
|
clients_in_timeout_table: string |
||||||
|
aof_last_write_status: string |
||||||
|
mem_allocator: string |
||||||
|
used_memory_scripts: string |
||||||
|
used_memory_peak: string |
||||||
|
process_id: string |
||||||
|
master_failover_state: string |
||||||
|
errorstat_NOAUTH: string |
||||||
|
used_cpu_sys: string |
||||||
|
repl_backlog_size: string |
||||||
|
connected_slaves: string |
||||||
|
current_save_keys_total: string |
||||||
|
gcc_version: string |
||||||
|
total_system_memory_human: string |
||||||
|
sync_full: string |
||||||
|
connected_clients: string |
||||||
|
module_fork_last_cow_size: string |
||||||
|
total_writes_processed: string |
||||||
|
allocator_active: string |
||||||
|
total_net_output_bytes: string |
||||||
|
pubsub_channels: string |
||||||
|
current_fork_perc: string |
||||||
|
active_defrag_key_hits: string |
||||||
|
rdb_changes_since_last_save: string |
||||||
|
instantaneous_input_kbps: string |
||||||
|
used_memory_rss_human: string |
||||||
|
configured_hz: string |
||||||
|
expired_stale_perc: string |
||||||
|
active_defrag_misses: string |
||||||
|
used_cpu_sys_children: string |
||||||
|
number_of_cached_scripts: string |
||||||
|
sync_partial_ok: string |
||||||
|
used_memory_lua_human: string |
||||||
|
rdb_last_save_time: string |
||||||
|
pubsub_patterns: string |
||||||
|
slave_expires_tracked_keys: string |
||||||
|
redis_git_sha1: string |
||||||
|
used_memory_rss: string |
||||||
|
rdb_last_bgsave_time_sec: string |
||||||
|
os: string |
||||||
|
mem_not_counted_for_evict: string |
||||||
|
active_defrag_running: string |
||||||
|
rejected_connections: string |
||||||
|
aof_rewrite_buffer_length: string |
||||||
|
total_forks: string |
||||||
|
active_defrag_key_misses: string |
||||||
|
allocator_allocated: string |
||||||
|
aof_base_size: string |
||||||
|
instantaneous_output_kbps: string |
||||||
|
second_repl_offset: string |
||||||
|
rdb_bgsave_in_progress: string |
||||||
|
used_cpu_user_children: string |
||||||
|
total_connections_received: string |
||||||
|
migrate_cached_sockets: string |
||||||
|
} |
||||||
|
|
||||||
|
export interface RedisCommandStatsVO { |
||||||
|
command: string |
||||||
|
calls: number |
||||||
|
usec: number |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
import { getRefreshToken } from '@/utils/auth' |
||||||
|
import type { UserLoginVO } from './types' |
||||||
|
|
||||||
|
export interface SmsCodeVO { |
||||||
|
mobile: string |
||||||
|
scene: number |
||||||
|
} |
||||||
|
|
||||||
|
export interface SmsLoginVO { |
||||||
|
mobile: string |
||||||
|
code: string |
||||||
|
} |
||||||
|
|
||||||
|
// 登录
|
||||||
|
export const login = (data: UserLoginVO) => { |
||||||
|
return request.post({ url: '/system/auth/login', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 刷新访问令牌
|
||||||
|
export const refreshToken = () => { |
||||||
|
return request.post({ url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken() }) |
||||||
|
} |
||||||
|
|
||||||
|
// 使用租户名,获得租户编号
|
||||||
|
export const getTenantIdByName = (name: string) => { |
||||||
|
return request.get({ url: '/system/tenant/get-id-by-name?name=' + name }) |
||||||
|
} |
||||||
|
|
||||||
|
// 登出
|
||||||
|
export const loginOut = () => { |
||||||
|
return request.post({ url: '/system/auth/logout' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取用户权限信息
|
||||||
|
export const getInfo = () => { |
||||||
|
return request.get({ url: '/system/auth/get-permission-info' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 路由
|
||||||
|
export const getAsyncRoutes = () => { |
||||||
|
return request.get({ url: '/system/auth/list-menus' }) |
||||||
|
} |
||||||
|
|
||||||
|
//获取登录验证码
|
||||||
|
export const sendSmsCode = (data: SmsCodeVO) => { |
||||||
|
return request.post({ url: '/system/auth/send-sms-code', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 短信验证码登录
|
||||||
|
export const smsLogin = (data: SmsLoginVO) => { |
||||||
|
return request.post({ url: '/system/auth/sms-login', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 社交授权的跳转
|
||||||
|
export const socialAuthRedirect = (type: number, redirectUri: string) => { |
||||||
|
return request.get({ |
||||||
|
url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri |
||||||
|
}) |
||||||
|
} |
||||||
|
// 获取验证图片以及 token
|
||||||
|
export const getCode = (data) => { |
||||||
|
return request.postOriginal({ url: 'system/captcha/get', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 滑动或者点选验证
|
||||||
|
export const reqCheck = (data) => { |
||||||
|
return request.postOriginal({ url: 'system/captcha/check', data }) |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得授权信息
|
||||||
|
export const getAuthorize = (clientId: string) => { |
||||||
|
return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) |
||||||
|
} |
||||||
|
|
||||||
|
// 发起授权
|
||||||
|
export const authorize = ( |
||||||
|
responseType: string, |
||||||
|
clientId: string, |
||||||
|
redirectUri: string, |
||||||
|
state: string, |
||||||
|
autoApprove: boolean, |
||||||
|
checkedScopes: string[], |
||||||
|
uncheckedScopes: string[] |
||||||
|
) => { |
||||||
|
// 构建 scopes
|
||||||
|
const scopes = {} |
||||||
|
for (const scope of checkedScopes) { |
||||||
|
scopes[scope] = true |
||||||
|
} |
||||||
|
for (const scope of uncheckedScopes) { |
||||||
|
scopes[scope] = false |
||||||
|
} |
||||||
|
// 发起请求
|
||||||
|
return request.post({ |
||||||
|
url: '/system/oauth2/authorize', |
||||||
|
headers: { |
||||||
|
'Content-type': 'application/x-www-form-urlencoded' |
||||||
|
}, |
||||||
|
params: { |
||||||
|
response_type: responseType, |
||||||
|
client_id: clientId, |
||||||
|
redirect_uri: redirectUri, |
||||||
|
state: state, |
||||||
|
auto_approve: autoApprove, |
||||||
|
scope: JSON.stringify(scopes) |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
export type UserLoginVO = { |
||||||
|
username: string |
||||||
|
password: string |
||||||
|
captchaVerification: string |
||||||
|
} |
||||||
|
|
||||||
|
export type TokenType = { |
||||||
|
id: number // 编号
|
||||||
|
accessToken: string // 访问令牌
|
||||||
|
refreshToken: string // 刷新令牌
|
||||||
|
userId: number // 用户编号
|
||||||
|
userType: number //用户类型
|
||||||
|
clientId: string //客户端编号
|
||||||
|
expiresTime: number //过期时间
|
||||||
|
} |
||||||
|
|
||||||
|
export type UserVO = { |
||||||
|
id: number |
||||||
|
username: string |
||||||
|
nickname: string |
||||||
|
deptId: number |
||||||
|
email: string |
||||||
|
mobile: string |
||||||
|
sex: number |
||||||
|
avatar: string |
||||||
|
loginIp: string |
||||||
|
loginDate: string |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
/** |
||||||
|
* 商品品牌 |
||||||
|
*/ |
||||||
|
export interface BrandVO { |
||||||
|
/** |
||||||
|
* 品牌编号 |
||||||
|
*/ |
||||||
|
id?: number |
||||||
|
/** |
||||||
|
* 品牌名称 |
||||||
|
*/ |
||||||
|
name: string |
||||||
|
/** |
||||||
|
* 品牌图片 |
||||||
|
*/ |
||||||
|
picUrl: string |
||||||
|
/** |
||||||
|
* 品牌排序 |
||||||
|
*/ |
||||||
|
sort?: number |
||||||
|
/** |
||||||
|
* 品牌描述 |
||||||
|
*/ |
||||||
|
description?: string |
||||||
|
/** |
||||||
|
* 开启状态 |
||||||
|
*/ |
||||||
|
status: number |
||||||
|
} |
||||||
|
|
||||||
|
// 创建商品品牌
|
||||||
|
export const createBrand = (data: BrandVO) => { |
||||||
|
return request.post({ url: '/product/brand/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新商品品牌
|
||||||
|
export const updateBrand = (data: BrandVO) => { |
||||||
|
return request.put({ url: '/product/brand/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除商品品牌
|
||||||
|
export const deleteBrand = (id: number) => { |
||||||
|
return request.delete({ url: `/product/brand/delete?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得商品品牌
|
||||||
|
export const getBrand = (id: number) => { |
||||||
|
return request.get({ url: `/product/brand/get?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得商品品牌列表
|
||||||
|
export const getBrandParam = (params: PageParam) => { |
||||||
|
return request.get({ url: '/product/brand/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得商品品牌精简信息列表
|
||||||
|
export const getSimpleBrandList = () => { |
||||||
|
return request.get({ url: '/product/brand/list-all-simple' }) |
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
/** |
||||||
|
* 产品分类 |
||||||
|
*/ |
||||||
|
export interface CategoryVO { |
||||||
|
/** |
||||||
|
* 分类编号 |
||||||
|
*/ |
||||||
|
id?: number |
||||||
|
/** |
||||||
|
* 父分类编号 |
||||||
|
*/ |
||||||
|
parentId?: number |
||||||
|
/** |
||||||
|
* 分类名称 |
||||||
|
*/ |
||||||
|
name: string |
||||||
|
/** |
||||||
|
* 移动端分类图 |
||||||
|
*/ |
||||||
|
picUrl: string |
||||||
|
/** |
||||||
|
* PC 端分类图 |
||||||
|
*/ |
||||||
|
bigPicUrl?: string |
||||||
|
/** |
||||||
|
* 分类排序 |
||||||
|
*/ |
||||||
|
sort: number |
||||||
|
/** |
||||||
|
* 开启状态 |
||||||
|
*/ |
||||||
|
status: number |
||||||
|
} |
||||||
|
|
||||||
|
// 创建商品分类
|
||||||
|
export const createCategory = (data: CategoryVO) => { |
||||||
|
return request.post({ url: '/product/category/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新商品分类
|
||||||
|
export const updateCategory = (data: CategoryVO) => { |
||||||
|
return request.put({ url: '/product/category/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除商品分类
|
||||||
|
export const deleteCategory = (id: number) => { |
||||||
|
return request.delete({ url: `/product/category/delete?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得商品分类
|
||||||
|
export const getCategory = (id: number) => { |
||||||
|
return request.get({ url: `/product/category/get?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得商品分类列表
|
||||||
|
export const getCategoryList = (params: any) => { |
||||||
|
return request.get({ url: '/product/category/list', params }) |
||||||
|
} |
@ -0,0 +1,103 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
/** |
||||||
|
* 商品属性 |
||||||
|
*/ |
||||||
|
export interface PropertyVO { |
||||||
|
id?: number |
||||||
|
/** 名称 */ |
||||||
|
name: string |
||||||
|
/** 备注 */ |
||||||
|
remark?: string |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 属性值 |
||||||
|
*/ |
||||||
|
export interface PropertyValueVO { |
||||||
|
id?: number |
||||||
|
/** 属性项的编号 */ |
||||||
|
propertyId?: number |
||||||
|
/** 名称 */ |
||||||
|
name: string |
||||||
|
/** 备注 */ |
||||||
|
remark?: string |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 商品属性值的明细 |
||||||
|
*/ |
||||||
|
export interface PropertyValueDetailVO { |
||||||
|
/** 属性项的编号 */ |
||||||
|
propertyId: number // 属性的编号
|
||||||
|
/** 属性的名称 */ |
||||||
|
propertyName: string |
||||||
|
/** 属性值的编号 */ |
||||||
|
valueId: number |
||||||
|
/** 属性值的名称 */ |
||||||
|
valueName: string |
||||||
|
} |
||||||
|
|
||||||
|
// ------------------------ 属性项 -------------------
|
||||||
|
|
||||||
|
// 创建属性项
|
||||||
|
export const createProperty = (data: PropertyVO) => { |
||||||
|
return request.post({ url: '/product/property/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新属性项
|
||||||
|
export const updateProperty = (data: PropertyVO) => { |
||||||
|
return request.put({ url: '/product/property/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除属性项
|
||||||
|
export const deleteProperty = (id: number) => { |
||||||
|
return request.delete({ url: `/product/property/delete?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得属性项
|
||||||
|
export const getProperty = (id: number): Promise<PropertyVO> => { |
||||||
|
return request.get({ url: `/product/property/get?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得属性项分页
|
||||||
|
export const getPropertyPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/product/property/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得属性项列表
|
||||||
|
export const getPropertyList = (params: any) => { |
||||||
|
return request.get({ url: '/product/property/list', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得属性项列表
|
||||||
|
export const getPropertyListAndValue = (data: any) => { |
||||||
|
return request.post({ url: '/product/property/get-value-list', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// ------------------------ 属性值 -------------------
|
||||||
|
|
||||||
|
// 获得属性值分页
|
||||||
|
export const getPropertyValuePage = (params: PageParam & any) => { |
||||||
|
return request.get({ url: '/product/property/value/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得属性值
|
||||||
|
export const getPropertyValue = (id: number): Promise<PropertyValueVO> => { |
||||||
|
return request.get({ url: `/product/property/value/get?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 创建属性值
|
||||||
|
export const createPropertyValue = (data: PropertyValueVO) => { |
||||||
|
return request.post({ url: '/product/property/value/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新属性值
|
||||||
|
export const updatePropertyValue = (data: PropertyValueVO) => { |
||||||
|
return request.put({ url: '/product/property/value/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除属性值
|
||||||
|
export const deletePropertyValue = (id: number) => { |
||||||
|
return request.delete({ url: `/product/property/value/delete?id=${id}` }) |
||||||
|
} |
@ -0,0 +1,92 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface Property { |
||||||
|
propertyId?: number // 属性编号
|
||||||
|
propertyName?: string // 属性名称
|
||||||
|
valueId?: number // 属性值编号
|
||||||
|
valueName?: string // 属性值名称
|
||||||
|
} |
||||||
|
|
||||||
|
// TODO puhui999:是不是直接叫 Sku 更简洁一点哈。type 待后面,总感觉有个类型?
|
||||||
|
export interface SkuType { |
||||||
|
id?: number // 商品 SKU 编号
|
||||||
|
spuId?: number // SPU 编号
|
||||||
|
properties?: Property[] // 属性数组
|
||||||
|
price?: number // 商品价格
|
||||||
|
marketPrice?: number // 市场价
|
||||||
|
costPrice?: number // 成本价
|
||||||
|
barCode?: string // 商品条码
|
||||||
|
picUrl?: string // 图片地址
|
||||||
|
stock?: number // 库存
|
||||||
|
weight?: number // 商品重量,单位:kg 千克
|
||||||
|
volume?: number // 商品体积,单位:m^3 平米
|
||||||
|
subCommissionFirstPrice?: number // 一级分销的佣金
|
||||||
|
subCommissionSecondPrice?: number // 二级分销的佣金
|
||||||
|
salesCount?: number // 商品销量
|
||||||
|
} |
||||||
|
|
||||||
|
// TODO puhui999:是不是直接叫 Spu 更简洁一点哈。type 待后面,总感觉有个类型?
|
||||||
|
export interface SpuType { |
||||||
|
id?: number |
||||||
|
name?: string // 商品名称
|
||||||
|
categoryId?: number | null // 商品分类
|
||||||
|
keyword?: string // 关键字
|
||||||
|
unit?: number | null // 单位
|
||||||
|
picUrl?: string // 商品封面图
|
||||||
|
sliderPicUrls?: string[] // 商品轮播图
|
||||||
|
introduction?: string // 商品简介
|
||||||
|
deliveryTemplateId?: number | null // 运费模版
|
||||||
|
brandId?: number | null // 商品品牌编号
|
||||||
|
specType?: boolean // 商品规格
|
||||||
|
subCommissionType?: boolean // 分销类型
|
||||||
|
skus: SkuType[] // sku数组
|
||||||
|
description?: string // 商品详情
|
||||||
|
sort?: string // 商品排序
|
||||||
|
giveIntegral?: number // 赠送积分
|
||||||
|
virtualSalesCount?: number // 虚拟销量
|
||||||
|
recommendHot?: boolean // 是否热卖
|
||||||
|
recommendBenefit?: boolean // 是否优惠
|
||||||
|
recommendBest?: boolean // 是否精品
|
||||||
|
recommendNew?: boolean // 是否新品
|
||||||
|
recommendGood?: boolean // 是否优品
|
||||||
|
} |
||||||
|
|
||||||
|
// 获得 Spu 列表
|
||||||
|
export const getSpuPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/product/spu/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得 Spu 列表 tabsCount
|
||||||
|
export const getTabsCount = () => { |
||||||
|
return request.get({ url: '/product/spu/get-count' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 创建商品 Spu
|
||||||
|
export const createSpu = (data: SpuType) => { |
||||||
|
return request.post({ url: '/product/spu/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新商品 Spu
|
||||||
|
export const updateSpu = (data: SpuType) => { |
||||||
|
return request.put({ url: '/product/spu/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新商品 Spu status
|
||||||
|
export const updateStatus = (data: { id: number; status: number }) => { |
||||||
|
return request.put({ url: '/product/spu/update-status', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得商品 Spu
|
||||||
|
export const getSpu = (id: number) => { |
||||||
|
return request.get({ url: `/product/spu/get-detail?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除商品 Spu
|
||||||
|
export const deleteSpu = (id: number) => { |
||||||
|
return request.delete({ url: `/product/spu/delete?id=${id}` }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出商品 Spu Excel
|
||||||
|
export const exportSpu = async (params) => { |
||||||
|
return await request.download({ url: '/product/spu/export', params }) |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface DeliveryExpressVO { |
||||||
|
id: number |
||||||
|
code: string |
||||||
|
name: string |
||||||
|
logo: string |
||||||
|
sort: number |
||||||
|
status: number |
||||||
|
} |
||||||
|
|
||||||
|
// 查询快递公司列表
|
||||||
|
export const getDeliveryExpressPage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/trade/delivery/express/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询快递公司详情
|
||||||
|
export const getDeliveryExpress = async (id: number) => { |
||||||
|
return await request.get({ url: '/trade/delivery/express/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增快递公司
|
||||||
|
export const createDeliveryExpress = async (data: DeliveryExpressVO) => { |
||||||
|
return await request.post({ url: '/trade/delivery/express/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改快递公司
|
||||||
|
export const updateDeliveryExpress = async (data: DeliveryExpressVO) => { |
||||||
|
return await request.put({ url: '/trade/delivery/express/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除快递公司
|
||||||
|
export const deleteDeliveryExpress = async (id: number) => { |
||||||
|
return await request.delete({ url: '/trade/delivery/express/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出快递公司 Excel
|
||||||
|
export const exportDeliveryExpressApi = async (params) => { |
||||||
|
return await request.download({ url: '/trade/delivery/express/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface DeliveryExpressTemplateVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
chargeMode: number |
||||||
|
sort: number |
||||||
|
templateCharge: ExpressTemplateChargeVO[] |
||||||
|
templateFree: ExpressTemplateFreeVO[] |
||||||
|
} |
||||||
|
|
||||||
|
export declare type ExpressTemplateChargeVO = { |
||||||
|
areaIds: number[] |
||||||
|
startCount: number |
||||||
|
startPrice: number |
||||||
|
extraCount: number |
||||||
|
extraPrice: number |
||||||
|
} |
||||||
|
|
||||||
|
export declare type ExpressTemplateFreeVO = { |
||||||
|
areaIds: number[] |
||||||
|
freeCount: number |
||||||
|
freePrice: number |
||||||
|
} |
||||||
|
|
||||||
|
// 查询快递运费模板列表
|
||||||
|
export const getDeliveryExpressTemplatePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/trade/delivery/express-template/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询快递运费模板详情
|
||||||
|
export const getDeliveryExpressTemplate = async (id: number) => { |
||||||
|
return await request.get({ url: '/trade/delivery/express-template/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增快递运费模板
|
||||||
|
export const createDeliveryExpressTemplate = async (data: DeliveryExpressTemplateVO) => { |
||||||
|
return await request.post({ url: '/trade/delivery/express-template/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改快递运费模板
|
||||||
|
export const updateDeliveryExpressTemplate = async (data: DeliveryExpressTemplateVO) => { |
||||||
|
return await request.put({ url: '/trade/delivery/express-template/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除快递运费模板
|
||||||
|
export const deleteDeliveryExpressTemplate = async (id: number) => { |
||||||
|
return await request.delete({ url: '/trade/delivery/express-template/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出快递运费模板 Excel
|
||||||
|
export const exportDeliveryExpressTemplateApi = async (params) => { |
||||||
|
return await request.download({ url: '/trade/delivery/express-template/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface AccountVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
} |
||||||
|
|
||||||
|
// 创建公众号账号
|
||||||
|
export const createAccount = async (data) => { |
||||||
|
return await request.post({ url: '/mp/account/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新公众号账号
|
||||||
|
export const updateAccount = async (data) => { |
||||||
|
return request.put({ url: '/mp/account/update', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号账号
|
||||||
|
export const deleteAccount = async (id) => { |
||||||
|
return request.delete({ url: '/mp/account/delete?id=' + id, method: 'delete' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号账号
|
||||||
|
export const getAccount = async (id) => { |
||||||
|
return request.get({ url: '/mp/account/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号账号分页
|
||||||
|
export const getAccountPage = async (query) => { |
||||||
|
return request.get({ url: '/mp/account/page', params: query }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取公众号账号精简信息列表
|
||||||
|
export const getSimpleAccountList = async () => { |
||||||
|
return request.get({ url: '/mp/account/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 生成公众号二维码
|
||||||
|
export const generateAccountQrCode = async (id) => { |
||||||
|
return request.put({ url: '/mp/account/generate-qr-code?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 清空公众号 API 配额
|
||||||
|
export const clearAccountQuota = async (id) => { |
||||||
|
return request.put({ url: '/mp/account/clear-quota?id=' + id }) |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 创建公众号的自动回复
|
||||||
|
export const createAutoReply = (data) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/auto-reply/create', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新公众号的自动回复
|
||||||
|
export const updateAutoReply = (data) => { |
||||||
|
return request.put({ |
||||||
|
url: '/mp/auto-reply/update', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号的自动回复
|
||||||
|
export const deleteAutoReply = (id) => { |
||||||
|
return request.delete({ |
||||||
|
url: '/mp/auto-reply/delete?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号的自动回复
|
||||||
|
export const getAutoReply = (id) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/auto-reply/get?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号的自动回复分页
|
||||||
|
export const getAutoReplyPage = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/auto-reply/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得公众号草稿分页
|
||||||
|
export const getDraftPage = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/draft/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 创建公众号草稿
|
||||||
|
export const createDraft = (accountId, articles) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/draft/create?accountId=' + accountId, |
||||||
|
data: { |
||||||
|
articles |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新公众号草稿
|
||||||
|
export const updateDraft = (accountId, mediaId, articles) => { |
||||||
|
return request.put({ |
||||||
|
url: '/mp/draft/update?accountId=' + accountId + '&mediaId=' + mediaId, |
||||||
|
method: 'put', |
||||||
|
data: articles |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号草稿
|
||||||
|
export const deleteDraft = (accountId, mediaId) => { |
||||||
|
return request.delete({ |
||||||
|
url: '/mp/draft/delete?accountId=' + accountId + '&mediaId=' + mediaId |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得公众号素材分页
|
||||||
|
export const getFreePublishPage = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/free-publish/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号素材
|
||||||
|
export const deleteFreePublish = (accountId, articleId) => { |
||||||
|
return request.delete({ |
||||||
|
url: '/mp/free-publish/delete?accountId=' + accountId + '&articleId=' + articleId |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 发布公众号素材
|
||||||
|
export const submitFreePublish = (accountId, mediaId) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/free-publish/submit?accountId=' + accountId + '&mediaId=' + mediaId |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得公众号素材分页
|
||||||
|
export const getMaterialPage = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/material/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号永久素材
|
||||||
|
export const deletePermanentMaterial = (id) => { |
||||||
|
return request.delete({ |
||||||
|
url: '/mp/material/delete-permanent?id=' + id |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得公众号菜单列表
|
||||||
|
export const getMenuList = (accountId) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/menu/list?accountId=' + accountId |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 保存公众号菜单
|
||||||
|
export const saveMenu = (accountId, menus) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/menu/save', |
||||||
|
data: { |
||||||
|
accountId, |
||||||
|
menus |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号菜单
|
||||||
|
export const deleteMenu = (accountId) => { |
||||||
|
return request.delete({ |
||||||
|
url: '/mp/menu/delete?accountId=' + accountId |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得公众号消息分页
|
||||||
|
export const getMessagePage = (query: PageParam) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/message/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 给粉丝发送消息
|
||||||
|
export const sendMessage = (data) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/message/send', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获取消息发送概况数据
|
||||||
|
export const getUpstreamMessage = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/statistics/upstream-message', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 用户增减数据
|
||||||
|
export const getUserSummary = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/statistics/user-summary', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得用户累计数据
|
||||||
|
export const getUserCumulate = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/statistics/user-cumulate', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得接口分析数据
|
||||||
|
export const getInterfaceSummary = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/statistics/interface-summary', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface TagVO { |
||||||
|
id?: number |
||||||
|
name: string |
||||||
|
accountId: number |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 创建公众号标签
|
||||||
|
export const createTag = (data: TagVO) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/tag/create', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 更新公众号标签
|
||||||
|
export const updateTag = (data: TagVO) => { |
||||||
|
return request.put({ |
||||||
|
url: '/mp/tag/update', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公众号标签
|
||||||
|
export const deleteTag = (id: number) => { |
||||||
|
return request.delete({ |
||||||
|
url: '/mp/tag/delete?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号标签
|
||||||
|
export const getTag = (id: number) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/tag/get?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号标签分页
|
||||||
|
export const getTagPage = (query: PageParam) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/tag/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取公众号标签精简信息列表
|
||||||
|
export const getSimpleTagList = () => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/tag/list-all-simple' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 同步公众号标签
|
||||||
|
export const syncTag = (accountId: number) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/tag/sync?accountId=' + accountId |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 更新公众号粉丝
|
||||||
|
export const updateUser = (data) => { |
||||||
|
return request.put({ |
||||||
|
url: '/mp/user/update', |
||||||
|
data: data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号粉丝
|
||||||
|
export const getUser = (id) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/user/get?id=' + id |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得公众号粉丝分页
|
||||||
|
export const getUserPage = (query) => { |
||||||
|
return request.get({ |
||||||
|
url: '/mp/user/page', |
||||||
|
params: query |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 同步公众号粉丝
|
||||||
|
export const syncUser = (accountId) => { |
||||||
|
return request.post({ |
||||||
|
url: '/mp/tag/sync?accountId=' + accountId |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface AppVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
payNotifyUrl: string |
||||||
|
refundNotifyUrl: string |
||||||
|
merchantId: number |
||||||
|
merchantName: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface AppPageReqVO extends PageParam { |
||||||
|
name?: string |
||||||
|
status?: number |
||||||
|
remark?: string |
||||||
|
payNotifyUrl?: string |
||||||
|
refundNotifyUrl?: string |
||||||
|
merchantName?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface AppExportReqVO { |
||||||
|
name?: string |
||||||
|
status?: number |
||||||
|
remark?: string |
||||||
|
payNotifyUrl?: string |
||||||
|
refundNotifyUrl?: string |
||||||
|
merchantName?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface AppUpdateStatusReqVO { |
||||||
|
id: number |
||||||
|
status: number |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表支付应用
|
||||||
|
export const getAppPage = (params: AppPageReqVO) => { |
||||||
|
return request.get({ url: '/pay/app/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询详情支付应用
|
||||||
|
export const getApp = (id: number) => { |
||||||
|
return request.get({ url: '/pay/app/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增支付应用
|
||||||
|
export const createApp = (data: AppVO) => { |
||||||
|
return request.post({ url: '/pay/app/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改支付应用
|
||||||
|
export const updateApp = (data: AppVO) => { |
||||||
|
return request.put({ url: '/pay/app/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 支付应用信息状态修改
|
||||||
|
export const changeAppStatus = (data: AppUpdateStatusReqVO) => { |
||||||
|
return request.put({ url: '/pay/app/update-status', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除支付应用
|
||||||
|
export const deleteApp = (id: number) => { |
||||||
|
return request.delete({ url: '/pay/app/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出支付应用
|
||||||
|
export const exportApp = (params: AppExportReqVO) => { |
||||||
|
return request.download({ url: '/pay/app/export-excel', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 根据商ID称搜索应用列表
|
||||||
|
export const getAppListByMerchantId = (merchantId: number) => { |
||||||
|
return request.get({ url: '/pay/app/list-merchant-id', params: { merchantId: merchantId } }) |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface ChannelVO { |
||||||
|
id: number |
||||||
|
code: string |
||||||
|
config: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
feeRate: number |
||||||
|
merchantId: number |
||||||
|
appId: number |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表支付渠道
|
||||||
|
export const getChannelPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/pay/channel/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询详情支付渠道
|
||||||
|
export const getChannel = (merchantId: number, appId: string, code: string) => { |
||||||
|
const params = { |
||||||
|
merchantId: merchantId, |
||||||
|
appId: appId, |
||||||
|
code: code |
||||||
|
} |
||||||
|
return request.get({ url: '/pay/channel/get-channel', params: params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增支付渠道
|
||||||
|
export const createChannel = (data: ChannelVO) => { |
||||||
|
return request.post({ url: '/pay/channel/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改支付渠道
|
||||||
|
export const updateChannel = (data: ChannelVO) => { |
||||||
|
return request.put({ url: '/pay/channel/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除支付渠道
|
||||||
|
export const deleteChannel = (id: number) => { |
||||||
|
return request.delete({ url: '/pay/channel/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出支付渠道
|
||||||
|
export const exportChannel = (params) => { |
||||||
|
return request.download({ url: '/pay/channel/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface MerchantVO { |
||||||
|
id: number |
||||||
|
no: string |
||||||
|
name: string |
||||||
|
shortName: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface MerchantPageReqVO extends PageParam { |
||||||
|
no?: string |
||||||
|
name?: string |
||||||
|
shortName?: string |
||||||
|
status?: number |
||||||
|
remark?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface MerchantExportReqVO { |
||||||
|
no?: string |
||||||
|
name?: string |
||||||
|
shortName?: string |
||||||
|
status?: number |
||||||
|
remark?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表支付商户
|
||||||
|
export const getMerchantPage = (params: MerchantPageReqVO) => { |
||||||
|
return request.get({ url: '/pay/merchant/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询详情支付商户
|
||||||
|
export const getMerchant = (id: number) => { |
||||||
|
return request.get({ url: '/pay/merchant/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 根据商户名称搜索商户列表
|
||||||
|
export const getMerchantListByName = (name?: string) => { |
||||||
|
return request.get({ |
||||||
|
url: '/pay/merchant/list-by-name', |
||||||
|
params: { |
||||||
|
name: name |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增支付商户
|
||||||
|
export const createMerchant = (data: MerchantVO) => { |
||||||
|
return request.post({ url: '/pay/merchant/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改支付商户
|
||||||
|
export const updateMerchant = (data: MerchantVO) => { |
||||||
|
return request.put({ url: '/pay/merchant/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除支付商户
|
||||||
|
export const deleteMerchant = (id: number) => { |
||||||
|
return request.delete({ url: '/pay/merchant/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出支付商户
|
||||||
|
export const exportMerchant = (params: MerchantExportReqVO) => { |
||||||
|
return request.download({ url: '/pay/merchant/export-excel', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 支付商户状态修改
|
||||||
|
export const updateMerchantStatus = (id: number, status: number) => { |
||||||
|
const data = { |
||||||
|
id, |
||||||
|
status |
||||||
|
} |
||||||
|
return request.put({ url: '/pay/merchant/update-status', data: data }) |
||||||
|
} |
@ -0,0 +1,114 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface OrderVO { |
||||||
|
id: number |
||||||
|
merchantId: number |
||||||
|
appId: number |
||||||
|
channelId: number |
||||||
|
channelCode: string |
||||||
|
merchantOrderId: string |
||||||
|
subject: string |
||||||
|
body: string |
||||||
|
notifyUrl: string |
||||||
|
notifyStatus: number |
||||||
|
amount: number |
||||||
|
channelFeeRate: number |
||||||
|
channelFeeAmount: number |
||||||
|
status: number |
||||||
|
userIp: string |
||||||
|
expireTime: Date |
||||||
|
successTime: Date |
||||||
|
notifyTime: Date |
||||||
|
successExtensionId: number |
||||||
|
refundStatus: number |
||||||
|
refundTimes: number |
||||||
|
refundAmount: number |
||||||
|
channelUserId: string |
||||||
|
channelOrderNo: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface OrderPageReqVO extends PageParam { |
||||||
|
merchantId?: number |
||||||
|
appId?: number |
||||||
|
channelId?: number |
||||||
|
channelCode?: string |
||||||
|
merchantOrderId?: string |
||||||
|
subject?: string |
||||||
|
body?: string |
||||||
|
notifyUrl?: string |
||||||
|
notifyStatus?: number |
||||||
|
amount?: number |
||||||
|
channelFeeRate?: number |
||||||
|
channelFeeAmount?: number |
||||||
|
status?: number |
||||||
|
expireTime?: Date[] |
||||||
|
successTime?: Date[] |
||||||
|
notifyTime?: Date[] |
||||||
|
successExtensionId?: number |
||||||
|
refundStatus?: number |
||||||
|
refundTimes?: number |
||||||
|
channelUserId?: string |
||||||
|
channelOrderNo?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface OrderExportReqVO { |
||||||
|
merchantId?: number |
||||||
|
appId?: number |
||||||
|
channelId?: number |
||||||
|
channelCode?: string |
||||||
|
merchantOrderId?: string |
||||||
|
subject?: string |
||||||
|
body?: string |
||||||
|
notifyUrl?: string |
||||||
|
notifyStatus?: number |
||||||
|
amount?: number |
||||||
|
channelFeeRate?: number |
||||||
|
channelFeeAmount?: number |
||||||
|
status?: number |
||||||
|
expireTime?: Date[] |
||||||
|
successTime?: Date[] |
||||||
|
notifyTime?: Date[] |
||||||
|
successExtensionId?: number |
||||||
|
refundStatus?: number |
||||||
|
refundTimes?: number |
||||||
|
channelUserId?: string |
||||||
|
channelOrderNo?: string |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表支付订单
|
||||||
|
export const getOrderPage = async (params: OrderPageReqVO) => { |
||||||
|
return await request.get({ url: '/pay/order/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询详情支付订单
|
||||||
|
export const getOrder = async (id: number) => { |
||||||
|
return await request.get({ url: '/pay/order/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得支付订单的明细
|
||||||
|
export const getOrderDetail = async (id: number) => { |
||||||
|
return await request.get({ url: '/pay/order/get-detail?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增支付订单
|
||||||
|
export const createOrder = async (data: OrderVO) => { |
||||||
|
return await request.post({ url: '/pay/order/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改支付订单
|
||||||
|
export const updateOrder = async (data: OrderVO) => { |
||||||
|
return await request.put({ url: '/pay/order/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除支付订单
|
||||||
|
export const deleteOrder = async (id: number) => { |
||||||
|
return await request.delete({ url: '/pay/order/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出支付订单
|
||||||
|
export const exportOrder = async (params: OrderExportReqVO) => { |
||||||
|
return await request.download({ url: '/pay/order/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,116 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface RefundVO { |
||||||
|
id: number |
||||||
|
merchantId: number |
||||||
|
appId: number |
||||||
|
channelId: number |
||||||
|
channelCode: string |
||||||
|
orderId: string |
||||||
|
tradeNo: string |
||||||
|
merchantOrderId: string |
||||||
|
merchantRefundNo: string |
||||||
|
notifyUrl: string |
||||||
|
notifyStatus: number |
||||||
|
status: number |
||||||
|
type: number |
||||||
|
payAmount: number |
||||||
|
refundAmount: number |
||||||
|
reason: string |
||||||
|
userIp: string |
||||||
|
channelOrderNo: string |
||||||
|
channelRefundNo: string |
||||||
|
channelErrorCode: string |
||||||
|
channelErrorMsg: string |
||||||
|
channelExtras: string |
||||||
|
expireTime: Date |
||||||
|
successTime: Date |
||||||
|
notifyTime: Date |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface RefundPageReqVO extends PageParam { |
||||||
|
merchantId?: number |
||||||
|
appId?: number |
||||||
|
channelId?: number |
||||||
|
channelCode?: string |
||||||
|
orderId?: string |
||||||
|
tradeNo?: string |
||||||
|
merchantOrderId?: string |
||||||
|
merchantRefundNo?: string |
||||||
|
notifyUrl?: string |
||||||
|
notifyStatus?: number |
||||||
|
status?: number |
||||||
|
type?: number |
||||||
|
payAmount?: number |
||||||
|
refundAmount?: number |
||||||
|
reason?: string |
||||||
|
userIp?: string |
||||||
|
channelOrderNo?: string |
||||||
|
channelRefundNo?: string |
||||||
|
channelErrorCode?: string |
||||||
|
channelErrorMsg?: string |
||||||
|
channelExtras?: string |
||||||
|
expireTime?: Date[] |
||||||
|
successTime?: Date[] |
||||||
|
notifyTime?: Date[] |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface PayRefundExportReqVO { |
||||||
|
merchantId?: number |
||||||
|
appId?: number |
||||||
|
channelId?: number |
||||||
|
channelCode?: string |
||||||
|
orderId?: string |
||||||
|
tradeNo?: string |
||||||
|
merchantOrderId?: string |
||||||
|
merchantRefundNo?: string |
||||||
|
notifyUrl?: string |
||||||
|
notifyStatus?: number |
||||||
|
status?: number |
||||||
|
type?: number |
||||||
|
payAmount?: number |
||||||
|
refundAmount?: number |
||||||
|
reason?: string |
||||||
|
userIp?: string |
||||||
|
channelOrderNo?: string |
||||||
|
channelRefundNo?: string |
||||||
|
channelErrorCode?: string |
||||||
|
channelErrorMsg?: string |
||||||
|
channelExtras?: string |
||||||
|
expireTime?: Date[] |
||||||
|
successTime?: Date[] |
||||||
|
notifyTime?: Date[] |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表退款订单
|
||||||
|
export const getRefundPage = (params: RefundPageReqVO) => { |
||||||
|
return request.get({ url: '/pay/refund/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询详情退款订单
|
||||||
|
export const getRefund = (id: number) => { |
||||||
|
return request.get({ url: '/pay/refund/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增退款订单
|
||||||
|
export const createRefund = (data: RefundVO) => { |
||||||
|
return request.post({ url: '/pay/refund/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改退款订单
|
||||||
|
export const updateRefund = (data: RefundVO) => { |
||||||
|
return request.put({ url: '/pay/refund/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除退款订单
|
||||||
|
export const deleteRefund = (id: number) => { |
||||||
|
return request.delete({ url: '/pay/refund/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出退款订单
|
||||||
|
export const exportRefund = (params: PayRefundExportReqVO) => { |
||||||
|
return request.download({ url: '/pay/refund/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
// 获得地区树
|
||||||
|
export const getAreaTree = async () => { |
||||||
|
return await request.get({ url: '/system/area/tree' }) |
||||||
|
} |
||||||
|
|
||||||
|
export const getChildrenArea = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/area/get-children?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
export const getAreaListByIds = async (ids) => { |
||||||
|
return await request.get({ url: '/system/area/get-by-ids?ids=' + ids }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得 IP 对应的地区名
|
||||||
|
export const getAreaByIp = async (ip: string) => { |
||||||
|
return await request.get({ url: '/system/area/get-by-ip?ip=' + ip }) |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface DeptVO { |
||||||
|
id?: number |
||||||
|
name: string |
||||||
|
parentId: number |
||||||
|
status: number |
||||||
|
sort: number |
||||||
|
leaderUserId: number |
||||||
|
phone: string |
||||||
|
email: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询部门(精简)列表
|
||||||
|
export const getSimpleDeptList = async (): Promise<DeptVO[]> => { |
||||||
|
return await request.get({ url: '/system/dept/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询部门列表
|
||||||
|
export const getDeptPage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/dept/list', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询部门详情
|
||||||
|
export const getDept = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/dept/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增部门
|
||||||
|
export const createDept = async (data: DeptVO) => { |
||||||
|
return await request.post({ url: '/system/dept/create', data: data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改部门
|
||||||
|
export const updateDept = async (params: DeptVO) => { |
||||||
|
return await request.put({ url: '/system/dept/update', data: params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除部门
|
||||||
|
export const deleteDept = async (id: number) => { |
||||||
|
return await request.delete({ url: '/system/dept/delete?id=' + id }) |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type DictDataVO = { |
||||||
|
id: number | undefined |
||||||
|
sort: number | undefined |
||||||
|
label: string |
||||||
|
value: string |
||||||
|
dictType: string |
||||||
|
status: number |
||||||
|
colorType: string |
||||||
|
cssClass: string |
||||||
|
remark: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询字典数据(精简)列表
|
||||||
|
export const listSimpleDictData = () => { |
||||||
|
return request.get({ url: '/system/dict-data/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询字典数据列表
|
||||||
|
export const getDictDataPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/dict-data/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询字典数据详情
|
||||||
|
export const getDictData = (id: number) => { |
||||||
|
return request.get({ url: '/system/dict-data/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增字典数据
|
||||||
|
export const createDictData = (data: DictDataVO) => { |
||||||
|
return request.post({ url: '/system/dict-data/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改字典数据
|
||||||
|
export const updateDictData = (data: DictDataVO) => { |
||||||
|
return request.put({ url: '/system/dict-data/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除字典数据
|
||||||
|
export const deleteDictData = (id: number) => { |
||||||
|
return request.delete({ url: '/system/dict-data/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出字典类型数据
|
||||||
|
export const exportDictData = (params) => { |
||||||
|
return request.get({ url: '/system/dict-data/export', params }) |
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type DictTypeVO = { |
||||||
|
id: number | undefined |
||||||
|
name: string |
||||||
|
type: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询字典(精简)列表
|
||||||
|
export const getSimpleDictTypeList = () => { |
||||||
|
return request.get({ url: '/system/dict-type/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询字典列表
|
||||||
|
export const getDictTypePage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/dict-type/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询字典详情
|
||||||
|
export const getDictType = (id: number) => { |
||||||
|
return request.get({ url: '/system/dict-type/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增字典
|
||||||
|
export const createDictType = (data: DictTypeVO) => { |
||||||
|
return request.post({ url: '/system/dict-type/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改字典
|
||||||
|
export const updateDictType = (data: DictTypeVO) => { |
||||||
|
return request.put({ url: '/system/dict-type/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除字典
|
||||||
|
export const deleteDictType = (id: number) => { |
||||||
|
return request.delete({ url: '/system/dict-type/delete?id=' + id }) |
||||||
|
} |
||||||
|
// 导出字典类型
|
||||||
|
export const exportDictType = (params) => { |
||||||
|
return request.get({ url: '/system/dict-type/export', params }) |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface ErrorCodeVO { |
||||||
|
id: number | undefined |
||||||
|
type: number |
||||||
|
applicationName: string |
||||||
|
code: number | undefined |
||||||
|
message: string |
||||||
|
memo: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询错误码列表
|
||||||
|
export const getErrorCodePage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/error-code/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询错误码详情
|
||||||
|
export const getErrorCode = (id: number) => { |
||||||
|
return request.get({ url: '/system/error-code/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增错误码
|
||||||
|
export const createErrorCode = (data: ErrorCodeVO) => { |
||||||
|
return request.post({ url: '/system/error-code/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改错误码
|
||||||
|
export const updateErrorCode = (data: ErrorCodeVO) => { |
||||||
|
return request.put({ url: '/system/error-code/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除错误码
|
||||||
|
export const deleteErrorCode = (id: number) => { |
||||||
|
return request.delete({ url: '/system/error-code/delete?id=' + id }) |
||||||
|
} |
||||||
|
// 导出错误码
|
||||||
|
export const excelErrorCode = (params) => { |
||||||
|
return request.download({ url: '/system/error-code/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface LoginLogVO { |
||||||
|
id: number |
||||||
|
logType: number |
||||||
|
traceId: number |
||||||
|
userId: number |
||||||
|
userType: number |
||||||
|
username: string |
||||||
|
status: number |
||||||
|
userIp: string |
||||||
|
userAgent: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询登录日志列表
|
||||||
|
export const getLoginLogPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/login-log/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出登录日志
|
||||||
|
export const exportLoginLog = (params) => { |
||||||
|
return request.download({ url: '/system/login-log/export', params }) |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface MailAccountVO { |
||||||
|
id: number |
||||||
|
mail: string |
||||||
|
username: string |
||||||
|
password: string |
||||||
|
host: string |
||||||
|
port: number |
||||||
|
sslEnable: boolean |
||||||
|
} |
||||||
|
|
||||||
|
// 查询邮箱账号列表
|
||||||
|
export const getMailAccountPage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/mail-account/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询邮箱账号详情
|
||||||
|
export const getMailAccount = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/mail-account/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增邮箱账号
|
||||||
|
export const createMailAccount = async (data: MailAccountVO) => { |
||||||
|
return await request.post({ url: '/system/mail-account/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改邮箱账号
|
||||||
|
export const updateMailAccount = async (data: MailAccountVO) => { |
||||||
|
return await request.put({ url: '/system/mail-account/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除邮箱账号
|
||||||
|
export const deleteMailAccount = async (id: number) => { |
||||||
|
return await request.delete({ url: '/system/mail-account/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得邮箱账号精简列表
|
||||||
|
export const getSimpleMailAccountList = async () => { |
||||||
|
return request.get({ url: '/system/mail-account/list-all-simple' }) |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface MailLogVO { |
||||||
|
id: number |
||||||
|
userId: number |
||||||
|
userType: number |
||||||
|
toMail: string |
||||||
|
accountId: number |
||||||
|
fromMail: string |
||||||
|
templateId: number |
||||||
|
templateCode: string |
||||||
|
templateNickname: string |
||||||
|
templateTitle: string |
||||||
|
templateContent: string |
||||||
|
templateParams: string |
||||||
|
sendStatus: number |
||||||
|
sendTime: Date |
||||||
|
sendMessageId: string |
||||||
|
sendException: string |
||||||
|
} |
||||||
|
|
||||||
|
// 查询邮件日志列表
|
||||||
|
export const getMailLogPage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/mail-log/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询邮件日志详情
|
||||||
|
export const getMailLog = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/mail-log/get?id=' + id }) |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface MailTemplateVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
code: string |
||||||
|
accountId: number |
||||||
|
nickname: string |
||||||
|
title: string |
||||||
|
content: string |
||||||
|
params: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
} |
||||||
|
|
||||||
|
export interface MailSendReqVO { |
||||||
|
mail: string |
||||||
|
templateCode: string |
||||||
|
templateParams: Map<String, Object> |
||||||
|
} |
||||||
|
|
||||||
|
// 查询邮件模版列表
|
||||||
|
export const getMailTemplatePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/mail-template/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询邮件模版详情
|
||||||
|
export const getMailTemplate = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/mail-template/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增邮件模版
|
||||||
|
export const createMailTemplate = async (data: MailTemplateVO) => { |
||||||
|
return await request.post({ url: '/system/mail-template/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改邮件模版
|
||||||
|
export const updateMailTemplate = async (data: MailTemplateVO) => { |
||||||
|
return await request.put({ url: '/system/mail-template/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除邮件模版
|
||||||
|
export const deleteMailTemplate = async (id: number) => { |
||||||
|
return await request.delete({ url: '/system/mail-template/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 发送邮件
|
||||||
|
export const sendMail = (data: MailSendReqVO) => { |
||||||
|
return request.post({ url: '/system/mail-template/send-mail', data }) |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface MenuVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
permission: string |
||||||
|
type: number |
||||||
|
sort: number |
||||||
|
parentId: number |
||||||
|
path: string |
||||||
|
icon: string |
||||||
|
component: string |
||||||
|
componentName?: string |
||||||
|
status: number |
||||||
|
visible: boolean |
||||||
|
keepAlive: boolean |
||||||
|
alwaysShow?: boolean |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询菜单(精简)列表
|
||||||
|
export const getSimpleMenusList = () => { |
||||||
|
return request.get({ url: '/system/menu/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询菜单列表
|
||||||
|
export const getMenuList = (params) => { |
||||||
|
return request.get({ url: '/system/menu/list', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取菜单详情
|
||||||
|
export const getMenu = (id: number) => { |
||||||
|
return request.get({ url: '/system/menu/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增菜单
|
||||||
|
export const createMenu = (data: MenuVO) => { |
||||||
|
return request.post({ url: '/system/menu/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改菜单
|
||||||
|
export const updateMenu = (data: MenuVO) => { |
||||||
|
return request.put({ url: '/system/menu/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除菜单
|
||||||
|
export const deleteMenu = (id: number) => { |
||||||
|
return request.delete({ url: '/system/menu/delete?id=' + id }) |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface NoticeVO { |
||||||
|
id: number | undefined |
||||||
|
title: string |
||||||
|
type: number |
||||||
|
content: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
creator: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询公告列表
|
||||||
|
export const getNoticePage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/notice/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询公告详情
|
||||||
|
export const getNotice = (id: number) => { |
||||||
|
return request.get({ url: '/system/notice/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增公告
|
||||||
|
export const createNotice = (data: NoticeVO) => { |
||||||
|
return request.post({ url: '/system/notice/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改公告
|
||||||
|
export const updateNotice = (data: NoticeVO) => { |
||||||
|
return request.put({ url: '/system/notice/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除公告
|
||||||
|
export const deleteNotice = (id: number) => { |
||||||
|
return request.delete({ url: '/system/notice/delete?id=' + id }) |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
import qs from 'qs' |
||||||
|
|
||||||
|
export interface NotifyMessageVO { |
||||||
|
id: number |
||||||
|
userId: number |
||||||
|
userType: number |
||||||
|
templateId: number |
||||||
|
templateCode: string |
||||||
|
templateNickname: string |
||||||
|
templateContent: string |
||||||
|
templateType: number |
||||||
|
templateParams: string |
||||||
|
readStatus: boolean |
||||||
|
readTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询站内信消息列表
|
||||||
|
export const getNotifyMessagePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/notify-message/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得我的站内信分页
|
||||||
|
export const getMyNotifyMessagePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/notify-message/my-page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 批量标记已读
|
||||||
|
export const updateNotifyMessageRead = async (ids) => { |
||||||
|
return await request.put({ |
||||||
|
url: '/system/notify-message/update-read?' + qs.stringify({ ids: ids }, { indices: false }) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 标记所有站内信为已读
|
||||||
|
export const updateAllNotifyMessageRead = async () => { |
||||||
|
return await request.put({ url: '/system/notify-message/update-all-read' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取当前用户的最新站内信列表
|
||||||
|
export const getUnreadNotifyMessageList = async () => { |
||||||
|
return await request.get({ url: '/system/notify-message/get-unread-list' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得当前用户的未读站内信数量
|
||||||
|
export const getUnreadNotifyMessageCount = async () => { |
||||||
|
return await request.get({ url: '/system/notify-message/get-unread-count' }) |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface NotifyTemplateVO { |
||||||
|
id?: number |
||||||
|
name: string |
||||||
|
nickname: string |
||||||
|
code: string |
||||||
|
content: string |
||||||
|
type: number |
||||||
|
params: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
} |
||||||
|
|
||||||
|
export interface NotifySendReqVO { |
||||||
|
userId: number | null |
||||||
|
templateCode: string |
||||||
|
templateParams: Map<String, Object> |
||||||
|
} |
||||||
|
|
||||||
|
// 查询站内信模板列表
|
||||||
|
export const getNotifyTemplatePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/notify-template/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询站内信模板详情
|
||||||
|
export const getNotifyTemplate = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/notify-template/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增站内信模板
|
||||||
|
export const createNotifyTemplate = async (data: NotifyTemplateVO) => { |
||||||
|
return await request.post({ url: '/system/notify-template/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改站内信模板
|
||||||
|
export const updateNotifyTemplate = async (data: NotifyTemplateVO) => { |
||||||
|
return await request.put({ url: '/system/notify-template/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除站内信模板
|
||||||
|
export const deleteNotifyTemplate = async (id: number) => { |
||||||
|
return await request.delete({ url: '/system/notify-template/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 发送站内信
|
||||||
|
export const sendNotify = (data: NotifySendReqVO) => { |
||||||
|
return request.post({ url: '/system/notify-template/send-notify', data }) |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface OAuth2ClientVO { |
||||||
|
id: number |
||||||
|
clientId: string |
||||||
|
secret: string |
||||||
|
name: string |
||||||
|
logo: string |
||||||
|
description: string |
||||||
|
status: number |
||||||
|
accessTokenValiditySeconds: number |
||||||
|
refreshTokenValiditySeconds: number |
||||||
|
redirectUris: string[] |
||||||
|
autoApprove: boolean |
||||||
|
authorizedGrantTypes: string[] |
||||||
|
scopes: string[] |
||||||
|
authorities: string[] |
||||||
|
resourceIds: string[] |
||||||
|
additionalInformation: string |
||||||
|
isAdditionalInformationJson: boolean |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询 OAuth2 客户端的列表
|
||||||
|
export const getOAuth2ClientPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/oauth2-client/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询 OAuth2 客户端的详情
|
||||||
|
export const getOAuth2Client = (id: number) => { |
||||||
|
return request.get({ url: '/system/oauth2-client/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增 OAuth2 客户端
|
||||||
|
export const createOAuth2Client = (data: OAuth2ClientVO) => { |
||||||
|
return request.post({ url: '/system/oauth2-client/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改 OAuth2 客户端
|
||||||
|
export const updateOAuth2Client = (data: OAuth2ClientVO) => { |
||||||
|
return request.put({ url: '/system/oauth2-client/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除 OAuth2
|
||||||
|
export const deleteOAuth2Client = (id: number) => { |
||||||
|
return request.delete({ url: '/system/oauth2-client/delete?id=' + id }) |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface OAuth2TokenVO { |
||||||
|
id: number |
||||||
|
accessToken: string |
||||||
|
refreshToken: string |
||||||
|
userId: number |
||||||
|
userType: number |
||||||
|
clientId: string |
||||||
|
createTime: Date |
||||||
|
expiresTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询 token列表
|
||||||
|
export const getAccessTokenPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/oauth2-token/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除 token
|
||||||
|
export const deleteAccessToken = (accessToken: string) => { |
||||||
|
return request.delete({ url: '/system/oauth2-token/delete?accessToken=' + accessToken }) |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export type OperateLogVO = { |
||||||
|
id: number |
||||||
|
userNickname: string |
||||||
|
traceId: string |
||||||
|
userId: number |
||||||
|
module: string |
||||||
|
name: string |
||||||
|
type: number |
||||||
|
content: string |
||||||
|
exts: Map<String, Object> |
||||||
|
requestMethod: string |
||||||
|
requestUrl: string |
||||||
|
userIp: string |
||||||
|
userAgent: string |
||||||
|
javaMethod: string |
||||||
|
javaMethodArgs: string |
||||||
|
startTime: Date |
||||||
|
duration: number |
||||||
|
resultCode: number |
||||||
|
resultMsg: string |
||||||
|
resultData: string |
||||||
|
} |
||||||
|
|
||||||
|
// 查询操作日志列表
|
||||||
|
export const getOperateLogPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/operate-log/page', params }) |
||||||
|
} |
||||||
|
// 导出操作日志
|
||||||
|
export const exportOperateLog = (params) => { |
||||||
|
return request.download({ url: '/system/operate-log/export', params }) |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface PermissionAssignUserRoleReqVO { |
||||||
|
userId: number |
||||||
|
roleIds: number[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface PermissionAssignRoleMenuReqVO { |
||||||
|
roleId: number |
||||||
|
menuIds: number[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface PermissionAssignRoleDataScopeReqVO { |
||||||
|
roleId: number |
||||||
|
dataScope: number |
||||||
|
dataScopeDeptIds: number[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询角色拥有的菜单权限
|
||||||
|
export const getRoleMenuList = async (roleId: number) => { |
||||||
|
return await request.get({ url: '/system/permission/list-role-resources?roleId=' + roleId }) |
||||||
|
} |
||||||
|
|
||||||
|
// 赋予角色菜单权限
|
||||||
|
export const assignRoleMenu = async (data: PermissionAssignRoleMenuReqVO) => { |
||||||
|
return await request.post({ url: '/system/permission/assign-role-menu', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 赋予角色数据权限
|
||||||
|
export const assignRoleDataScope = async (data: PermissionAssignRoleDataScopeReqVO) => { |
||||||
|
return await request.post({ url: '/system/permission/assign-role-data-scope', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询用户拥有的角色数组
|
||||||
|
export const getUserRoleList = async (userId: number) => { |
||||||
|
return await request.get({ url: '/system/permission/list-user-roles?userId=' + userId }) |
||||||
|
} |
||||||
|
|
||||||
|
// 赋予用户角色
|
||||||
|
export const assignUserRole = async (data: PermissionAssignUserRoleReqVO) => { |
||||||
|
return await request.post({ url: '/system/permission/assign-user-role', data }) |
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface PostVO { |
||||||
|
id?: number |
||||||
|
name: string |
||||||
|
code: string |
||||||
|
sort: number |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
createTime?: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询岗位列表
|
||||||
|
export const getPostPage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/post/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取岗位精简信息列表
|
||||||
|
export const getSimplePostList = async (): Promise<PostVO[]> => { |
||||||
|
return await request.get({ url: '/system/post/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询岗位详情
|
||||||
|
export const getPost = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/post/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增岗位
|
||||||
|
export const createPost = async (data: PostVO) => { |
||||||
|
return await request.post({ url: '/system/post/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改岗位
|
||||||
|
export const updatePost = async (data: PostVO) => { |
||||||
|
return await request.put({ url: '/system/post/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除岗位
|
||||||
|
export const deletePost = async (id: number) => { |
||||||
|
return await request.delete({ url: '/system/post/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出岗位
|
||||||
|
export const exportPost = async (params) => { |
||||||
|
return await request.download({ url: '/system/post/export', params }) |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface RoleVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
code: string |
||||||
|
sort: number |
||||||
|
status: number |
||||||
|
type: number |
||||||
|
dataScope: number |
||||||
|
dataScopeDeptIds: number[] |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface UpdateStatusReqVO { |
||||||
|
id: number |
||||||
|
status: number |
||||||
|
} |
||||||
|
|
||||||
|
// 查询角色列表
|
||||||
|
export const getRolePage = async (params: PageParam) => { |
||||||
|
return await request.get({ url: '/system/role/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询角色(精简)列表
|
||||||
|
export const getSimpleRoleList = async (): Promise<RoleVO[]> => { |
||||||
|
return await request.get({ url: '/system/role/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询角色详情
|
||||||
|
export const getRole = async (id: number) => { |
||||||
|
return await request.get({ url: '/system/role/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增角色
|
||||||
|
export const createRole = async (data: RoleVO) => { |
||||||
|
return await request.post({ url: '/system/role/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改角色
|
||||||
|
export const updateRole = async (data: RoleVO) => { |
||||||
|
return await request.put({ url: '/system/role/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改角色状态
|
||||||
|
export const updateRoleStatus = async (data: UpdateStatusReqVO) => { |
||||||
|
return await request.put({ url: '/system/role/update-status', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除角色
|
||||||
|
export const deleteRole = async (id: number) => { |
||||||
|
return await request.delete({ url: '/system/role/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出角色
|
||||||
|
export const exportRole = (params) => { |
||||||
|
return request.download({ |
||||||
|
url: '/system/role/export-excel', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
import qs from 'qs' |
||||||
|
|
||||||
|
export interface SensitiveWordVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
status: number |
||||||
|
description: string |
||||||
|
tags: string[] |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface SensitiveWordTestReqVO { |
||||||
|
text: string |
||||||
|
tag: string[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询敏感词列表
|
||||||
|
export const getSensitiveWordPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/sensitive-word/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询敏感词详情
|
||||||
|
export const getSensitiveWord = (id: number) => { |
||||||
|
return request.get({ url: '/system/sensitive-word/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增敏感词
|
||||||
|
export const createSensitiveWord = (data: SensitiveWordVO) => { |
||||||
|
return request.post({ url: '/system/sensitive-word/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改敏感词
|
||||||
|
export const updateSensitiveWord = (data: SensitiveWordVO) => { |
||||||
|
return request.put({ url: '/system/sensitive-word/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除敏感词
|
||||||
|
export const deleteSensitiveWord = (id: number) => { |
||||||
|
return request.delete({ url: '/system/sensitive-word/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出敏感词
|
||||||
|
export const exportSensitiveWord = (params) => { |
||||||
|
return request.download({ url: '/system/sensitive-word/export-excel', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获取所有敏感词的标签数组
|
||||||
|
export const getSensitiveWordTagList = () => { |
||||||
|
return request.get({ url: '/system/sensitive-word/get-tags' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得文本所包含的不合法的敏感词数组
|
||||||
|
export const validateText = (query: SensitiveWordTestReqVO) => { |
||||||
|
return request.get({ |
||||||
|
url: '/system/sensitive-word/validate-text?' + qs.stringify(query, { arrayFormat: 'repeat' }) |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface SmsChannelVO { |
||||||
|
id: number |
||||||
|
code: string |
||||||
|
status: number |
||||||
|
signature: string |
||||||
|
remark: string |
||||||
|
apiKey: string |
||||||
|
apiSecret: string |
||||||
|
callbackUrl: string |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询短信渠道列表
|
||||||
|
export const getSmsChannelPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/sms-channel/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得短信渠道精简列表
|
||||||
|
export function getSimpleSmsChannelList() { |
||||||
|
return request.get({ url: '/system/sms-channel/list-all-simple' }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询短信渠道详情
|
||||||
|
export const getSmsChannel = (id: number) => { |
||||||
|
return request.get({ url: '/system/sms-channel/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增短信渠道
|
||||||
|
export const createSmsChannel = (data: SmsChannelVO) => { |
||||||
|
return request.post({ url: '/system/sms-channel/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改短信渠道
|
||||||
|
export const updateSmsChannel = (data: SmsChannelVO) => { |
||||||
|
return request.put({ url: '/system/sms-channel/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除短信渠道
|
||||||
|
export const deleteSmsChannel = (id: number) => { |
||||||
|
return request.delete({ url: '/system/sms-channel/delete?id=' + id }) |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface SmsLogVO { |
||||||
|
id: number | null |
||||||
|
channelId: number | null |
||||||
|
channelCode: string |
||||||
|
templateId: number | null |
||||||
|
templateCode: string |
||||||
|
templateType: number | null |
||||||
|
templateContent: string |
||||||
|
templateParams: Map<string, object> | null |
||||||
|
apiTemplateId: string |
||||||
|
mobile: string |
||||||
|
userId: number | null |
||||||
|
userType: number | null |
||||||
|
sendStatus: number | null |
||||||
|
sendTime: Date | null |
||||||
|
sendCode: number | null |
||||||
|
sendMsg: string |
||||||
|
apiSendCode: string |
||||||
|
apiSendMsg: string |
||||||
|
apiRequestId: string |
||||||
|
apiSerialNo: string |
||||||
|
receiveStatus: number | null |
||||||
|
receiveTime: Date | null |
||||||
|
apiReceiveCode: string |
||||||
|
apiReceiveMsg: string |
||||||
|
createTime: Date | null |
||||||
|
} |
||||||
|
|
||||||
|
// 查询短信日志列表
|
||||||
|
export const getSmsLogPage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/sms-log/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出短信日志
|
||||||
|
export const exportSmsLog = (params) => { |
||||||
|
return request.download({ url: '/system/sms-log/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface SmsTemplateVO { |
||||||
|
id: number | null |
||||||
|
type: number | null |
||||||
|
status: number |
||||||
|
code: string |
||||||
|
name: string |
||||||
|
content: string |
||||||
|
remark: string |
||||||
|
apiTemplateId: string |
||||||
|
channelId: number | null |
||||||
|
channelCode?: string |
||||||
|
params?: string[] |
||||||
|
createTime?: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface SendSmsReqVO { |
||||||
|
mobile: string |
||||||
|
templateCode: string |
||||||
|
templateParams: Map<String, Object> |
||||||
|
} |
||||||
|
|
||||||
|
// 查询短信模板列表
|
||||||
|
export const getSmsTemplatePage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/sms-template/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询短信模板详情
|
||||||
|
export const getSmsTemplate = (id: number) => { |
||||||
|
return request.get({ url: '/system/sms-template/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增短信模板
|
||||||
|
export const createSmsTemplate = (data: SmsTemplateVO) => { |
||||||
|
return request.post({ url: '/system/sms-template/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改短信模板
|
||||||
|
export const updateSmsTemplate = (data: SmsTemplateVO) => { |
||||||
|
return request.put({ url: '/system/sms-template/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除短信模板
|
||||||
|
export const deleteSmsTemplate = (id: number) => { |
||||||
|
return request.delete({ url: '/system/sms-template/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出短信模板
|
||||||
|
export const exportSmsTemplate = (params) => { |
||||||
|
return request.download({ |
||||||
|
url: '/system/sms-template/export-excel', |
||||||
|
params |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 发送短信
|
||||||
|
export const sendSms = (data: SendSmsReqVO) => { |
||||||
|
return request.post({ url: '/system/sms-template/send-sms', data }) |
||||||
|
} |
@ -0,0 +1,62 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface TenantVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
contactName: string |
||||||
|
contactMobile: string |
||||||
|
status: number |
||||||
|
domain: string |
||||||
|
packageId: number |
||||||
|
username: string |
||||||
|
password: string |
||||||
|
expireTime: Date |
||||||
|
accountCount: number |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
export interface TenantPageReqVO extends PageParam { |
||||||
|
name?: string |
||||||
|
contactName?: string |
||||||
|
contactMobile?: string |
||||||
|
status?: number |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
export interface TenantExportReqVO { |
||||||
|
name?: string |
||||||
|
contactName?: string |
||||||
|
contactMobile?: string |
||||||
|
status?: number |
||||||
|
createTime?: Date[] |
||||||
|
} |
||||||
|
|
||||||
|
// 查询租户列表
|
||||||
|
export const getTenantPage = (params: TenantPageReqVO) => { |
||||||
|
return request.get({ url: '/system/tenant/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 查询租户详情
|
||||||
|
export const getTenant = (id: number) => { |
||||||
|
return request.get({ url: '/system/tenant/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增租户
|
||||||
|
export const createTenant = (data: TenantVO) => { |
||||||
|
return request.post({ url: '/system/tenant/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改租户
|
||||||
|
export const updateTenant = (data: TenantVO) => { |
||||||
|
return request.put({ url: '/system/tenant/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除租户
|
||||||
|
export const deleteTenant = (id: number) => { |
||||||
|
return request.delete({ url: '/system/tenant/delete?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 导出租户
|
||||||
|
export const exportTenant = (params: TenantExportReqVO) => { |
||||||
|
return request.download({ url: '/system/tenant/export-excel', params }) |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
import request from '@/config/axios' |
||||||
|
|
||||||
|
export interface TenantPackageVO { |
||||||
|
id: number |
||||||
|
name: string |
||||||
|
status: number |
||||||
|
remark: string |
||||||
|
creator: string |
||||||
|
updater: string |
||||||
|
updateTime: string |
||||||
|
menuIds: number[] |
||||||
|
createTime: Date |
||||||
|
} |
||||||
|
|
||||||
|
// 查询租户套餐列表
|
||||||
|
export const getTenantPackagePage = (params: PageParam) => { |
||||||
|
return request.get({ url: '/system/tenant-package/page', params }) |
||||||
|
} |
||||||
|
|
||||||
|
// 获得租户
|
||||||
|
export const getTenantPackage = (id: number) => { |
||||||
|
return request.get({ url: '/system/tenant-package/get?id=' + id }) |
||||||
|
} |
||||||
|
|
||||||
|
// 新增租户套餐
|
||||||
|
export const createTenantPackage = (data: TenantPackageVO) => { |
||||||
|
return request.post({ url: '/system/tenant-package/create', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 修改租户套餐
|
||||||
|
export const updateTenantPackage = (data: TenantPackageVO) => { |
||||||
|
return request.put({ url: '/system/tenant-package/update', data }) |
||||||
|
} |
||||||
|
|
||||||
|
// 删除租户套餐
|
||||||
|
export const deleteTenantPackage = (id: number) => { |
||||||
|
return request.delete({ url: '/system/tenant-package/delete?id=' + id }) |
||||||
|
} |
||||||
|
// 获取租户套餐精简信息列表
|
||||||
|
export const getTenantPackageList = () => { |
||||||
|
return request.get({ url: '/system/tenant-package/get-simple-list' }) |
||||||
|
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue