Compare commits
No commits in common. "master" and "v2026.05" have entirely different histories.
3
.env.dev
3
.env.dev
|
|
@ -21,9 +21,6 @@ VITE_DROP_CONSOLE=false
|
||||||
# 是否sourcemap
|
# 是否sourcemap
|
||||||
VITE_SOURCEMAP=true
|
VITE_SOURCEMAP=true
|
||||||
|
|
||||||
# 是否开启压缩,可以设置为 none, gzip, brotli, gzip,brotli
|
|
||||||
VITE_COMPRESS=none
|
|
||||||
|
|
||||||
# 打包路径
|
# 打包路径
|
||||||
VITE_BASE_PATH=/
|
VITE_BASE_PATH=/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,6 @@ VITE_DROP_CONSOLE=false
|
||||||
# 是否sourcemap
|
# 是否sourcemap
|
||||||
VITE_SOURCEMAP=false
|
VITE_SOURCEMAP=false
|
||||||
|
|
||||||
# 是否开启压缩,可以设置为 none, gzip, brotli, gzip,brotli
|
|
||||||
VITE_COMPRESS=none
|
|
||||||
|
|
||||||
# 打包路径
|
# 打包路径
|
||||||
VITE_BASE_PATH=/
|
VITE_BASE_PATH=/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,6 @@ VITE_DROP_CONSOLE=true
|
||||||
# 是否sourcemap
|
# 是否sourcemap
|
||||||
VITE_SOURCEMAP=false
|
VITE_SOURCEMAP=false
|
||||||
|
|
||||||
# 是否开启压缩,可以设置为 none, gzip, brotli, gzip,brotli
|
|
||||||
VITE_COMPRESS=none
|
|
||||||
|
|
||||||
# 打包路径
|
# 打包路径
|
||||||
VITE_BASE_PATH=/
|
VITE_BASE_PATH=/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,3 @@ pnpm-debug
|
||||||
auto-*.d.ts
|
auto-*.d.ts
|
||||||
.idea
|
.idea
|
||||||
.history
|
.history
|
||||||
output/
|
|
||||||
.playwright-cli/
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 169 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 72 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB |
|
|
@ -7,6 +7,5 @@
|
||||||
/src/types/env.d.ts
|
/src/types/env.d.ts
|
||||||
/src/types/auto-components.d.ts
|
/src/types/auto-components.d.ts
|
||||||
/src/types/auto-imports.d.ts
|
/src/types/auto-imports.d.ts
|
||||||
/src/components/Tinyflow/ui/**
|
|
||||||
/docs/**/*
|
/docs/**/*
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,4 @@
|
||||||
public/*
|
public/*
|
||||||
/dist*
|
/dist*
|
||||||
/src/types/env.d.ts
|
/src/types/env.d.ts
|
||||||
/src/components/Tinyflow/ui/**
|
|
||||||
/docs/**/*
|
/docs/**/*
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
{
|
{
|
||||||
"typescript.tsdk": "./node_modules/typescript/lib",
|
"typescript.tsdk": "node_modules/typescript/lib",
|
||||||
"volar.tsPlugin": true,
|
|
||||||
"volar.tsPluginStatus": false,
|
|
||||||
"npm.packageManager": "pnpm",
|
"npm.packageManager": "pnpm",
|
||||||
"editor.tabSize": 2,
|
"editor.tabSize": 2,
|
||||||
"prettier.printWidth": 100, // 超过最大值换行
|
"prettier.printWidth": 100, // 超过最大值换行
|
||||||
|
|
@ -85,75 +83,54 @@
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
},
|
},
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": "explicit"
|
"source.fixAll.eslint": "explicit",
|
||||||
|
"source.fixAll.stylelint": "explicit"
|
||||||
},
|
},
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"[vue]": {
|
"[vue]": {
|
||||||
"editor.codeActionsOnSave": {
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
"source.fixAll.eslint": "explicit",
|
|
||||||
"source.fixAll.stylelint": "explicit"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"i18n-ally.localesPaths": ["src/locales"],
|
"i18n-ally.localesPaths": ["src/locales"],
|
||||||
"i18n-ally.keystyle": "nested",
|
"i18n-ally.keystyle": "nested",
|
||||||
"i18n-ally.sortKeys": true,
|
"i18n-ally.sortKeys": true,
|
||||||
"i18n-ally.namespace": true,
|
"i18n-ally.namespace": false,
|
||||||
"i18n-ally.enabledParsers": ["ts"],
|
"i18n-ally.enabledParsers": ["ts"],
|
||||||
"i18n-ally.sourceLanguage": "en",
|
"i18n-ally.sourceLanguage": "en",
|
||||||
"i18n-ally.displayLanguage": "zh-CN",
|
"i18n-ally.displayLanguage": "zh-CN",
|
||||||
"i18n-ally.enabledFrameworks": ["vue", "react"],
|
"i18n-ally.enabledFrameworks": ["vue", "react"],
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"xingyu",
|
"brotli",
|
||||||
"yudao",
|
|
||||||
"unocss",
|
|
||||||
"browserslist",
|
"browserslist",
|
||||||
|
"codemirror",
|
||||||
|
"commitlint",
|
||||||
|
"cropperjs",
|
||||||
|
"echart",
|
||||||
|
"echarts",
|
||||||
"esnext",
|
"esnext",
|
||||||
"unplugin",
|
"esno",
|
||||||
|
"iconify",
|
||||||
|
"INTLIFY",
|
||||||
|
"lintstagedrc",
|
||||||
|
"logicflow",
|
||||||
|
"nprogress",
|
||||||
|
"pinia",
|
||||||
|
"pnpm",
|
||||||
"qrcode",
|
"qrcode",
|
||||||
"sider",
|
"sider",
|
||||||
"pinia",
|
|
||||||
"sider",
|
|
||||||
"nprogress",
|
|
||||||
"INTLIFY",
|
|
||||||
"stylelint",
|
|
||||||
"esno",
|
|
||||||
"vitejs",
|
|
||||||
"sortablejs",
|
"sortablejs",
|
||||||
"codemirror",
|
"stylelint",
|
||||||
"iconify",
|
"svgs",
|
||||||
"commitlint",
|
"unocss",
|
||||||
|
"unplugin",
|
||||||
|
"unref",
|
||||||
"videojs",
|
"videojs",
|
||||||
"echarts",
|
"VITE",
|
||||||
"wangeditor",
|
"vitejs",
|
||||||
"cropperjs",
|
|
||||||
"logicflow",
|
|
||||||
"vueuse",
|
"vueuse",
|
||||||
"zxcvbn",
|
"wangeditor",
|
||||||
"lintstagedrc",
|
"xingyu",
|
||||||
"brotli",
|
"yudao",
|
||||||
"sider",
|
"zxcvbn"
|
||||||
"pnpm"
|
|
||||||
],
|
|
||||||
"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.enabled": true,
|
||||||
|
|
@ -162,7 +139,8 @@
|
||||||
"*.ts": "$(capture).test.ts, $(capture).test.tsx",
|
"*.ts": "$(capture).test.ts, $(capture).test.tsx",
|
||||||
"*.tsx": "$(capture).test.ts, $(capture).test.tsx",
|
"*.tsx": "$(capture).test.ts, $(capture).test.tsx",
|
||||||
"*.env": "$(capture).env.*",
|
"*.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"
|
"package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.eslintrc-auto-import.json,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore"
|
||||||
},
|
},
|
||||||
"terminal.integrated.scrollback": 10000
|
"terminal.integrated.scrollback": 10000,
|
||||||
|
"nuxt.isNuxtApp": false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
13
README.md
13
README.md
|
|
@ -284,19 +284,6 @@
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### IM 即时通讯
|
|
||||||
|
|
||||||
演示地址(Vue3 + Element Plus):<http://dashboard-vue3.yudao.iocoder.cn>
|
|
||||||
|
|
||||||
使用文档:<https://doc.iocoder.cn/im-preview/>
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
| 聊天界面 | 聊天管理 |
|
|
||||||
| --- | --- |
|
|
||||||
|  |  |
|
|
||||||
|
|
||||||
## 🐷 演示图
|
## 🐷 演示图
|
||||||
|
|
||||||
### 系统功能
|
### 系统功能
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,33 @@
|
||||||
import { resolve } from 'path'
|
import { resolve } from 'path'
|
||||||
import Vue from '@vitejs/plugin-vue'
|
import Vue from '@vitejs/plugin-vue'
|
||||||
import VueJsx from '@vitejs/plugin-vue-jsx'
|
import VueJsx from '@vitejs/plugin-vue-jsx'
|
||||||
|
import progress from 'vite-plugin-progress'
|
||||||
|
import EslintPlugin from 'vite-plugin-eslint2'
|
||||||
|
import { ViteEjsPlugin } from 'vite-plugin-ejs'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import ElementPlus from 'unplugin-element-plus/vite'
|
import ElementPlus from 'unplugin-element-plus/vite'
|
||||||
import AutoImport from 'unplugin-auto-import/vite'
|
import AutoImport from 'unplugin-auto-import/vite'
|
||||||
import Components from 'unplugin-vue-components/vite'
|
import Components from 'unplugin-vue-components/vite'
|
||||||
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
||||||
import viteCompression from 'vite-plugin-compression'
|
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-ng'
|
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons-ng'
|
||||||
import UnoCSS from 'unocss/vite'
|
import UnoCSS from 'unocss/vite'
|
||||||
|
|
||||||
export function createVitePlugins(isBuild = false, env: Record<string, string> = {}) {
|
export function createVitePlugins() {
|
||||||
const root = process.cwd()
|
const root = process.cwd()
|
||||||
const compressTypes = (env.VITE_COMPRESS || '')
|
|
||||||
.split(',')
|
|
||||||
.map((item) => item.trim())
|
|
||||||
.filter((item) => item === 'gzip' || item === 'brotli')
|
|
||||||
|
|
||||||
// 路径查找
|
// 路径查找
|
||||||
function pathResolve(dir: string) {
|
function pathResolve(dir: string) {
|
||||||
return resolve(root, '.', dir)
|
return resolve(root, '.', dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
const plugins = [
|
return [
|
||||||
Vue(),
|
Vue(),
|
||||||
VueJsx(),
|
VueJsx(),
|
||||||
UnoCSS(),
|
UnoCSS(),
|
||||||
|
progress(),
|
||||||
ElementPlus({}),
|
ElementPlus({}),
|
||||||
AutoImport({
|
AutoImport({
|
||||||
include: [
|
include: [
|
||||||
|
|
@ -47,7 +49,7 @@ export function createVitePlugins(isBuild = false, env: Record<string, string> =
|
||||||
'@/utils/dict': ['DICT_TYPE']
|
'@/utils/dict': ['DICT_TYPE']
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
dts: !isBuild && 'src/types/auto-imports.d.ts',
|
dts: 'src/types/auto-imports.d.ts',
|
||||||
resolvers: [ElementPlusResolver()],
|
resolvers: [ElementPlusResolver()],
|
||||||
eslintrc: {
|
eslintrc: {
|
||||||
enabled: false, // Default `false`
|
enabled: false, // Default `false`
|
||||||
|
|
@ -57,16 +59,25 @@ export function createVitePlugins(isBuild = false, env: Record<string, string> =
|
||||||
}),
|
}),
|
||||||
Components({
|
Components({
|
||||||
// 生成自定义 `auto-components.d.ts` 全局声明
|
// 生成自定义 `auto-components.d.ts` 全局声明
|
||||||
dts: !isBuild && 'src/types/auto-components.d.ts',
|
dts: 'src/types/auto-components.d.ts',
|
||||||
// 自定义组件的解析器
|
// 自定义组件的解析器
|
||||||
resolvers: [ElementPlusResolver()],
|
resolvers: [ElementPlusResolver()],
|
||||||
globs: ['src/components/**/**.{vue, md}', '!src/components/DiyEditor/components/mobile/**']
|
globs: ['src/components/**/**.{vue, md}', '!src/components/DiyEditor/components/mobile/**']
|
||||||
}),
|
}),
|
||||||
|
EslintPlugin({
|
||||||
|
cache: false,
|
||||||
|
include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件
|
||||||
|
}),
|
||||||
|
VueI18nPlugin({
|
||||||
|
runtimeOnly: true,
|
||||||
|
compositionOnly: true,
|
||||||
|
include: [resolve(__dirname, 'src/locales/**')]
|
||||||
|
}),
|
||||||
createSvgIconsPlugin({
|
createSvgIconsPlugin({
|
||||||
iconDirs: [pathResolve('src/assets/svgs')],
|
iconDirs: [pathResolve('src/assets/svgs')],
|
||||||
symbolId: 'icon-[dir]-[name]'
|
symbolId: 'icon-[dir]-[name]'
|
||||||
}),
|
}),
|
||||||
isBuild && compressTypes.includes('gzip') && viteCompression({
|
viteCompression({
|
||||||
verbose: true, // 是否在控制台输出压缩结果
|
verbose: true, // 是否在控制台输出压缩结果
|
||||||
disable: false, // 是否禁用
|
disable: false, // 是否禁用
|
||||||
threshold: 10240, // 体积大于 threshold 才会被压缩,单位 b
|
threshold: 10240, // 体积大于 threshold 才会被压缩,单位 b
|
||||||
|
|
@ -74,15 +85,13 @@ export function createVitePlugins(isBuild = false, env: Record<string, string> =
|
||||||
ext: '.gz', // 生成的压缩包后缀
|
ext: '.gz', // 生成的压缩包后缀
|
||||||
deleteOriginFile: false //压缩后是否删除源文件
|
deleteOriginFile: false //压缩后是否删除源文件
|
||||||
}),
|
}),
|
||||||
isBuild && compressTypes.includes('brotli') && viteCompression({
|
ViteEjsPlugin(),
|
||||||
verbose: true,
|
topLevelAwait({
|
||||||
disable: false,
|
// https://juejin.cn/post/7152191742513512485
|
||||||
threshold: 10240,
|
// The export name of top-level await promise for each chunk module
|
||||||
algorithm: 'brotliCompress',
|
promiseExportName: '__tla',
|
||||||
ext: '.br',
|
// The function to generate import names of top-level await promise in each chunk module
|
||||||
deleteOriginFile: false
|
promiseImportName: (i) => `__tla_${i}`
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
|
||||||
return plugins.filter(Boolean)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,7 @@ export default tseslint.config(
|
||||||
'test/unit/coverage/',
|
'test/unit/coverage/',
|
||||||
'node_modules/',
|
'node_modules/',
|
||||||
'src/main.ts',
|
'src/main.ts',
|
||||||
'src/types/auto-components.d.ts',
|
'src/types/auto-components.d.ts'
|
||||||
'src/components/Tinyflow/ui/**'
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -62,7 +61,6 @@ export default tseslint.config(
|
||||||
'vue/attributes-order': 'off',
|
'vue/attributes-order': 'off',
|
||||||
'vue/one-component-per-file': 'off',
|
'vue/one-component-per-file': 'off',
|
||||||
'vue/html-closing-bracket-newline': 'off',
|
'vue/html-closing-bracket-newline': 'off',
|
||||||
'vue/html-indent': 'off', // Vue 模板缩进交给 Prettier,避免格式化规则互相拉扯。
|
|
||||||
'vue/max-attributes-per-line': 'off',
|
'vue/max-attributes-per-line': 'off',
|
||||||
'vue/multiline-html-element-content-newline': 'off',
|
'vue/multiline-html-element-content-newline': 'off',
|
||||||
'vue/singleline-html-element-content-newline': 'off',
|
'vue/singleline-html-element-content-newline': 'off',
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
export default {
|
|
||||||
'src/**/*.{js,ts,tsx,vue}': [
|
|
||||||
'eslint --fix --cache --cache-location node_modules/.cache/eslint/',
|
|
||||||
'prettier --write --loglevel warn --cache --cache-location node_modules/.cache/prettier/.prettier-cache'
|
|
||||||
],
|
|
||||||
'src/**/*.{css,less,scss,postcss,vue}': [
|
|
||||||
'stylelint --fix --cache --cache-location node_modules/.cache/stylelint/'
|
|
||||||
],
|
|
||||||
'src/**/*.{json,html,md}': [
|
|
||||||
'prettier --write --loglevel warn --cache --cache-location node_modules/.cache/prettier/.prettier-cache'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
21
package.json
21
package.json
|
|
@ -8,7 +8,7 @@
|
||||||
"i": "pnpm install",
|
"i": "pnpm install",
|
||||||
"dev": "vite --mode env.local",
|
"dev": "vite --mode env.local",
|
||||||
"dev-server": "vite --mode dev",
|
"dev-server": "vite --mode dev",
|
||||||
"ts:check": "node --max_old_space_size=8192 ./node_modules/vue-tsc/bin/vue-tsc.js --noEmit --incremental --tsBuildInfoFile node_modules/.cache/vue-tsc/tsconfig.tsbuildinfo",
|
"ts:check": "node --max_old_space_size=8192 ./node_modules/vue-tsc/bin/vue-tsc.js --noEmit",
|
||||||
"build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode env.local",
|
"build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode env.local",
|
||||||
"build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
|
"build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
|
||||||
"build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test",
|
"build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test",
|
||||||
|
|
@ -19,14 +19,10 @@
|
||||||
"preview": "pnpm build:local && vite preview",
|
"preview": "pnpm build:local && vite preview",
|
||||||
"clean": "npx rimraf node_modules",
|
"clean": "npx rimraf node_modules",
|
||||||
"clean:cache": "npx rimraf node_modules/.cache",
|
"clean:cache": "npx rimraf node_modules/.cache",
|
||||||
"lint": "pnpm lint:eslint:check && pnpm lint:style:check && pnpm lint:format:check",
|
"lint:eslint": "eslint --fix ./src",
|
||||||
"lint:eslint": "eslint --fix ./src --cache --cache-location node_modules/.cache/eslint/",
|
"lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
|
||||||
"lint:eslint:check": "eslint ./src --cache --cache-location node_modules/.cache/eslint/",
|
|
||||||
"lint:format": "prettier --write --log-level warn --cache --cache-location node_modules/.cache/prettier/.prettier-cache \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
|
|
||||||
"lint:format:check": "prettier --check --cache --cache-location node_modules/.cache/prettier/.prettier-cache \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
|
|
||||||
"lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
|
"lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
|
||||||
"lint:style:check": "stylelint \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
|
"lint:lint-staged": "lint-staged -c "
|
||||||
"lint:lint-staged": "lint-staged"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "2.3.2",
|
"@element-plus/icons-vue": "2.3.2",
|
||||||
|
|
@ -48,6 +44,7 @@
|
||||||
"cropperjs": "^2.1.1",
|
"cropperjs": "^2.1.1",
|
||||||
"crypto-js": "^4.2.0",
|
"crypto-js": "^4.2.0",
|
||||||
"dayjs": "^1.11.20",
|
"dayjs": "^1.11.20",
|
||||||
|
"dayjs-plugin-lunar": "^1.4.1",
|
||||||
"dhtmlx-gantt": "^9.1.1",
|
"dhtmlx-gantt": "^9.1.1",
|
||||||
"diagram-js": "^15.14.0",
|
"diagram-js": "^15.14.0",
|
||||||
"driver.js": "^1.4.0",
|
"driver.js": "^1.4.0",
|
||||||
|
|
@ -59,7 +56,6 @@
|
||||||
"jsbarcode": "^3.12.3",
|
"jsbarcode": "^3.12.3",
|
||||||
"jsencrypt": "^3.5.4",
|
"jsencrypt": "^3.5.4",
|
||||||
"jsoneditor": "^10.4.3",
|
"jsoneditor": "^10.4.3",
|
||||||
"livekit-client": "^2.18.9",
|
|
||||||
"lodash-es": "^4.18.1",
|
"lodash-es": "^4.18.1",
|
||||||
"markdown-it": "^14.1.1",
|
"markdown-it": "^14.1.1",
|
||||||
"markmap-common": "^0.18.9",
|
"markmap-common": "^0.18.9",
|
||||||
|
|
@ -94,6 +90,7 @@
|
||||||
"@commitlint/cli": "^20.5.3",
|
"@commitlint/cli": "^20.5.3",
|
||||||
"@commitlint/config-conventional": "^20.5.3",
|
"@commitlint/config-conventional": "^20.5.3",
|
||||||
"@iconify/json": "^2.2.470",
|
"@iconify/json": "^2.2.470",
|
||||||
|
"@intlify/unplugin-vue-i18n": "^11.1.2",
|
||||||
"@types/jsoneditor": "^9.9.6",
|
"@types/jsoneditor": "^9.9.6",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/node": "^25.6.0",
|
"@types/node": "^25.6.0",
|
||||||
|
|
@ -103,6 +100,7 @@
|
||||||
"@unocss/eslint-config": "^66.6.8",
|
"@unocss/eslint-config": "^66.6.8",
|
||||||
"@unocss/eslint-plugin": "66.6.8",
|
"@unocss/eslint-plugin": "66.6.8",
|
||||||
"@unocss/transformer-variant-group": "^66.6.8",
|
"@unocss/transformer-variant-group": "^66.6.8",
|
||||||
|
"@vitejs/plugin-legacy": "^8.0.1",
|
||||||
"@vitejs/plugin-vue": "^6.0.6",
|
"@vitejs/plugin-vue": "^6.0.6",
|
||||||
"@vitejs/plugin-vue-jsx": "^5.1.5",
|
"@vitejs/plugin-vue-jsx": "^5.1.5",
|
||||||
"autoprefixer": "^10.5.0",
|
"autoprefixer": "^10.5.0",
|
||||||
|
|
@ -125,6 +123,7 @@
|
||||||
"stylelint-config-recommended": "^18.0.0",
|
"stylelint-config-recommended": "^18.0.0",
|
||||||
"stylelint-config-standard": "^40.0.0",
|
"stylelint-config-standard": "^40.0.0",
|
||||||
"stylelint-order": "^8.1.1",
|
"stylelint-order": "^8.1.1",
|
||||||
|
"terser": "^5.46.2",
|
||||||
"typescript": "6.0.3",
|
"typescript": "6.0.3",
|
||||||
"typescript-eslint": "^8.59.2",
|
"typescript-eslint": "^8.59.2",
|
||||||
"unocss": "^66.6.8",
|
"unocss": "^66.6.8",
|
||||||
|
|
@ -133,7 +132,11 @@
|
||||||
"unplugin-vue-components": "^32.0.0",
|
"unplugin-vue-components": "^32.0.0",
|
||||||
"vite": "8.0.10",
|
"vite": "8.0.10",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
|
"vite-plugin-ejs": "^1.7.0",
|
||||||
|
"vite-plugin-eslint2": "^5.1.0",
|
||||||
|
"vite-plugin-progress": "^0.0.7",
|
||||||
"vite-plugin-svg-icons-ng": "^1.9.0",
|
"vite-plugin-svg-icons-ng": "^1.9.0",
|
||||||
|
"vite-plugin-top-level-await": "^1.6.0",
|
||||||
"vue-eslint-parser": "^10.4.0",
|
"vue-eslint-parser": "^10.4.0",
|
||||||
"vue-tsc": "^3.2.8"
|
"vue-tsc": "^3.2.8"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
2306
pnpm-lock.yaml
2306
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
|
|
@ -12,7 +12,7 @@ export interface ChatConversationVO {
|
||||||
temperature: number // 温度参数
|
temperature: number // 温度参数
|
||||||
maxTokens: number // 单条回复的最大 Token 数量
|
maxTokens: number // 单条回复的最大 Token 数量
|
||||||
maxContexts: number // 上下文的最大 Message 数量
|
maxContexts: number // 上下文的最大 Message 数量
|
||||||
createTime: Date // 创建时间
|
createTime?: Date // 创建时间
|
||||||
// 额外字段
|
// 额外字段
|
||||||
systemMessage?: string // 角色设定
|
systemMessage?: string // 角色设定
|
||||||
modelName?: string // 模型名字
|
modelName?: string // 模型名字
|
||||||
|
|
@ -39,7 +39,7 @@ export const ChatConversationApi = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// 删除【我的】聊天对话
|
// 删除【我的】聊天对话
|
||||||
deleteChatConversationMy: async (id: number) => {
|
deleteChatConversationMy: async (id: string) => {
|
||||||
return await request.delete({ url: `/ai/chat/conversation/delete-my?id=${id}` })
|
return await request.delete({ url: `/ai/chat/conversation/delete-my?id=${id}` })
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,15 +23,15 @@ export interface ImageDrawReqVO {
|
||||||
prompt: string // 提示词
|
prompt: string // 提示词
|
||||||
modelId: number // 模型
|
modelId: number // 模型
|
||||||
style: string // 图像生成的风格
|
style: string // 图像生成的风格
|
||||||
width: number // 图片宽度
|
width: string // 图片宽度
|
||||||
height: number // 图片高度
|
height: string // 图片高度
|
||||||
options: object // 绘制参数,Map<String, String>
|
options: object // 绘制参数,Map<String, String>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ImageMidjourneyImagineReqVO {
|
export interface ImageMidjourneyImagineReqVO {
|
||||||
prompt: string // 提示词
|
prompt: string // 提示词
|
||||||
modelId: number // 模型
|
modelId: number // 模型
|
||||||
base64Array: string[] // 参考图 base64 列表
|
base64Array: string[] // size不能为空
|
||||||
width: string // 图片宽度
|
width: string // 图片宽度
|
||||||
height: string // 图片高度
|
height: string // 图片高度
|
||||||
version: string // 版本
|
version: string // 版本
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@ export type ApprovalTaskInfo = {
|
||||||
assigneeUser: User
|
assigneeUser: User
|
||||||
status: number
|
status: number
|
||||||
reason: string
|
reason: string
|
||||||
attachments?: string[]
|
|
||||||
signPicUrl: string
|
signPicUrl: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
|
||||||
export const updateBpmSimpleModel = async (data) => {
|
export const updateBpmSimpleModel = async (data) => {
|
||||||
return await request.post({
|
return await request.post({
|
||||||
url: '/bpm/model/simple/update',
|
url: '/bpm/model/simple/update',
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,14 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface BusinessStatusTypeVO {
|
export interface BusinessStatusTypeVO {
|
||||||
id?: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
deptIds: number[]
|
deptIds: number[]
|
||||||
statuses: BusinessStatusVO[]
|
statuses?: {
|
||||||
}
|
id: number
|
||||||
|
name: string
|
||||||
export interface BusinessStatusVO {
|
percent: number
|
||||||
id?: number
|
}
|
||||||
name: string
|
|
||||||
percent?: number
|
|
||||||
endStatus?: number
|
|
||||||
key?: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DEFAULT_STATUSES = [
|
export const DEFAULT_STATUSES = [
|
||||||
|
|
@ -34,7 +30,7 @@ export const DEFAULT_STATUSES = [
|
||||||
name: '无效',
|
name: '无效',
|
||||||
percent: 0
|
percent: 0
|
||||||
}
|
}
|
||||||
] satisfies BusinessStatusVO[]
|
]
|
||||||
|
|
||||||
// 查询商机状态组列表
|
// 查询商机状态组列表
|
||||||
export const getBusinessStatusPage = async (params: any) => {
|
export const getBusinessStatusPage = async (params: any) => {
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,6 @@ export interface FinancePaymentVO {
|
||||||
remark: string // 备注
|
remark: string // 备注
|
||||||
}
|
}
|
||||||
|
|
||||||
// ERP 付款单项 VO
|
|
||||||
export interface FinancePaymentItemVO {
|
|
||||||
paymentPrice: number // 本次付款金额,单位:元
|
|
||||||
}
|
|
||||||
|
|
||||||
// ERP 付款单 API
|
// ERP 付款单 API
|
||||||
export const FinancePaymentApi = {
|
export const FinancePaymentApi = {
|
||||||
// 查询付款单分页
|
// 查询付款单分页
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,6 @@ export interface FinanceReceiptVO {
|
||||||
remark: string // 备注
|
remark: string // 备注
|
||||||
}
|
}
|
||||||
|
|
||||||
// ERP 收款单项 VO
|
|
||||||
export interface FinanceReceiptItemVO {
|
|
||||||
receiptPrice: number // 本次收款金额,单位:元
|
|
||||||
}
|
|
||||||
|
|
||||||
// ERP 收款单 API
|
// ERP 收款单 API
|
||||||
export const FinanceReceiptApi = {
|
export const FinanceReceiptApi = {
|
||||||
// 查询收款单分页
|
// 查询收款单分页
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ export interface ProductCategoryVO {
|
||||||
// ERP 产品分类 API
|
// ERP 产品分类 API
|
||||||
export const ProductCategoryApi = {
|
export const ProductCategoryApi = {
|
||||||
// 查询产品分类列表
|
// 查询产品分类列表
|
||||||
getProductCategoryList: async (params?: any) => {
|
getProductCategoryList: async () => {
|
||||||
return await request.get({ url: `/erp/product-category/list`, params })
|
return await request.get({ url: `/erp/product-category/list` })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查询产品分类精简列表
|
// 查询产品分类精简列表
|
||||||
|
|
|
||||||
|
|
@ -2,45 +2,16 @@ import request from '@/config/axios'
|
||||||
|
|
||||||
// ERP 采购订单 VO
|
// ERP 采购订单 VO
|
||||||
export interface PurchaseOrderVO {
|
export interface PurchaseOrderVO {
|
||||||
id?: number // 订单工单编号
|
id: number // 订单工单编号
|
||||||
no?: string // 采购订单号
|
no: string // 采购订单号
|
||||||
supplierId?: number // 供应商编号
|
customerId: number // 客户编号
|
||||||
accountId?: number // 结算账户编号
|
orderTime: Date // 订单时间
|
||||||
orderTime?: Date // 订单时间
|
totalCount: number // 合计数量
|
||||||
totalCount?: number // 合计数量
|
|
||||||
totalProductPrice?: number // 合计产品金额,单位:元
|
|
||||||
discountPercent?: number // 优惠率
|
|
||||||
discountPrice?: number // 优惠金额,单位:元
|
|
||||||
totalPrice: number // 合计金额,单位:元
|
totalPrice: number // 合计金额,单位:元
|
||||||
depositPrice?: number // 订金金额,单位:元
|
status: number // 状态
|
||||||
status?: number // 状态
|
remark: string // 备注
|
||||||
remark?: string // 备注
|
outCount: number // 采购出库数量
|
||||||
fileUrl: string // 附件地址
|
returnCount: number // 采购退货数量
|
||||||
inCount?: number // 采购入库数量
|
|
||||||
returnCount?: number // 采购退货数量
|
|
||||||
items: PurchaseOrderItemVO[] // 订单项
|
|
||||||
}
|
|
||||||
|
|
||||||
// ERP 采购订单项 VO
|
|
||||||
export interface PurchaseOrderItemVO {
|
|
||||||
id?: number
|
|
||||||
orderItemId?: number
|
|
||||||
productId?: number
|
|
||||||
productName?: string
|
|
||||||
productUnitName?: string
|
|
||||||
productBarCode?: string
|
|
||||||
productPrice?: number
|
|
||||||
stockCount?: number
|
|
||||||
count: number
|
|
||||||
totalCount?: number
|
|
||||||
inCount?: number
|
|
||||||
returnCount?: number
|
|
||||||
totalProductPrice?: number
|
|
||||||
taxPercent?: number
|
|
||||||
taxPrice?: number
|
|
||||||
totalPrice: number
|
|
||||||
remark?: string
|
|
||||||
warehouseId?: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ERP 采购订单 API
|
// ERP 采购订单 API
|
||||||
|
|
|
||||||
|
|
@ -2,46 +2,16 @@ import request from '@/config/axios'
|
||||||
|
|
||||||
// ERP 销售订单 VO
|
// ERP 销售订单 VO
|
||||||
export interface SaleOrderVO {
|
export interface SaleOrderVO {
|
||||||
id?: number // 订单工单编号
|
id: number // 订单工单编号
|
||||||
no?: string // 销售订单号
|
no: string // 销售订单号
|
||||||
customerId?: number // 客户编号
|
customerId: number // 客户编号
|
||||||
accountId?: number // 结算账户编号
|
orderTime: Date // 订单时间
|
||||||
saleUserId?: number // 销售人员编号
|
totalCount: number // 合计数量
|
||||||
orderTime?: Date // 订单时间
|
|
||||||
totalCount?: number // 合计数量
|
|
||||||
totalProductPrice?: number // 合计产品金额,单位:元
|
|
||||||
discountPercent?: number // 优惠率
|
|
||||||
discountPrice?: number // 优惠金额,单位:元
|
|
||||||
totalPrice: number // 合计金额,单位:元
|
totalPrice: number // 合计金额,单位:元
|
||||||
depositPrice?: number // 订金金额,单位:元
|
status: number // 状态
|
||||||
status?: number // 状态
|
remark: string // 备注
|
||||||
remark?: string // 备注
|
outCount: number // 销售出库数量
|
||||||
fileUrl: string // 附件地址
|
returnCount: number // 销售退货数量
|
||||||
outCount?: number // 销售出库数量
|
|
||||||
returnCount?: number // 销售退货数量
|
|
||||||
items: SaleOrderItemVO[] // 订单项
|
|
||||||
}
|
|
||||||
|
|
||||||
// ERP 销售订单项 VO
|
|
||||||
export interface SaleOrderItemVO {
|
|
||||||
id?: number
|
|
||||||
orderItemId?: number
|
|
||||||
productId?: number
|
|
||||||
productName?: string
|
|
||||||
productUnitName?: string
|
|
||||||
productBarCode?: string
|
|
||||||
productPrice?: number
|
|
||||||
stockCount?: number
|
|
||||||
count: number
|
|
||||||
totalCount?: number
|
|
||||||
outCount?: number
|
|
||||||
returnCount?: number
|
|
||||||
totalProductPrice?: number
|
|
||||||
taxPercent?: number
|
|
||||||
taxPrice?: number
|
|
||||||
totalPrice: number
|
|
||||||
remark?: string
|
|
||||||
warehouseId?: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ERP 销售订单 API
|
// ERP 销售订单 API
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 用户端能看到的频道素材详情
|
|
||||||
export interface ImChannelMaterialRespVO {
|
|
||||||
id: number
|
|
||||||
channelId: number
|
|
||||||
type: number
|
|
||||||
title: string
|
|
||||||
coverUrl?: string
|
|
||||||
summary?: string
|
|
||||||
content?: string
|
|
||||||
url?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取频道素材详情;用于客户端点击图文卡片渲染详情页
|
|
||||||
export const getChannelMaterial = (id: number) => {
|
|
||||||
return request.get<ImChannelMaterialRespVO>({ url: '/im/channel/material/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// IM 会话读位置 Response VO
|
|
||||||
export interface ImConversationReadRespVO {
|
|
||||||
id: number // 读位置编号(增量拉取游标用)
|
|
||||||
conversationType: number // 会话类型,参见 ImConversationType
|
|
||||||
targetId: number // 会话目标编号
|
|
||||||
messageId: number // 最大已读消息编号
|
|
||||||
updateTime?: number // 最近更新时间(毫秒时间戳,增量拉取游标用)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 增量拉取当前用户的会话读位置(重连 / 离线补偿)
|
|
||||||
export const pullMyConversationReadList = (params: {
|
|
||||||
lastUpdateTime?: number
|
|
||||||
lastId?: number
|
|
||||||
limit: number
|
|
||||||
}) => {
|
|
||||||
return request.get<ImConversationReadRespVO[]>({ url: '/im/conversation-read/pull', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 用户端表情包项(精简版)
|
|
||||||
export interface ImFacePackUserItemVO {
|
|
||||||
id: number
|
|
||||||
url: string
|
|
||||||
name?: string
|
|
||||||
width: number
|
|
||||||
height: number
|
|
||||||
}
|
|
||||||
|
|
||||||
// 用户端表情包 + 嵌套 items
|
|
||||||
export interface ImFacePackUserVO {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
icon?: string
|
|
||||||
items: ImFacePackUserItemVO[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拉取所有启用的系统表情包(含表情列表)
|
|
||||||
export const getFacePackList = () => {
|
|
||||||
return request.get<ImFacePackUserVO[]>({ url: '/im/face-pack/list' })
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 个人表情
|
|
||||||
export interface ImFaceUserItemVO {
|
|
||||||
id: number
|
|
||||||
url: string
|
|
||||||
name?: string
|
|
||||||
width: number
|
|
||||||
height: number
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加个人表情请求
|
|
||||||
export interface ImFaceUserItemSaveReqVO {
|
|
||||||
url: string
|
|
||||||
name?: string
|
|
||||||
width: number
|
|
||||||
height: number
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取我的个人表情列表
|
|
||||||
export const getFaceUserItemList = () => {
|
|
||||||
return request.get<ImFaceUserItemVO[]>({ url: '/im/face-user-item/list' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加个人表情
|
|
||||||
export const createFaceUserItem = (data: ImFaceUserItemSaveReqVO) => {
|
|
||||||
return request.post<number>({ url: '/im/face-user-item/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除个人表情
|
|
||||||
export const deleteFaceUserItem = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/face-user-item/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// IM 好友 Response VO
|
|
||||||
export interface ImFriendRespVO {
|
|
||||||
id: number // 关系记录编号
|
|
||||||
friendUserId: number // 好友的用户编号
|
|
||||||
silent?: boolean // 是否免打扰
|
|
||||||
displayName?: string // 好友展示备注(仅自己可见)
|
|
||||||
displayNamePinyin?: string // 备注的拼音(小写无空格,前端按首字母分桶 / 拼音搜索)
|
|
||||||
addSource?: number // 添加来源;参见 ImFriendAddSourceEnum
|
|
||||||
pinned?: boolean // 是否置顶联系人
|
|
||||||
blocked?: boolean // 是否拉黑
|
|
||||||
status?: number // 好友状态(0=正常,1=已删除)
|
|
||||||
addTime?: string // 添加好友时间
|
|
||||||
deleteTime?: string // 删除好友时间
|
|
||||||
updateTime?: number // 最近更新时间(毫秒时间戳,增量拉取游标用)
|
|
||||||
// 聚合字段(自 AdminUser)
|
|
||||||
nickname?: string // 好友昵称
|
|
||||||
nicknamePinyin?: string // 昵称的拼音(小写无空格,前端按首字母分桶 / 拼音搜索)
|
|
||||||
avatar?: string // 好友头像
|
|
||||||
}
|
|
||||||
|
|
||||||
// IM 好友更新 Request VO
|
|
||||||
export interface ImFriendUpdateReqVO {
|
|
||||||
friendUserId: number // 好友的用户编号
|
|
||||||
silent?: boolean // 是否免打扰
|
|
||||||
displayName?: string // 好友展示备注
|
|
||||||
pinned?: boolean // 是否置顶联系人
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得当前登录用户的好友列表
|
|
||||||
export const getMyFriendList = () => {
|
|
||||||
return request.get<ImFriendRespVO[]>({ url: '/im/friend/list' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 增量拉取当前用户的好友关系(重连 / 离线补偿)
|
|
||||||
export const pullMyFriendList = (params: {
|
|
||||||
lastUpdateTime?: number
|
|
||||||
lastId?: number
|
|
||||||
limit: number
|
|
||||||
}) => {
|
|
||||||
return request.get<ImFriendRespVO[]>({ url: '/im/friend/pull', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得好友详情
|
|
||||||
export const getFriend = (friendUserId: number | string) => {
|
|
||||||
return request.get<ImFriendRespVO>({ url: '/im/friend/get', params: { friendUserId } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除好友(单向软删除)
|
|
||||||
export const deleteFriend = (friendUserId: number | string, clear: boolean) => {
|
|
||||||
return request.delete<boolean>({
|
|
||||||
url: '/im/friend/delete',
|
|
||||||
params: { friendUserId, clear }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新好友信息(备注 / 免打扰 / 联系人置顶)
|
|
||||||
export const updateFriend = (data: ImFriendUpdateReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/friend/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拉黑好友(必须先是好友;单边屏蔽对方私聊消息)
|
|
||||||
export const blockFriend = (friendUserId: number | string) => {
|
|
||||||
return request.put<boolean>({ url: '/im/friend/block', params: { friendUserId } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 移出黑名单
|
|
||||||
export const unblockFriend = (friendUserId: number | string) => {
|
|
||||||
return request.put<boolean>({ url: '/im/friend/unblock', params: { friendUserId } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// IM 好友申请 Response VO
|
|
||||||
export interface ImFriendRequestRespVO {
|
|
||||||
id: number // 申请编号
|
|
||||||
fromUserId: number // 发起方用户编号
|
|
||||||
toUserId: number // 接收方用户编号
|
|
||||||
handleResult: number // 处理结果;0=未处理;1=同意;2=拒绝
|
|
||||||
applyContent?: string // 申请理由
|
|
||||||
handleContent?: string // 处理理由(接收方拒绝时可选填)
|
|
||||||
addSource?: number // 添加来源;参见 ImFriendAddSourceEnum
|
|
||||||
handleTime?: string // 处理时间
|
|
||||||
createTime: string // 申请创建时间
|
|
||||||
updateTime?: number // 最近更新时间(毫秒时间戳,增量拉取游标用)
|
|
||||||
// 聚合字段(自 AdminUser)
|
|
||||||
fromNickname?: string // 发起方昵称
|
|
||||||
fromAvatar?: string // 发起方头像
|
|
||||||
toNickname?: string // 接收方昵称
|
|
||||||
toAvatar?: string // 接收方头像
|
|
||||||
}
|
|
||||||
|
|
||||||
// IM 好友申请发起 Request VO
|
|
||||||
export interface ImFriendRequestApplyReqVO {
|
|
||||||
toUserId: number // 接收方用户编号
|
|
||||||
applyContent?: string // 申请理由
|
|
||||||
displayName?: string // 对接收方的备注(仅自己可见)
|
|
||||||
addSource?: number // 添加来源
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发起好友申请
|
|
||||||
export const applyFriendRequest = (data: ImFriendRequestApplyReqVO) => {
|
|
||||||
return request.post<number | null>({ url: '/im/friend-request/apply', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 同意好友申请
|
|
||||||
export const agreeFriendRequest = (id: number | string) => {
|
|
||||||
return request.put<boolean>({ url: '/im/friend-request/agree', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拒绝好友申请
|
|
||||||
export const refuseFriendRequest = (id: number | string, handleContent?: string) => {
|
|
||||||
return request.put<boolean>({
|
|
||||||
url: '/im/friend-request/refuse',
|
|
||||||
params: { id, handleContent }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询「我相关」的好友申请列表(游标分页:传 maxId 加载更多)
|
|
||||||
export const getMyFriendRequestList = (limit: number, maxId?: number) => {
|
|
||||||
const params: Record<string, number> = { limit }
|
|
||||||
if (maxId != null) {
|
|
||||||
params.maxId = maxId
|
|
||||||
}
|
|
||||||
return request.get<ImFriendRequestRespVO[]>({
|
|
||||||
url: '/im/friend-request/list',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 增量拉取「我相关」的好友申请变更(重连 / 离线补偿)
|
|
||||||
export const pullMyFriendRequestList = (params: {
|
|
||||||
lastUpdateTime?: number
|
|
||||||
lastId?: number
|
|
||||||
limit: number
|
|
||||||
}) => {
|
|
||||||
return request.get<ImFriendRequestRespVO[]>({ url: '/im/friend-request/pull', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 按 id 单查「我相关」的申请记录(带越权过滤;WebSocket 通知到达后用)
|
|
||||||
export const getMyFriendRequest = (id: number) => {
|
|
||||||
return request.get<ImFriendRequestRespVO | null>({
|
|
||||||
url: '/im/friend-request/get',
|
|
||||||
params: { id }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,140 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
import type { ImGroupMessageRespVO } from '@/api/im/message/group'
|
|
||||||
|
|
||||||
// 群 Response VO
|
|
||||||
export interface ImGroupRespVO {
|
|
||||||
id: number // 编号
|
|
||||||
name: string // 群名称
|
|
||||||
ownerUserId: number // 群主用户编号
|
|
||||||
avatar?: string // 群头像
|
|
||||||
notice?: string // 群公告
|
|
||||||
banned?: boolean // 是否封禁
|
|
||||||
mutedAll?: boolean // 是否全群禁言
|
|
||||||
joinApproval?: boolean // 进群是否需群主 / 管理员审批
|
|
||||||
bannedTime?: string // 封禁时间
|
|
||||||
status: number // 群状态(0=正常,1=已解散)
|
|
||||||
dissolvedTime?: string // 解散时间
|
|
||||||
createTime?: string // 创建时间
|
|
||||||
pinnedMessages?: ImGroupMessageRespVO[] // 群置顶消息列表(后端关联回填,仅当登录用户是群成员时非空)
|
|
||||||
joinStatus?: number // 当前登录用户在该群的成员状态(参见 CommonStatusEnum:0 在群 / 1 已退群);历史退群群仍返回,供展示离线消息的群名 / 头像
|
|
||||||
groupRemark?: string // 当前登录用户对该群的备注
|
|
||||||
silent?: boolean // 当前登录用户是否免打扰
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群消息置顶 / 取消置顶 Request VO
|
|
||||||
export interface ImGroupMessagePinReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
messageId: number // 消息编号
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群创建 Request VO
|
|
||||||
export interface ImGroupCreateReqVO {
|
|
||||||
name: string // 群名称
|
|
||||||
memberUserIds?: number[] // 初始成员用户编号列表(建群同时邀请的好友,不含创建者自己)
|
|
||||||
joinApproval?: boolean // 进群是否需审批;不传默认 false 自由进群
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群更新 Request VO
|
|
||||||
export interface ImGroupUpdateReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
name?: string // 群名称
|
|
||||||
avatar?: string // 群头像
|
|
||||||
notice?: string // 群公告
|
|
||||||
joinApproval?: boolean // 进群是否需审批
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加 / 撤销群管理员 Request VO
|
|
||||||
export interface ImGroupAdminReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
userIds: number[] // 目标用户编号列表
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群主转让 Request VO
|
|
||||||
export interface ImGroupTransferOwnerReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
newOwnerUserId: number // 新群主用户编号
|
|
||||||
}
|
|
||||||
|
|
||||||
// 全群禁言 / 取消 Request VO
|
|
||||||
export interface ImGroupMuteAllReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
mutedAll: boolean // 是否全群禁言
|
|
||||||
}
|
|
||||||
|
|
||||||
// 成员禁言 Request VO
|
|
||||||
export interface ImGroupMuteMemberReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
userId: number // 被禁言的用户编号
|
|
||||||
mutedSeconds: number // 禁言时长(秒),0 表示永久禁言
|
|
||||||
}
|
|
||||||
|
|
||||||
// 取消成员禁言 Request VO
|
|
||||||
export interface ImGroupCancelMuteMemberReqVO {
|
|
||||||
id: number // 群编号
|
|
||||||
userId: number // 被取消禁言的用户编号
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得当前登录用户的群列表
|
|
||||||
export const getMyGroupList = () => {
|
|
||||||
return request.get<ImGroupRespVO[]>({ url: '/im/group/list' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群详情
|
|
||||||
export const getGroup = (id: number | string) => {
|
|
||||||
return request.get<ImGroupRespVO>({ url: '/im/group/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建群
|
|
||||||
export const createGroup = (data: ImGroupCreateReqVO) => {
|
|
||||||
return request.post<ImGroupRespVO>({ url: '/im/group/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新群
|
|
||||||
export const updateGroup = (data: ImGroupUpdateReqVO) => {
|
|
||||||
return request.put<ImGroupRespVO>({ url: '/im/group/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 解散群
|
|
||||||
export const dissolveGroup = (id: number | string) => {
|
|
||||||
return request.delete<boolean>({ url: '/im/group/dissolve', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加群管理员(仅群主可调)
|
|
||||||
export const addGroupAdmin = (data: ImGroupAdminReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/add-admin', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤销群管理员(仅群主可调)
|
|
||||||
export const removeGroupAdmin = (data: ImGroupAdminReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/remove-admin', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 转让群主(仅老群主可调;旧群主转让后降为普通成员)
|
|
||||||
export const transferGroupOwner = (data: ImGroupTransferOwnerReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/transfer-owner', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 置顶群消息(仅群主 / 管理员可调)
|
|
||||||
export const pinGroupMessage = (data: ImGroupMessagePinReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/pin-message', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 取消置顶群消息(仅群主 / 管理员可调)
|
|
||||||
export const unpinGroupMessage = (data: ImGroupMessagePinReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/unpin-message', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 全群禁言 / 取消(仅群主 / 管理员可调)
|
|
||||||
export const muteAll = (data: ImGroupMuteAllReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/mute-all', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 禁言成员
|
|
||||||
export const muteMember = (data: ImGroupMuteMemberReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/mute-member', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 取消成员禁言
|
|
||||||
export const cancelMuteMember = (data: ImGroupCancelMuteMemberReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group/cancel-mute-member', data })
|
|
||||||
}
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 群成员 Response VO
|
|
||||||
export interface ImGroupMemberRespVO {
|
|
||||||
id: number // 编号
|
|
||||||
groupId: number // 群编号
|
|
||||||
userId: number // 用户编号
|
|
||||||
displayUserName?: string // 组内显示名(群主设置的备注)
|
|
||||||
groupRemark?: string // 群备注(当前用户对群的备注)
|
|
||||||
silent?: boolean // 是否免打扰
|
|
||||||
status?: number // 成员状态(0=在群,1=退群)
|
|
||||||
role?: number // 成员角色,参见 ImGroupMemberRole 枚举
|
|
||||||
joinTime?: string // 入群时间
|
|
||||||
quitTime?: string // 退群时间
|
|
||||||
muteEndTime?: string // 禁言到期时间
|
|
||||||
createTime?: string // 创建时间
|
|
||||||
// 聚合字段(自 AdminUser)
|
|
||||||
nickname?: string // 用户昵称
|
|
||||||
avatar?: string // 用户头像
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群成员邀请 Request VO
|
|
||||||
export interface ImGroupMemberInviteReqVO {
|
|
||||||
groupId: number // 群编号
|
|
||||||
memberUserIds: number[] // 被邀请的用户编号列表
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群成员移除 Request VO
|
|
||||||
export interface ImGroupMemberRemoveReqVO {
|
|
||||||
groupId: number // 群编号
|
|
||||||
memberUserIds: number[] // 被移除的用户编号列表
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群成员更新 Request VO
|
|
||||||
export interface ImGroupMemberUpdateReqVO {
|
|
||||||
groupId: number // 群编号
|
|
||||||
displayUserName?: string // 群内昵称
|
|
||||||
groupRemark?: string // 群备注
|
|
||||||
silent?: boolean // 是否免打扰
|
|
||||||
}
|
|
||||||
|
|
||||||
// 邀请用户加入群
|
|
||||||
export const inviteGroupMember = (data: ImGroupMemberInviteReqVO) => {
|
|
||||||
return request.post<boolean>({ url: '/im/group/invite', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 退出群
|
|
||||||
export const quitGroup = (groupId: number | string) => {
|
|
||||||
return request.delete<boolean>({ url: '/im/group/quit', params: { groupId } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 移除群成员
|
|
||||||
export const removeGroupMember = (data: ImGroupMemberRemoveReqVO) => {
|
|
||||||
return request.delete<boolean>({ url: '/im/group/kicking', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群成员详情
|
|
||||||
export const getGroupMember = (groupId: number, userId: number) => {
|
|
||||||
return request.get<ImGroupMemberRespVO>({
|
|
||||||
url: '/im/group-member/get',
|
|
||||||
params: { groupId, userId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得指定群的成员列表(聚合 AdminUser 昵称 / 头像)
|
|
||||||
export const getGroupMemberList = (groupId: number | string) => {
|
|
||||||
return request.get<ImGroupMemberRespVO[]>({
|
|
||||||
url: '/im/group-member/list',
|
|
||||||
params: { groupId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新群成员
|
|
||||||
export const updateGroupMember = (data: ImGroupMemberUpdateReqVO) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group-member/update', data })
|
|
||||||
}
|
|
||||||
|
|
@ -1,81 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// IM 加群申请 Response VO
|
|
||||||
export interface ImGroupRequestRespVO {
|
|
||||||
id: number // 申请编号
|
|
||||||
groupId: number // 群编号
|
|
||||||
userId: number // 申请人 / 被邀请人用户编号
|
|
||||||
inviterUserId?: number // 邀请人;NULL 表示用户主动申请
|
|
||||||
handleResult: number // 处理结果;0=未处理;1=同意;2=拒绝
|
|
||||||
applyContent?: string // 申请理由
|
|
||||||
handleContent?: string // 处理理由(拒绝时可选填)
|
|
||||||
handleUserId?: number // 处理人用户编号
|
|
||||||
addSource?: number // 加入来源;参见 ImGroupAddSourceEnum
|
|
||||||
handleTime?: string // 处理时间
|
|
||||||
createTime: string // 申请创建时间
|
|
||||||
updateTime?: number // 最近更新时间(毫秒时间戳,增量拉取游标用)
|
|
||||||
// 聚合字段
|
|
||||||
userNickname?: string // 申请人 / 被邀请人昵称
|
|
||||||
userAvatar?: string // 申请人 / 被邀请人头像
|
|
||||||
inviterNickname?: string // 邀请人昵称
|
|
||||||
inviterAvatar?: string // 邀请人头像
|
|
||||||
groupName?: string // 群名称
|
|
||||||
groupAvatar?: string // 群头像
|
|
||||||
}
|
|
||||||
|
|
||||||
// IM 加群申请发起 Request VO
|
|
||||||
export interface ImGroupRequestApplyReqVO {
|
|
||||||
groupId: number // 群编号
|
|
||||||
applyContent?: string // 申请理由
|
|
||||||
addSource?: number // 加入来源
|
|
||||||
}
|
|
||||||
|
|
||||||
// 申请加群
|
|
||||||
export const applyJoinGroup = (data: ImGroupRequestApplyReqVO) => {
|
|
||||||
return request.post<number | null>({ url: '/im/group-request/apply', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 同意加群申请(群主或管理员)
|
|
||||||
export const agreeGroupRequest = (id: number | string) => {
|
|
||||||
return request.put<boolean>({ url: '/im/group-request/agree', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拒绝加群申请(群主或管理员)
|
|
||||||
export const refuseGroupRequest = (id: number | string, handleContent?: string) => {
|
|
||||||
return request.put<boolean>({
|
|
||||||
url: '/im/group-request/refuse',
|
|
||||||
params: { id, handleContent }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询「我管理的所有群」下的未处理加群申请列表(不分页);前端 store 据此派生横幅红点 + Drawer 列表
|
|
||||||
export const getUnhandledRequestList = () => {
|
|
||||||
return request.get<ImGroupRequestRespVO[]>({
|
|
||||||
url: '/im/group-request/unhandled-list'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询指定群下的全部加群申请(含已处理);仅群主 / 管理员可查
|
|
||||||
export const getGroupRequestListByGroupId = (groupId: number) => {
|
|
||||||
return request.get<ImGroupRequestRespVO[]>({
|
|
||||||
url: '/im/group-request/list-by-group',
|
|
||||||
params: { groupId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 按 id 单查申请记录(带越权过滤;WebSocket 通知到达后用)
|
|
||||||
export const getMyGroupRequest = (id: number) => {
|
|
||||||
return request.get<ImGroupRequestRespVO | null>({
|
|
||||||
url: '/im/group-request/get',
|
|
||||||
params: { id }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 增量拉取我管理的所有群下加群申请变更(重连 / 离线补偿)
|
|
||||||
export const pullMyGroupRequestList = (params: {
|
|
||||||
lastUpdateTime?: number
|
|
||||||
lastId?: number
|
|
||||||
limit: number
|
|
||||||
}) => {
|
|
||||||
return request.get<ImGroupRequestRespVO[]>({ url: '/im/group-request/pull', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerChannelVO {
|
|
||||||
id: number
|
|
||||||
code: string
|
|
||||||
name: string
|
|
||||||
avatar?: string
|
|
||||||
sort: number
|
|
||||||
status: number
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得频道分页
|
|
||||||
export const getManagerChannelPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/channel/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得频道详情
|
|
||||||
export const getManagerChannel = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/channel/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增频道
|
|
||||||
export const createManagerChannel = (data: ImManagerChannelVO) => {
|
|
||||||
return request.post({ url: '/im/manager/channel/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改频道
|
|
||||||
export const updateManagerChannel = (data: ImManagerChannelVO) => {
|
|
||||||
return request.put({ url: '/im/manager/channel/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除频道
|
|
||||||
export const deleteManagerChannel = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/channel/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得启用的频道精简列表(表单选择用)
|
|
||||||
export const getSimpleChannelList = () => {
|
|
||||||
return request.get<ImManagerChannelVO[]>({ url: '/im/manager/channel/simple-list' })
|
|
||||||
}
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerChannelMaterialVO {
|
|
||||||
id: number
|
|
||||||
channelId: number
|
|
||||||
channelName?: string
|
|
||||||
type: number
|
|
||||||
title: string
|
|
||||||
coverUrl?: string
|
|
||||||
summary?: string
|
|
||||||
content?: string
|
|
||||||
url?: string
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得素材分页
|
|
||||||
export const getManagerChannelMaterialPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/channel-material/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得指定频道下的素材精简列表
|
|
||||||
export const getSimpleManagerChannelMaterialList = (channelId: number) => {
|
|
||||||
return request.get({
|
|
||||||
url: '/im/manager/channel-material/simple-list',
|
|
||||||
params: { channelId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得素材详情
|
|
||||||
export const getManagerChannelMaterial = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/channel-material/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增素材
|
|
||||||
export const createManagerChannelMaterial = (data: ImManagerChannelMaterialVO) => {
|
|
||||||
return request.post({ url: '/im/manager/channel-material/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改素材
|
|
||||||
export const updateManagerChannelMaterial = (data: ImManagerChannelMaterialVO) => {
|
|
||||||
return request.put({ url: '/im/manager/channel-material/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除素材
|
|
||||||
export const deleteManagerChannelMaterial = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/channel-material/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerChannelMessageVO {
|
|
||||||
id: number
|
|
||||||
channelId: number
|
|
||||||
channelName?: string
|
|
||||||
materialId: number
|
|
||||||
materialTitle?: string
|
|
||||||
materialCoverUrl?: string
|
|
||||||
type: number
|
|
||||||
content?: string
|
|
||||||
receiverUserIds?: number[]
|
|
||||||
sendTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImManagerChannelMessageSendReqVO {
|
|
||||||
materialId: number
|
|
||||||
receiverUserIds?: number[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 立即推送频道消息
|
|
||||||
export const sendManagerChannelMessage = (data: ImManagerChannelMessageSendReqVO) => {
|
|
||||||
return request.post({ url: '/im/manager/channel-message/send', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除频道消息
|
|
||||||
export const deleteManagerChannelMessage = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/channel-message/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得频道消息分页
|
|
||||||
export const getManagerChannelMessagePage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/channel-message/page', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerFacePackItemVO {
|
|
||||||
id: number
|
|
||||||
packId: number
|
|
||||||
url: string
|
|
||||||
name?: string
|
|
||||||
width: number
|
|
||||||
height: number
|
|
||||||
sort: number
|
|
||||||
status: number
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得表情分页
|
|
||||||
export const getManagerFacePackItemPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/face-pack-item/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得表情详情
|
|
||||||
export const getManagerFacePackItem = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/face-pack-item/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增表情
|
|
||||||
export const createManagerFacePackItem = (data: ImManagerFacePackItemVO) => {
|
|
||||||
return request.post({ url: '/im/manager/face-pack-item/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改表情
|
|
||||||
export const updateManagerFacePackItem = (data: ImManagerFacePackItemVO) => {
|
|
||||||
return request.put({ url: '/im/manager/face-pack-item/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除表情
|
|
||||||
export const deleteManagerFacePackItem = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/face-pack-item/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量删除表情
|
|
||||||
export const deleteManagerFacePackItemList = (ids: number[]) => {
|
|
||||||
return request.delete({
|
|
||||||
url: '/im/manager/face-pack-item/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerFacePackVO {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
icon?: string
|
|
||||||
sort: number
|
|
||||||
status: number
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得表情包分页
|
|
||||||
export const getManagerFacePackPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/face-pack/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得表情包详情
|
|
||||||
export const getManagerFacePack = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/face-pack/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增表情包
|
|
||||||
export const createManagerFacePack = (data: ImManagerFacePackVO) => {
|
|
||||||
return request.post({ url: '/im/manager/face-pack/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改表情包
|
|
||||||
export const updateManagerFacePack = (data: ImManagerFacePackVO) => {
|
|
||||||
return request.put({ url: '/im/manager/face-pack/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除表情包
|
|
||||||
export const deleteManagerFacePack = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/face-pack/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量删除表情包
|
|
||||||
export const deleteManagerFacePackList = (ids: number[]) => {
|
|
||||||
return request.delete({
|
|
||||||
url: '/im/manager/face-pack/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerFaceUserItemVO {
|
|
||||||
id: number
|
|
||||||
userId: number
|
|
||||||
userNickname?: string
|
|
||||||
url: string
|
|
||||||
name?: string
|
|
||||||
width?: number
|
|
||||||
height?: number
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得用户表情分页
|
|
||||||
export const getManagerFaceUserItemPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/face-user-item/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除用户表情
|
|
||||||
export const deleteManagerFaceUserItem = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/face-user-item/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerFriendVO {
|
|
||||||
id: number
|
|
||||||
userId: number
|
|
||||||
userNickname?: string
|
|
||||||
friendUserId: number
|
|
||||||
friendNickname?: string
|
|
||||||
displayName?: string
|
|
||||||
addSource?: number
|
|
||||||
silent: boolean
|
|
||||||
pinned: boolean
|
|
||||||
blocked: boolean
|
|
||||||
status: number
|
|
||||||
addTime?: Date
|
|
||||||
deleteTime?: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得好友关系分页
|
|
||||||
export const getManagerFriendPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/friend/page', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerFriendRequestVO {
|
|
||||||
id: number
|
|
||||||
fromUserId: number
|
|
||||||
fromNickname?: string
|
|
||||||
toUserId: number
|
|
||||||
toNickname?: string
|
|
||||||
applyContent?: string
|
|
||||||
displayName?: string
|
|
||||||
addSource?: number
|
|
||||||
handleResult: number
|
|
||||||
handleContent?: string
|
|
||||||
handleTime?: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得好友申请分页
|
|
||||||
export const getManagerFriendRequestPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/friend-request/page', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerGroupVO {
|
|
||||||
id: number
|
|
||||||
name: string
|
|
||||||
avatar?: string
|
|
||||||
notice?: string
|
|
||||||
ownerUserId: number
|
|
||||||
ownerNickname?: string
|
|
||||||
memberCount?: number
|
|
||||||
status: number
|
|
||||||
banned: boolean
|
|
||||||
mutedAll?: boolean // 是否全群禁言
|
|
||||||
bannedReason?: string
|
|
||||||
bannedTime?: Date
|
|
||||||
dissolvedTime?: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImManagerGroupMemberVO {
|
|
||||||
userId: number
|
|
||||||
nickname?: string
|
|
||||||
avatar?: string
|
|
||||||
displayUserName?: string
|
|
||||||
groupRemark?: string
|
|
||||||
silent?: boolean
|
|
||||||
status: number
|
|
||||||
role?: number // 成员角色,参见 ImGroupMemberRole 枚举
|
|
||||||
joinTime?: Date
|
|
||||||
quitTime?: Date
|
|
||||||
muteEndTime?: Date // 禁言到期时间
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群分页
|
|
||||||
export const getManagerGroupPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/group/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群详情
|
|
||||||
export const getManagerGroup = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/group/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 封禁群
|
|
||||||
export const banManagerGroup = (data: { id: number; reason: string }) => {
|
|
||||||
return request.put({ url: '/im/manager/group/ban', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 解封群
|
|
||||||
export const unbanManagerGroup = (id: number) => {
|
|
||||||
return request.put({ url: '/im/manager/group/unban', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 解散群
|
|
||||||
export const dissolveManagerGroup = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/group/dissolve', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群成员列表(含已退群成员,由前端按需过滤)
|
|
||||||
export const getManagerGroupMemberList = (groupId: number) => {
|
|
||||||
return request.get({ url: '/im/manager/group/member/list', params: { groupId } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerGroupRequestVO {
|
|
||||||
id: number
|
|
||||||
groupId: number
|
|
||||||
groupName?: string
|
|
||||||
userId: number
|
|
||||||
userNickname?: string
|
|
||||||
inviterUserId?: number
|
|
||||||
inviterNickname?: string
|
|
||||||
applyContent?: string
|
|
||||||
addSource?: number
|
|
||||||
handleResult: number
|
|
||||||
handleUserId?: number
|
|
||||||
handleNickname?: string
|
|
||||||
handleContent?: string
|
|
||||||
handleTime?: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得加群申请分页
|
|
||||||
export const getManagerGroupRequestPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/group-request/page', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerGroupMessageVO {
|
|
||||||
id: number
|
|
||||||
clientMessageId?: string
|
|
||||||
groupId: number
|
|
||||||
groupName?: string
|
|
||||||
senderId: number
|
|
||||||
senderNickname?: string
|
|
||||||
type: number
|
|
||||||
content: string
|
|
||||||
status: number
|
|
||||||
atUserIds?: number[]
|
|
||||||
// 与 atUserIds 同长度;后端对找不到 / 已删除的成员返回 null,UI 用 `?.[idx] || userId` 回退到 userId 渲染
|
|
||||||
atUserNicknames?: (string | null)[]
|
|
||||||
receiptStatus: number
|
|
||||||
sendTime: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群聊消息分页
|
|
||||||
export const getManagerGroupMessagePage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/message/group/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群聊消息详情
|
|
||||||
export const getManagerGroupMessage = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/message/group/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerPrivateMessageVO {
|
|
||||||
id: number
|
|
||||||
clientMessageId?: string
|
|
||||||
senderId: number
|
|
||||||
senderNickname?: string
|
|
||||||
receiverId: number
|
|
||||||
receiverNickname?: string
|
|
||||||
type: number
|
|
||||||
content: string
|
|
||||||
status: number
|
|
||||||
receiptStatus: number
|
|
||||||
sendTime: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得私聊消息分页
|
|
||||||
export const getManagerPrivateMessagePage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/message/private/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得私聊消息详情
|
|
||||||
export const getManagerPrivateMessage = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/message/private/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerRtcCallVO {
|
|
||||||
id: number
|
|
||||||
room: string
|
|
||||||
conversationType: number
|
|
||||||
mediaType: number
|
|
||||||
inviterUserId: number
|
|
||||||
inviterNickname?: string
|
|
||||||
groupId?: number
|
|
||||||
groupName?: string
|
|
||||||
status: number
|
|
||||||
endReason?: number
|
|
||||||
startTime: Date
|
|
||||||
acceptTime?: Date
|
|
||||||
endTime?: Date
|
|
||||||
createTime: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImManagerRtcParticipantVO {
|
|
||||||
id: number
|
|
||||||
callId: number
|
|
||||||
userId: number
|
|
||||||
userNickname?: string
|
|
||||||
role: number
|
|
||||||
status: number
|
|
||||||
inviteTime: Date
|
|
||||||
acceptTime?: Date
|
|
||||||
leaveTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得通话记录分页
|
|
||||||
export const getManagerRtcCallPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/rtc/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得通话参与者列表
|
|
||||||
export const getManagerRtcCallParticipantList = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/rtc/participant-list', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImManagerSensitiveWordVO {
|
|
||||||
id: number
|
|
||||||
word: string
|
|
||||||
status: number
|
|
||||||
creator?: string
|
|
||||||
creatorName?: string
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得敏感词分页
|
|
||||||
export const getManagerSensitiveWordPage = (params: PageParam) => {
|
|
||||||
return request.get({ url: '/im/manager/sensitive-word/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得敏感词详情
|
|
||||||
export const getManagerSensitiveWord = (id: number) => {
|
|
||||||
return request.get({ url: '/im/manager/sensitive-word/get', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增敏感词
|
|
||||||
export const createManagerSensitiveWord = (data: ImManagerSensitiveWordVO) => {
|
|
||||||
return request.post({ url: '/im/manager/sensitive-word/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改敏感词
|
|
||||||
export const updateManagerSensitiveWord = (data: ImManagerSensitiveWordVO) => {
|
|
||||||
return request.put({ url: '/im/manager/sensitive-word/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除敏感词
|
|
||||||
export const deleteManagerSensitiveWord = (id: number) => {
|
|
||||||
return request.delete({ url: '/im/manager/sensitive-word/delete', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量删除敏感词
|
|
||||||
export const deleteManagerSensitiveWordList = (ids: number[]) => {
|
|
||||||
return request.delete({
|
|
||||||
url: '/im/manager/sensitive-word/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImStatisticsOverviewVO {
|
|
||||||
totalUser: number
|
|
||||||
newUserToday: number
|
|
||||||
totalGroup: number
|
|
||||||
newGroupToday: number
|
|
||||||
activeUserDaily: number
|
|
||||||
activeUserWeekly: number
|
|
||||||
activeUserMonthly: number
|
|
||||||
privateMessageToday: number
|
|
||||||
groupMessageToday: number
|
|
||||||
privateMessageYesterday: number
|
|
||||||
groupMessageYesterday: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImStatisticsTrendVO {
|
|
||||||
dates: string[]
|
|
||||||
series: Record<string, number[]>
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImStatisticsMessageTypeVO {
|
|
||||||
type: number // 参见 ImContentTypeEnum 枚举类,由前端按 DICT_TYPE.IM_CONTENT_TYPE 翻译
|
|
||||||
value: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImStatisticsGroupSizeVO {
|
|
||||||
range: string
|
|
||||||
count: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ImStatisticsTopSenderVO {
|
|
||||||
userId: number
|
|
||||||
nickname: string
|
|
||||||
messageCount: number
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得 KPI 概览
|
|
||||||
export const getStatisticsOverview = (): Promise<ImStatisticsOverviewVO> => {
|
|
||||||
return request.get<ImStatisticsOverviewVO>({ url: '/im/manager/statistics/overview' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得消息趋势(私聊 + 群聊双线)
|
|
||||||
export const getMessageTrend = (days: number): Promise<ImStatisticsTrendVO> => {
|
|
||||||
return request.get<ImStatisticsTrendVO>({
|
|
||||||
url: '/im/manager/statistics/message-trend',
|
|
||||||
params: { days }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得用户趋势(新增注册 + 日活双线)
|
|
||||||
export const getUserTrend = (days: number): Promise<ImStatisticsTrendVO> => {
|
|
||||||
return request.get<ImStatisticsTrendVO>({
|
|
||||||
url: '/im/manager/statistics/user-trend',
|
|
||||||
params: { days }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得内容类型分布(最近 30 天)
|
|
||||||
export const getMessageTypeDistribution = (): Promise<ImStatisticsMessageTypeVO[]> => {
|
|
||||||
return request.get<ImStatisticsMessageTypeVO[]>({
|
|
||||||
url: '/im/manager/statistics/message-type-distribution'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得群规模分布
|
|
||||||
export const getGroupSizeDistribution = (): Promise<ImStatisticsGroupSizeVO[]> => {
|
|
||||||
return request.get<ImStatisticsGroupSizeVO[]>({
|
|
||||||
url: '/im/manager/statistics/group-size-distribution'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得消息 TOP 发送者(最近 30 天)
|
|
||||||
export const getTopSenders = (): Promise<ImStatisticsTopSenderVO[]> => {
|
|
||||||
return request.get<ImStatisticsTopSenderVO[]>({ url: '/im/manager/statistics/top-senders' })
|
|
||||||
}
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
export interface ImChannelMessageRespVO {
|
|
||||||
id: number
|
|
||||||
clientMessageId?: string
|
|
||||||
channelId: number
|
|
||||||
materialId: number
|
|
||||||
type: number
|
|
||||||
content: string
|
|
||||||
receiptStatus?: number
|
|
||||||
sendTime: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拉取当前用户应收的频道消息(离线增量);按 minId 游标分页
|
|
||||||
export const pullChannelMessageList = (
|
|
||||||
params: { minId: number; size?: number },
|
|
||||||
signal?: AbortSignal
|
|
||||||
) => {
|
|
||||||
return request.get<ImChannelMessageRespVO[]>({
|
|
||||||
url: '/im/channel/message/pull',
|
|
||||||
params,
|
|
||||||
signal
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 上报频道消息已读位置;切到频道会话或拉到新消息后调
|
|
||||||
export const readChannelMessages = (channelId: number, messageId: number) => {
|
|
||||||
return request.put({
|
|
||||||
url: '/im/channel/message/read',
|
|
||||||
params: { channelId, messageId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 群聊消息 Response VO
|
|
||||||
export interface ImGroupMessageRespVO {
|
|
||||||
id: number // 消息编号
|
|
||||||
clientMessageId: string // 客户端消息编号
|
|
||||||
senderId: number // 发送人编号
|
|
||||||
groupId: number // 群编号
|
|
||||||
type: number // 内容类型
|
|
||||||
content: string // 消息内容(JSON 格式)
|
|
||||||
status: number // 消息状态
|
|
||||||
sendTime: string // 发送时间
|
|
||||||
atUserIds?: number[] // @ 目标用户编号列表
|
|
||||||
receiverUserIds?: number[] // 定向接收用户编号列表
|
|
||||||
receiptStatus?: number // 回执状态
|
|
||||||
readCount?: number // 已读人数(回执消息、且发送人为当前用户时有值)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群聊消息发送 Request VO
|
|
||||||
export interface ImGroupMessageSendReqVO {
|
|
||||||
clientMessageId: string // 客户端消息编号
|
|
||||||
groupId: number // 群编号
|
|
||||||
type: number // 内容类型
|
|
||||||
content: string // 消息内容(JSON 格式)
|
|
||||||
atUserIds?: number[] // @ 目标用户编号列表
|
|
||||||
receipt?: boolean // 是否需要回执
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群聊历史消息列表 Request VO
|
|
||||||
export interface ImGroupMessageListReqVO {
|
|
||||||
groupId: number | string // 群编号
|
|
||||||
maxId?: number | string // 起始消息编号(不含),为空则从最新消息开始
|
|
||||||
limit: number // 拉取数量(1 ~ 200)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发送群聊消息
|
|
||||||
export const sendGroupMessage = (data: ImGroupMessageSendReqVO) => {
|
|
||||||
return request.post<ImGroupMessageRespVO>({ url: '/im/message/group/send', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拉取群聊消息(增量)
|
|
||||||
export const pullGroupMessageList = (
|
|
||||||
params: { minId: number | string; size: number },
|
|
||||||
signal?: AbortSignal
|
|
||||||
) => {
|
|
||||||
return request.get<ImGroupMessageRespVO[]>({ url: '/im/message/group/pull', params, signal })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询群聊历史消息
|
|
||||||
export const getGroupMessageList = (params: ImGroupMessageListReqVO) => {
|
|
||||||
return request.get<ImGroupMessageRespVO[]>({ url: '/im/message/group/list', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 标记群聊消息已读
|
|
||||||
export const readGroupMessages = (groupId: number | string, messageId: number | string) => {
|
|
||||||
return request.put<boolean>({
|
|
||||||
url: '/im/message/group/read',
|
|
||||||
params: { groupId, messageId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤回群聊消息
|
|
||||||
export const recallGroupMessage = (id: number | string) => {
|
|
||||||
return request.delete<ImGroupMessageRespVO>({
|
|
||||||
url: '/im/message/group/recall',
|
|
||||||
params: { id }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取群消息已读用户列表
|
|
||||||
export const getGroupReadUsers = (params: {
|
|
||||||
groupId: number | string
|
|
||||||
messageId: number | string
|
|
||||||
}) => {
|
|
||||||
return request.get<number[]>({ url: '/im/message/group/get-read-user-ids', params })
|
|
||||||
}
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 私聊消息 Response VO
|
|
||||||
export interface ImPrivateMessageRespVO {
|
|
||||||
id: number // 消息编号
|
|
||||||
clientMessageId: string // 客户端消息编号
|
|
||||||
senderId: number // 发送人编号
|
|
||||||
receiverId: number // 接收人编号
|
|
||||||
type: number // 内容类型
|
|
||||||
content: string // 消息内容(JSON 格式)
|
|
||||||
status: number // 消息状态(正常 / 已撤回)
|
|
||||||
receiptStatus?: number // 回执状态(不需要 / 待完成 / 已完成),对齐 ImMessageReceiptStatus
|
|
||||||
sendTime: string // 发送时间
|
|
||||||
}
|
|
||||||
|
|
||||||
// 私聊消息发送 Request VO
|
|
||||||
export interface ImPrivateMessageSendReqVO {
|
|
||||||
clientMessageId: string // 客户端消息编号
|
|
||||||
receiverId: number // 接收人编号
|
|
||||||
type: number // 内容类型
|
|
||||||
content: string // 消息内容(JSON 格式)
|
|
||||||
receipt?: boolean // 是否需要回执;不传后端默认 true(普通私聊用户消息)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 私聊历史消息列表 Request VO
|
|
||||||
export interface ImPrivateMessageListReqVO {
|
|
||||||
receiverId: number | string // 接收人编号(对方)
|
|
||||||
maxId?: number | string // 起始消息编号(不含),为空则从最新消息开始
|
|
||||||
limit: number // 拉取数量(1 ~ 200)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发送私聊消息
|
|
||||||
export const sendPrivateMessage = (data: ImPrivateMessageSendReqVO) => {
|
|
||||||
return request.post<ImPrivateMessageRespVO>({ url: '/im/message/private/send', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拉取私聊消息(增量)
|
|
||||||
export const pullPrivateMessageList = (
|
|
||||||
params: { minId: number | string; size: number },
|
|
||||||
signal?: AbortSignal
|
|
||||||
) => {
|
|
||||||
return request.get<ImPrivateMessageRespVO[]>({ url: '/im/message/private/pull', params, signal })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询私聊历史消息
|
|
||||||
export const getPrivateMessageList = (params: ImPrivateMessageListReqVO) => {
|
|
||||||
return request.get<ImPrivateMessageRespVO[]>({ url: '/im/message/private/list', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 标记私聊消息已读
|
|
||||||
export const readPrivateMessages = (receiverId: number | string, messageId: number | string) => {
|
|
||||||
return request.put<boolean>({
|
|
||||||
url: '/im/message/private/read',
|
|
||||||
params: { receiverId, messageId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询对方已读到我发的最大消息 id(多端 / 离线后用于补齐已读状态)
|
|
||||||
export const getPrivateMaxReadMessageId = (peerId: number | string, signal?: AbortSignal) => {
|
|
||||||
return request.get<number | null>({
|
|
||||||
url: '/im/message/private/max-read-message-id',
|
|
||||||
params: { peerId },
|
|
||||||
signal
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 撤回私聊消息
|
|
||||||
export const recallPrivateMessage = (id: number | string) => {
|
|
||||||
return request.delete<ImPrivateMessageRespVO>({
|
|
||||||
url: '/im/message/private/recall',
|
|
||||||
params: { id }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 创建新通话请求 VO
|
|
||||||
export interface ImRtcCallCreateReqVO {
|
|
||||||
conversationType: number
|
|
||||||
mediaType: number
|
|
||||||
groupId?: number
|
|
||||||
inviteeIds: number[] // 被邀请的用户编号集合;私聊必传 1 个对端,群聊必传至少 1 人
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通话中追加邀请请求 VO;仅群通话可用
|
|
||||||
export interface ImRtcCallInviteReqVO {
|
|
||||||
room: string
|
|
||||||
inviteeIds: number[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通话会话 VO;create / join / accept / refreshToken 共用
|
|
||||||
export interface ImRtcCallRespVO {
|
|
||||||
room: string // 业务通话编号(同时作为 LiveKit 房间名)
|
|
||||||
livekitUrl: string
|
|
||||||
token?: string // ENDED 状态时为 null(无需 connect LiveKit)
|
|
||||||
conversationType: number
|
|
||||||
mediaType: number
|
|
||||||
status: number
|
|
||||||
endReason?: number // 结束原因;仅 status=ENDED 时有值
|
|
||||||
inviterId: number
|
|
||||||
groupId?: number
|
|
||||||
inviteeIds?: number[]
|
|
||||||
joinedUserIds?: number[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 群活跃通话查询响应;不含 token
|
|
||||||
export interface ImRtcGroupCallRespVO {
|
|
||||||
room: string
|
|
||||||
groupId: number
|
|
||||||
mediaType: number
|
|
||||||
inviterId: number
|
|
||||||
joinedUserIds?: number[]
|
|
||||||
inviteeIds?: number[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建新通话;私聊或群聊根据 conversationType 区分
|
|
||||||
export const createCall = (data: ImRtcCallCreateReqVO) => {
|
|
||||||
return request.post<ImRtcCallRespVO>({ url: '/im/rtc/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通话中追加邀请;仅群通话可用
|
|
||||||
export const inviteCall = (data: ImRtcCallInviteReqVO) => {
|
|
||||||
return request.post<boolean>({ url: '/im/rtc/invite', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 加入已有群通话;用于胶囊条「加入」按钮
|
|
||||||
export const joinCall = (room: string) => {
|
|
||||||
return request.post<ImRtcCallRespVO>({ url: '/im/rtc/join', params: { room } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 接听通话
|
|
||||||
export const acceptCall = (room: string) => {
|
|
||||||
return request.post<ImRtcCallRespVO>({ url: '/im/rtc/accept', params: { room } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拒绝通话
|
|
||||||
export const rejectCall = (room: string) => {
|
|
||||||
return request.post<boolean>({ url: '/im/rtc/reject', params: { room } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 取消邀请;主叫接通前调用
|
|
||||||
export const cancelCall = (room: string) => {
|
|
||||||
return request.post<boolean>({ url: '/im/rtc/cancel', params: { room } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 离开通话;接通后调用
|
|
||||||
export const leaveCall = (room: string) => {
|
|
||||||
return request.post<boolean>({ url: '/im/rtc/leave', params: { room } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 振铃超时检查;RUNNING 端 timer 兜底,触发后端立即扫描该 room 的超时 INVITING(接口静默)
|
|
||||||
export const noAnswerCallCheck = (room: string) => {
|
|
||||||
return request.post<boolean>({ url: '/im/rtc/no-answer-call-check', params: { room } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询当前进行中的通话;目前仅群聊场景(胶囊条),返回 null 表示无活跃通话
|
|
||||||
export const getActiveCall = (groupId: number) => {
|
|
||||||
return request.get<ImRtcGroupCallRespVO | null>({
|
|
||||||
url: '/im/rtc/get-active-call',
|
|
||||||
params: { groupId }
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -20,45 +20,6 @@ export type CodegenTableVO = {
|
||||||
parentMenuId: number
|
parentMenuId: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CodegenTableSaveReqVO = CodegenTableVO & {
|
|
||||||
frontType?: number | null
|
|
||||||
genPath?: string
|
|
||||||
genType?: string
|
|
||||||
masterTableId?: number
|
|
||||||
subJoinColumnId?: number
|
|
||||||
subJoinMany?: boolean
|
|
||||||
treeParentColumnId?: number
|
|
||||||
treeNameColumnId?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createEmptyCodegenTableSaveReqVO = (): CodegenTableSaveReqVO => ({
|
|
||||||
id: 0,
|
|
||||||
tableId: 0,
|
|
||||||
isParentMenuIdValid: false,
|
|
||||||
dataSourceConfigId: 0,
|
|
||||||
scene: 0,
|
|
||||||
tableName: '',
|
|
||||||
tableComment: '',
|
|
||||||
remark: '',
|
|
||||||
moduleName: '',
|
|
||||||
businessName: '',
|
|
||||||
className: '',
|
|
||||||
classComment: '',
|
|
||||||
author: '',
|
|
||||||
createTime: new Date(),
|
|
||||||
updateTime: new Date(),
|
|
||||||
templateType: 0,
|
|
||||||
parentMenuId: 0,
|
|
||||||
frontType: null,
|
|
||||||
genPath: '',
|
|
||||||
genType: '',
|
|
||||||
masterTableId: undefined,
|
|
||||||
subJoinColumnId: undefined,
|
|
||||||
subJoinMany: undefined,
|
|
||||||
treeParentColumnId: undefined,
|
|
||||||
treeNameColumnId: undefined
|
|
||||||
})
|
|
||||||
|
|
||||||
export type CodegenColumnVO = {
|
export type CodegenColumnVO = {
|
||||||
id: number
|
id: number
|
||||||
tableId: number
|
tableId: number
|
||||||
|
|
@ -91,7 +52,7 @@ export type CodegenPreviewVO = {
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CodegenUpdateReqVO = {
|
export type CodegenUpdateReqVO = {
|
||||||
table: CodegenTableSaveReqVO
|
table: CodegenTableVO | any
|
||||||
columns: CodegenColumnVO[]
|
columns: CodegenColumnVO[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -107,7 +68,7 @@ export const getCodegenTablePage = (params: PageParam) => {
|
||||||
|
|
||||||
// 查询详情代码生成表定义
|
// 查询详情代码生成表定义
|
||||||
export const getCodegenTable = (id: number) => {
|
export const getCodegenTable = (id: number) => {
|
||||||
return request.get<CodegenUpdateReqVO>({ url: '/infra/codegen/detail?tableId=' + id })
|
return request.get({ url: '/infra/codegen/detail?tableId=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改代码生成表定义
|
// 修改代码生成表定义
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,7 @@ export const deleteDataSourceConfig = (id: number) => {
|
||||||
|
|
||||||
// 批量删除数据源配置
|
// 批量删除数据源配置
|
||||||
export const deleteDataSourceConfigList = (ids: number[]) => {
|
export const deleteDataSourceConfigList = (ids: number[]) => {
|
||||||
return request.delete({
|
return request.delete({ url: '/infra/data-source-config/delete-list', params: { ids: ids.join(',') } })
|
||||||
url: '/infra/data-source-config/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询数据源配置详情
|
// 查询数据源配置详情
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ export interface Demo02CategoryVO {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询示例分类列表
|
// 查询示例分类列表
|
||||||
export const getDemo02CategoryList = async (params?: any) => {
|
export const getDemo02CategoryList = async () => {
|
||||||
return await request.get({ url: `/infra/demo02-category/list`, params })
|
return await request.get({ url: `/infra/demo02-category/list` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询示例分类详情
|
// 查询示例分类详情
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,29 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import type { Dayjs } from 'dayjs';
|
||||||
|
|
||||||
/** 学生课程信息 */
|
/** 学生课程信息 */
|
||||||
export interface Demo03Course {
|
export interface Demo03Course {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
studentId?: number // 学生编号
|
studentId?: number; // 学生编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
score?: number // 分数
|
score?: number; // 分数
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 学生班级信息 */
|
/** 学生班级信息 */
|
||||||
export interface Demo03Grade {
|
export interface Demo03Grade {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
studentId?: number // 学生编号
|
studentId?: number; // 学生编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
teacher?: string // 班主任
|
teacher?: string; // 班主任
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 学生信息 */
|
/** 学生信息 */
|
||||||
export interface Demo03Student {
|
export interface Demo03Student {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
sex?: number // 性别
|
sex?: number; // 性别
|
||||||
birthday?: string | number // 出生日期
|
birthday?: string | Dayjs; // 出生日期
|
||||||
description?: string // 简介
|
description?: string; // 简介
|
||||||
}
|
}
|
||||||
|
|
||||||
// 学生 API
|
// 学生 API
|
||||||
|
|
@ -54,9 +55,7 @@ export const Demo03StudentApi = {
|
||||||
|
|
||||||
/** 批量删除学生 */
|
/** 批量删除学生 */
|
||||||
deleteDemo03StudentList: async (ids: number[]) => {
|
deleteDemo03StudentList: async (ids: number[]) => {
|
||||||
return await request.delete({
|
return await request.delete({ url: `/infra/demo03-student-erp/delete-list?ids=${ids.join(',')}` })
|
||||||
url: `/infra/demo03-student-erp/delete-list?ids=${ids.join(',')}`
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出学生 Excel
|
// 导出学生 Excel
|
||||||
|
|
@ -64,7 +63,7 @@ export const Demo03StudentApi = {
|
||||||
return await request.download({ url: `/infra/demo03-student-erp/export-excel`, params })
|
return await request.download({ url: `/infra/demo03-student-erp/export-excel`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(学生课程) ====================
|
// ==================== 子表(学生课程) ====================
|
||||||
|
|
||||||
// 获得学生课程分页
|
// 获得学生课程分页
|
||||||
getDemo03CoursePage: async (params) => {
|
getDemo03CoursePage: async (params) => {
|
||||||
|
|
@ -87,9 +86,7 @@ export const Demo03StudentApi = {
|
||||||
|
|
||||||
/** 批量删除学生课程 */
|
/** 批量删除学生课程 */
|
||||||
deleteDemo03CourseList: async (ids: number[]) => {
|
deleteDemo03CourseList: async (ids: number[]) => {
|
||||||
return await request.delete({
|
return await request.delete({ url: `/infra/demo03-student-erp/demo03-course/delete-list?ids=${ids.join(',')}` })
|
||||||
url: `/infra/demo03-student-erp/demo03-course/delete-list?ids=${ids.join(',')}`
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获得学生课程
|
// 获得学生课程
|
||||||
|
|
@ -97,7 +94,7 @@ export const Demo03StudentApi = {
|
||||||
return await request.get({ url: `/infra/demo03-student-erp/demo03-course/get?id=` + id })
|
return await request.get({ url: `/infra/demo03-student-erp/demo03-course/get?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(学生班级) ====================
|
// ==================== 子表(学生班级) ====================
|
||||||
|
|
||||||
// 获得学生班级分页
|
// 获得学生班级分页
|
||||||
getDemo03GradePage: async (params) => {
|
getDemo03GradePage: async (params) => {
|
||||||
|
|
@ -120,13 +117,11 @@ export const Demo03StudentApi = {
|
||||||
|
|
||||||
/** 批量删除学生班级 */
|
/** 批量删除学生班级 */
|
||||||
deleteDemo03GradeList: async (ids: number[]) => {
|
deleteDemo03GradeList: async (ids: number[]) => {
|
||||||
return await request.delete({
|
return await request.delete({ url: `/infra/demo03-student-erp/demo03-grade/delete-list?ids=${ids.join(',')}` })
|
||||||
url: `/infra/demo03-student-erp/demo03-grade/delete-list?ids=${ids.join(',')}`
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获得学生班级
|
// 获得学生班级
|
||||||
getDemo03Grade: async (id: number) => {
|
getDemo03Grade: async (id: number) => {
|
||||||
return await request.get({ url: `/infra/demo03-student-erp/demo03-grade/get?id=` + id })
|
return await request.get({ url: `/infra/demo03-student-erp/demo03-grade/get?id=` + id })
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,29 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import type { Dayjs } from 'dayjs';
|
||||||
|
|
||||||
/** 学生课程信息 */
|
/** 学生课程信息 */
|
||||||
export interface Demo03Course {
|
export interface Demo03Course {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
studentId?: number // 学生编号
|
studentId?: number; // 学生编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
score?: number // 分数
|
score?: number; // 分数
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 学生班级信息 */
|
/** 学生班级信息 */
|
||||||
export interface Demo03Grade {
|
export interface Demo03Grade {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
studentId?: number // 学生编号
|
studentId?: number; // 学生编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
teacher?: string // 班主任
|
teacher?: string; // 班主任
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 学生信息 */
|
/** 学生信息 */
|
||||||
export interface Demo03Student {
|
export interface Demo03Student {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
sex?: number // 性别
|
sex?: number; // 性别
|
||||||
birthday?: string | number // 出生日期
|
birthday?: string | Dayjs; // 出生日期
|
||||||
description?: string // 简介
|
description?: string; // 简介
|
||||||
demo03courses?: Demo03Course[]
|
demo03courses?: Demo03Course[]
|
||||||
demo03grade?: Demo03Grade
|
demo03grade?: Demo03Grade
|
||||||
}
|
}
|
||||||
|
|
@ -56,9 +57,7 @@ export const Demo03StudentApi = {
|
||||||
|
|
||||||
/** 批量删除学生 */
|
/** 批量删除学生 */
|
||||||
deleteDemo03StudentList: async (ids: number[]) => {
|
deleteDemo03StudentList: async (ids: number[]) => {
|
||||||
return await request.delete({
|
return await request.delete({ url: `/infra/demo03-student-inner/delete-list?ids=${ids.join(',')}` })
|
||||||
url: `/infra/demo03-student-inner/delete-list?ids=${ids.join(',')}`
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出学生 Excel
|
// 导出学生 Excel
|
||||||
|
|
@ -66,21 +65,17 @@ export const Demo03StudentApi = {
|
||||||
return await request.download({ url: `/infra/demo03-student-inner/export-excel`, params })
|
return await request.download({ url: `/infra/demo03-student-inner/export-excel`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(学生课程) ====================
|
// ==================== 子表(学生课程) ====================
|
||||||
|
|
||||||
// 获得学生课程列表
|
// 获得学生课程列表
|
||||||
getDemo03CourseListByStudentId: async (studentId) => {
|
getDemo03CourseListByStudentId: async (studentId) => {
|
||||||
return await request.get({
|
return await request.get({ url: `/infra/demo03-student-inner/demo03-course/list-by-student-id?studentId=` + studentId })
|
||||||
url: `/infra/demo03-student-inner/demo03-course/list-by-student-id?studentId=` + studentId
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(学生班级) ====================
|
// ==================== 子表(学生班级) ====================
|
||||||
|
|
||||||
// 获得学生班级
|
// 获得学生班级
|
||||||
getDemo03GradeByStudentId: async (studentId) => {
|
getDemo03GradeByStudentId: async (studentId) => {
|
||||||
return await request.get({
|
return await request.get({ url: `/infra/demo03-student-inner/demo03-grade/get-by-student-id?studentId=` + studentId })
|
||||||
url: `/infra/demo03-student-inner/demo03-grade/get-by-student-id?studentId=` + studentId
|
},
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,29 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
import type { Dayjs } from 'dayjs';
|
||||||
|
|
||||||
/** 学生课程信息 */
|
/** 学生课程信息 */
|
||||||
export interface Demo03Course {
|
export interface Demo03Course {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
studentId?: number // 学生编号
|
studentId?: number; // 学生编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
score?: number // 分数
|
score?: number; // 分数
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 学生班级信息 */
|
/** 学生班级信息 */
|
||||||
export interface Demo03Grade {
|
export interface Demo03Grade {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
studentId?: number // 学生编号
|
studentId?: number; // 学生编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
teacher?: string // 班主任
|
teacher?: string; // 班主任
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 学生信息 */
|
/** 学生信息 */
|
||||||
export interface Demo03Student {
|
export interface Demo03Student {
|
||||||
id?: number // 编号
|
id: number; // 编号
|
||||||
name?: string // 名字
|
name?: string; // 名字
|
||||||
sex?: number // 性别
|
sex?: number; // 性别
|
||||||
birthday?: string | number // 出生日期
|
birthday?: string | Dayjs; // 出生日期
|
||||||
description?: string // 简介
|
description?: string; // 简介
|
||||||
demo03courses?: Demo03Course[]
|
demo03courses?: Demo03Course[]
|
||||||
demo03grade?: Demo03Grade
|
demo03grade?: Demo03Grade
|
||||||
}
|
}
|
||||||
|
|
@ -56,9 +57,7 @@ export const Demo03StudentApi = {
|
||||||
|
|
||||||
/** 批量删除学生 */
|
/** 批量删除学生 */
|
||||||
deleteDemo03StudentList: async (ids: number[]) => {
|
deleteDemo03StudentList: async (ids: number[]) => {
|
||||||
return await request.delete({
|
return await request.delete({ url: `/infra/demo03-student-normal/delete-list?ids=${ids.join(',')}` })
|
||||||
url: `/infra/demo03-student-normal/delete-list?ids=${ids.join(',')}`
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出学生 Excel
|
// 导出学生 Excel
|
||||||
|
|
@ -66,21 +65,17 @@ export const Demo03StudentApi = {
|
||||||
return await request.download({ url: `/infra/demo03-student-normal/export-excel`, params })
|
return await request.download({ url: `/infra/demo03-student-normal/export-excel`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(学生课程) ====================
|
// ==================== 子表(学生课程) ====================
|
||||||
|
|
||||||
// 获得学生课程列表
|
// 获得学生课程列表
|
||||||
getDemo03CourseListByStudentId: async (studentId) => {
|
getDemo03CourseListByStudentId: async (studentId) => {
|
||||||
return await request.get({
|
return await request.get({ url: `/infra/demo03-student-normal/demo03-course/list-by-student-id?studentId=` + studentId })
|
||||||
url: `/infra/demo03-student-normal/demo03-course/list-by-student-id?studentId=` + studentId
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// ==================== 子表(学生班级) ====================
|
// ==================== 子表(学生班级) ====================
|
||||||
|
|
||||||
// 获得学生班级
|
// 获得学生班级
|
||||||
getDemo03GradeByStudentId: async (studentId) => {
|
getDemo03GradeByStudentId: async (studentId) => {
|
||||||
return await request.get({
|
return await request.get({ url: `/infra/demo03-student-normal/demo03-grade/get-by-student-id?studentId=` + studentId })
|
||||||
url: `/infra/demo03-student-normal/demo03-grade/get-by-student-id?studentId=` + studentId
|
},
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,3 @@ export const runJob = (id: number) => {
|
||||||
export const getJobNextTimes = (id: number) => {
|
export const getJobNextTimes = (id: number) => {
|
||||||
return request.get({ url: '/infra/job/get_next_times?id=' + id })
|
return request.get({ url: '/infra/job/get_next_times?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 同步定时任务到 Quartz
|
|
||||||
export const syncJob = () => {
|
|
||||||
return request.post({ url: '/infra/job/sync' })
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ export interface OtaTask {
|
||||||
name: string // 任务名称
|
name: string // 任务名称
|
||||||
description?: string // 任务描述
|
description?: string // 任务描述
|
||||||
firmwareId?: number // 固件编号
|
firmwareId?: number // 固件编号
|
||||||
status?: number // 任务状态
|
status: number // 任务状态
|
||||||
deviceScope: number // 升级范围
|
deviceScope?: number // 升级范围
|
||||||
deviceIds?: number[] // 指定设备ID列表(当升级范围为指定设备时使用)
|
deviceIds?: number[] // 指定设备ID列表(当升级范围为指定设备时使用)
|
||||||
deviceTotalCount?: number // 设备总共数量
|
deviceTotalCount?: number // 设备总共数量
|
||||||
deviceSuccessCount?: number // 设备成功数量
|
deviceSuccessCount?: number // 设备成功数量
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ export interface IotSceneRule {
|
||||||
id?: number // 场景编号
|
id?: number // 场景编号
|
||||||
name: string // 场景名称
|
name: string // 场景名称
|
||||||
description?: string // 场景描述
|
description?: string // 场景描述
|
||||||
lastTriggerTime?: string // 最近触发时间
|
|
||||||
status: number // 场景状态:0-开启,1-关闭
|
status: number // 场景状态:0-开启,1-关闭
|
||||||
triggers: Trigger[] // 触发器数组
|
triggers: Trigger[] // 触发器数组
|
||||||
actions: Action[] // 执行器数组
|
actions: Action[] // 执行器数组
|
||||||
|
|
|
||||||
|
|
@ -18,35 +18,47 @@ export interface ThingModelData {
|
||||||
service?: ThingModelService // 服务
|
service?: ThingModelService // 服务
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ThingModelProperty 类型
|
||||||
|
*/
|
||||||
|
export interface ThingModelProperty {
|
||||||
|
[key: string]: any
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ThingModelEvent 类型
|
||||||
|
*/
|
||||||
|
export interface ThingModelEvent {
|
||||||
|
[key: string]: any
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ThingModelService 类型
|
||||||
|
*/
|
||||||
|
export interface ThingModelService {
|
||||||
|
[key: string]: any
|
||||||
|
}
|
||||||
|
|
||||||
/** dataSpecs 数值型数据结构 */
|
/** dataSpecs 数值型数据结构 */
|
||||||
export interface DataSpecsNumberData {
|
export interface DataSpecsNumberData {
|
||||||
dataType: string // 数据类型,取值为 INT、FLOAT 或 DOUBLE
|
dataType: 'int' | 'float' | 'double' // 数据类型,取值为 INT、FLOAT 或 DOUBLE
|
||||||
max?: string // 最大值,必须与 dataType 设置一致,且为 STRING 类型
|
max: string // 最大值,必须与 dataType 设置一致,且为 STRING 类型
|
||||||
min?: string // 最小值,必须与 dataType 设置一致,且为 STRING 类型
|
min: string // 最小值,必须与 dataType 设置一致,且为 STRING 类型
|
||||||
step?: string // 步长,必须与 dataType 设置一致,且为 STRING 类型
|
step: string // 步长,必须与 dataType 设置一致,且为 STRING 类型
|
||||||
precise?: string // 精度,当 dataType 为 FLOAT 或 DOUBLE 时可选
|
precise?: string // 精度,当 dataType 为 FLOAT 或 DOUBLE 时可选
|
||||||
defaultValue?: string // 默认值,可选
|
defaultValue?: string // 默认值,可选
|
||||||
unit?: string // 单位的符号
|
unit: string // 单位的符号
|
||||||
unitName?: string // 单位的名称
|
unitName: string // 单位的名称
|
||||||
}
|
}
|
||||||
|
|
||||||
/** dataSpecs 枚举型数据结构 */
|
/** dataSpecs 枚举型数据结构 */
|
||||||
export interface DataSpecsEnumOrBoolData {
|
export interface DataSpecsEnumOrBoolData {
|
||||||
dataType: string
|
dataType: 'enum' | 'bool'
|
||||||
defaultValue?: string // 默认值,可选
|
defaultValue?: string // 默认值,可选
|
||||||
name: string // 枚举项的名称
|
name: string // 枚举项的名称
|
||||||
value: number | undefined // 枚举值
|
value: number | undefined // 枚举值
|
||||||
}
|
}
|
||||||
|
|
||||||
/** dataSpecs 通用数据结构 */
|
|
||||||
export type ThingModelDataSpecs =
|
|
||||||
| DataSpecsNumberData
|
|
||||||
| DataSpecsEnumOrBoolData
|
|
||||||
| ThingModelDateOrTextDataSpecs
|
|
||||||
| ThingModelArrayDataSpecs
|
|
||||||
| ThingModelStructDataSpecs
|
|
||||||
| Record<string, any>
|
|
||||||
|
|
||||||
/** 物模型TSL响应数据结构 */
|
/** 物模型TSL响应数据结构 */
|
||||||
export interface IotThingModelTSLResp {
|
export interface IotThingModelTSLResp {
|
||||||
productId: number
|
productId: number
|
||||||
|
|
@ -64,9 +76,8 @@ export interface ThingModelProperty {
|
||||||
required?: boolean
|
required?: boolean
|
||||||
dataType: string
|
dataType: string
|
||||||
description?: string
|
description?: string
|
||||||
dataSpecs?: ThingModelDataSpecs
|
dataSpecs?: ThingModelProperty
|
||||||
dataSpecsList?: ThingModelPropertyDataSpecs[]
|
dataSpecsList?: ThingModelProperty[]
|
||||||
value?: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 物模型事件 */
|
/** 物模型事件 */
|
||||||
|
|
@ -99,8 +110,8 @@ export interface ThingModelParam {
|
||||||
direction: string
|
direction: string
|
||||||
paraOrder?: number
|
paraOrder?: number
|
||||||
dataType: string
|
dataType: string
|
||||||
dataSpecs?: ThingModelDataSpecs
|
dataSpecs?: ThingModelProperty
|
||||||
dataSpecsList?: ThingModelPropertyDataSpecs[]
|
dataSpecsList?: ThingModelProperty[]
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 数值型数据规范 */
|
/** 数值型数据规范 */
|
||||||
|
|
@ -131,26 +142,24 @@ export interface ThingModelDateOrTextDataSpecs {
|
||||||
|
|
||||||
/** 数组型数据规范 */
|
/** 数组型数据规范 */
|
||||||
export interface ThingModelArrayDataSpecs {
|
export interface ThingModelArrayDataSpecs {
|
||||||
dataType: string
|
dataType: 'array'
|
||||||
size?: number
|
size: number
|
||||||
childDataType?: string
|
childDataType: string
|
||||||
dataSpecsList?: ThingModelPropertyDataSpecs[]
|
dataSpecsList?: ThingModelProperty[]
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 结构体型数据规范 */
|
/** 结构体型数据规范 */
|
||||||
export interface ThingModelStructDataSpecs {
|
export interface ThingModelStructDataSpecs {
|
||||||
dataType: string
|
dataType: 'struct'
|
||||||
identifier?: string
|
identifier: string
|
||||||
name?: string
|
name: string
|
||||||
accessMode?: string
|
accessMode: string
|
||||||
required?: boolean
|
required?: boolean
|
||||||
childDataType?: string
|
childDataType: string
|
||||||
dataSpecs?: ThingModelDataSpecs
|
dataSpecs?: ThingModelProperty
|
||||||
dataSpecsList?: ThingModelPropertyDataSpecs[]
|
dataSpecsList?: ThingModelProperty[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ThingModelPropertyDataSpecs = ThingModelProperty | DataSpecsEnumOrBoolData
|
|
||||||
|
|
||||||
// IoT 产品物模型 API
|
// IoT 产品物模型 API
|
||||||
export const ThingModelApi = {
|
export const ThingModelApi = {
|
||||||
// 查询产品物模型分页
|
// 查询产品物模型分页
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,11 @@ import request from '@/config/axios'
|
||||||
|
|
||||||
export interface Favorite {
|
export interface Favorite {
|
||||||
id?: number
|
id?: number
|
||||||
userId?: number // 用户编号
|
userId?: string // 用户编号
|
||||||
spuId?: number | null // 商品 SPU 编号
|
spuId?: number | null // 商品 SPU 编号
|
||||||
name?: string
|
|
||||||
picUrl?: string
|
|
||||||
price?: number
|
|
||||||
salesCount?: number
|
|
||||||
createTime?: Date
|
|
||||||
status?: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得 ProductFavorite 列表
|
// 获得 ProductFavorite 列表
|
||||||
export const getFavoritePage = (params: PageParam) => {
|
export const getFavoritePage = (params: PageParam) => {
|
||||||
return request.get<PageResult<Favorite[]>>({ url: '/product/favorite/page', params })
|
return request.get({ url: '/product/favorite/page', params })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,9 +65,9 @@ export const getSpuPage = (params: PageParam) => {
|
||||||
return request.get({ url: '/product/spu/page', params })
|
return request.get({ url: '/product/spu/page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得 Spu 列表 tabsCount(支持按 name/categoryId/createTime 筛选)
|
// 获得 Spu 列表 tabsCount
|
||||||
export const getTabsCount = (params?: any) => {
|
export const getTabsCount = () => {
|
||||||
return request.get({ url: '/product/spu/get-count', params })
|
return request.get({ url: '/product/spu/get-count' })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建商品 Spu
|
// 创建商品 Spu
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@ export interface CombinationActivityVO {
|
||||||
id?: number
|
id?: number
|
||||||
name?: string
|
name?: string
|
||||||
spuId?: number
|
spuId?: number
|
||||||
spuName?: string
|
|
||||||
picUrl?: string
|
|
||||||
totalLimitCount?: number
|
totalLimitCount?: number
|
||||||
singleLimitCount?: number
|
singleLimitCount?: number
|
||||||
startTime?: Date
|
startTime?: Date
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@ export interface RewardActivityVO {
|
||||||
conditionType?: number
|
conditionType?: number
|
||||||
productScope?: number
|
productScope?: number
|
||||||
rules: RewardRule[]
|
rules: RewardRule[]
|
||||||
productScopeValues: number[] // 商品范围:值为品类编号列表、商品编号列表
|
|
||||||
// 如下仅用于表单,不提交
|
// 如下仅用于表单,不提交
|
||||||
productCategoryIds: number[]
|
productScopeValues?: number[] // 商品范围:值为品类编号列表、商品编号列表
|
||||||
productSpuIds: number[]
|
productCategoryIds?: number[]
|
||||||
|
productSpuIds?: number[]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 优惠规则
|
// 优惠规则
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ export interface SeckillActivityVO {
|
||||||
id?: number
|
id?: number
|
||||||
spuId?: number
|
spuId?: number
|
||||||
name?: string
|
name?: string
|
||||||
picUrl?: string
|
|
||||||
status?: number
|
status?: number
|
||||||
remark?: string
|
remark?: string
|
||||||
startTime?: Date
|
startTime?: Date
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,5 @@ export const getOrderCountTrendComparison = (
|
||||||
|
|
||||||
/** 时间参数需要格式化, 确保接口能识别 */
|
/** 时间参数需要格式化, 确保接口能识别 */
|
||||||
const formatDateParam = (params: TradeTrendReqVO) => {
|
const formatDateParam = (params: TradeTrendReqVO) => {
|
||||||
return {
|
return { times: [formatDate(params.times[0]), formatDate(params.times[1])] } as TradeTrendReqVO
|
||||||
times: [formatDate(params.times[0]), formatDate(params.times[1])]
|
|
||||||
} as TradeTrendReqVO
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import type { OrderItemRespVO, OrderVO } from '@/api/mall/trade/order'
|
|
||||||
|
|
||||||
export interface TradeAfterSaleVO {
|
export interface TradeAfterSaleVO {
|
||||||
id?: number | null // 售后编号,主键自增
|
id?: number | null // 售后编号,主键自增
|
||||||
|
|
@ -33,21 +32,6 @@ export interface TradeAfterSaleVO {
|
||||||
receiveReason?: string // 收货备注
|
receiveReason?: string // 收货备注
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface TradeAfterSaleDetailVO extends TradeAfterSaleVO {
|
|
||||||
order: OrderVO
|
|
||||||
orderItem?: OrderItemRespVO
|
|
||||||
user?: {
|
|
||||||
id?: number
|
|
||||||
nickname?: string
|
|
||||||
}
|
|
||||||
logs: Array<{
|
|
||||||
id?: number
|
|
||||||
createTime?: Date
|
|
||||||
content?: string
|
|
||||||
userType?: number
|
|
||||||
}>
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ProductPropertiesVO {
|
export interface ProductPropertiesVO {
|
||||||
propertyId?: number | null // 属性的编号
|
propertyId?: number | null // 属性的编号
|
||||||
propertyName?: string // 属性的名称
|
propertyName?: string // 属性的名称
|
||||||
|
|
@ -57,15 +41,12 @@ export interface ProductPropertiesVO {
|
||||||
|
|
||||||
// 获得交易售后分页
|
// 获得交易售后分页
|
||||||
export const getAfterSalePage = async (params) => {
|
export const getAfterSalePage = async (params) => {
|
||||||
return await request.get<PageResult<TradeAfterSaleVO[]>>({
|
return await request.get({ url: `/trade/after-sale/page`, params })
|
||||||
url: `/trade/after-sale/page`,
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得交易售后详情
|
// 获得交易售后详情
|
||||||
export const getAfterSale = async (id: any) => {
|
export const getAfterSale = async (id: any) => {
|
||||||
return await request.get<TradeAfterSaleDetailVO>({ url: `/trade/after-sale/get-detail?id=${id}` })
|
return await request.get({ url: `/trade/after-sale/get-detail?id=${id}` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 同意售后
|
// 同意售后
|
||||||
|
|
|
||||||
|
|
@ -20,15 +20,12 @@ export const createBrokerageUser = (data: any) => {
|
||||||
|
|
||||||
// 查询分销用户列表
|
// 查询分销用户列表
|
||||||
export const getBrokerageUserPage = async (params: any) => {
|
export const getBrokerageUserPage = async (params: any) => {
|
||||||
return await request.get<PageResult<BrokerageUserVO[]>>({
|
return await request.get({ url: `/trade/brokerage-user/page`, params })
|
||||||
url: `/trade/brokerage-user/page`,
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询分销用户详情
|
// 查询分销用户详情
|
||||||
export const getBrokerageUser = async (id: number) => {
|
export const getBrokerageUser = async (id: number) => {
|
||||||
return await request.get<BrokerageUserVO>({ url: `/trade/brokerage-user/get?id=` + id })
|
return await request.get({ url: `/trade/brokerage-user/get?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改推广员
|
// 修改推广员
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,20 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface ConfigVO {
|
export interface ConfigVO {
|
||||||
id?: number | null
|
|
||||||
afterSaleRefundReasons: string[]
|
|
||||||
afterSaleReturnReasons: string[]
|
|
||||||
deliveryExpressFreeEnabled: boolean
|
|
||||||
deliveryExpressFreePrice: number
|
|
||||||
deliveryPickUpEnabled: boolean
|
|
||||||
brokerageEnabled: boolean
|
brokerageEnabled: boolean
|
||||||
brokerageEnabledCondition?: number
|
brokerageEnabledCondition: number
|
||||||
brokerageBindMode?: number
|
brokerageBindMode: number
|
||||||
brokeragePosterUrls: string[]
|
brokeragePosterUrls: string
|
||||||
brokerageFirstPercent: number
|
brokerageFirstPercent: number
|
||||||
brokerageSecondPercent: number
|
brokerageSecondPercent: number
|
||||||
brokerageWithdrawMinPrice: number
|
brokerageWithdrawMinPrice: number
|
||||||
brokerageWithdrawFeePercent: number
|
|
||||||
brokerageFrozenDays: number
|
brokerageFrozenDays: number
|
||||||
brokerageWithdrawTypes: number[]
|
brokerageWithdrawTypes: string
|
||||||
tencentLbsKey?: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询交易中心配置详情
|
// 查询交易中心配置详情
|
||||||
export const getTradeConfig = async () => {
|
export const getTradeConfig = async () => {
|
||||||
return await request.get<ConfigVO>({ url: `/trade/config/get` })
|
return await request.get({ url: `/trade/config/get` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存交易中心配置
|
// 保存交易中心配置
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface DeliveryExpressVO {
|
export interface DeliveryExpressVO {
|
||||||
id?: number
|
id: number
|
||||||
code: string
|
code: string
|
||||||
name: string
|
name: string
|
||||||
logo: string
|
logo: string
|
||||||
|
|
@ -11,20 +11,17 @@ export interface DeliveryExpressVO {
|
||||||
|
|
||||||
// 查询快递公司列表
|
// 查询快递公司列表
|
||||||
export const getDeliveryExpressPage = async (params: PageParam) => {
|
export const getDeliveryExpressPage = async (params: PageParam) => {
|
||||||
return await request.get<PageResult<DeliveryExpressVO[]>>({
|
return await request.get({ url: '/trade/delivery/express/page', params })
|
||||||
url: '/trade/delivery/express/page',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询快递公司详情
|
// 查询快递公司详情
|
||||||
export const getDeliveryExpress = async (id: number) => {
|
export const getDeliveryExpress = async (id: number) => {
|
||||||
return await request.get<DeliveryExpressVO>({ url: '/trade/delivery/express/get?id=' + id })
|
return await request.get({ url: '/trade/delivery/express/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得快递公司精简信息列表
|
// 获得快递公司精简信息列表
|
||||||
export const getSimpleDeliveryExpressList = () => {
|
export const getSimpleDeliveryExpressList = () => {
|
||||||
return request.get<DeliveryExpressVO[]>({ url: '/trade/delivery/express/list-all-simple' })
|
return request.get({ url: '/trade/delivery/express/list-all-simple' })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增快递公司
|
// 新增快递公司
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface DeliveryExpressTemplateVO {
|
export interface DeliveryExpressTemplateVO {
|
||||||
id?: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
chargeMode: number
|
chargeMode: number
|
||||||
sort: number
|
sort: number
|
||||||
charges: ExpressTemplateChargeVO[]
|
templateCharge: ExpressTemplateChargeVO[]
|
||||||
frees: ExpressTemplateFreeVO[]
|
templateFree: ExpressTemplateFreeVO[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export declare type ExpressTemplateChargeVO = {
|
export declare type ExpressTemplateChargeVO = {
|
||||||
|
|
@ -25,24 +25,17 @@ export declare type ExpressTemplateFreeVO = {
|
||||||
|
|
||||||
// 查询快递运费模板列表
|
// 查询快递运费模板列表
|
||||||
export const getDeliveryExpressTemplatePage = async (params: PageParam) => {
|
export const getDeliveryExpressTemplatePage = async (params: PageParam) => {
|
||||||
return await request.get<PageResult<DeliveryExpressTemplateVO[]>>({
|
return await request.get({ url: '/trade/delivery/express-template/page', params })
|
||||||
url: '/trade/delivery/express-template/page',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询快递运费模板详情
|
// 查询快递运费模板详情
|
||||||
export const getDeliveryExpressTemplate = async (id: number) => {
|
export const getDeliveryExpressTemplate = async (id: number) => {
|
||||||
return await request.get<DeliveryExpressTemplateVO>({
|
return await request.get({ url: '/trade/delivery/express-template/get?id=' + id })
|
||||||
url: '/trade/delivery/express-template/get?id=' + id
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询快递运费模板详情
|
// 查询快递运费模板详情
|
||||||
export const getSimpleTemplateList = async () => {
|
export const getSimpleTemplateList = async () => {
|
||||||
return await request.get<DeliveryExpressTemplateVO[]>({
|
return await request.get({ url: '/trade/delivery/express-template/list-all-simple' })
|
||||||
url: '/trade/delivery/express-template/list-all-simple'
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增快递运费模板
|
// 新增快递运费模板
|
||||||
|
|
|
||||||
|
|
@ -1,48 +1,34 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
import type { UserVO } from '@/api/system/user'
|
|
||||||
|
|
||||||
export interface DeliveryPickUpStoreVO {
|
export interface DeliveryPickUpStoreVO {
|
||||||
id?: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
introduction: string
|
introduction: string
|
||||||
phone: string
|
phone: string
|
||||||
areaId?: number
|
areaId: number
|
||||||
detailAddress: string
|
detailAddress: string
|
||||||
logo: string
|
logo: string
|
||||||
openingTime?: string
|
openingTime: string
|
||||||
closingTime?: string
|
closingTime: string
|
||||||
latitude?: number
|
latitude: number
|
||||||
longitude?: number
|
longitude: number
|
||||||
status: number
|
status: number
|
||||||
verifyUserIds?: number[] // 绑定用户编号组数
|
verifyUserIds: number[] // 绑定用户编号组数
|
||||||
verifyUsers?: UserVO[] // 绑定用户列表
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DeliveryPickUpStoreBindReqVO {
|
|
||||||
id: number
|
|
||||||
verifyUserIds: number[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询自提门店列表
|
// 查询自提门店列表
|
||||||
export const getDeliveryPickUpStorePage = async (params: any) => {
|
export const getDeliveryPickUpStorePage = async (params: any) => {
|
||||||
return await request.get<PageResult<DeliveryPickUpStoreVO[]>>({
|
return await request.get({ url: '/trade/delivery/pick-up-store/page', params })
|
||||||
url: '/trade/delivery/pick-up-store/page',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询自提门店详情
|
// 查询自提门店详情
|
||||||
export const getDeliveryPickUpStore = async (id: number) => {
|
export const getDeliveryPickUpStore = async (id: number) => {
|
||||||
return await request.get<DeliveryPickUpStoreVO>({
|
return await request.get({ url: '/trade/delivery/pick-up-store/get?id=' + id })
|
||||||
url: '/trade/delivery/pick-up-store/get?id=' + id
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询自提门店精简列表
|
// 查询自提门店精简列表
|
||||||
export const getSimpleDeliveryPickUpStoreList = async () => {
|
export const getSimpleDeliveryPickUpStoreList = async (): Promise<DeliveryPickUpStoreVO[]> => {
|
||||||
return await request.get<DeliveryPickUpStoreVO[]>({
|
return await request.get({ url: '/trade/delivery/pick-up-store/simple-list' })
|
||||||
url: '/trade/delivery/pick-up-store/simple-list'
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增自提门店
|
// 新增自提门店
|
||||||
|
|
@ -61,6 +47,6 @@ export const deleteDeliveryPickUpStore = async (id: number) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 绑定自提店员
|
// 绑定自提店员
|
||||||
export const bindStoreStaffId = async (data: DeliveryPickUpStoreBindReqVO) => {
|
export const bindStoreStaffId = async (data: any) => {
|
||||||
return await request.post({ url: '/trade/delivery/pick-up-store/bind', data })
|
return await request.post({ url: '/trade/delivery/pick-up-store/bind', data })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ export interface TradeOrderSummaryRespVO {
|
||||||
|
|
||||||
// 查询交易订单列表
|
// 查询交易订单列表
|
||||||
export const getOrderPage = async (params: any) => {
|
export const getOrderPage = async (params: any) => {
|
||||||
return await request.get<PageResult<OrderVO[]>>({ url: `/trade/order/page`, params })
|
return await request.get({ url: `/trade/order/page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询交易订单统计
|
// 查询交易订单统计
|
||||||
|
|
@ -132,14 +132,12 @@ export const getOrderSummary = async (params: any) => {
|
||||||
|
|
||||||
// 查询交易订单详情
|
// 查询交易订单详情
|
||||||
export const getOrder = async (id: number | null) => {
|
export const getOrder = async (id: number | null) => {
|
||||||
return await request.get<OrderVO>({ url: `/trade/order/get-detail?id=` + id })
|
return await request.get({ url: `/trade/order/get-detail?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询交易订单物流详情
|
// 查询交易订单物流详情
|
||||||
export const getExpressTrackList = async (id: number | null) => {
|
export const getExpressTrackList = async (id: number | null) => {
|
||||||
return await request.get<Array<{ time?: Date | string; content?: string }>>({
|
return await request.get({ url: `/trade/order/get-express-track-list?id=` + id })
|
||||||
url: `/trade/order/get-express-track-list?id=` + id
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DeliveryVO {
|
export interface DeliveryVO {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface ConfigVO {
|
export interface ConfigVO {
|
||||||
id?: number
|
id: number
|
||||||
pointTradeDeductEnable: boolean
|
pointTradeDeductEnable: number
|
||||||
pointTradeDeductUnitPrice: number
|
pointTradeDeductUnitPrice: number
|
||||||
pointTradeDeductMaxPrice: number
|
pointTradeDeductMaxPrice: number
|
||||||
pointTradeGivePoint: number
|
pointTradeGivePoint: number
|
||||||
|
|
@ -10,7 +10,7 @@ export interface ConfigVO {
|
||||||
|
|
||||||
// 查询积分设置详情
|
// 查询积分设置详情
|
||||||
export const getConfig = async () => {
|
export const getConfig = async () => {
|
||||||
return await request.get<ConfigVO>({ url: `/member/config/get` })
|
return await request.get({ url: `/member/config/get` })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增修改积分设置
|
// 新增修改积分设置
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,10 @@ export interface ExperienceRecordVO {
|
||||||
|
|
||||||
// 查询会员经验记录列表
|
// 查询会员经验记录列表
|
||||||
export const getExperienceRecordPage = async (params) => {
|
export const getExperienceRecordPage = async (params) => {
|
||||||
return await request.get<PageResult<ExperienceRecordVO[]>>({
|
return await request.get({ url: `/member/experience-record/page`, params })
|
||||||
url: `/member/experience-record/page`,
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询会员经验记录详情
|
// 查询会员经验记录详情
|
||||||
export const getExperienceRecord = async (id: number) => {
|
export const getExperienceRecord = async (id: number) => {
|
||||||
return await request.get<ExperienceRecordVO>({ url: `/member/experience-record/get?id=` + id })
|
return await request.get({ url: `/member/experience-record/get?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,51 +1,36 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface UserVO {
|
export interface UserVO {
|
||||||
id?: number
|
|
||||||
avatar?: string
|
|
||||||
birthday?: number
|
|
||||||
createTime?: number
|
|
||||||
loginDate?: number
|
|
||||||
loginIp?: string
|
|
||||||
mark?: string
|
|
||||||
mobile?: string
|
|
||||||
email?: string
|
|
||||||
password?: string
|
|
||||||
name?: string
|
|
||||||
nickname?: string
|
|
||||||
registerIp?: string
|
|
||||||
sex?: number
|
|
||||||
status?: number
|
|
||||||
areaId?: number
|
|
||||||
areaName?: string
|
|
||||||
tagIds?: number[]
|
|
||||||
groupId?: number
|
|
||||||
levelId?: number
|
|
||||||
levelName?: string | null
|
|
||||||
point?: number | null
|
|
||||||
totalPoint?: number | null
|
|
||||||
experience?: number | null
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface UserLevelUpdateReqVO {
|
|
||||||
id: number
|
id: number
|
||||||
levelId: number
|
avatar: string | undefined
|
||||||
reason: string
|
birthday: number | undefined
|
||||||
}
|
createTime: number | undefined
|
||||||
|
loginDate: number | undefined
|
||||||
export interface UserPointUpdateReqVO {
|
loginIp: string
|
||||||
id: number
|
mark: string
|
||||||
point: number
|
mobile: string
|
||||||
|
email: string | undefined
|
||||||
|
name: string | undefined
|
||||||
|
nickname: string | undefined
|
||||||
|
registerIp: string
|
||||||
|
sex: number
|
||||||
|
status: number
|
||||||
|
areaId: number | undefined
|
||||||
|
areaName: string | undefined
|
||||||
|
levelName: string | null
|
||||||
|
point: number | undefined | null
|
||||||
|
totalPoint: number | undefined | null
|
||||||
|
experience: number | null | undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询会员用户列表
|
// 查询会员用户列表
|
||||||
export const getUserPage = async (params) => {
|
export const getUserPage = async (params) => {
|
||||||
return await request.get<PageResult<UserVO[]>>({ url: `/member/user/page`, params })
|
return await request.get({ url: `/member/user/page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询会员用户详情
|
// 查询会员用户详情
|
||||||
export const getUser = async (id: number) => {
|
export const getUser = async (id: number) => {
|
||||||
return await request.get<UserVO>({ url: `/member/user/get?id=` + id })
|
return await request.get({ url: `/member/user/get?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改会员用户
|
// 修改会员用户
|
||||||
|
|
@ -54,11 +39,11 @@ export const updateUser = async (data: UserVO) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改会员用户等级
|
// 修改会员用户等级
|
||||||
export const updateUserLevel = async (data: UserLevelUpdateReqVO) => {
|
export const updateUserLevel = async (data: any) => {
|
||||||
return await request.put({ url: `/member/user/update-level`, data })
|
return await request.put({ url: `/member/user/update-level`, data })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改会员用户积分
|
// 修改会员用户积分
|
||||||
export const updateUserPoint = async (data: UserPointUpdateReqVO) => {
|
export const updateUserPoint = async (data: any) => {
|
||||||
return await request.put({ url: `/member/user/update-point`, data })
|
return await request.put({ url: `/member/user/update-point`, data })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ import request from '@/config/axios'
|
||||||
|
|
||||||
// MES 物料产品分类 VO
|
// MES 物料产品分类 VO
|
||||||
export interface MdItemTypeVO {
|
export interface MdItemTypeVO {
|
||||||
id?: number // 分类编号
|
id: number // 分类编号
|
||||||
parentId?: number // 父分类编号
|
parentId: number // 父分类编号
|
||||||
code?: string // 分类编码
|
code: string // 分类编码
|
||||||
name?: string // 分类名称
|
name: string // 分类名称
|
||||||
itemOrProduct: string // 物料/产品标识
|
itemOrProduct: string // 物料/产品标识
|
||||||
sort: number // 显示排序
|
sort: number // 显示排序
|
||||||
status: number // 状态
|
status: number // 状态
|
||||||
remark?: string // 备注
|
remark: string // 备注
|
||||||
}
|
}
|
||||||
|
|
||||||
// MES 物料产品分类 API
|
// MES 物料产品分类 API
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ import request from '@/config/axios'
|
||||||
|
|
||||||
// MES 计量单位 VO
|
// MES 计量单位 VO
|
||||||
export interface MdUnitMeasureVO {
|
export interface MdUnitMeasureVO {
|
||||||
id?: number // 单位编号
|
id: number // 单位编号
|
||||||
code?: string // 单位编码
|
code: string // 单位编码
|
||||||
name?: string // 单位名称
|
name: string // 单位名称
|
||||||
primaryFlag: boolean // 是否主单位
|
primaryFlag: boolean // 是否主单位
|
||||||
primaryId?: number // 主单位编号
|
primaryId: number // 主单位编号
|
||||||
changeRate?: number // 与主单位换算比例
|
changeRate: number // 与主单位换算比例
|
||||||
status: number // 状态
|
status: number // 状态
|
||||||
remark?: string // 备注
|
remark: string // 备注
|
||||||
}
|
}
|
||||||
|
|
||||||
// MES 计量单位 API
|
// MES 计量单位 API
|
||||||
|
|
|
||||||
|
|
@ -13,20 +13,6 @@ export interface WmSnGroupVO {
|
||||||
createTime?: Date
|
createTime?: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WmSnVO {
|
|
||||||
id?: number
|
|
||||||
uuid?: string
|
|
||||||
code?: string
|
|
||||||
itemId?: number
|
|
||||||
itemCode?: string
|
|
||||||
itemName?: string
|
|
||||||
specification?: string
|
|
||||||
unitName?: string
|
|
||||||
batchCode?: string
|
|
||||||
workOrderId?: number
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WmSnGenerateVO {
|
export interface WmSnGenerateVO {
|
||||||
itemId?: number
|
itemId?: number
|
||||||
batchCode?: string
|
batchCode?: string
|
||||||
|
|
@ -44,11 +30,6 @@ export const getSnGroupPage = async (params: any) => {
|
||||||
return await request.get({ url: `/mes/wm/sn/group-page`, params })
|
return await request.get({ url: `/mes/wm/sn/group-page`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得批次 SN 码明细列表
|
|
||||||
export const getSnListByUuid = async (uuid: string) => {
|
|
||||||
return await request.get({ url: `/mes/wm/sn/list-by-uuid`, params: { uuid } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量删除 SN 码(按批次 UUID)
|
// 批量删除 SN 码(按批次 UUID)
|
||||||
export const deleteSnBatch = async (uuid: string) => {
|
export const deleteSnBatch = async (uuid: string) => {
|
||||||
return await request.delete({ url: `/mes/wm/sn/delete-batch`, params: { uuid } })
|
return await request.delete({ url: `/mes/wm/sn/delete-batch`, params: { uuid } })
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,6 @@ export interface TagVO {
|
||||||
createTime: Date
|
createTime: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SimpleTagVO {
|
|
||||||
tagId: number
|
|
||||||
name: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建公众号标签
|
// 创建公众号标签
|
||||||
export const createTag = (data: TagVO) => {
|
export const createTag = (data: TagVO) => {
|
||||||
return request.post({
|
return request.post({
|
||||||
|
|
@ -52,7 +47,7 @@ export const getTagPage = (query: PageParam) => {
|
||||||
|
|
||||||
// 获取公众号标签精简信息列表
|
// 获取公众号标签精简信息列表
|
||||||
export const getSimpleTagList = () => {
|
export const getSimpleTagList = () => {
|
||||||
return request.get<SimpleTagVO[]>({
|
return request.get({
|
||||||
url: '/mp/tag/list-all-simple'
|
url: '/mp/tag/list-all-simple'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ export const deleteApp = (id: number) => {
|
||||||
|
|
||||||
// 获得支付应用列表
|
// 获得支付应用列表
|
||||||
export const getAppList = () => {
|
export const getAppList = () => {
|
||||||
return request.get<AppVO[]>({
|
return request.get({
|
||||||
url: '/pay/app/list'
|
url: '/pay/app/list'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,43 +1,15 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface NotifyLogVO {
|
|
||||||
id?: number
|
|
||||||
status?: number
|
|
||||||
notifyTimes?: number
|
|
||||||
lastExecuteTime?: Date
|
|
||||||
createTime?: Date
|
|
||||||
response?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface NotifyTaskVO {
|
|
||||||
id?: number
|
|
||||||
appId?: number
|
|
||||||
appName?: string
|
|
||||||
merchantOrderId?: string
|
|
||||||
merchantRefundId?: string
|
|
||||||
merchantTransferId?: string
|
|
||||||
dataId?: number
|
|
||||||
type?: number
|
|
||||||
status?: number
|
|
||||||
notifyTimes?: number
|
|
||||||
maxNotifyTimes?: number
|
|
||||||
lastExecuteTime?: Date
|
|
||||||
nextNotifyTime?: Date
|
|
||||||
createTime?: Date
|
|
||||||
updateTime?: Date
|
|
||||||
logs?: NotifyLogVO[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获得支付通知明细
|
// 获得支付通知明细
|
||||||
export const getNotifyTaskDetail = (id: number) => {
|
export const getNotifyTaskDetail = (id) => {
|
||||||
return request.get<NotifyTaskVO>({
|
return request.get({
|
||||||
url: '/pay/notify/get-detail?id=' + id
|
url: '/pay/notify/get-detail?id=' + id
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得支付通知分页
|
// 获得支付通知分页
|
||||||
export const getNotifyTaskPage = (query: any) => {
|
export const getNotifyTaskPage = (query) => {
|
||||||
return request.get<PageResult<NotifyTaskVO[]>>({
|
return request.get({
|
||||||
url: '/pay/notify/page',
|
url: '/pay/notify/page',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ export interface OrderVO {
|
||||||
notifyUrl: string
|
notifyUrl: string
|
||||||
notifyStatus: number
|
notifyStatus: number
|
||||||
amount: number
|
amount: number
|
||||||
price: number
|
|
||||||
channelFeeRate: number
|
channelFeeRate: number
|
||||||
channelFeeAmount: number
|
channelFeeAmount: number
|
||||||
status: number
|
status: number
|
||||||
|
|
@ -29,43 +28,64 @@ export interface OrderVO {
|
||||||
createTime: Date
|
createTime: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OrderDetailVO {
|
export interface OrderPageReqVO extends PageParam {
|
||||||
merchantOrderId?: string
|
merchantId?: number
|
||||||
no?: string
|
|
||||||
appId?: number
|
appId?: number
|
||||||
appName?: string
|
channelId?: number
|
||||||
status?: number
|
channelCode?: string
|
||||||
price?: number
|
merchantOrderId?: string
|
||||||
refundPrice?: number
|
|
||||||
channelFeePrice?: number
|
|
||||||
channelFeeRate?: number
|
|
||||||
successTime?: Date
|
|
||||||
expireTime?: Date
|
|
||||||
createTime?: Date
|
|
||||||
updateTime?: Date
|
|
||||||
subject?: string
|
subject?: string
|
||||||
body?: string
|
body?: string
|
||||||
channelCode?: string
|
|
||||||
userIp?: string
|
|
||||||
channelOrderNo?: string
|
|
||||||
channelUserId?: string
|
|
||||||
notifyUrl?: string
|
notifyUrl?: string
|
||||||
extension?: {
|
notifyStatus?: number
|
||||||
channelNotifyData?: string
|
amount?: number
|
||||||
}
|
channelFeeRate?: number
|
||||||
|
channelFeeAmount?: number
|
||||||
|
status?: number
|
||||||
|
expireTime?: Date[]
|
||||||
|
successTime?: Date[]
|
||||||
|
notifyTime?: Date[]
|
||||||
|
successExtensionId?: number
|
||||||
|
refundStatus?: number
|
||||||
|
refundTimes?: number
|
||||||
|
channelUserId?: string
|
||||||
|
channelOrderNo?: string
|
||||||
|
createTime?: Date[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface OrderExportReqVO {
|
||||||
|
merchantId?: number
|
||||||
|
appId?: number
|
||||||
|
channelId?: number
|
||||||
|
channelCode?: string
|
||||||
|
merchantOrderId?: string
|
||||||
|
subject?: string
|
||||||
|
body?: string
|
||||||
|
notifyUrl?: string
|
||||||
|
notifyStatus?: number
|
||||||
|
amount?: number
|
||||||
|
channelFeeRate?: number
|
||||||
|
channelFeeAmount?: number
|
||||||
|
status?: number
|
||||||
|
expireTime?: Date[]
|
||||||
|
successTime?: Date[]
|
||||||
|
notifyTime?: Date[]
|
||||||
|
successExtensionId?: number
|
||||||
|
refundStatus?: number
|
||||||
|
refundTimes?: number
|
||||||
|
channelUserId?: string
|
||||||
|
channelOrderNo?: string
|
||||||
|
createTime?: Date[]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询列表支付订单
|
// 查询列表支付订单
|
||||||
export const getOrderPage = async (params: any) => {
|
export const getOrderPage = async (params: OrderPageReqVO) => {
|
||||||
return await request.get<PageResult<OrderDetailVO[]>>({
|
return await request.get({ url: '/pay/order/page', params })
|
||||||
url: '/pay/order/page',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询详情支付订单
|
// 查询详情支付订单
|
||||||
export const getOrder = async (id: number, sync?: boolean) => {
|
export const getOrder = async (id: number, sync?: boolean) => {
|
||||||
return await request.get<OrderVO>({
|
return await request.get({
|
||||||
url: '/pay/order/get',
|
url: '/pay/order/get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
|
|
@ -76,7 +96,7 @@ export const getOrder = async (id: number, sync?: boolean) => {
|
||||||
|
|
||||||
// 获得支付订单的明细
|
// 获得支付订单的明细
|
||||||
export const getOrderDetail = async (id: number) => {
|
export const getOrderDetail = async (id: number) => {
|
||||||
return await request.get<OrderDetailVO>({ url: '/pay/order/get-detail?id=' + id })
|
return await request.get({ url: '/pay/order/get-detail?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交支付订单
|
// 提交支付订单
|
||||||
|
|
@ -85,6 +105,6 @@ export const submitOrder = async (data: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出支付订单
|
// 导出支付订单
|
||||||
export const exportOrder = async (params: any) => {
|
export const exportOrder = async (params: OrderExportReqVO) => {
|
||||||
return await request.download({ url: '/pay/order/export-excel', params })
|
return await request.download({ url: '/pay/order/export-excel', params })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,36 +29,70 @@ export interface RefundVO {
|
||||||
createTime: Date
|
createTime: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RefundDetailVO {
|
export interface RefundPageReqVO extends PageParam {
|
||||||
merchantRefundId?: string
|
merchantId?: number
|
||||||
channelRefundNo?: string
|
|
||||||
merchantOrderId?: string
|
|
||||||
channelOrderNo?: string
|
|
||||||
appId?: number
|
appId?: number
|
||||||
appName?: string
|
channelId?: number
|
||||||
payPrice?: number
|
|
||||||
refundPrice?: number
|
|
||||||
status?: number
|
|
||||||
successTime?: Date
|
|
||||||
createTime?: Date
|
|
||||||
updateTime?: Date
|
|
||||||
channelCode?: string
|
channelCode?: string
|
||||||
|
orderId?: string
|
||||||
|
tradeNo?: string
|
||||||
|
merchantOrderId?: string
|
||||||
|
merchantRefundNo?: string
|
||||||
|
notifyUrl?: string
|
||||||
|
notifyStatus?: number
|
||||||
|
status?: number
|
||||||
|
type?: number
|
||||||
|
payAmount?: number
|
||||||
|
refundAmount?: number
|
||||||
reason?: string
|
reason?: string
|
||||||
userIp?: string
|
userIp?: string
|
||||||
notifyUrl?: string
|
channelOrderNo?: string
|
||||||
|
channelRefundNo?: string
|
||||||
channelErrorCode?: string
|
channelErrorCode?: string
|
||||||
channelErrorMsg?: string
|
channelErrorMsg?: string
|
||||||
channelNotifyData?: string
|
channelExtras?: string
|
||||||
|
expireTime?: Date[]
|
||||||
|
successTime?: Date[]
|
||||||
|
notifyTime?: Date[]
|
||||||
|
createTime?: Date[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PayRefundExportReqVO {
|
||||||
|
merchantId?: number
|
||||||
|
appId?: number
|
||||||
|
channelId?: number
|
||||||
|
channelCode?: string
|
||||||
|
orderId?: string
|
||||||
|
tradeNo?: string
|
||||||
|
merchantOrderId?: string
|
||||||
|
merchantRefundNo?: string
|
||||||
|
notifyUrl?: string
|
||||||
|
notifyStatus?: number
|
||||||
|
status?: number
|
||||||
|
type?: number
|
||||||
|
payAmount?: number
|
||||||
|
refundAmount?: number
|
||||||
|
reason?: string
|
||||||
|
userIp?: string
|
||||||
|
channelOrderNo?: string
|
||||||
|
channelRefundNo?: string
|
||||||
|
channelErrorCode?: string
|
||||||
|
channelErrorMsg?: string
|
||||||
|
channelExtras?: string
|
||||||
|
expireTime?: Date[]
|
||||||
|
successTime?: Date[]
|
||||||
|
notifyTime?: Date[]
|
||||||
|
createTime?: Date[]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询列表退款订单
|
// 查询列表退款订单
|
||||||
export const getRefundPage = (params: any) => {
|
export const getRefundPage = (params: RefundPageReqVO) => {
|
||||||
return request.get<PageResult<RefundDetailVO[]>>({ url: '/pay/refund/page', params })
|
return request.get({ url: '/pay/refund/page', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询详情退款订单
|
// 查询详情退款订单
|
||||||
export const getRefund = (id: number) => {
|
export const getRefund = (id: number) => {
|
||||||
return request.get<RefundDetailVO>({ url: '/pay/refund/get?id=' + id })
|
return request.get({ url: '/pay/refund/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增退款订单
|
// 新增退款订单
|
||||||
|
|
@ -77,6 +111,6 @@ export const deleteRefund = (id: number) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出退款订单
|
// 导出退款订单
|
||||||
export const exportRefund = (params: any) => {
|
export const exportRefund = (params: PayRefundExportReqVO) => {
|
||||||
return request.download({ url: '/pay/refund/export-excel', params })
|
return request.download({ url: '/pay/refund/export-excel', params })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,42 +1,16 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface TransferVO {
|
|
||||||
id?: number
|
|
||||||
no?: string
|
|
||||||
appId?: number
|
|
||||||
appName?: string
|
|
||||||
channelId?: number
|
|
||||||
channelCode?: string
|
|
||||||
merchantTransferId?: string
|
|
||||||
type?: string
|
|
||||||
status?: number
|
|
||||||
successTime?: Date
|
|
||||||
price?: number
|
|
||||||
subject?: string
|
|
||||||
userName?: string
|
|
||||||
userAccount?: string
|
|
||||||
accountNo?: string
|
|
||||||
channelTransferNo?: string
|
|
||||||
userIp?: string
|
|
||||||
notifyUrl?: string
|
|
||||||
channelNotifyData?: string
|
|
||||||
createTime?: Date
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询转账单列表
|
// 查询转账单列表
|
||||||
export const getTransferPage = async (params: any) => {
|
export const getTransferPage = async (params: PageParam) => {
|
||||||
return await request.get<PageResult<TransferVO[]>>({
|
return await request.get({ url: `/pay/transfer/page`, params })
|
||||||
url: `/pay/transfer/page`,
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询转账单详情
|
// 查询转账单详情
|
||||||
export const getTransfer = async (id: number) => {
|
export const getTransfer = async (id: number) => {
|
||||||
return await request.get<TransferVO>({ url: '/pay/transfer/get?id=' + id })
|
return await request.get({ url: '/pay/transfer/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出转账单
|
// 导出转账单
|
||||||
export const exportTransfer = async (params: any) => {
|
export const exportTransfer = async (params: PageParam) => {
|
||||||
return await request.download({ url: '/pay/transfer/export-excel', params })
|
return await request.download({ url: '/pay/transfer/export-excel', params })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,6 @@ export interface WalletVO {
|
||||||
freezePrice: number
|
freezePrice: number
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 修改会员钱包余额 Request VO */
|
|
||||||
export interface WalletBalanceUpdateReqVO {
|
|
||||||
userId: number
|
|
||||||
balance: number
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 查询用户钱包详情 */
|
/** 查询用户钱包详情 */
|
||||||
export const getWallet = async (params: PayWalletUserReqVO) => {
|
export const getWallet = async (params: PayWalletUserReqVO) => {
|
||||||
return await request.get<WalletVO>({ url: `/pay/wallet/get`, params })
|
return await request.get<WalletVO>({ url: `/pay/wallet/get`, params })
|
||||||
|
|
@ -33,6 +27,6 @@ export const getWalletPage = async (params: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 修改会员钱包余额 */
|
/** 修改会员钱包余额 */
|
||||||
export const updateWalletBalance = async (data: WalletBalanceUpdateReqVO) => {
|
export const updateWalletBalance = async (data: any) => {
|
||||||
return await request.put({ url: `/pay/wallet/update-balance`, data })
|
return await request.put({ url: `/pay/wallet/update-balance`, data })
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ export interface DeptVO {
|
||||||
phone: string
|
phone: string
|
||||||
email: string
|
email: string
|
||||||
createTime: Date
|
createTime: Date
|
||||||
children?: DeptVO[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询部门(精简)列表
|
// 查询部门(精简)列表
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface DictDataVO {
|
export interface DictDataVO {
|
||||||
id?: number
|
id: number
|
||||||
sort?: number
|
sort: number
|
||||||
label: string
|
label: string
|
||||||
value: string
|
value: string
|
||||||
dictType: string
|
dictType: string
|
||||||
|
|
@ -10,7 +10,7 @@ export interface DictDataVO {
|
||||||
colorType: string
|
colorType: string
|
||||||
cssClass: string
|
cssClass: string
|
||||||
remark: string
|
remark: string
|
||||||
createTime?: Date
|
createTime: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询字典数据(精简)列表
|
// 查询字典数据(精简)列表
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface DictTypeVO {
|
export interface DictTypeVO {
|
||||||
id?: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
type: string
|
type: string
|
||||||
status: number
|
status: number
|
||||||
remark: string
|
remark: string
|
||||||
createTime?: Date
|
createTime: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询字典(精简)列表
|
// 查询字典(精简)列表
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
export interface MailAccountVO {
|
export interface MailAccountVO {
|
||||||
id?: number
|
id: number
|
||||||
mail: string
|
mail: string
|
||||||
username: string
|
username: string
|
||||||
password: string
|
password: string
|
||||||
|
|
@ -38,10 +38,7 @@ export const deleteMailAccount = async (id: number) => {
|
||||||
|
|
||||||
// 批量删除邮箱账号
|
// 批量删除邮箱账号
|
||||||
export const deleteMailAccountList = async (ids: number[]) => {
|
export const deleteMailAccountList = async (ids: number[]) => {
|
||||||
return await request.delete({
|
return await request.delete({ url: '/system/mail-account/delete-list', params: { ids: ids.join(',') } })
|
||||||
url: '/system/mail-account/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获得邮箱账号精简列表
|
// 获得邮箱账号精简列表
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,5 @@ export const deleteOAuth2Client = (id: number) => {
|
||||||
|
|
||||||
// 批量删除 OAuth2 客户端
|
// 批量删除 OAuth2 客户端
|
||||||
export const deleteOAuth2ClientList = (ids: number[]) => {
|
export const deleteOAuth2ClientList = (ids: number[]) => {
|
||||||
return request.delete({
|
return request.delete({ url: '/system/oauth2-client/delete-list', params: { ids: ids.join(',') } })
|
||||||
url: '/system/oauth2-client/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,10 +39,7 @@ export const deleteTenantPackage = (id: number) => {
|
||||||
|
|
||||||
// 批量删除租户套餐
|
// 批量删除租户套餐
|
||||||
export const deleteTenantPackageList = (ids: number[]) => {
|
export const deleteTenantPackageList = (ids: number[]) => {
|
||||||
return request.delete({
|
return request.delete({ url: '/system/tenant-package/delete-list', params: { ids: ids.join(',') } })
|
||||||
url: '/system/tenant-package/delete-list',
|
|
||||||
params: { ids: ids.join(',') }
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取租户套餐精简信息列表
|
// 获取租户套餐精简信息列表
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ export interface UserVO {
|
||||||
username: string
|
username: string
|
||||||
nickname: string
|
nickname: string
|
||||||
deptId: number
|
deptId: number
|
||||||
deptName?: string
|
|
||||||
postIds: string[]
|
postIds: string[]
|
||||||
email: string
|
email: string
|
||||||
mobile: string
|
mobile: string
|
||||||
|
|
@ -16,24 +15,7 @@ export interface UserVO {
|
||||||
remark: string
|
remark: string
|
||||||
loginDate: Date
|
loginDate: Date
|
||||||
createTime: Date
|
createTime: Date
|
||||||
}
|
disabled?: boolean
|
||||||
|
|
||||||
// 获取用户精简信息列表
|
|
||||||
export const getSimpleUserList = (): Promise<UserVO[]> => {
|
|
||||||
return request.get({ url: '/system/user/simple-list' })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 按用户编号查询用户精简信息(点头像弹名片)
|
|
||||||
export const getSimpleUser = (id: number | string) => {
|
|
||||||
return request.get<UserVO>({ url: '/system/user/get-simple', params: { id } })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 按昵称模糊搜索用户(加好友)
|
|
||||||
export const getSimpleUserListByNickname = (nickname: string) => {
|
|
||||||
return request.get<UserVO[]>({
|
|
||||||
url: '/system/user/list-by-nickname',
|
|
||||||
params: { nickname }
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询用户管理列表
|
// 查询用户管理列表
|
||||||
|
|
@ -98,3 +80,8 @@ export const updateUserStatus = (id: number, status: number) => {
|
||||||
}
|
}
|
||||||
return request.put({ url: '/system/user/update-status', data: data })
|
return request.put({ url: '/system/user/update-status', data: data })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取用户精简信息列表
|
||||||
|
export const getSimpleUserList = (): Promise<UserVO[]> => {
|
||||||
|
return request.get({ url: '/system/user/simple-list' })
|
||||||
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -7,7 +7,6 @@ import { useWindowSize } from '@vueuse/core'
|
||||||
import { useAppStore } from '@/store/modules/app'
|
import { useAppStore } from '@/store/modules/app'
|
||||||
import { setCssVar } from '@/utils'
|
import { setCssVar } from '@/utils'
|
||||||
import { useDesign } from '@/hooks/web/useDesign'
|
import { useDesign } from '@/hooks/web/useDesign'
|
||||||
import { normalizeLayout } from '@/utils/layout'
|
|
||||||
|
|
||||||
const { variables } = useDesign()
|
const { variables } = useDesign()
|
||||||
|
|
||||||
|
|
@ -34,9 +33,7 @@ watch(
|
||||||
!appStore.getMobile ? appStore.setMobile(true) : undefined
|
!appStore.getMobile ? appStore.setMobile(true) : undefined
|
||||||
setCssVar('--left-menu-min-width', '0')
|
setCssVar('--left-menu-min-width', '0')
|
||||||
appStore.setCollapse(true)
|
appStore.setCollapse(true)
|
||||||
normalizeLayout(appStore.getLayout) !== 'sidebar-nav'
|
appStore.getLayout !== 'classic' ? appStore.setLayout('classic') : undefined
|
||||||
? appStore.setLayout('sidebar-nav')
|
|
||||||
: undefined
|
|
||||||
} else {
|
} else {
|
||||||
appStore.getMobile ? appStore.setMobile(false) : undefined
|
appStore.getMobile ? appStore.setMobile(false) : undefined
|
||||||
setCssVar('--left-menu-min-width', '64px')
|
setCssVar('--left-menu-min-width', '64px')
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue