'初始化项目'
This commit is contained in:
parent
b49d61f44c
commit
562168a558
|
|
@ -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 = 100 # 最大行长度
|
||||||
|
|
||||||
|
[*.md] # 仅 md 文件适用以下规则
|
||||||
|
max_line_length = off # 关闭最大行长度限制
|
||||||
|
trim_trailing_whitespace = false # 关闭末尾空格修剪
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
|
||||||
|
# 项目本地运行端口号
|
||||||
|
VITE_PORT=80
|
||||||
|
|
||||||
|
# open 运行 npm run dev 时自动打开浏览器
|
||||||
|
VITE_OPEN=true
|
||||||
|
|
||||||
|
# 租户开关
|
||||||
|
VITE_APP_TENANT_ENABLE=false
|
||||||
|
|
||||||
|
# 验证码的开关
|
||||||
|
VITE_APP_CAPTCHA_ENABLE=false
|
||||||
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=丹麦后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.dabackend.site'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-da
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# 本地开发环境
|
||||||
|
NODE_ENV=development
|
||||||
|
VITE_APP_TITLE=LUALAIR
|
||||||
|
VITE_DEV=true
|
||||||
|
|
||||||
|
# 请求路径
|
||||||
|
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=/
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=成都演示后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.22y.fun'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-da
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# 开发环境
|
||||||
|
NODE_ENV=development
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
VITE_APP_TITLE=成都演示后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='http://127.0.0.1:48080'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/admin-api/infra/file/upload'
|
||||||
|
|
||||||
|
# 接口前缀
|
||||||
|
VITE_API_BASEPATH=/dev-api
|
||||||
|
|
||||||
|
# 接口地址
|
||||||
|
VITE_API_URL=/admin-api
|
||||||
|
|
||||||
|
# 打包路径
|
||||||
|
VITE_BASE_PATH=/
|
||||||
|
|
||||||
|
# 是否删除debugger
|
||||||
|
VITE_DROP_DEBUGGER=true
|
||||||
|
|
||||||
|
# 是否删除console.log
|
||||||
|
VITE_DROP_CONSOLE=false
|
||||||
|
|
||||||
|
# 是否sourcemap
|
||||||
|
VITE_SOURCEMAP=false
|
||||||
|
|
||||||
|
# 输出路径
|
||||||
|
VITE_OUT_DIR=dist
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=印度后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.inbackend.site'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-in
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=新西兰后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.nzbackend.site'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-nz
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend-us.order-sys.xyz'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=葡萄牙后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.ptbackend.site'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-pt
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=英国后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.ukbackend.site'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-uk
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# 生产环境
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
VITE_DEV=false
|
||||||
|
# 标题
|
||||||
|
VITE_APP_TITLE=美国后台
|
||||||
|
# 请求路径
|
||||||
|
VITE_BASE_URL='https://backend.usbackend.site'
|
||||||
|
|
||||||
|
# 上传路径
|
||||||
|
VITE_UPLOAD_URL='/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-us
|
||||||
|
|
@ -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,71 @@
|
||||||
|
// @ts-check
|
||||||
|
const { defineConfig } = require('eslint-define-config')
|
||||||
|
module.exports = defineConfig({
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
node: true,
|
||||||
|
es6: true
|
||||||
|
},
|
||||||
|
parser: 'vue-eslint-parser',
|
||||||
|
plugins: ['vue'],
|
||||||
|
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'
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'vue/script-setup-uses-vars': 'error',
|
||||||
|
'vue/no-reserved-component-names': 'off',
|
||||||
|
'vue/no-setup-props-destructure': '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': 'off',
|
||||||
|
'no-unused-vars': 'off',
|
||||||
|
'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',
|
||||||
|
'vue/no-v-html': 'off'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
/dist*
|
||||||
|
*-lock.*
|
||||||
|
pnpm-debug
|
||||||
|
auto-*.d.ts
|
||||||
|
.idea
|
||||||
|
.history
|
||||||
|
dist*
|
||||||
|
|
@ -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,19 @@
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"christian-kohler.path-intellisense",
|
||||||
|
"vscode-icons-team.vscode-icons",
|
||||||
|
"davidanson.vscode-markdownlint",
|
||||||
|
"stylelint.vscode-stylelint",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"mrmlnc.vscode-less",
|
||||||
|
"lokalise.i18n-ally",
|
||||||
|
"redhat.vscode-yaml",
|
||||||
|
"csstools.postcss",
|
||||||
|
"mikestead.dotenv",
|
||||||
|
"eamodio.gitlens",
|
||||||
|
"antfu.iconify",
|
||||||
|
"antfu.unocss",
|
||||||
|
"Vue.volar"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -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 47.250.38.157",
|
||||||
|
"url": "http://47.250.38.157",
|
||||||
|
"webRoot": "${workspaceFolder}/src",
|
||||||
|
"sourceMaps": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,167 @@
|
||||||
|
{
|
||||||
|
"typescript.tsdk": "./node_modules/typescript/lib",
|
||||||
|
"volar.tsPlugin": true,
|
||||||
|
"volar.tsPluginStatus": false,
|
||||||
|
"npm.packageManager": "pnpm",
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"prettier.printWidth": 100, // 超过最大值换行
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
"files.eol": "\n",
|
||||||
|
"search.exclude": {
|
||||||
|
"**/node_modules": true,
|
||||||
|
"**/*.log": true,
|
||||||
|
"**/*.log*": true,
|
||||||
|
"**/bower_components": true,
|
||||||
|
"**/dist": true,
|
||||||
|
"**/elehukouben": true,
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.gitignore": true,
|
||||||
|
"**/.svn": true,
|
||||||
|
"**/.DS_Store": true,
|
||||||
|
"**/.idea": true,
|
||||||
|
"**/.vscode": false,
|
||||||
|
"**/yarn.lock": true,
|
||||||
|
"**/tmp": true,
|
||||||
|
"out": true,
|
||||||
|
"dist": true,
|
||||||
|
"node_modules": true,
|
||||||
|
"CHANGELOG.md": true,
|
||||||
|
"examples": true,
|
||||||
|
"res": true,
|
||||||
|
"screenshots": true,
|
||||||
|
"yarn-error.log": true,
|
||||||
|
"**/.yarn": true
|
||||||
|
},
|
||||||
|
"files.exclude": {
|
||||||
|
"**/.cache": true,
|
||||||
|
"**/.editorconfig": true,
|
||||||
|
"**/.eslintcache": true,
|
||||||
|
"**/bower_components": true,
|
||||||
|
"**/.idea": true,
|
||||||
|
"**/tmp": true,
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.svn": true,
|
||||||
|
"**/.hg": true,
|
||||||
|
"**/CVS": true,
|
||||||
|
"**/.DS_Store": true
|
||||||
|
},
|
||||||
|
"files.watcherExclude": {
|
||||||
|
"**/.git/objects/**": true,
|
||||||
|
"**/.git/subtree-cache/**": true,
|
||||||
|
"**/.vscode/**": true,
|
||||||
|
"**/node_modules/**": true,
|
||||||
|
"**/tmp/**": true,
|
||||||
|
"**/bower_components/**": true,
|
||||||
|
"**/dist/**": true,
|
||||||
|
"**/yarn.lock": true
|
||||||
|
},
|
||||||
|
"stylelint.enable": true,
|
||||||
|
"stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"],
|
||||||
|
"path-intellisense.mappings": {
|
||||||
|
"@/": "${workspaceRoot}/src"
|
||||||
|
},
|
||||||
|
"[javascriptreact]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescriptreact]": {
|
||||||
|
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||||
|
},
|
||||||
|
"[html]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[css]": {
|
||||||
|
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||||
|
},
|
||||||
|
"[less]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[scss]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[markdown]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true
|
||||||
|
},
|
||||||
|
"[vue]": {
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true,
|
||||||
|
"source.fixAll.stylelint": true
|
||||||
|
},
|
||||||
|
"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": "zh-CN",
|
||||||
|
"i18n-ally.displayLanguage": "zh-CN",
|
||||||
|
"i18n-ally.enabledFrameworks": ["vue", "react"],
|
||||||
|
"cSpell.words": [
|
||||||
|
"brotli",
|
||||||
|
"browserslist",
|
||||||
|
"codemirror",
|
||||||
|
"commitlint",
|
||||||
|
"cropperjs",
|
||||||
|
"echarts",
|
||||||
|
"esnext",
|
||||||
|
"esno",
|
||||||
|
"iconify",
|
||||||
|
"INTLIFY",
|
||||||
|
"lintstagedrc",
|
||||||
|
"logicflow",
|
||||||
|
"nprogress",
|
||||||
|
"Permi",
|
||||||
|
"pinia",
|
||||||
|
"pnpm",
|
||||||
|
"qrcode",
|
||||||
|
"sider",
|
||||||
|
"sortablejs",
|
||||||
|
"stylelint",
|
||||||
|
"unocss",
|
||||||
|
"unplugin",
|
||||||
|
"videojs",
|
||||||
|
"vitejs",
|
||||||
|
"vueuse",
|
||||||
|
"wangeditor",
|
||||||
|
"xingyu",
|
||||||
|
"yudao",
|
||||||
|
"zxcvbn"
|
||||||
|
],
|
||||||
|
"vetur.format.scriptInitialIndent": true,
|
||||||
|
"vetur.format.styleInitialIndent": true,
|
||||||
|
"vetur.validation.script": false,
|
||||||
|
"MicroPython.executeButton": [
|
||||||
|
{
|
||||||
|
"text": "▶",
|
||||||
|
"tooltip": "运行",
|
||||||
|
"alignment": "left",
|
||||||
|
"command": "extension.executeFile",
|
||||||
|
"priority": 3.5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"MicroPython.syncButton": [
|
||||||
|
{
|
||||||
|
"text": "$(sync)",
|
||||||
|
"tooltip": "同步",
|
||||||
|
"alignment": "left",
|
||||||
|
"command": "extension.execute",
|
||||||
|
"priority": 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// 控制相关文件嵌套展示
|
||||||
|
"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.*",
|
||||||
|
"package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore"
|
||||||
|
},
|
||||||
|
"terminal.integrated.scrollback": 10000
|
||||||
|
}
|
||||||
|
|
@ -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,235 @@
|
||||||
|
**严肃声明:现在、未来都不会有商业版本,所有代码全部开源!!**
|
||||||
|
|
||||||
|
**「我喜欢写代码,乐此不疲」**
|
||||||
|
**「我喜欢做开源,以此为乐」**
|
||||||
|
|
||||||
|
我 🐶 在上海艰苦奋斗,早中晚在 top3 大厂认真搬砖,夜里为开源做贡献。
|
||||||
|
|
||||||
|
如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。
|
||||||
|
|
||||||
|
## 🐶 新手必读
|
||||||
|
|
||||||
|
* nodejs > 16.0.0 && pnpm > 8.6.0 (强制使用pnpm)
|
||||||
|
* 演示地址【Vue3 + element-plus】:<http://dashboard-vue3.yudao.iocoder.cn>
|
||||||
|
* 演示地址【Vue3 + vben(ant-design-vue)】:<http://dashboard-vben.yudao.iocoder.cn>
|
||||||
|
* 演示地址【Vue2 + element-ui】:<http://dashboard.yudao.iocoder.cn>
|
||||||
|
* 启动文档:<https://doc.iocoder.cn/quick-start/>
|
||||||
|
* 视频教程:<https://doc.iocoder.cn/video/>
|
||||||
|
|
||||||
|
## 🐯 平台简介
|
||||||
|
|
||||||
|
**芋道**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。
|
||||||
|
|
||||||
|
* 采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 实现
|
||||||
|
* 改换 saas,自动引入等功能
|
||||||
|
* 使用 Element Plus 免费开源的中后台模版,具备如下特性:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* **最新技术栈**:使用 Vue3、Vite4 等前端前沿技术开发
|
||||||
|
* **TypeScript**: 应用程序级 JavaScript 的语言
|
||||||
|
* **主题**: 可配置的主题
|
||||||
|
* **国际化**:内置完善的国际化方案
|
||||||
|
* **权限**:内置完善的动态路由权限生成方案
|
||||||
|
* **组件**:二次封装了多个常用的组件
|
||||||
|
* **示例**:内置丰富的示例
|
||||||
|
|
||||||
|
## 技术栈
|
||||||
|
|
||||||
|
| 框架 | 说明 | 版本 |
|
||||||
|
|----------------------------------------------------------------------|------------------|--------|
|
||||||
|
| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.3.4 |
|
||||||
|
| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.4.8 |
|
||||||
|
| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.9 |
|
||||||
|
| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.1.6 |
|
||||||
|
| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.6 |
|
||||||
|
| [vueuse](https://vueuse.org/) | 常用工具集 | 10.3.0 |
|
||||||
|
| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 |
|
||||||
|
| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.4 |
|
||||||
|
| [unocss](https://uno.antfu.me/) | 原子 css | 0.54.1 |
|
||||||
|
| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.1 |
|
||||||
|
| [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.23 |
|
||||||
|
|
||||||
|
## 开发工具
|
||||||
|
|
||||||
|
推荐 VS Code 开发,配合插件如下:
|
||||||
|
|
||||||
|
| 插件名 | 功能 |
|
||||||
|
|-------------------------------|--------------------------|
|
||||||
|
| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 |
|
||||||
|
| Vue Language Features (Volar) | Vue3.0 语法支持 |
|
||||||
|
| unocss | unocss for vscode |
|
||||||
|
| Iconify IntelliSense | Iconify 预览和搜索 |
|
||||||
|
| i18n Ally | 国际化智能提示 |
|
||||||
|
| Stylelint | Css 格式化 |
|
||||||
|
| Prettier | 代码格式化 |
|
||||||
|
| ESLint | 脚本代码检查 |
|
||||||
|
| DotENV | env 文件高亮 |
|
||||||
|
|
||||||
|
## 内置功能
|
||||||
|
|
||||||
|
系统内置多种多种业务功能,可以用于快速你的业务系统:
|
||||||
|
|
||||||
|
* 系统功能
|
||||||
|
* 基础设施
|
||||||
|
* 工作流程
|
||||||
|
* 支付系统
|
||||||
|
* 会员中心
|
||||||
|
* 数据报表
|
||||||
|
* 商城系统
|
||||||
|
* 微信公众号
|
||||||
|
|
||||||
|
### 系统功能
|
||||||
|
|
||||||
|
| | 功能 | 描述 |
|
||||||
|
|-----|-------|---------------------------------|
|
||||||
|
| | 用户管理 | 用户是系统操作者,该功能主要完成系统用户配置 |
|
||||||
|
| ⭐️ | 在线用户 | 当前系统中活跃用户状态监控,支持手动踢下线 |
|
||||||
|
| | 角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分 |
|
||||||
|
| | 菜单管理 | 配置系统菜单、操作权限、按钮权限标识等,本地缓存提供性能 |
|
||||||
|
| | 部门管理 | 配置系统组织机构(公司、部门、小组),树结构展现支持数据权限 |
|
||||||
|
| | 岗位管理 | 配置系统用户所属担任职务 |
|
||||||
|
| 🚀 | 租户管理 | 配置系统租户,支持 SaaS 场景下的多租户功能 |
|
||||||
|
| 🚀 | 租户套餐 | 配置租户套餐,自定每个租户的菜单、操作、按钮的权限 |
|
||||||
|
| | 字典管理 | 对系统中经常使用的一些较为固定的数据进行维护 |
|
||||||
|
| 🚀 | 短信管理 | 短信渠道、短息模板、短信日志,对接阿里云、腾讯云等主流短信平台 |
|
||||||
|
| 🚀 | 邮件管理 | 邮箱账号、邮件模版、邮件发送日志,支持所有邮件平台 |
|
||||||
|
| 🚀 | 站内信 | 系统内的消息通知,提供站内信模版、站内信消息 |
|
||||||
|
| 🚀 | 操作日志 | 系统正常操作日志记录和查询,集成 Swagger 生成日志内容 |
|
||||||
|
| ⭐️ | 登录日志 | 系统登录日志记录查询,包含登录异常 |
|
||||||
|
| 🚀 | 错误码管理 | 系统所有错误码的管理,可在线修改错误提示,无需重启服务 |
|
||||||
|
| | 通知公告 | 系统通知公告信息发布维护 |
|
||||||
|
| 🚀 | 敏感词 | 配置系统敏感词,支持标签分组 |
|
||||||
|
| 🚀 | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 |
|
||||||
|
| 🚀 | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 |
|
||||||
|
|
||||||
|
### 工作流程
|
||||||
|
|
||||||
|
| | 功能 | 描述 |
|
||||||
|
|-----|-------|----------------------------------------|
|
||||||
|
| 🚀 | 流程模型 | 配置工作流的流程模型,支持文件导入与在线设计流程图,提供 7 种任务分配规则 |
|
||||||
|
| 🚀 | 流程表单 | 拖动表单元素生成相应的工作流表单,覆盖 Element UI 所有的表单组件 |
|
||||||
|
| 🚀 | 用户分组 | 自定义用户分组,可用于工作流的审批分组 |
|
||||||
|
| 🚀 | 我的流程 | 查看我发起的工作流程,支持新建、取消流程等操作,高亮流程图、审批时间线 |
|
||||||
|
| 🚀 | 待办任务 | 查看自己【未】审批的工作任务,支持通过、不通过、转发、委派、退回等操作 |
|
||||||
|
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 |
|
||||||
|
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
|
||||||
|
|
||||||
|
### 支付系统
|
||||||
|
|
||||||
|
| | 功能 | 描述 |
|
||||||
|
|-----|------|---------------------------|
|
||||||
|
| 🚀 | 商户信息 | 管理商户信息,支持 Saas 场景下的多商户功能 |
|
||||||
|
| 🚀 | 应用信息 | 配置商户的应用信息,对接支付宝、微信等多个支付渠道 |
|
||||||
|
| 🚀 | 支付订单 | 查看用户发起的支付宝、微信等的【支付】订单 |
|
||||||
|
| 🚀 | 退款订单 | 查看用户发起的支付宝、微信等的【退款】订单 |
|
||||||
|
|
||||||
|
ps:核心功能已经实现,正在对接微信小程序中...
|
||||||
|
|
||||||
|
### 基础设施
|
||||||
|
|
||||||
|
| | 功能 | 描述 |
|
||||||
|
|-----|----------|----------------------------------------------|
|
||||||
|
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
|
||||||
|
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
|
||||||
|
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
|
||||||
|
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
|
||||||
|
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
|
||||||
|
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
|
||||||
|
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
|
||||||
|
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
|
||||||
|
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
|
||||||
|
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
|
||||||
|
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
|
||||||
|
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
|
||||||
|
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
|
||||||
|
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
|
||||||
|
| 🚀 | 分布式锁 | 基于 Redis 实现分布式锁,满足并发场景 |
|
||||||
|
| 🚀 | 幂等组件 | 基于 Redis 实现幂等组件,解决重复请求问题 |
|
||||||
|
| 🚀 | 服务保障 | 基于 Resilience4j 实现服务的稳定性,包括限流、熔断等功能 |
|
||||||
|
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
|
||||||
|
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
|
||||||
|
|
||||||
|
### 数据报表
|
||||||
|
|
||||||
|
| | 功能 | 描述 |
|
||||||
|
|-----|-------|--------------------|
|
||||||
|
| 🚀 | 报表设计器 | 支持数据报表、图形报表、打印设计等 |
|
||||||
|
| 🚀 | 大屏设计器 | 拖拽生成数据大屏,内置几十种图表组件 |
|
||||||
|
|
||||||
|
### 微信公众号
|
||||||
|
|
||||||
|
| | 功能 | 描述 |
|
||||||
|
|-----|--------|-------------------------------|
|
||||||
|
| 🚀 | 账号管理 | 配置接入的微信公众号,可支持多个公众号 |
|
||||||
|
| 🚀 | 数据统计 | 统计公众号的用户增减、累计用户、消息概况、接口分析等数据 |
|
||||||
|
| 🚀 | 粉丝管理 | 查看已关注、取关的粉丝列表,可对粉丝进行同步、打标签等操作 |
|
||||||
|
| 🚀 | 消息管理 | 查看粉丝发送的消息列表,可主动回复粉丝消息 |
|
||||||
|
| 🚀 | 自动回复 | 自动回复粉丝发送的消息,支持关注回复、消息回复、关键字回复 |
|
||||||
|
| 🚀 | 标签管理 | 对公众号的标签进行创建、查询、修改、删除等操作 |
|
||||||
|
| 🚀 | 菜单管理 | 自定义公众号的菜单,也可以从公众号同步菜单 |
|
||||||
|
| 🚀 | 素材管理 | 管理公众号的图片、语音、视频等素材,支持在线播放语音、视频 |
|
||||||
|
| 🚀 | 图文草稿箱 | 新增常用的图文素材到草稿箱,可发布到公众号 |
|
||||||
|
| 🚀 | 图文发表记录 | 查看已发布成功的图文素材,支持删除操作 |
|
||||||
|
|
||||||
|
### 商城系统
|
||||||
|
|
||||||
|
建设中...
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 🐷 演示图
|
||||||
|
|
||||||
|
### 系统功能
|
||||||
|
|
||||||
|
| 模块 | biu | biu | biu |
|
||||||
|
|------------|--------------------------------------------------------------------|------------------------------------------------------------------|------------------------------------------------------------------|
|
||||||
|
| 登录 & 首页 |  |  |  |
|
||||||
|
| 用户 & 应用 |  |  |  |
|
||||||
|
| 租户 & 套餐 |  |  | - |
|
||||||
|
| 部门 & 岗位 |  |  | - |
|
||||||
|
| 菜单 & 角色 |  |  | - |
|
||||||
|
| 审计日志 |  |  | - |
|
||||||
|
| 短信 |  |  |  |
|
||||||
|
| 字典 & 敏感词 |  |  |  |
|
||||||
|
| 错误码 & 通知 |  |  | - |
|
||||||
|
|
||||||
|
### 工作流程
|
||||||
|
|
||||||
|
| 模块 | biu | biu | biu |
|
||||||
|
|---------|------------------------------------------------------------------------|------------------------------------------------------------------------|------------------------------------------------------------------------|
|
||||||
|
| 流程模型 |  |  |  |
|
||||||
|
| 表单 & 分组 |  |  | - |
|
||||||
|
| 我的流程 |  |  |  |
|
||||||
|
| 待办 & 已办 |  |  |  |
|
||||||
|
| OA 请假 |  |  |  |
|
||||||
|
|
||||||
|
### 基础设施
|
||||||
|
|
||||||
|
| 模块 | biu | biu | biu |
|
||||||
|
|---------------|----------------------------------------------------------------------|--------------------------------------------------------------------|------------------------------------------------------------------|
|
||||||
|
| 代码生成 |  |  | - |
|
||||||
|
| 文档 |  |  | - |
|
||||||
|
| 文件 & 配置 |  |  |  |
|
||||||
|
| 定时任务 |  |  | - |
|
||||||
|
| API 日志 |  |  | - |
|
||||||
|
| MySQL & Redis |  |  | - |
|
||||||
|
| 监控平台 |  |  |  |
|
||||||
|
|
||||||
|
### 支付系统
|
||||||
|
|
||||||
|
| 模块 | biu | biu | biu |
|
||||||
|
|---------|------------------------------------------------------------------|------------------------------------------------------------------------|------------------------------------------------------------------------|
|
||||||
|
| 商家 & 应用 |  |  |  |
|
||||||
|
| 支付 & 退款 |  |  | --- |
|
||||||
|
|
||||||
|
### 数据报表
|
||||||
|
|
||||||
|
| 模块 | biu | biu | biu |
|
||||||
|
|-------|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
|
||||||
|
| 报表设计器 |  |  |  |
|
||||||
|
| 大屏设计器 |  |  |  |
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
import { resolve } from 'path'
|
||||||
|
import Vue from '@vitejs/plugin-vue'
|
||||||
|
import VueJsx from '@vitejs/plugin-vue-jsx'
|
||||||
|
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 VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
|
||||||
|
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
|
||||||
|
import UnoCSS from 'unocss/vite'
|
||||||
|
|
||||||
|
export function createVitePlugins() {
|
||||||
|
const root = process.cwd()
|
||||||
|
|
||||||
|
// 路径查找
|
||||||
|
function pathResolve(dir: string) {
|
||||||
|
return resolve(root, '.', dir)
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
Vue(),
|
||||||
|
VueJsx(),
|
||||||
|
UnoCSS(),
|
||||||
|
progress(),
|
||||||
|
PurgeIcons(),
|
||||||
|
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/**/*.tsx'] // 检查的文件
|
||||||
|
// 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,110 @@
|
||||||
|
const include = [
|
||||||
|
'qs',
|
||||||
|
'url',
|
||||||
|
'vue',
|
||||||
|
'sass',
|
||||||
|
'mitt',
|
||||||
|
'axios',
|
||||||
|
'pinia',
|
||||||
|
'dayjs',
|
||||||
|
'qrcode',
|
||||||
|
'unocss',
|
||||||
|
'vue-router',
|
||||||
|
'vue-types',
|
||||||
|
'vue-i18n',
|
||||||
|
'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,147 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" href="/logo2.png" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta
|
||||||
|
name="keywords"
|
||||||
|
content=""
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content=""
|
||||||
|
/>
|
||||||
|
<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-item">
|
||||||
|
<div class="app-loading-outter"></div>
|
||||||
|
<div class="app-loading-inner"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,152 @@
|
||||||
|
{
|
||||||
|
"name": "grailed-ui-admin-vue3",
|
||||||
|
"version": "1.8.0-snapshot",
|
||||||
|
"description": "基于vue3、vite4、element-plus、typesScript",
|
||||||
|
"author": "xingyu",
|
||||||
|
"private": false,
|
||||||
|
"scripts": {
|
||||||
|
"i": "pnpm install",
|
||||||
|
"dev": "vite --mode base",
|
||||||
|
"front": "vite --mode front",
|
||||||
|
"ts:check": "vue-tsc --noEmit",
|
||||||
|
"build:pro": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode pro",
|
||||||
|
"build:da": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode da",
|
||||||
|
"build:us": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode us",
|
||||||
|
"build:uk": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode uk",
|
||||||
|
"build:pt": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode pt",
|
||||||
|
"build:nz": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode nz",
|
||||||
|
"build:in": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode in",
|
||||||
|
"build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
|
||||||
|
"build:base": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode base",
|
||||||
|
"build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage",
|
||||||
|
"build:static": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode static",
|
||||||
|
"build:front": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode front",
|
||||||
|
"serve:pro": "vite preview --mode pro",
|
||||||
|
"serve:dev": "vite preview --mode dev",
|
||||||
|
"preview": "pnpm build:base && vite preview",
|
||||||
|
"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 "
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
|
"@form-create/designer": "^3.1.0",
|
||||||
|
"@form-create/element-ui": "^3.1.17",
|
||||||
|
"@iconify/iconify": "^3.1.1",
|
||||||
|
"@stomp/stompjs": "^7.0.0",
|
||||||
|
"@videojs-player/vue": "^1.0.0",
|
||||||
|
"@vueuse/core": "^10.3.0",
|
||||||
|
"@wangeditor/editor": "^5.1.23",
|
||||||
|
"@wangeditor/editor-for-vue": "^5.1.10",
|
||||||
|
"@zxcvbn-ts/core": "^3.0.3",
|
||||||
|
"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.9",
|
||||||
|
"diagram-js": "^11.6.0",
|
||||||
|
"echarts": "^5.4.3",
|
||||||
|
"echarts-wordcloud": "^2.1.0",
|
||||||
|
"element-plus": "2.3.9",
|
||||||
|
"fast-xml-parser": "^4.2.7",
|
||||||
|
"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.1",
|
||||||
|
"nprogress": "^0.2.0",
|
||||||
|
"pinia": "^2.1.6",
|
||||||
|
"qrcode": "^1.5.3",
|
||||||
|
"qs": "^6.11.2",
|
||||||
|
"steady-xml": "^0.1.0",
|
||||||
|
"url": "^0.11.1",
|
||||||
|
"video.js": "^7.21.5",
|
||||||
|
"vue": "3.3.4",
|
||||||
|
"vue-dompurify-html": "^4.1.4",
|
||||||
|
"vue-i18n": "9.2.2",
|
||||||
|
"vue-router": "^4.2.4",
|
||||||
|
"vue-types": "^5.1.1",
|
||||||
|
"vuedraggable": "^4.1.0",
|
||||||
|
"web-storage-cache": "^1.1.1",
|
||||||
|
"xml-js": "^1.6.11"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@commitlint/cli": "^17.6.7",
|
||||||
|
"@commitlint/config-conventional": "^17.6.7",
|
||||||
|
"@iconify/json": "^2.2.98",
|
||||||
|
"@intlify/unplugin-vue-i18n": "^0.12.2",
|
||||||
|
"@purge-icons/generated": "^0.9.0",
|
||||||
|
"@types/intro.js": "^5.1.1",
|
||||||
|
"@types/lodash-es": "^4.17.8",
|
||||||
|
"@types/node": "^20.4.0",
|
||||||
|
"@types/nprogress": "^0.2.0",
|
||||||
|
"@types/qrcode": "^1.5.1",
|
||||||
|
"@types/qs": "^6.9.7",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^6.2.1",
|
||||||
|
"@typescript-eslint/parser": "^6.2.1",
|
||||||
|
"@unocss/transformer-variant-group": "^0.54.1",
|
||||||
|
"@vitejs/plugin-legacy": "^4.1.1",
|
||||||
|
"@vitejs/plugin-vue": "^4.2.3",
|
||||||
|
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
||||||
|
"@vue-macros/volar": "^0.13.2",
|
||||||
|
"autoprefixer": "^10.4.14",
|
||||||
|
"bpmn-js": "^8.9.0",
|
||||||
|
"bpmn-js-properties-panel": "^0.46.0",
|
||||||
|
"consola": "^3.2.3",
|
||||||
|
"eslint": "^8.46.0",
|
||||||
|
"eslint-config-prettier": "^8.10.0",
|
||||||
|
"eslint-define-config": "^1.22.0",
|
||||||
|
"eslint-plugin-prettier": "^5.0.0",
|
||||||
|
"eslint-plugin-vue": "^9.16.1",
|
||||||
|
"lint-staged": "^13.2.3",
|
||||||
|
"postcss": "^8.4.27",
|
||||||
|
"postcss-html": "^1.5.0",
|
||||||
|
"postcss-scss": "^4.0.6",
|
||||||
|
"prettier": "^3.0.1",
|
||||||
|
"rimraf": "^5.0.1",
|
||||||
|
"rollup": "^3.27.2",
|
||||||
|
"sass": "^1.64.2",
|
||||||
|
"stylelint": "^15.10.2",
|
||||||
|
"stylelint-config-html": "^1.1.0",
|
||||||
|
"stylelint-config-recommended": "^13.0.0",
|
||||||
|
"stylelint-config-standard": "^34.0.0",
|
||||||
|
"stylelint-order": "^6.0.3",
|
||||||
|
"terser": "^5.19.2",
|
||||||
|
"typescript": "5.1.6",
|
||||||
|
"unocss": "^0.54.1",
|
||||||
|
"unplugin-auto-import": "^0.16.6",
|
||||||
|
"unplugin-element-plus": "^0.8.0",
|
||||||
|
"unplugin-vue-components": "^0.25.1",
|
||||||
|
"vite": "4.4.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.1",
|
||||||
|
"vue-eslint-parser": "^9.3.1",
|
||||||
|
"vue-tsc": "^1.8.8"
|
||||||
|
},
|
||||||
|
"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",
|
||||||
|
"packageManager": "pnpm@8.6.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 16.0.0",
|
||||||
|
"pnpm": ">=8.6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
|
|
@ -0,0 +1,57 @@
|
||||||
|
<script lang="ts" 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'
|
||||||
|
|
||||||
|
defineOptions({ name: 'APP' })
|
||||||
|
|
||||||
|
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 {
|
||||||
|
@extend .size;
|
||||||
|
|
||||||
|
padding: 0 !important;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
#app {
|
||||||
|
@extend .size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.#{$prefix-cls}-grey-mode {
|
||||||
|
filter: grayscale(100%);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -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,60 @@
|
||||||
|
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 })
|
||||||
|
}
|
||||||
|
|
||||||
|
export const batchCreateSiteConfig = (data: any) => {
|
||||||
|
return request.post({ url: '/infra/config/site-config', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
export const batchCreateTaskConfig = (data: any) => {
|
||||||
|
return request.post({ url: '/infra/config/task-config', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
export const batchCreateFinanceConfig = (data: any) => {
|
||||||
|
return request.post({ url: '/infra/config/finance-config', data })
|
||||||
|
}
|
||||||
|
|
@ -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,64 @@
|
||||||
|
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 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,107 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface Property {
|
||||||
|
propertyId?: number // 属性编号
|
||||||
|
propertyName?: string // 属性名称
|
||||||
|
valueId?: number // 属性值编号
|
||||||
|
valueName?: string // 属性值名称
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Sku {
|
||||||
|
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 // 商品销量
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Spu {
|
||||||
|
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?: Sku[] // sku数组
|
||||||
|
description?: string // 商品详情
|
||||||
|
sort?: number // 商品排序
|
||||||
|
giveIntegral?: number // 赠送积分
|
||||||
|
virtualSalesCount?: number // 虚拟销量
|
||||||
|
recommendHot?: boolean // 是否热卖
|
||||||
|
recommendBenefit?: boolean // 是否优惠
|
||||||
|
recommendBest?: boolean // 是否精品
|
||||||
|
recommendNew?: boolean // 是否新品
|
||||||
|
recommendGood?: boolean // 是否优品
|
||||||
|
price?: number // 商品价格
|
||||||
|
salesCount?: number // 商品销量
|
||||||
|
marketPrice?: number // 市场价
|
||||||
|
costPrice?: number // 成本价
|
||||||
|
stock?: number // 商品库存
|
||||||
|
createTime?: Date // 商品创建时间
|
||||||
|
status?: number // 商品状态
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得 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: Spu) => {
|
||||||
|
return request.post({ url: '/product/spu/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新商品 Spu
|
||||||
|
export const updateSpu = (data: Spu) => {
|
||||||
|
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 getSpuDetailList = (ids: number[]) => {
|
||||||
|
return request.get({ url: `/product/spu/list?spuIds=${ids}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除商品 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 })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得商品 SPU 精简列表
|
||||||
|
export const getSpuSimpleList = async () => {
|
||||||
|
return request.get({ url: '/product/spu/get-simple-list' })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
import { Sku, Spu } from '@/api/mall/product/spu'
|
||||||
|
|
||||||
|
export interface CombinationActivityVO {
|
||||||
|
id?: number
|
||||||
|
name?: string
|
||||||
|
spuId?: number
|
||||||
|
totalLimitCount?: number
|
||||||
|
singleLimitCount?: number
|
||||||
|
startTime?: Date
|
||||||
|
endTime?: Date
|
||||||
|
userSize?: number
|
||||||
|
totalNum?: number
|
||||||
|
successNum?: number
|
||||||
|
orderUserCount?: number
|
||||||
|
virtualGroup?: number
|
||||||
|
status?: number
|
||||||
|
limitDuration?: number
|
||||||
|
products: CombinationProductVO[]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 拼团活动所需属性
|
||||||
|
export interface CombinationProductVO {
|
||||||
|
spuId: number
|
||||||
|
skuId: number
|
||||||
|
activePrice: number // 拼团价格
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扩展 Sku 配置
|
||||||
|
export type SkuExtension = Sku & {
|
||||||
|
productConfig: CombinationProductVO
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SpuExtension extends Spu {
|
||||||
|
skus: SkuExtension[] // 重写类型
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询拼团活动列表
|
||||||
|
export const getCombinationActivityPage = async (params) => {
|
||||||
|
return await request.get({ url: '/promotion/combination-activity/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询拼团活动详情
|
||||||
|
export const getCombinationActivity = async (id: number) => {
|
||||||
|
return await request.get({ url: '/promotion/combination-activity/get?id=' + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增拼团活动
|
||||||
|
export const createCombinationActivity = async (data: CombinationActivityVO) => {
|
||||||
|
return await request.post({ url: '/promotion/combination-activity/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改拼团活动
|
||||||
|
export const updateCombinationActivity = async (data: CombinationActivityVO) => {
|
||||||
|
return await request.put({ url: '/promotion/combination-activity/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除拼团活动
|
||||||
|
export const deleteCombinationActivity = async (id: number) => {
|
||||||
|
return await request.delete({ url: '/promotion/combination-activity/delete?id=' + id })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// TODO @dhb52:vo 缺少
|
||||||
|
|
||||||
|
// 删除优惠劵
|
||||||
|
export const deleteCoupon = async (id: number) => {
|
||||||
|
return request.delete({
|
||||||
|
url: `/promotion/coupon/delete?id=${id}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得优惠劵分页
|
||||||
|
export const getCouponPage = async (params: PageParam) => {
|
||||||
|
return request.get({
|
||||||
|
url: '/promotion/coupon/page',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CouponTemplateVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
status: number
|
||||||
|
totalCount: number
|
||||||
|
takeLimitCount: number
|
||||||
|
takeType: number
|
||||||
|
usePrice: number
|
||||||
|
productScope: number
|
||||||
|
productSpuIds: string
|
||||||
|
validityType: number
|
||||||
|
validStartTime: Date
|
||||||
|
validEndTime: Date
|
||||||
|
fixedStartTerm: number
|
||||||
|
fixedEndTerm: number
|
||||||
|
discountType: number
|
||||||
|
discountPercent: number
|
||||||
|
discountPrice: number
|
||||||
|
discountLimitPrice: number
|
||||||
|
takeCount: number
|
||||||
|
useCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建优惠劵模板
|
||||||
|
export function createCouponTemplate(data: CouponTemplateVO) {
|
||||||
|
return request.post({
|
||||||
|
url: '/promotion/coupon-template/create',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新优惠劵模板
|
||||||
|
export function updateCouponTemplate(data: CouponTemplateVO) {
|
||||||
|
return request.put({
|
||||||
|
url: '/promotion/coupon-template/update',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新优惠劵模板的状态
|
||||||
|
export function updateCouponTemplateStatus(id: number, status: [0, 1]) {
|
||||||
|
const data = {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
return request.put({
|
||||||
|
url: '/promotion/coupon-template/update-status',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除优惠劵模板
|
||||||
|
export function deleteCouponTemplate(id: number) {
|
||||||
|
return request.delete({
|
||||||
|
url: '/promotion/coupon-template/delete?id=' + id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得优惠劵模板
|
||||||
|
export function getCouponTemplate(id: number) {
|
||||||
|
return request.get({
|
||||||
|
url: '/promotion/coupon-template/get?id=' + id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得优惠劵模板分页
|
||||||
|
export function getCouponTemplatePage(params: PageParam) {
|
||||||
|
return request.get({
|
||||||
|
url: '/promotion/coupon-template/page',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出优惠劵模板 Excel
|
||||||
|
export function exportCouponTemplateExcel(params: PageParam) {
|
||||||
|
return request.get({
|
||||||
|
url: '/promotion/coupon-template/export-excel',
|
||||||
|
params: params,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
import { Sku, Spu } from '@/api/mall/product/spu'
|
||||||
|
|
||||||
|
export interface SeckillActivityVO {
|
||||||
|
id?: number
|
||||||
|
spuId?: number
|
||||||
|
name?: string
|
||||||
|
status?: number
|
||||||
|
remark?: string
|
||||||
|
startTime?: Date
|
||||||
|
endTime?: Date
|
||||||
|
sort?: number
|
||||||
|
configIds?: string
|
||||||
|
orderCount?: number
|
||||||
|
userCount?: number
|
||||||
|
totalPrice?: number
|
||||||
|
totalLimitCount?: number
|
||||||
|
singleLimitCount?: number
|
||||||
|
stock?: number
|
||||||
|
totalStock?: number
|
||||||
|
products?: SeckillProductVO[]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 秒杀活动所需属性
|
||||||
|
export interface SeckillProductVO {
|
||||||
|
skuId: number
|
||||||
|
seckillPrice: number
|
||||||
|
stock: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扩展 Sku 配置
|
||||||
|
export type SkuExtension = Sku & {
|
||||||
|
productConfig: SeckillProductVO
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SpuExtension extends Spu {
|
||||||
|
skus: SkuExtension[] // 重写类型
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询秒杀活动列表
|
||||||
|
export const getSeckillActivityPage = async (params) => {
|
||||||
|
return await request.get({ url: '/promotion/seckill-activity/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询秒杀活动详情
|
||||||
|
export const getSeckillActivity = async (id: number) => {
|
||||||
|
return await request.get({ url: '/promotion/seckill-activity/get?id=' + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增秒杀活动
|
||||||
|
export const createSeckillActivity = async (data: SeckillActivityVO) => {
|
||||||
|
return await request.post({ url: '/promotion/seckill-activity/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改秒杀活动
|
||||||
|
export const updateSeckillActivity = async (data: SeckillActivityVO) => {
|
||||||
|
return await request.put({ url: '/promotion/seckill-activity/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除秒杀活动
|
||||||
|
export const deleteSeckillActivity = async (id: number) => {
|
||||||
|
return await request.delete({ url: '/promotion/seckill-activity/delete?id=' + id })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface SeckillConfigVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
startTime: string
|
||||||
|
endTime: string
|
||||||
|
sliderPicUrls: string[]
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询秒杀时段配置列表
|
||||||
|
export const getSeckillConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: '/promotion/seckill-config/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询秒杀时段配置详情
|
||||||
|
export const getSeckillConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: '/promotion/seckill-config/get?id=' + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有开启状态的秒杀时段精简列表
|
||||||
|
export const getListAllSimple = async () => {
|
||||||
|
return await request.get({ url: '/promotion/seckill-config/list-all-simple' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增秒杀时段配置
|
||||||
|
export const createSeckillConfig = async (data: SeckillConfigVO) => {
|
||||||
|
return await request.post({ url: '/promotion/seckill-config/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改秒杀时段配置
|
||||||
|
export const updateSeckillConfig = async (data: SeckillConfigVO) => {
|
||||||
|
return await request.put({ url: '/promotion/seckill-config/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改时段配置状态
|
||||||
|
export const updateSeckillConfigStatus = (id: number, status: number) => {
|
||||||
|
const data = {
|
||||||
|
id,
|
||||||
|
status
|
||||||
|
}
|
||||||
|
return request.put({ url: '/promotion/seckill-config/update-status', data: data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除秒杀时段配置
|
||||||
|
export const deleteSeckillConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: '/promotion/seckill-config/delete?id=' + id })
|
||||||
|
}
|
||||||
|
|
@ -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 getSimpleTemplateList = async () => {
|
||||||
|
return await request.get({ url: '/trade/delivery/express-template/list-all-simple' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增快递运费模板
|
||||||
|
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 })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface DeliveryPickUpStoreVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
introduction: string
|
||||||
|
phone: string
|
||||||
|
areaId: number
|
||||||
|
detailAddress: string
|
||||||
|
logo: string
|
||||||
|
openingTime: string
|
||||||
|
closingTime: string
|
||||||
|
latitude: number
|
||||||
|
longitude: number
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询自提门店列表
|
||||||
|
export const getDeliveryPickUpStorePage = async (params: DeliveryPickUpStorePageReqVO) => {
|
||||||
|
return await request.get({ url: '/trade/delivery/pick-up-store/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询自提门店详情
|
||||||
|
export const getDeliveryPickUpStore = async (id: number) => {
|
||||||
|
return await request.get({ url: '/trade/delivery/pick-up-store/get?id=' + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增自提门店
|
||||||
|
export const createDeliveryPickUpStore = async (data: DeliveryPickUpStoreVO) => {
|
||||||
|
return await request.post({ url: '/trade/delivery/pick-up-store/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改自提门店
|
||||||
|
export const updateDeliveryPickUpStore = async (data: DeliveryPickUpStoreVO) => {
|
||||||
|
return await request.put({ url: '/trade/delivery/pick-up-store/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除自提门店
|
||||||
|
export const deleteDeliveryPickUpStore = async (id: number) => {
|
||||||
|
return await request.delete({ url: '/trade/delivery/pick-up-store/delete?id=' + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出自提门店 Excel
|
||||||
|
export const exportDeliveryPickUpStoreApi = async (params) => {
|
||||||
|
return await request.download({ url: '/trade/delivery/pick-up-store/export-excel', params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 获得交易订单分页
|
||||||
|
// TODO @xiaobai:改成 getOrderPage
|
||||||
|
export const getOrderList = (params: PageParam) => {
|
||||||
|
return request.get({ url: '/trade/order/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得交易订单详情
|
||||||
|
export const getOrderDetail = (id: number) => {
|
||||||
|
return request.get({ url: '/trade/order/get-detail?id=' + id })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,228 @@
|
||||||
|
// TODO @xiaobai:这个放到 order/index.ts 里哈
|
||||||
|
// TODO @xiaobai:注释放到变量后面,这样简洁一点
|
||||||
|
// TODO @xiaobai:这个改成 TradeOrderRespVO
|
||||||
|
export interface TradeOrderPageItemRespVO {
|
||||||
|
// 订单编号
|
||||||
|
id?: number
|
||||||
|
// 订单流水号
|
||||||
|
no?: string
|
||||||
|
// 下单时间
|
||||||
|
createTime?: Date
|
||||||
|
// 订单类型
|
||||||
|
type?: number
|
||||||
|
// 订单来源
|
||||||
|
terminal?: number
|
||||||
|
// 用户编号
|
||||||
|
userId?: number
|
||||||
|
// 用户 IP
|
||||||
|
userIp?: string
|
||||||
|
// 用户备注
|
||||||
|
userRemark?: string
|
||||||
|
// 订单状态
|
||||||
|
status?: number
|
||||||
|
// 购买的商品数量
|
||||||
|
productCount?: number
|
||||||
|
// 订单完成时间
|
||||||
|
finishTime?: Date
|
||||||
|
// 订单取消时间
|
||||||
|
cancelTime?: Date
|
||||||
|
// 取消类型
|
||||||
|
cancelType?: number
|
||||||
|
// 商家备注
|
||||||
|
remark?: string
|
||||||
|
// 支付订单编号
|
||||||
|
payOrderId: number
|
||||||
|
// 是否已支付
|
||||||
|
payed?: boolean
|
||||||
|
// 付款时间
|
||||||
|
payTime?: Date
|
||||||
|
// 支付渠道
|
||||||
|
payChannelCode?: string
|
||||||
|
// 商品原价(总)
|
||||||
|
originalPrice?: number
|
||||||
|
// 订单原价(总)
|
||||||
|
orderPrice?: number
|
||||||
|
// 订单优惠(总)
|
||||||
|
discountPrice?: number
|
||||||
|
// 运费金额
|
||||||
|
deliveryPrice?: number
|
||||||
|
// 订单调价(总)
|
||||||
|
adjustPrice?: number
|
||||||
|
// 应付金额(总)
|
||||||
|
payPrice?: number
|
||||||
|
// 配送模板编号
|
||||||
|
deliveryTemplateId?: number
|
||||||
|
// 发货物流公司编号
|
||||||
|
logisticsId?: number
|
||||||
|
// 发货物流单号
|
||||||
|
logisticsNo?: string
|
||||||
|
// 发货状态
|
||||||
|
deliveryStatus?: number
|
||||||
|
// 发货时间
|
||||||
|
deliveryTime?: Date
|
||||||
|
// 收货时间
|
||||||
|
receiveTime?: Date
|
||||||
|
// 收件人名称
|
||||||
|
receiverName?: string
|
||||||
|
// 收件人手机
|
||||||
|
receiverMobile?: string
|
||||||
|
// 收件人地区编号
|
||||||
|
receiverAreaId?: number
|
||||||
|
// 收件人邮编
|
||||||
|
receiverPostCode?: number
|
||||||
|
// 收件人详细地址
|
||||||
|
receiverDetailAddress?: string
|
||||||
|
// 售后状态
|
||||||
|
afterSaleStatus?: number
|
||||||
|
// 退款金额
|
||||||
|
refundPrice?: number
|
||||||
|
// 优惠劵编号
|
||||||
|
couponId?: number
|
||||||
|
// 优惠劵减免金额
|
||||||
|
couponPrice?: number
|
||||||
|
// 积分抵扣的金额
|
||||||
|
pointPrice?: number
|
||||||
|
//收件人地区名字
|
||||||
|
receiverAreaName?: string
|
||||||
|
// 订单项列表
|
||||||
|
items?: TradeOrderItemBaseVO[]
|
||||||
|
//用户信息
|
||||||
|
user?: MemberUserRespDTO
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO @xiaobai:这个改成 TradeOrderItemRespVO
|
||||||
|
/**
|
||||||
|
* 交易订单项 Base VO,提供给添加、修改、详细的子 VO 使用
|
||||||
|
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
|
||||||
|
*/
|
||||||
|
export interface TradeOrderItemBaseVO {
|
||||||
|
// ========== 订单项基本信息 ==========
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
id?: number
|
||||||
|
/**
|
||||||
|
* 用户编号
|
||||||
|
*/
|
||||||
|
userId?: number
|
||||||
|
/**
|
||||||
|
* 订单编号
|
||||||
|
*/
|
||||||
|
orderId?: number
|
||||||
|
// ========== 商品基本信息 ==========
|
||||||
|
/**
|
||||||
|
* 商品 SPU 编号
|
||||||
|
*/
|
||||||
|
spuId?: number
|
||||||
|
/**
|
||||||
|
* 商品 SPU 名称
|
||||||
|
*/
|
||||||
|
spuName?: string
|
||||||
|
/**
|
||||||
|
* 商品 SKU 编号
|
||||||
|
*/
|
||||||
|
skuId?: number
|
||||||
|
/**
|
||||||
|
* 商品图片
|
||||||
|
*/
|
||||||
|
picUrl?: string
|
||||||
|
/**
|
||||||
|
* 购买数量
|
||||||
|
*/
|
||||||
|
count?: number
|
||||||
|
// ========== 价格 + 支付基本信息 ==========
|
||||||
|
/**
|
||||||
|
* 商品原价(总)
|
||||||
|
*/
|
||||||
|
originalPrice?: number
|
||||||
|
/**
|
||||||
|
* 商品原价(单)
|
||||||
|
*/
|
||||||
|
originalUnitPrice?: number
|
||||||
|
/**
|
||||||
|
* 商品优惠(总)
|
||||||
|
*/
|
||||||
|
discountPrice?: number
|
||||||
|
/**
|
||||||
|
* 商品实付金额(总)
|
||||||
|
*/
|
||||||
|
payPrice?: number
|
||||||
|
/**
|
||||||
|
* 子订单分摊金额(总)
|
||||||
|
*/
|
||||||
|
orderPartPrice?: number
|
||||||
|
/**
|
||||||
|
* 分摊后子订单实付金额(总)
|
||||||
|
*/
|
||||||
|
orderDividePrice?: number
|
||||||
|
// ========== 营销基本信息 ==========
|
||||||
|
// TODO 芋艿:在捉摸一下
|
||||||
|
// ========== 售后基本信息 ==========
|
||||||
|
/**
|
||||||
|
* 售后状态
|
||||||
|
*/
|
||||||
|
afterSaleStatus?: number
|
||||||
|
//属性数组
|
||||||
|
properties?: ProductPropertyValueDetailRespVO[]
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理后台 - 商品属性值的明细 Response VO
|
||||||
|
*/
|
||||||
|
export interface ProductPropertyValueDetailRespVO {
|
||||||
|
/**
|
||||||
|
* 属性的编号
|
||||||
|
*/
|
||||||
|
propertyId?: number
|
||||||
|
/**
|
||||||
|
* 属性的名称
|
||||||
|
*/
|
||||||
|
propertyName?: string
|
||||||
|
/**
|
||||||
|
* 属性值的编号
|
||||||
|
*/
|
||||||
|
valueId?: number
|
||||||
|
/**
|
||||||
|
* 属性值的名称
|
||||||
|
*/
|
||||||
|
valueName?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单详情查询 请求
|
||||||
|
*/
|
||||||
|
export interface TradeOrderPageReqVO {
|
||||||
|
pageNo: number
|
||||||
|
pageSize: number
|
||||||
|
no?: string
|
||||||
|
userId?: string
|
||||||
|
userNickname?: string
|
||||||
|
userMobile?: string
|
||||||
|
receiverName?: string
|
||||||
|
receiverMobile?: string
|
||||||
|
terminal?: string
|
||||||
|
type?: number
|
||||||
|
status?: number
|
||||||
|
payChannelCode?: string
|
||||||
|
createTime?: [Date, Date]
|
||||||
|
spuName?: string
|
||||||
|
itemCount?: string
|
||||||
|
all?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
//用户信息
|
||||||
|
export interface MemberUserRespDTO {
|
||||||
|
id?: number
|
||||||
|
nickname?: string
|
||||||
|
status?: number
|
||||||
|
avatar?: string
|
||||||
|
mobile?: string
|
||||||
|
}
|
||||||
|
//订单详情选中type
|
||||||
|
export interface SelectType {
|
||||||
|
queryParams: TradeOrderPageReqVO
|
||||||
|
selectTotal: number //选中的数量
|
||||||
|
selectAllFlag: boolean //全选标识
|
||||||
|
selectData: Map<number, Set<string>> //存放涉及选中得页面以及每页选中得数据订单号 全选时根据条件查询 排除取消的list订单
|
||||||
|
unSelectList: Set<string> //登记取消的list 全选标识为true 时登记单独取消的list,再次选中时排除, 全选标识为false 时清空list
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface BalanceAccountVO {
|
||||||
|
userId: number
|
||||||
|
balance: number
|
||||||
|
freezeBalance: number
|
||||||
|
password: string
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员账户列表
|
||||||
|
export const getBalanceAccountPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/balance-account/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员账户详情
|
||||||
|
export const getBalanceAccount = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/balance-account/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员账户
|
||||||
|
export const createBalanceAccount = async (data: BalanceAccountVO) => {
|
||||||
|
return await request.post({ url: `/member/balance-account/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员账户
|
||||||
|
export const updateBalanceAccount = async (data: BalanceAccountVO) => {
|
||||||
|
return await request.put({ url: `/member/balance-account/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员账户
|
||||||
|
export const deleteBalanceAccount = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/balance-account/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员账户 Excel
|
||||||
|
export const exportBalanceAccount = async (params) => {
|
||||||
|
return await request.download({ url: `/member/balance-account/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员账户by userId
|
||||||
|
export const getBalanceAccountByUseId = async (params) => {
|
||||||
|
return await request.get({ url: `/member/balance-account/get/${params.userId}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改账户余额
|
||||||
|
export const updateBalanceAccountByUser = async (data: any) => {
|
||||||
|
return await request.post({ url: `/member/balance-account/update-balance`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改取款密码
|
||||||
|
export const updateBalanceAccountPassword = async (data: any) => {
|
||||||
|
return await request.put({ url: `/member/balance-account/update-password`, data })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface BalanceRecordVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
beforeAmount: number
|
||||||
|
amount: number
|
||||||
|
afterAmount: number
|
||||||
|
type: string
|
||||||
|
flow: string
|
||||||
|
description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询余额日志列表
|
||||||
|
export const getBalanceRecordPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/balance-record/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询余额日志详情
|
||||||
|
export const getBalanceRecord = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/balance-record/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增余额日志
|
||||||
|
export const createBalanceRecord = async (data: BalanceRecordVO) => {
|
||||||
|
return await request.post({ url: `/member/balance-record/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改余额日志
|
||||||
|
export const updateBalanceRecord = async (data: BalanceRecordVO) => {
|
||||||
|
return await request.put({ url: `/member/balance-record/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除余额日志
|
||||||
|
export const deleteBalanceRecord = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/balance-record/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出余额日志 Excel
|
||||||
|
export const exportBalanceRecord = async (params) => {
|
||||||
|
return await request.download({ url: `/member/balance-record/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface BankWithdrawalDetailVO {
|
||||||
|
id: number
|
||||||
|
withdrawalId: number
|
||||||
|
bankName: string
|
||||||
|
bankCountry: string
|
||||||
|
accountName: string
|
||||||
|
accountNumber: string
|
||||||
|
iban: string
|
||||||
|
swiftBicCode: string
|
||||||
|
bankAddress: string
|
||||||
|
branchName: string
|
||||||
|
branchAddress: string
|
||||||
|
bankFee: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询银行卡提现详情列表
|
||||||
|
export const getBankWithdrawalDetailPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/bank-withdrawal-detail/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询银行卡提现详情详情
|
||||||
|
export const getBankWithdrawalDetail = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/bank-withdrawal-detail/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增银行卡提现详情
|
||||||
|
export const createBankWithdrawalDetail = async (data: BankWithdrawalDetailVO) => {
|
||||||
|
return await request.post({ url: `/member/bank-withdrawal-detail/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改银行卡提现详情
|
||||||
|
export const updateBankWithdrawalDetail = async (data: BankWithdrawalDetailVO) => {
|
||||||
|
return await request.put({ url: `/member/bank-withdrawal-detail/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除银行卡提现详情
|
||||||
|
export const deleteBankWithdrawalDetail = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/bank-withdrawal-detail/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出银行卡提现详情 Excel
|
||||||
|
export const exportBankWithdrawalDetail = async (params) => {
|
||||||
|
return await request.download({ url: `/member/bank-withdrawal-detail/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface BrandVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
picUrl: string
|
||||||
|
description: string
|
||||||
|
sort: number
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商品品牌列表
|
||||||
|
export const getBrandPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/brand/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商品品牌详情
|
||||||
|
export const getBrand = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/brand/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增商品品牌
|
||||||
|
export const createBrand = async (data: BrandVO) => {
|
||||||
|
return await request.post({ url: `/member/brand/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改商品品牌
|
||||||
|
export const updateBrand = async (data: BrandVO) => {
|
||||||
|
return await request.put({ url: `/member/brand/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除商品品牌
|
||||||
|
export const deleteBrand = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/brand/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出商品品牌 Excel
|
||||||
|
export const exportBrand = async (params) => {
|
||||||
|
return await request.download({ url: `/member/brand/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CategoryVO {
|
||||||
|
id: number
|
||||||
|
parentId: number
|
||||||
|
name: string
|
||||||
|
picUrl: string
|
||||||
|
bigPicUrl: string
|
||||||
|
sort: number
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商品分类列表
|
||||||
|
export const getCategoryPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/category/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商品分类详情
|
||||||
|
export const getCategory = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/category/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增商品分类
|
||||||
|
export const createCategory = async (data: CategoryVO) => {
|
||||||
|
return await request.post({ url: `/member/category/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改商品分类
|
||||||
|
export const updateCategory = async (data: CategoryVO) => {
|
||||||
|
return await request.put({ url: `/member/category/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除商品分类
|
||||||
|
export const deleteCategory = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/category/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出商品分类 Excel
|
||||||
|
export const exportCategory = async (params) => {
|
||||||
|
return await request.download({ url: `/member/category/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ChannelVO {
|
||||||
|
accountCode: string
|
||||||
|
accountName: string
|
||||||
|
bankName: string
|
||||||
|
bankCountry: string
|
||||||
|
iban: string
|
||||||
|
bankAddress: string
|
||||||
|
branchName: string
|
||||||
|
branchAddress: string
|
||||||
|
configId: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询渠道列列表
|
||||||
|
export const getChannelPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/channel/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询渠道列详情
|
||||||
|
export const getChannel = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/channel/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增渠道列
|
||||||
|
export const createChannel = async (data: ChannelVO) => {
|
||||||
|
return await request.post({ url: `/member/channel/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改渠道列
|
||||||
|
export const updateChannel = async (data: ChannelVO) => {
|
||||||
|
return await request.put({ url: `/member/channel/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除渠道列
|
||||||
|
export const deleteChannel = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/channel/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出渠道列 Excel
|
||||||
|
export const exportChannel = async (params) => {
|
||||||
|
return await request.download({ url: `/member/channel/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ChannelConfigVO {
|
||||||
|
id: number
|
||||||
|
channelName: string
|
||||||
|
channelType: number
|
||||||
|
iconLink: string
|
||||||
|
scenario: number
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询渠道配置列表
|
||||||
|
export const getChannelConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/channel-config/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询渠道配置详情
|
||||||
|
export const getChannelConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/channel-config/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增渠道配置
|
||||||
|
export const createChannelConfig = async (data: ChannelConfigVO) => {
|
||||||
|
return await request.post({ url: `/member/channel-config/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改渠道配置
|
||||||
|
export const updateChannelConfig = async (data: ChannelConfigVO) => {
|
||||||
|
return await request.put({ url: `/member/channel-config/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除渠道配置
|
||||||
|
export const deleteChannelConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/channel-config/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出渠道配置 Excel
|
||||||
|
export const exportChannelConfig = async (params) => {
|
||||||
|
return await request.download({ url: `/member/channel-config/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CheckInVO {
|
||||||
|
id: number
|
||||||
|
userId : number
|
||||||
|
checkInMonth: number
|
||||||
|
checkInDate: string
|
||||||
|
receivedReward: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户签到列表
|
||||||
|
export const getCheckInPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/check-in/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户签到详情
|
||||||
|
export const getCheckIn = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/check-in/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增用户签到
|
||||||
|
export const createCheckIn = async (data: CheckInVO) => {
|
||||||
|
return await request.post({ url: `/member/check-in/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户签到
|
||||||
|
export const updateCheckIn = async (data: CheckInVO) => {
|
||||||
|
return await request.put({ url: `/member/check-in/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除用户签到
|
||||||
|
export const deleteCheckIn = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/check-in/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出用户签到 Excel
|
||||||
|
export const exportCheckIn = async (params) => {
|
||||||
|
return await request.download({ url: `/member/check-in/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CombinationConfigVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
comboSequence: number
|
||||||
|
executeStatus: number
|
||||||
|
multiplier: number
|
||||||
|
deleteStatus: number
|
||||||
|
description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连单设置列表
|
||||||
|
export const getCombinationConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/combination-config/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连单设置详情
|
||||||
|
export const getCombinationConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/combination-config/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增连单设置
|
||||||
|
export const createCombinationConfig = async (data: any) => {
|
||||||
|
return await request.post({ url: `/member/combination-config/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改连单设置
|
||||||
|
export const updateCombinationConfig = async (data: CombinationConfigVO) => {
|
||||||
|
return await request.put({ url: `/member/combination-config/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除连单设置
|
||||||
|
export const deleteCombinationConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/combination-config/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出连单设置 Excel
|
||||||
|
export const exportCombinationConfig = async (params) => {
|
||||||
|
return await request.download({ url: `/member/combination-config/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改执行状态
|
||||||
|
export const updateCombinationExecuteStatus = async (data: any) => {
|
||||||
|
return await request.put({ url: `/member/combination-config/execute-status`, data })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CombinationRecordVO {
|
||||||
|
id: number
|
||||||
|
combinationId: number
|
||||||
|
productId: number
|
||||||
|
unitPrice: number
|
||||||
|
totalPrice: number
|
||||||
|
quantity: number
|
||||||
|
executeStatus: number
|
||||||
|
submitTime: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连单记录列表
|
||||||
|
export const getCombinationRecordPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/combination-record/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连单记录详情
|
||||||
|
export const getCombinationRecord = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/combination-record/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增连单记录
|
||||||
|
export const createCombinationRecord = async (data: CombinationRecordVO) => {
|
||||||
|
return await request.post({ url: `/member/combination-record/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改连单记录
|
||||||
|
export const updateCombinationRecord = async (data: CombinationRecordVO) => {
|
||||||
|
return await request.put({ url: `/member/combination-record/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除连单记录
|
||||||
|
export const deleteCombinationRecord = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/combination-record/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出连单记录 Excel
|
||||||
|
export const exportCombinationRecord = async (params) => {
|
||||||
|
return await request.download({ url: `/member/combination-record/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CombinationReocrdVO {
|
||||||
|
id: number
|
||||||
|
combinationId: number
|
||||||
|
productId: number
|
||||||
|
unitPrice: number
|
||||||
|
totalPrice: number
|
||||||
|
quantity: number
|
||||||
|
executeStatus: number
|
||||||
|
submitTime: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连单记录列表
|
||||||
|
export const getCombinationReocrdPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/combination-reocrd/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连单记录详情
|
||||||
|
export const getCombinationReocrd = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/combination-reocrd/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增连单记录
|
||||||
|
export const createCombinationReocrd = async (data: CombinationReocrdVO) => {
|
||||||
|
return await request.post({ url: `/member/combination-reocrd/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改连单记录
|
||||||
|
export const updateCombinationReocrd = async (data: CombinationReocrdVO) => {
|
||||||
|
return await request.put({ url: `/member/combination-reocrd/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除连单记录
|
||||||
|
export const deleteCombinationReocrd = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/combination-reocrd/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出连单记录 Excel
|
||||||
|
export const exportCombinationReocrd = async (params) => {
|
||||||
|
return await request.download({ url: `/member/combination-reocrd/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ContentCarouseVO {
|
||||||
|
id: number
|
||||||
|
carouseName: string
|
||||||
|
link: string
|
||||||
|
sort: number
|
||||||
|
linkTo: string
|
||||||
|
status: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询轮播图列表
|
||||||
|
export const getContentCarousePage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/content-carouse/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询轮播图详情
|
||||||
|
export const getContentCarouse = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/content-carouse/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增轮播图
|
||||||
|
export const createContentCarouse = async (data: ContentCarouseVO) => {
|
||||||
|
return await request.post({ url: `/member/content-carouse/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改轮播图
|
||||||
|
export const updateContentCarouse = async (data: ContentCarouseVO) => {
|
||||||
|
return await request.put({ url: `/member/content-carouse/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除轮播图
|
||||||
|
export const deleteContentCarouse = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/content-carouse/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出轮播图 Excel
|
||||||
|
export const exportContentCarouse = async (params) => {
|
||||||
|
return await request.download({ url: `/member/content-carouse/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ContinuousSignInConfigVO {
|
||||||
|
id: number
|
||||||
|
continuousDays: number
|
||||||
|
rewardAmount : number
|
||||||
|
comment: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连续签到配置列表
|
||||||
|
export const getContinuousSignInConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/continuous-sign-in-config/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询连续签到配置详情
|
||||||
|
export const getContinuousSignInConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/continuous-sign-in-config/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增连续签到配置
|
||||||
|
export const createContinuousSignInConfig = async (data: ContinuousSignInConfigVO) => {
|
||||||
|
return await request.post({ url: `/member/continuous-sign-in-config/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改连续签到配置
|
||||||
|
export const updateContinuousSignInConfig = async (data: ContinuousSignInConfigVO) => {
|
||||||
|
return await request.put({ url: `/member/continuous-sign-in-config/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除连续签到配置
|
||||||
|
export const deleteContinuousSignInConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/continuous-sign-in-config/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出连续签到配置 Excel
|
||||||
|
export const exportContinuousSignInConfig = async (params) => {
|
||||||
|
return await request.download({ url: `/member/continuous-sign-in-config/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CountriesVO {
|
||||||
|
id: number
|
||||||
|
cnName: string
|
||||||
|
enName: string
|
||||||
|
localName: string
|
||||||
|
countryCode: string
|
||||||
|
phoneCode: string
|
||||||
|
flagIcon: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询国家列列表
|
||||||
|
export const getCountriesPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/countries/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询国家列详情
|
||||||
|
export const getCountries = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/countries/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增国家列
|
||||||
|
export const createCountries = async (data: CountriesVO) => {
|
||||||
|
return await request.post({ url: `/member/countries/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改国家列
|
||||||
|
export const updateCountries = async (data: CountriesVO) => {
|
||||||
|
return await request.put({ url: `/member/countries/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除国家列
|
||||||
|
export const deleteCountries = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/countries/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出国家列 Excel
|
||||||
|
export const exportCountries = async (params) => {
|
||||||
|
return await request.download({ url: `/member/countries/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CryptoWithdrawalDetailVO {
|
||||||
|
id: number
|
||||||
|
withdrawalId: number
|
||||||
|
cryptoType : string
|
||||||
|
network: string
|
||||||
|
cryptoAddress: string
|
||||||
|
cryptoTag: string
|
||||||
|
transactionHash: string
|
||||||
|
networkFee: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询数字货币提现详情列表
|
||||||
|
export const getCryptoWithdrawalDetailPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/crypto-withdrawal-detail/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询数字货币提现详情详情
|
||||||
|
export const getCryptoWithdrawalDetail = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/crypto-withdrawal-detail/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增数字货币提现详情
|
||||||
|
export const createCryptoWithdrawalDetail = async (data: CryptoWithdrawalDetailVO) => {
|
||||||
|
return await request.post({ url: `/member/crypto-withdrawal-detail/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改数字货币提现详情
|
||||||
|
export const updateCryptoWithdrawalDetail = async (data: CryptoWithdrawalDetailVO) => {
|
||||||
|
return await request.put({ url: `/member/crypto-withdrawal-detail/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除数字货币提现详情
|
||||||
|
export const deleteCryptoWithdrawalDetail = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/crypto-withdrawal-detail/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出数字货币提现详情 Excel
|
||||||
|
export const exportCryptoWithdrawalDetail = async (params) => {
|
||||||
|
return await request.download({ url: `/member/crypto-withdrawal-detail/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CumulativeSignInConfigVO {
|
||||||
|
id: number
|
||||||
|
totalDays: number
|
||||||
|
rewardAmount : number
|
||||||
|
comment: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询累计签到配置列表
|
||||||
|
export const getCumulativeSignInConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/cumulative-sign-in-config/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询累计签到配置详情
|
||||||
|
export const getCumulativeSignInConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/cumulative-sign-in-config/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增累计签到配置
|
||||||
|
export const createCumulativeSignInConfig = async (data: CumulativeSignInConfigVO) => {
|
||||||
|
return await request.post({ url: `/member/cumulative-sign-in-config/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改累计签到配置
|
||||||
|
export const updateCumulativeSignInConfig = async (data: CumulativeSignInConfigVO) => {
|
||||||
|
return await request.put({ url: `/member/cumulative-sign-in-config/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除累计签到配置
|
||||||
|
export const deleteCumulativeSignInConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/cumulative-sign-in-config/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出累计签到配置 Excel
|
||||||
|
export const exportCumulativeSignInConfig = async (params) => {
|
||||||
|
return await request.download({ url: `/member/cumulative-sign-in-config/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface CustomTaskVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
taskLimit: number
|
||||||
|
updateCount: number
|
||||||
|
effectDate: Date
|
||||||
|
description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询任务单数列表
|
||||||
|
export const getCustomTaskPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/custom-task/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询任务单数详情
|
||||||
|
export const getCustomTask = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/custom-task/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增任务单数
|
||||||
|
export const createCustomTask = async (data: CustomTaskVO) => {
|
||||||
|
return await request.post({ url: `/member/custom-task/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改任务单数
|
||||||
|
export const updateCustomTask = async (data: CustomTaskVO) => {
|
||||||
|
return await request.put({ url: `/member/custom-task/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除任务单数
|
||||||
|
export const deleteCustomTask = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/custom-task/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出任务单数 Excel
|
||||||
|
export const exportCustomTask = async (params) => {
|
||||||
|
return await request.download({ url: `/member/custom-task/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getCustomTaskByUserId = async (params) => {
|
||||||
|
return await request.get({ url: `/member/custom-task/user`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface DailySignInConfigVO {
|
||||||
|
id: number
|
||||||
|
dayOfMonth: number
|
||||||
|
rewardAmount : number
|
||||||
|
comment: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询每日签到配置列表
|
||||||
|
export const getDailySignInConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/daily-sign-in-config/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询每日签到配置详情
|
||||||
|
export const getDailySignInConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/daily-sign-in-config/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增每日签到配置
|
||||||
|
export const createDailySignInConfig = async (data: DailySignInConfigVO) => {
|
||||||
|
return await request.post({ url: `/member/daily-sign-in-config/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改每日签到配置
|
||||||
|
export const updateDailySignInConfig = async (data: DailySignInConfigVO) => {
|
||||||
|
return await request.put({ url: `/member/daily-sign-in-config/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除每日签到配置
|
||||||
|
export const deleteDailySignInConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/daily-sign-in-config/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出每日签到配置 Excel
|
||||||
|
export const exportDailySignInConfig = async (params) => {
|
||||||
|
return await request.download({ url: `/member/daily-sign-in-config/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface H5PagesVO {
|
||||||
|
id: number
|
||||||
|
country: string
|
||||||
|
language: string
|
||||||
|
name: string
|
||||||
|
logo: string
|
||||||
|
favicon: string
|
||||||
|
title: string
|
||||||
|
description: string
|
||||||
|
keywords: string
|
||||||
|
themeColor: string
|
||||||
|
font: string
|
||||||
|
cssUrl: string
|
||||||
|
jsUrl: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询H5配置列表
|
||||||
|
export const getH5PagesPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/H5-pages/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询H5配置详情
|
||||||
|
export const getH5Pages = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/H5-pages/get` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增H5配置
|
||||||
|
export const createH5Pages = async (data: H5PagesVO) => {
|
||||||
|
return await request.post({ url: `/member/H5-pages/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改H5配置
|
||||||
|
export const updateH5Pages = async (data: H5PagesVO) => {
|
||||||
|
return await request.put({ url: `/member/H5-pages/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除H5配置
|
||||||
|
export const deleteH5Pages = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/H5-pages/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出H5配置 Excel
|
||||||
|
export const exportH5Pages = async (params) => {
|
||||||
|
return await request.download({ url: `/member/H5-pages/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface LevelConfigVO {
|
||||||
|
id: number
|
||||||
|
level: number
|
||||||
|
displayName: string
|
||||||
|
taskLimit: number
|
||||||
|
commissionRate: number
|
||||||
|
minimumWithdrawalAmount: number
|
||||||
|
price: number
|
||||||
|
teamMembers: number
|
||||||
|
activeTeamMembers: number
|
||||||
|
description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员级别列表
|
||||||
|
export const getLevelConfigPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/level-config/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员级别详情
|
||||||
|
export const getLevelConfig = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/level-config/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员级别
|
||||||
|
export const createLevelConfig = async (data: LevelConfigVO) => {
|
||||||
|
return await request.post({ url: `/member/level-config/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员级别
|
||||||
|
export const updateLevelConfig = async (data: LevelConfigVO) => {
|
||||||
|
return await request.put({ url: `/member/level-config/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员级别
|
||||||
|
export const deleteLevelConfig = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/level-config/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员级别 Excel
|
||||||
|
export const exportLevelConfig = async (params) => {
|
||||||
|
return await request.download({ url: `/member/level-config/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface MessageSessionVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
sessionId: string
|
||||||
|
connectedAt: Date
|
||||||
|
lastActivityAt: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户记录列表
|
||||||
|
export const getMessageSessionPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/message-session/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户记录详情
|
||||||
|
export const getMessageSession = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/message-session/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增用户记录
|
||||||
|
export const createMessageSession = async (data: MessageSessionVO) => {
|
||||||
|
return await request.post({ url: `/member/message-session/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户记录
|
||||||
|
export const updateMessageSession = async (data: MessageSessionVO) => {
|
||||||
|
return await request.put({ url: `/member/message-session/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除用户记录
|
||||||
|
export const deleteMessageSession = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/message-session/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出用户记录 Excel
|
||||||
|
export const exportMessageSession = async (params) => {
|
||||||
|
return await request.download({ url: `/member/message-session/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface PayOrderVO {
|
||||||
|
id: number
|
||||||
|
merchantId: number
|
||||||
|
channelId: number
|
||||||
|
channelCode: string
|
||||||
|
merchantOrderId: string
|
||||||
|
subject: string
|
||||||
|
body: string
|
||||||
|
notifyUrl: string
|
||||||
|
notifyStatus: number
|
||||||
|
amount: number
|
||||||
|
channelFeeRate: object
|
||||||
|
channelFeeAmount: number
|
||||||
|
status: number
|
||||||
|
userIp: string
|
||||||
|
expireTime: Date
|
||||||
|
successTime: Date
|
||||||
|
notifyTime: Date
|
||||||
|
successExtensionId: number
|
||||||
|
refundStatus: number
|
||||||
|
refundTimes: number
|
||||||
|
refundAmount: number
|
||||||
|
channelUserId: string
|
||||||
|
channelOrderNo: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询支付订单列表
|
||||||
|
export const getPayOrderPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/pay-order/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询支付订单详情
|
||||||
|
export const getPayOrder = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/pay-order/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增支付订单
|
||||||
|
|
||||||
|
export const createPayOrder = async (data: PayOrderVO) => {
|
||||||
|
return await request.post({ url: `/member/pay-order/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改支付订单
|
||||||
|
|
||||||
|
export const updatePayOrder = async (data: PayOrderVO) => {
|
||||||
|
return await request.put({ url: `/member/pay-order/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除支付订单
|
||||||
|
|
||||||
|
export const deletePayOrder = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/pay-order/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出支付订单Excel
|
||||||
|
export const exportPayOrder = async (params) => {
|
||||||
|
return await request.download({ url: `/member/pay-order/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 审批支付订单
|
||||||
|
export const approvePayOrder = async (data: any) => {
|
||||||
|
return await request.post({ url: `/member/pay-order/approve`, data })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface PayOrderExtensionVO {
|
||||||
|
id: number
|
||||||
|
no: string
|
||||||
|
orderId: number
|
||||||
|
channelId: number
|
||||||
|
accountCode: string
|
||||||
|
userIp: string
|
||||||
|
status: number
|
||||||
|
channelExtras: string
|
||||||
|
channelNotifyData: string
|
||||||
|
accountName: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询支付订单列表
|
||||||
|
export const getPayOrderExtensionPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/pay-order-extension/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询支付订单详情
|
||||||
|
export const getPayOrderExtension = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/pay-order-extension/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增支付订单
|
||||||
|
|
||||||
|
export const createPayOrderExtension = async (data: PayOrderExtensionVO) => {
|
||||||
|
return await request.post({ url: `/member/pay-order-extension/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改支付订单
|
||||||
|
|
||||||
|
export const updatePayOrderExtension = async (data: PayOrderExtensionVO) => {
|
||||||
|
return await request.put({ url: `/member/pay-order-extension/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除支付订单
|
||||||
|
|
||||||
|
export const deletePayOrderExtension = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/pay-order-extension/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出支付订单Excel
|
||||||
|
export const exportPayOrderExtension = async (params) => {
|
||||||
|
return await request.download({ url: `/member/pay-order-extension/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ProductVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
keyword: string
|
||||||
|
introduction: string
|
||||||
|
description: string
|
||||||
|
categoryId: number
|
||||||
|
brandId: number
|
||||||
|
picUrl: string
|
||||||
|
sliderPicUrls: object
|
||||||
|
videoUrl: string
|
||||||
|
unit: number
|
||||||
|
sort: number
|
||||||
|
status: number
|
||||||
|
price: number
|
||||||
|
stock: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商品信息列表
|
||||||
|
export const getProductPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/product/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询商品信息详情
|
||||||
|
export const getProduct = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/product/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增商品信息
|
||||||
|
export const createProduct = async (data: ProductVO) => {
|
||||||
|
return await request.post({ url: `/member/product/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改商品信息
|
||||||
|
export const updateProduct = async (data: ProductVO) => {
|
||||||
|
return await request.put({ url: `/member/product/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除商品信息
|
||||||
|
export const deleteProduct = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/product/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出商品信息 Excel
|
||||||
|
export const exportProduct = async (params) => {
|
||||||
|
return await request.download({ url: `/member/product/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据输入价格查询一个商品
|
||||||
|
export const getProductByPrice = async (data: any) => {
|
||||||
|
return await request.post({ url: `/member/product/get-by-price`, data})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface SignInRecordVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
signInDate: string
|
||||||
|
signInMonth: string
|
||||||
|
rewardIssued: number
|
||||||
|
reward: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户签到记录列表
|
||||||
|
export const getSignInRecordPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/sign-in-record/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户签到记录详情
|
||||||
|
export const getSignInRecord = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/sign-in-record/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增用户签到记录
|
||||||
|
export const createSignInRecord = async (data: SignInRecordVO) => {
|
||||||
|
return await request.post({ url: `/member/sign-in-record/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户签到记录
|
||||||
|
export const updateSignInRecord = async (data: SignInRecordVO) => {
|
||||||
|
return await request.put({ url: `/member/sign-in-record/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除用户签到记录
|
||||||
|
export const deleteSignInRecord = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/sign-in-record/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出用户签到记录 Excel
|
||||||
|
export const exportSignInRecord = async (params) => {
|
||||||
|
return await request.download({ url: `/member/sign-in-record/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface TagRelationsVO {
|
||||||
|
id: number
|
||||||
|
memberId: number
|
||||||
|
tagId: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员标签列表
|
||||||
|
export const getTagRelationsPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/tag-relations/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员标签详情
|
||||||
|
export const getTagRelations = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/tag-relations/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员标签
|
||||||
|
export const createTagRelations = async (data: TagRelationsVO) => {
|
||||||
|
return await request.post({ url: `/member/tag-relations/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员标签
|
||||||
|
export const updateTagRelations = async (data: TagRelationsVO) => {
|
||||||
|
return await request.put({ url: `/member/tag-relations/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员标签
|
||||||
|
export const deleteTagRelations = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/tag-relations/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员标签 Excel
|
||||||
|
export const exportTagRelations = async (params) => {
|
||||||
|
return await request.download({ url: `/member/tag-relations/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface TagsVO {
|
||||||
|
id: number
|
||||||
|
tagName: string
|
||||||
|
textColor: string
|
||||||
|
bgColor: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询标签管理列表
|
||||||
|
export const getTagsPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/tags/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询标签管理详情
|
||||||
|
export const getTags = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/tags/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增标签管理
|
||||||
|
export const createTags = async (data: TagsVO) => {
|
||||||
|
return await request.post({ url: `/member/tags/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改标签管理
|
||||||
|
export const updateTags = async (data: TagsVO) => {
|
||||||
|
return await request.put({ url: `/member/tags/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除标签管理
|
||||||
|
export const deleteTags = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/tags/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出标签管理 Excel
|
||||||
|
export const exportTags = async (params) => {
|
||||||
|
return await request.download({ url: `/member/tags/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface TaskCommentVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
userNickname: string
|
||||||
|
userAvatar: string
|
||||||
|
anonymous: boolean
|
||||||
|
taskRecordId: number
|
||||||
|
productId: number
|
||||||
|
productName: string
|
||||||
|
visible: boolean
|
||||||
|
scores: number
|
||||||
|
content: string
|
||||||
|
picUrls: object
|
||||||
|
replyStatus: boolean
|
||||||
|
replyUserId: number
|
||||||
|
replyContent: string
|
||||||
|
replyTime: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询任务评论列表
|
||||||
|
export const getTaskCommentPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/task-comment/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询任务评论详情
|
||||||
|
export const getTaskComment = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/task-comment/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增任务评论
|
||||||
|
export const createTaskComment = async (data: TaskCommentVO) => {
|
||||||
|
return await request.post({ url: `/member/task-comment/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改任务评论
|
||||||
|
export const updateTaskComment = async (data: TaskCommentVO) => {
|
||||||
|
return await request.put({ url: `/member/task-comment/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除任务评论
|
||||||
|
export const deleteTaskComment = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/task-comment/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出任务评论 Excel
|
||||||
|
export const exportTaskComment = async (params) => {
|
||||||
|
return await request.download({ url: `/member/task-comment/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface TaskRecordVO {
|
||||||
|
id: number
|
||||||
|
orderNo: string
|
||||||
|
userId: number
|
||||||
|
quantity: number
|
||||||
|
productId: number
|
||||||
|
unitPrice: number
|
||||||
|
totalPrice: number
|
||||||
|
combination: number
|
||||||
|
taskSequence: number
|
||||||
|
status: number
|
||||||
|
orderTime: Date
|
||||||
|
submitTime: Date
|
||||||
|
starRating: number
|
||||||
|
description: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询任务记录列表
|
||||||
|
export const getTaskRecordPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/task-record/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询任务记录详情
|
||||||
|
export const getTaskRecord = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/task-record/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增任务记录
|
||||||
|
export const createTaskRecord = async (data: TaskRecordVO) => {
|
||||||
|
return await request.post({ url: `/member/task-record/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改任务记录
|
||||||
|
export const updateTaskRecord = async (data: TaskRecordVO) => {
|
||||||
|
return await request.put({ url: `/member/task-record/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除任务记录
|
||||||
|
export const deleteTaskRecord = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/task-record/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出任务记录 Excel
|
||||||
|
export const exportTaskRecord = async (params) => {
|
||||||
|
return await request.download({ url: `/member/task-record/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface UserVO {
|
||||||
|
id: number
|
||||||
|
parentId: number
|
||||||
|
username: string
|
||||||
|
password: string
|
||||||
|
nickname: string
|
||||||
|
remark: string
|
||||||
|
email: string
|
||||||
|
mobile: string
|
||||||
|
countryCode: string
|
||||||
|
invitationCode: string
|
||||||
|
memberLevel: number
|
||||||
|
creditScore: number
|
||||||
|
userType: number
|
||||||
|
sex: number
|
||||||
|
avatar: string
|
||||||
|
status: number
|
||||||
|
loginIp: string
|
||||||
|
loginDate: Date
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UserUpdateVO {
|
||||||
|
id: number
|
||||||
|
nickname: string
|
||||||
|
remark: string
|
||||||
|
email: string
|
||||||
|
countryCode: string
|
||||||
|
sex: number
|
||||||
|
avatar: string
|
||||||
|
status: number
|
||||||
|
userType: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员信息列表
|
||||||
|
export const getUserPage = async (params) => {
|
||||||
|
return await request.get({ url: `/admin/member/user/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员信息详情
|
||||||
|
export const getUser = async (id: number) => {
|
||||||
|
return await request.get({ url: `/admin/member/user/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员信息
|
||||||
|
export const createUser = async (data: UserVO) => {
|
||||||
|
return await request.post({ url: `/admin/member/user/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员信息
|
||||||
|
export const updateUser = async (data: UserUpdateVO) => {
|
||||||
|
return await request.put({ url: `/admin/member/user/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员信息
|
||||||
|
export const deleteUser = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/admin/member/user/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员信息 Excel
|
||||||
|
export const exportUser = async (params) => {
|
||||||
|
return await request.download({ url: `/admin/member/user/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据用户名查询会员信息
|
||||||
|
export const getUserByUsername = async (params) => {
|
||||||
|
return await request.get({ url: `/admin/member/user/get/` + params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户任务完成情况
|
||||||
|
export const getUserTaskInfo = async (params) => {
|
||||||
|
return await request.get({ url: `/admin/member/user/user-task-info`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改密码
|
||||||
|
export const updatePassword = async (data) => {
|
||||||
|
return await request.put({ url: `/admin/member/user/update-password`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户等级
|
||||||
|
export const updateUserLevel = async (data) => {
|
||||||
|
return await request.put({ url: `/admin/member/user/update-level`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改信誉分
|
||||||
|
export const updateCreditScore = async (data) => {
|
||||||
|
return await request.put({ url: `/admin/member/user/update-credit-score`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算余额
|
||||||
|
export const calcUserBalance = async (params: any) => {
|
||||||
|
return await request.get({ url: '/admin/member/user/calc-balance', params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface UserBankVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
bankName: string
|
||||||
|
bankCountry: string
|
||||||
|
accountName: string
|
||||||
|
accountNumber: string
|
||||||
|
iban: string
|
||||||
|
swiftBicCode: string
|
||||||
|
bankAddress: string
|
||||||
|
branchName: string
|
||||||
|
branchAddress: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员银行卡列表
|
||||||
|
export const getUserBankPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/user-bank/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员银行卡详情
|
||||||
|
export const getUserBank = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/user-bank/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员银行卡
|
||||||
|
export const createUserBank = async (data: UserBankVO) => {
|
||||||
|
return await request.post({ url: `/member/user-bank/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员银行卡
|
||||||
|
export const updateUserBank = async (data: UserBankVO) => {
|
||||||
|
return await request.put({ url: `/member/user-bank/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员银行卡
|
||||||
|
export const deleteUserBank = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/user-bank/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员银行卡 Excel
|
||||||
|
export const exportUserBank = async (params) => {
|
||||||
|
return await request.download({ url: `/member/user-bank/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface UserCryptoVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
currencyType: string
|
||||||
|
address: string
|
||||||
|
label: string
|
||||||
|
primary: number
|
||||||
|
qrCode: string
|
||||||
|
cryptoTag: string
|
||||||
|
verified: number
|
||||||
|
network: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员数字货币地址列表
|
||||||
|
export const getUserCryptoPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/user-crypto/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员数字货币地址详情
|
||||||
|
export const getUserCrypto = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/user-crypto/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员数字货币地址
|
||||||
|
export const createUserCrypto = async (data: UserCryptoVO) => {
|
||||||
|
return await request.post({ url: `/member/user-crypto/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员数字货币地址
|
||||||
|
export const updateUserCrypto = async (data: UserCryptoVO) => {
|
||||||
|
return await request.put({ url: `/member/user-crypto/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员数字货币地址
|
||||||
|
export const deleteUserCrypto = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/user-crypto/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员数字货币地址 Excel
|
||||||
|
export const exportUserCrypto = async (params) => {
|
||||||
|
return await request.download({ url: `/member/user-crypto/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface UserExtensionVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
firstName: string
|
||||||
|
lastName: string
|
||||||
|
email: string
|
||||||
|
country: string
|
||||||
|
streetAddress: string
|
||||||
|
state: string
|
||||||
|
postalCode: string
|
||||||
|
language: string
|
||||||
|
userZone: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户信息扩展列表
|
||||||
|
export const getUserExtensionPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/user-extension/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户信息扩展详情
|
||||||
|
export const getUserExtension = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/user-extension/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增用户信息扩展
|
||||||
|
export const createUserExtension = async (data: UserExtensionVO) => {
|
||||||
|
return await request.post({ url: `/member/user-extension/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户信息扩展
|
||||||
|
export const updateUserExtension = async (data: UserExtensionVO) => {
|
||||||
|
return await request.put({ url: `/member/user-extension/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除用户信息扩展
|
||||||
|
export const deleteUserExtension = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/user-extension/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出用户信息扩展 Excel
|
||||||
|
export const exportUserExtension = async (params) => {
|
||||||
|
return await request.download({ url: `/member/user-extension/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface WithdrawalVO {
|
||||||
|
id: number
|
||||||
|
userId: number
|
||||||
|
withdrawalType: number
|
||||||
|
amount: number
|
||||||
|
currency: string
|
||||||
|
status: string
|
||||||
|
requestDate: Date
|
||||||
|
processedDate: Date
|
||||||
|
remark: string
|
||||||
|
fee: number
|
||||||
|
netAmount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询提现记录列表
|
||||||
|
export const getWithdrawalPage = async (params) => {
|
||||||
|
return await request.get({ url: `/member/withdrawal/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询提现记录详情
|
||||||
|
export const getWithdrawal = async (id: number) => {
|
||||||
|
return await request.get({ url: `/member/withdrawal/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增提现记录
|
||||||
|
export const createWithdrawal = async (data: WithdrawalVO) => {
|
||||||
|
return await request.post({ url: `/member/withdrawal/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改提现记录
|
||||||
|
export const updateWithdrawal = async (data: WithdrawalVO) => {
|
||||||
|
return await request.put({ url: `/member/withdrawal/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改提现记录
|
||||||
|
export const approveWithdrawal = async (data: WithdrawalVO) => {
|
||||||
|
return await request.put({ url: `/member/withdrawal/approve`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除提现记录
|
||||||
|
export const deleteWithdrawal = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/member/withdrawal/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出提现记录 Excel
|
||||||
|
export const exportWithdrawal = async (params) => {
|
||||||
|
return await request.download({ url: `/member/withdrawal/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface BlacklistVO {
|
||||||
|
id: number
|
||||||
|
memberId: number
|
||||||
|
remark: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询黑名单列表
|
||||||
|
export const getBlacklistPage = async (params) => {
|
||||||
|
return await request.get({ url: `/message/blacklist/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询黑名单详情
|
||||||
|
export const getBlacklist = async (id: number) => {
|
||||||
|
return await request.get({ url: `/message/blacklist/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增黑名单
|
||||||
|
export const createBlacklist = async (data: BlacklistVO) => {
|
||||||
|
return await request.post({ url: `/message/blacklist/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改黑名单
|
||||||
|
export const updateBlacklist = async (data: BlacklistVO) => {
|
||||||
|
return await request.put({ url: `/message/blacklist/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除黑名单
|
||||||
|
export const deleteBlacklist = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/message/blacklist/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出黑名单 Excel
|
||||||
|
export const exportBlacklist = async (params) => {
|
||||||
|
return await request.download({ url: `/message/blacklist/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ContentVO {
|
||||||
|
id: number
|
||||||
|
senderId: number
|
||||||
|
receiverId: number
|
||||||
|
content: string
|
||||||
|
type: number
|
||||||
|
translatedContent: string
|
||||||
|
language: string
|
||||||
|
translationLanguage: string
|
||||||
|
isRead: boolean
|
||||||
|
isRetracted: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询消息记录列表
|
||||||
|
export const getContentPage = async (params) => {
|
||||||
|
return await request.get({ url: `/message/content/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询消息记录详情
|
||||||
|
export const getContent = async (id: number) => {
|
||||||
|
return await request.get({ url: `/message/content/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增消息记录
|
||||||
|
export const createContent = async (data: ContentVO) => {
|
||||||
|
return await request.post({ url: `/message/content/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改消息记录
|
||||||
|
export const updateContent = async (data: ContentVO) => {
|
||||||
|
return await request.put({ url: `/message/content/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除消息记录
|
||||||
|
export const deleteContent = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/message/content/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出消息记录 Excel
|
||||||
|
export const exportContent = async (params) => {
|
||||||
|
return await request.download({ url: `/message/content/export-excel`, params })
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface MemberRemarkVO {
|
||||||
|
id: number
|
||||||
|
memberId: number
|
||||||
|
nickName: string
|
||||||
|
remark: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员标记列表
|
||||||
|
export const getMemberRemarkPage = async (params) => {
|
||||||
|
return await request.get({ url: `/message/member-remark/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询会员标记详情
|
||||||
|
export const getMemberRemark = async (id: number) => {
|
||||||
|
return await request.get({ url: `/message/member-remark/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增会员标记
|
||||||
|
export const createMemberRemark = async (data: MemberRemarkVO) => {
|
||||||
|
return await request.post({ url: `/message/member-remark/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改会员标记
|
||||||
|
export const updateMemberRemark = async (data: MemberRemarkVO) => {
|
||||||
|
return await request.put({ url: `/message/member-remark/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会员标记
|
||||||
|
export const deleteMemberRemark = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/message/member-remark/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出会员标记 Excel
|
||||||
|
export const exportMemberRemark = async (params) => {
|
||||||
|
return await request.download({ url: `/message/member-remark/export-excel`, params })
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue