Compare commits
16 Commits
main
...
0895755c25
| Author | SHA1 | Date | |
|---|---|---|---|
| 0895755c25 | |||
| 32781fa067 | |||
| e33abc8f66 | |||
| b40e28af6f | |||
| 5ab62d2a05 | |||
| 11fb0576ac | |||
| ab30f1307f | |||
| 92e5a032b5 | |||
| dd6ae89728 | |||
| b407d0a04d | |||
| 82e7731583 | |||
| 9d006fe6a5 | |||
| f4231a13e5 | |||
| 2c2ffcd104 | |||
| 028883975d | |||
| acc59c3a9e |
23
.env.base
23
.env.base
@@ -1,33 +1,20 @@
|
||||
# 本地开发环境
|
||||
VITE_NODE_ENV=development
|
||||
NODE_ENV=development
|
||||
|
||||
VITE_DEV=true
|
||||
|
||||
# 请求路径
|
||||
# VITE_BASE_URL='http://47.98.161.246:48080'
|
||||
# VITE_BASE_URL='http://114.215.207.150:48080'
|
||||
#VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
||||
VITE_BASE_URL='http://localhost:48080'
|
||||
|
||||
# 高德地图key密钥
|
||||
# 1寻驾
|
||||
# VITE_AMAP_KEY=ec6b7ebe38f7ff27126f7088d87a9091
|
||||
# 2莳松
|
||||
VITE_AMAP_KEY=9233a9d4ffe95fb335e70834503460fa
|
||||
|
||||
# 小程序接口请求路劲
|
||||
VITE_APPLET_URL='https://cloud.ahduima.com'
|
||||
# 题库路径
|
||||
VITE_TIKU_URL = 'http://47.98.161.246'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='http://47.98.161.246:48080/admin-api/system/file/upload'
|
||||
# VITE_UPLOAD_URL='http://114.55.169.15:48080/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=/dev-api
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH=/crm/
|
||||
VITE_BASE_PATH=/
|
||||
|
||||
6
.env.dev
6
.env.dev
@@ -7,16 +7,16 @@ VITE_DEV=false
|
||||
VITE_BASE_URL='http://localhost:48080'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='http://47.98.161.246:48080/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=/dev-api
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH=/crm/
|
||||
VITE_BASE_PATH=/
|
||||
|
||||
# 是否删除debugger
|
||||
VITE_DROP_DEBUGGER=false
|
||||
|
||||
@@ -4,19 +4,19 @@ VITE_NODE_ENV=development
|
||||
VITE_DEV=true
|
||||
|
||||
# 请求路径
|
||||
VITE_BASE_URL='http://47.98.161.246:48080'
|
||||
VITE_BASE_URL='http://118.31.23.45:48080'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='http://47.98.161.246:48080/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=/dev-api
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH=/crm/
|
||||
VITE_BASE_PATH=/
|
||||
|
||||
# 项目本地运行端口号, 与.vscode/launch.json配合
|
||||
VITE_PORT=80
|
||||
|
||||
13
.env.pro
13
.env.pro
@@ -4,18 +4,13 @@ VITE_NODE_ENV=production
|
||||
VITE_DEV=false
|
||||
|
||||
# 请求路径
|
||||
VITE_BASE_URL='/crm-api'
|
||||
# 高德地图key密钥
|
||||
# 1寻驾
|
||||
# VITE_AMAP_KEY=ec6b7ebe38f7ff27126f7088d87a9091
|
||||
# 2莳松
|
||||
VITE_AMAP_KEY=9233a9d4ffe95fb335e70834503460fa
|
||||
VITE_BASE_URL='http://localhost:48080'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='/crm-api/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
@@ -30,7 +25,7 @@ VITE_DROP_CONSOLE=true
|
||||
VITE_SOURCEMAP=false
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH=/crm/
|
||||
VITE_BASE_PATH=/
|
||||
|
||||
# 输出路径
|
||||
VITE_OUT_DIR=dist-pro
|
||||
|
||||
@@ -7,10 +7,10 @@ VITE_DEV=false
|
||||
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='http://47.98.161.246:48080/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
@@ -25,7 +25,7 @@ VITE_DROP_CONSOLE=true
|
||||
VITE_SOURCEMAP=false
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH='/crm'
|
||||
VITE_BASE_PATH='http://static-vue3.yudao.iocoder.cn/'
|
||||
|
||||
# 输出路径
|
||||
VITE_OUT_DIR=dist-stage
|
||||
|
||||
@@ -7,10 +7,10 @@ VITE_DEV=false
|
||||
VITE_BASE_URL='http://localhost:48080'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='http://47.98.161.246:48080/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
@@ -25,7 +25,7 @@ VITE_DROP_CONSOLE=true
|
||||
VITE_SOURCEMAP=false
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH=/crm/
|
||||
VITE_BASE_PATH=/admin-ui-vue3/
|
||||
|
||||
# 输出路径
|
||||
VITE_OUT_DIR=dist-dev
|
||||
|
||||
@@ -7,10 +7,10 @@ VITE_DEV=false
|
||||
VITE_BASE_URL='http://localhost:48080'
|
||||
|
||||
# 上传路径
|
||||
VITE_UPLOAD_URL='http://47.98.161.246:48080/admin-api/system/file/upload'
|
||||
VITE_UPLOAD_URL='http://118.31.23.45:48080/admin-api/system/file/upload'
|
||||
|
||||
# 接口前缀
|
||||
VITE_API_BASEPATH=/crm-api
|
||||
VITE_API_BASEPATH=
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL=/admin-api
|
||||
@@ -25,7 +25,7 @@ VITE_DROP_CONSOLE=false
|
||||
VITE_SOURCEMAP=true
|
||||
|
||||
# 打包路径
|
||||
VITE_BASE_PATH=/crm/
|
||||
VITE_BASE_PATH=/
|
||||
|
||||
# 输出路径
|
||||
VITE_OUT_DIR=dist-test
|
||||
|
||||
15
.vscode/extensions.json
vendored
Normal file
15
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"voorjaar.windicss-intellisense",
|
||||
"vscode-icons-team.vscode-icons",
|
||||
"davidanson.vscode-markdownlint",
|
||||
"stylelint.vscode-stylelint",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"esbenp.prettier-vscode",
|
||||
"vue.volar",
|
||||
"lokalise.i18n-ally",
|
||||
"mikestead.dotenv",
|
||||
"eamodio.gitlens",
|
||||
"antfu.iconify"
|
||||
]
|
||||
}
|
||||
16
.vscode/launch.json
vendored
Normal file
16
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "msedge",
|
||||
"request": "launch",
|
||||
"name": "Launch Edge against localhost",
|
||||
"url": "http://localhost",
|
||||
"webRoot": "${workspaceFolder}/src",
|
||||
"sourceMaps": true
|
||||
}
|
||||
]
|
||||
}
|
||||
55
.vscode/settings.json
vendored
55
.vscode/settings.json
vendored
@@ -1,5 +1,54 @@
|
||||
{
|
||||
"i18n-ally.localesPaths": [
|
||||
"src/locales"
|
||||
]
|
||||
"typescript.tsdk": "node_modules/typescript/lib",
|
||||
"prettier.enable": true,
|
||||
"editor.formatOnType": true,
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnPaste": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit"
|
||||
},
|
||||
"[vue]": {
|
||||
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||
},
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[typescript]": {
|
||||
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||
},
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[jsonc]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[html]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[css]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[scss]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"i18n-ally.localesPaths": ["src/locales"],
|
||||
"i18n-ally.keystyle": "nested",
|
||||
"i18n-ally.sortKeys": true,
|
||||
"i18n-ally.namespace": true,
|
||||
"i18n-ally.enabledParsers": ["ts"],
|
||||
"i18n-ally.sourceLanguage": "en",
|
||||
"i18n-ally.displayLanguage": "zh-CN",
|
||||
"i18n-ally.enabledFrameworks": ["vue", "react"],
|
||||
"god.tsconfig": "./tsconfig.json",
|
||||
"vue-i18n.i18nPaths": "src/locales",
|
||||
"explorer.fileNesting.enabled": true,
|
||||
"explorer.fileNesting.expand": false,
|
||||
"explorer.fileNesting.patterns": {
|
||||
"*.ts": "$(capture).test.ts, $(capture).test.tsx",
|
||||
"*.tsx": "$(capture).test.ts, $(capture).test.tsx",
|
||||
"*.env": "$(capture).env.*",
|
||||
"CHANGELOG.md": "CHANGELOG*",
|
||||
"package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,LICENSE,.gitattributes,.gitignore,.gitpod.yml,CNAME,README*,.npmrc,.browserslistrc,vite.config.*,windi.*,tailwind.*,tsconfig.*,postcss*",
|
||||
".eslintrc.js": ".eslintignore,.eslintrc-*,.prettierignore,.stylelintignore,.commitlintrc.js,.prettierrc.js,.stylelint*,stylelint*,prettier.*,.editorconfig"
|
||||
}
|
||||
}
|
||||
@@ -141,9 +141,7 @@
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
<script type="text/javascript">
|
||||
window._AMapSecurityConfig = {
|
||||
// securityJsCode: 'f653df5a2c5f44ae68faaab6f6a6b8ab' // 你的密钥
|
||||
// securityJsCode: '420463f2f8c849ab78b9d29548aff7d3' // 寻驾密钥
|
||||
securityJsCode: 'ab6bcce5d153c4e5353b40e5b0ce6fee' // 莳松密钥
|
||||
securityJsCode: 'a2f0d14a4c5c1e387f9271b1045a781d' // 你的密钥
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
13
package.json
13
package.json
@@ -39,7 +39,6 @@
|
||||
"@vueuse/core": "^10.1.2",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.10",
|
||||
"@wangeditor/plugin-upload-attachment": "^1.1.0",
|
||||
"@zxcvbn-ts/core": "^3.0.1",
|
||||
"animate.css": "^4.1.1",
|
||||
"axios": "^1.4.0",
|
||||
@@ -52,9 +51,8 @@
|
||||
"diagram-js": "^11.6.0",
|
||||
"echarts": "^5.4.2",
|
||||
"echarts-wordcloud": "^2.1.0",
|
||||
"element-plus": "2.9.4",
|
||||
"element-plus": "2.3.4",
|
||||
"fast-xml-parser": "^4.2.2",
|
||||
"file-saver": "^2.0.5",
|
||||
"highlight.js": "^11.8.0",
|
||||
"intro.js": "^7.0.1",
|
||||
"jsencrypt": "^3.3.2",
|
||||
@@ -67,19 +65,16 @@
|
||||
"qs": "^6.11.2",
|
||||
"steady-xml": "^0.1.0",
|
||||
"url": "^0.11.0",
|
||||
"video.js": "^7.0.0",
|
||||
"video.js": "^8.3.0",
|
||||
"vue": "3.3.4",
|
||||
"vue-amap": "^0.5.10",
|
||||
"vue-dompurify-html": "^5.0.1",
|
||||
"vue-draggable-plus": "^0.6.0",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-router": "^4.2.1",
|
||||
"vue-types": "^5.0.3",
|
||||
"vue3-tree-org": "^4.2.2",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"web-storage-cache": "^1.1.1",
|
||||
"xe-utils": "^3.5.7",
|
||||
"xlsx": "^0.18.5",
|
||||
"xml-js": "^1.6.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -115,7 +110,7 @@
|
||||
"prettier": "^2.8.8",
|
||||
"rimraf": "^5.0.1",
|
||||
"rollup": "^3.22.0",
|
||||
"sass": "1.75.0",
|
||||
"sass": "^1.62.1",
|
||||
"stylelint": "^15.6.2",
|
||||
"stylelint-config-html": "^1.1.0",
|
||||
"stylelint-config-recommended": "^12.0.0",
|
||||
@@ -126,7 +121,7 @@
|
||||
"unplugin-auto-import": "^0.16.0",
|
||||
"unplugin-element-plus": "^0.7.1",
|
||||
"unplugin-vue-components": "^0.24.1",
|
||||
"vite": "^5.4.21",
|
||||
"vite": "4.3.8",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-ejs": "^1.6.4",
|
||||
"vite-plugin-eslint": "^1.8.1",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 4.2 KiB |
@@ -2,19 +2,19 @@
|
||||
import { isDark } from '@/utils/is'
|
||||
import { useAppStore } from '@/store/modules/app'
|
||||
import { useDesign } from '@/hooks/web/useDesign'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
import routerSearch from '@/components/RouterSearch/index.vue'
|
||||
import cache from '@/plugins/cache'
|
||||
|
||||
const { getPrefixCls } = useDesign()
|
||||
const prefixCls = getPrefixCls('app')
|
||||
const appStore = useAppStore()
|
||||
const currentSize = computed(() => appStore.getCurrentSize)
|
||||
const greyMode = computed(() => appStore.getGreyMode)
|
||||
const { wsCache } = useCache()
|
||||
|
||||
// 根据浏览器当前主题设置系统主题色
|
||||
const setDefaultTheme = () => {
|
||||
let isDarkTheme = cache.local.get(CACHE_KEY.IS_DARK)
|
||||
let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK)
|
||||
if (isDarkTheme === null) {
|
||||
isDarkTheme = isDark()
|
||||
}
|
||||
|
||||
@@ -12,11 +12,7 @@ export const getAfterSalePage = async (params) => {
|
||||
|
||||
// 新增
|
||||
export const createAfterSale = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sign-after-sale/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/sign-after-sale/create', data })
|
||||
}
|
||||
|
||||
// 审核
|
||||
@@ -37,12 +33,3 @@ export const cancelApplyAfterSale = async (data) => {
|
||||
export const getAfterSaleDetail = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-after-sale/get', params })
|
||||
}
|
||||
|
||||
// 导入
|
||||
export const importAfterSales = async (data) => {
|
||||
return await request.upload({ url: '/admin-api/crm/sign-after-sale/importAfterSales', data })
|
||||
}
|
||||
|
||||
export const getAfterSalesTemplate = async () => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-after-sale/get-import-template' })
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 获得微信群列表
|
||||
export const getWxGroupPage = (params) => {
|
||||
return request.get({ url: '/admin-api/crm/wxgroup/page', params })
|
||||
}
|
||||
|
||||
// 创建微信群
|
||||
export const createWxGroup = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/wxgroup/create', data, isSubmitForm: true })
|
||||
}
|
||||
|
||||
// 更新微信群
|
||||
export const updateWxGroup = (data) => {
|
||||
return request.put({ url: '/admin-api/crm/wxgroup/update', data })
|
||||
}
|
||||
|
||||
// 删除微信群
|
||||
export const deleteWxGroup = (id) => {
|
||||
return request.delete({ url: `/admin-api/crm/wxgroup?groupId=${id}` })
|
||||
}
|
||||
|
||||
export const getWxGroupSimpleList = async () => {
|
||||
return await request.get({ url: '/admin-api/crm/wxgroup/simple-list' })
|
||||
}
|
||||
|
||||
// 报备
|
||||
export const reportClue = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/clue-remark/remark/save', data })
|
||||
}
|
||||
|
||||
// 接待提交报名信息
|
||||
export const registerClue = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/clue-remark/sign/save', data })
|
||||
}
|
||||
|
||||
// 分页查询报备信息
|
||||
export const getClueRemarkPage = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/clue-remark/page', data })
|
||||
}
|
||||
|
||||
// 区域查询报备信息
|
||||
export const getClueRemarkByRemarkId = (params) => {
|
||||
return request.get({ url: `/admin-api/crm/clue-remark/sign/get`, params })
|
||||
}
|
||||
|
||||
// 销售查询报备信息
|
||||
export const getClueRemarkByClueId = (params) => {
|
||||
return request.get({ url: `/admin-api/crm/clue-remark/remark/get`, params })
|
||||
}
|
||||
@@ -12,7 +12,7 @@ export const getDeliveryPage = async (params) => {
|
||||
|
||||
// 新增
|
||||
export const createDelivery = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sign-send/create', data, isSubmitForm: true })
|
||||
return await request.post({ url: '/admin-api/crm/sign-send/create', data })
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 获得列表
|
||||
export const getExtraFeePage = (params) => {
|
||||
return request.get({ url: '/admin-api/crm/extra-pay/page', params })
|
||||
}
|
||||
|
||||
// 创建
|
||||
export const createExtraFee = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/extra-pay/create', data, isSubmitForm: true })
|
||||
}
|
||||
|
||||
// 更新
|
||||
export const updateExtraFee = (data) => {
|
||||
return request.put({ url: '/admin-api/crm/extra-pay/update', data })
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deleteExtraFee = (id) => {
|
||||
return request.delete({ url: `/admin-api/crm/extra-pay/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得
|
||||
export const getExtraFee = (id) => {
|
||||
return request.get({ url: `/admin-api/crm/extra-pay/get?id=${id}` })
|
||||
}
|
||||
|
||||
export const getExtraFeeSimpleList = async () => {
|
||||
return await request.get({ url: '/admin-api/crm/extra-pay/simple-list' })
|
||||
}
|
||||
@@ -7,11 +7,7 @@ export const getFollowList = async (params) => {
|
||||
|
||||
// 新增
|
||||
export const createFollow = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/clue-follow-record/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/clue-follow-record/create', data: data })
|
||||
}
|
||||
|
||||
// 删除
|
||||
|
||||
@@ -6,8 +6,8 @@ export const getSimpleClueList = async () => {
|
||||
}
|
||||
|
||||
// 查询列表
|
||||
export const getCluePage = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/page', data })
|
||||
export const getCluePage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sch-clue/page', params })
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
@@ -17,11 +17,7 @@ export const getClue = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createClue = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sch-clue/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
@@ -58,16 +54,3 @@ export const getPublicClue = async (data) => {
|
||||
export const getFollowUserList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sch-clue/get-follow-user', params })
|
||||
}
|
||||
|
||||
export const batchUpdateFollowUser = async (data) => {
|
||||
return await request.put({ url: '/admin-api/crm/sch-clue/batchUpdateFollowUser', data })
|
||||
}
|
||||
|
||||
// 自动分配线索新增
|
||||
export const clueInput = async (data) => {
|
||||
return await request.post({
|
||||
url: '/out-api/out/clue/importClue/',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
}
|
||||
|
||||
@@ -5,18 +5,14 @@ export const getPaymentList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-pay-record/list', params })
|
||||
}
|
||||
|
||||
// 查询列表
|
||||
// 查询(精简)列表
|
||||
export const getPaymentPage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-pay-record/page', params })
|
||||
}
|
||||
|
||||
// 新增
|
||||
export const createPayment = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sign-pay-record/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/sign-pay-record/create', data })
|
||||
}
|
||||
|
||||
// 审核
|
||||
@@ -37,16 +33,3 @@ export const cancelApplyPayment = async (data) => {
|
||||
export const getPaymentDetail = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-pay-record/get', params })
|
||||
}
|
||||
|
||||
// 撤销
|
||||
export const updateApplyPayment = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sign-pay-record/updateRecordMoney',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 导出
|
||||
export const exportPayment = async (params) => {
|
||||
return await request.download({ url: '/admin-api/crm/sign-pay-record/export-excel', params })
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 查询招生结算列表
|
||||
export const getSchoolSettlePage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-settlement/sch/page', params })
|
||||
}
|
||||
|
||||
// 查询招生结算详情
|
||||
export const getSchoolSettleDetail = async (id) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-settlement/sch/get?id=' + id })
|
||||
}
|
||||
|
||||
// 查询进销存结算列表
|
||||
export const getMallSettlePage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-settlement/erp/page', params })
|
||||
}
|
||||
|
||||
// 查询进销存结算详情
|
||||
export const getMallSettleDetail = async (id) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign-settlement/erp/get?id=' + id })
|
||||
}
|
||||
|
||||
// 批量结算
|
||||
export const batchSaveSettle = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sign-settlement/batch/save', data })
|
||||
}
|
||||
|
||||
// 修改结算
|
||||
export const updateSettle = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sign-settlement/update/money', data })
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 查询列表
|
||||
export const getSignPage = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sign/page', data })
|
||||
export const getSignPage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign/page', params })
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
@@ -12,7 +12,7 @@ export const getSign = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createSign = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sign/create', data: data, isSubmitForm: true })
|
||||
return await request.post({ url: '/admin-api/crm/sign/create', data: data })
|
||||
}
|
||||
|
||||
// 取消登记
|
||||
@@ -29,45 +29,3 @@ export const signAddPay = async (data) => {
|
||||
export const getSignExtraPayList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sign/extra-pay/get', params })
|
||||
}
|
||||
|
||||
// 安装状态修改
|
||||
export const updateInstallStatus = (signIdList, installStatus) => {
|
||||
const data = {
|
||||
signIdList,
|
||||
installStatus
|
||||
}
|
||||
return request.post({ url: '/admin-api/crm/sign/install-status/batchSave', data: data })
|
||||
}
|
||||
|
||||
// 修改生产状态
|
||||
export const updateProduceStatus = (data) => {
|
||||
return request.put({ url: '/admin-api/crm/sign-prodcut/update', data: data })
|
||||
}
|
||||
|
||||
export const updateProduceSort = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/sign-prodcut/adjust/sort', data: data })
|
||||
}
|
||||
|
||||
export const getSignProfit = (params) => {
|
||||
return request.get({ url: '/admin-api/crm/sign/profit', params })
|
||||
}
|
||||
|
||||
// 新增产品
|
||||
export const addOrderProduct = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/sign-prodcut/create', data })
|
||||
}
|
||||
|
||||
// 新增产品
|
||||
export const removeOrderProduct = (id) => {
|
||||
return request.delete({ url: '/admin-api/crm/sign-prodcut/delete?id=' + id })
|
||||
}
|
||||
|
||||
// 查询订单商品
|
||||
export const getOrderProductList = (params) => {
|
||||
return request.get({ url: '/admin-api/crm/sign-prodcut/list', params })
|
||||
}
|
||||
|
||||
//
|
||||
export const createSignOnRemark = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/sign/xj-create', data })
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ export const getSkillPage = (params) => {
|
||||
|
||||
// 创建
|
||||
export const createSkill = (data) => {
|
||||
return request.post({ url: '/admin-api/crm/skill/create', data, isSubmitForm: true })
|
||||
return request.post({ url: '/admin-api/crm/skill/create', data })
|
||||
}
|
||||
|
||||
// 更新
|
||||
|
||||
@@ -17,7 +17,7 @@ export const getSource = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createSource = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/source/create', data: data, isSubmitForm: true })
|
||||
return await request.post({ url: '/admin-api/crm/source/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
// 线索情况
|
||||
export const getUserClueCount = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/home/get-user-count', params })
|
||||
}
|
||||
|
||||
// 成交率
|
||||
export const getClueSignSignRate = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/home/get-sign-rate', params })
|
||||
}
|
||||
|
||||
// 成交率
|
||||
export const getClueSignSignRank = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/home/get-sign-top10', params })
|
||||
}
|
||||
|
||||
// 成交率
|
||||
export const getClueFollowRank = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/home/get-follow-top10', params })
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
export const getList = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/clueQuality/report', data })
|
||||
}
|
||||
|
||||
export const getPeriodList = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/clueQuality/period/report', data })
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
export const getInfo = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/sale/report/detail', data })
|
||||
}
|
||||
|
||||
export const getList = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/sale/report', data })
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
export const getInfo = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/signData/report/one', data })
|
||||
}
|
||||
|
||||
export const getList = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/signData/report/two', data })
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
export const getList = async (data) => {
|
||||
return await request.post({ url: '/admin-api/crm/sch-clue/signRate/report', data })
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createKpi = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/oa/examine-configuration/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateKpi = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/examine-configuration/update', data })
|
||||
}
|
||||
|
||||
// 修改状态
|
||||
export const updateKpiStatus = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/examine-configuration/status/update', data })
|
||||
}
|
||||
|
||||
// 分页
|
||||
export const getKpiPage = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-configuration/page', params })
|
||||
}
|
||||
|
||||
// 详情
|
||||
export const getKpiDetail = (id) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-configuration/get', params: { id } })
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deleteKpi = (id) => {
|
||||
return request.delete({ url: '/admin-api/oa/examine-configuration/delete', params: { id } })
|
||||
}
|
||||
|
||||
//
|
||||
export const getKpiEmployees = () => {
|
||||
return request.get({
|
||||
url: '/admin-api/oa/employee/examinedEmployees'
|
||||
})
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 打分数据
|
||||
export const getKpiEmployees = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-score/getExamineUserExamineScore', params })
|
||||
}
|
||||
|
||||
// 保存考勤打分数据
|
||||
export const saveKpiScore = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/examine-score/update', data })
|
||||
}
|
||||
|
||||
// 删除考核项
|
||||
export const deleteKpiItem = (params) => {
|
||||
return request.delete({ url: '/admin-api/oa/examine-score/delete', params })
|
||||
}
|
||||
|
||||
// 考评分页数据
|
||||
export const getScorePage = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-period/page', params })
|
||||
}
|
||||
|
||||
// 封存
|
||||
export const saveScoreRecord = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-period/confirm', params })
|
||||
}
|
||||
|
||||
// 查询周期是否已封存
|
||||
export const getKpiPeriodStatus = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-period/getExaminePeriodByPeriod', params })
|
||||
}
|
||||
|
||||
// 查询考核记录
|
||||
export const getScoreRecord = (data) => {
|
||||
return request.post({ url: '/admin-api/oa/examine-result/periodPage', data })
|
||||
}
|
||||
|
||||
// 查详情
|
||||
export const getScoreDetail = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/examine-result/detail', params })
|
||||
}
|
||||
@@ -71,10 +71,3 @@ export const getAppInfo = (instanceId: number) => {
|
||||
url: '/admin-api/system/serviceInstance/getInstanceInfo?instanceId=' + instanceId
|
||||
})
|
||||
}
|
||||
|
||||
export const bindWx = (data: any) => {
|
||||
return request.post({
|
||||
url: '/admin-api/system/user/bind/wx',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ export interface BrandVO {
|
||||
|
||||
// 创建商品品牌
|
||||
export const createBrand = (data: BrandVO) => {
|
||||
return request.post({ url: '/admin-api/crm/erp-product-brand/create', data, isSubmitForm: true })
|
||||
return request.post({ url: '/admin-api/crm/erp-product-brand/create', data })
|
||||
}
|
||||
|
||||
// 更新商品品牌
|
||||
|
||||
@@ -36,11 +36,7 @@ export interface CategoryVO {
|
||||
|
||||
// 创建商品分类
|
||||
export const createCategory = (data: CategoryVO) => {
|
||||
return request.post({
|
||||
url: '/admin-api/crm/erp-product-category/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return request.post({ url: '/admin-api/crm/erp-product-category/create', data })
|
||||
}
|
||||
|
||||
// 更新商品分类
|
||||
|
||||
@@ -11,11 +11,7 @@ export const getProduct = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createProduct = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/erp-product/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/erp-product/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
|
||||
@@ -2,11 +2,7 @@ import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createField = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/crm/param/create',
|
||||
data: { ...data, module: 3 },
|
||||
isSubmitForm: true
|
||||
})
|
||||
return request.post({ url: '/admin-api/crm/param/create', data: { ...data, module: 3 } })
|
||||
}
|
||||
|
||||
// 更新
|
||||
|
||||
@@ -42,11 +42,7 @@ export interface PropertyValueDetailVO {
|
||||
|
||||
// 创建属性项
|
||||
export const createProperty = (data: PropertyVO) => {
|
||||
return request.post({
|
||||
url: '/admin-api/crm/erp-product-property/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return request.post({ url: '/admin-api/crm/erp-product-property/create', data })
|
||||
}
|
||||
|
||||
// 更新属性项
|
||||
|
||||
@@ -6,11 +6,7 @@ export const getPurchasePage = async (params) => {
|
||||
|
||||
// 新增
|
||||
export const createPurchase = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/erp-purchase/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/erp-purchase/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
|
||||
@@ -6,11 +6,7 @@ export const getWarehousePage = async (params) => {
|
||||
|
||||
// 新增
|
||||
export const createWarehouse = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/erp-warehouse/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/erp-warehouse/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
@@ -42,8 +38,3 @@ export const getInventoryList = async (params) => {
|
||||
export const getInventoryRecord = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/erp-inventory-record/page', params })
|
||||
}
|
||||
|
||||
// 获取剩余库存
|
||||
export const getRemainInventoryList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/erp-inventory-detail/list', params })
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createComment = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/okr/comments/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 分页
|
||||
export const getCommentPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/comments/page',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取评论类型
|
||||
export const getCommentTypeOptions = () => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/dict-data/get-by-type',
|
||||
params: { dictType: 'comment_type' }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 点赞评论
|
||||
export const likeComment = (commentId) => {
|
||||
return request.put({
|
||||
url: '/admin-api/okr/comments-likes/update',
|
||||
data: { commentId }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export const createMeeting = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/okr/meeting/add',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateMeeting = (data) => {
|
||||
return request.put({
|
||||
url: '/admin-api/okr/meeting/update',
|
||||
data
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
// 查询详情
|
||||
export const getMeetingDetail = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/meeting/get',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 取消会议
|
||||
export const cancelMeeting = (data) => {
|
||||
return request.put({
|
||||
url: '/admin-api/okr/meeting/cancel',
|
||||
data
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 分页查询
|
||||
export const getMeetingPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/meeting/page',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 刷新微信群列表
|
||||
export const refreshWxGroupList = () => {
|
||||
return request.get({
|
||||
url: '/admin-api/system/wx/reFreshWeChatGroupList'
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取微信群聊列表
|
||||
export const getWxGroupList = () => {
|
||||
return request.get({
|
||||
url: '/admin-api/system/wx/getWeChatGroupList'
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createOkrNode = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/okr/node/add',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateOkrNode = (data) => {
|
||||
return request.put({
|
||||
url: '/admin-api/okr/node/update',
|
||||
data
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
export const getOkrNodeDetail = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/get',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 我负责的 - 节点树
|
||||
export const getMyNodeTree = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/my/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 我负责的 - okr列表
|
||||
export const getMyOkrPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/my/object/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 全部目标 - 节点树
|
||||
export const getAllNodeTree = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/all/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 全部目标 - okr列表
|
||||
export const getAllOkrPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/all/object/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取节点操作历史
|
||||
export const getOkrNodeHistory = (nodeId) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/record/list',
|
||||
params: { nodeId }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取系统默认的关键成果内容
|
||||
export const getDefaultOkrOptions = () => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/dict-data/get-by-type',
|
||||
params: { dictType: 'key_result_source' }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 更新OKR进度
|
||||
export const updateOkrProgress = (data) => {
|
||||
return request.put({
|
||||
url: '/admin-api/okr/node/progress/update',
|
||||
data
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取目标关系树一级节点
|
||||
export const getOkrRelationTree = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/first-node',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取目标关系树下级节点数据
|
||||
export const getOkrRelationTreeChildren = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/node-tree',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取我的组员
|
||||
export const getMyMemberList = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/my-members',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取我的组员节点树
|
||||
export const getMySonNodeTree = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/member/node/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取我的组员OKR列表
|
||||
export const getMySonOkrPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/member/objective/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取渠道
|
||||
export const getChannelOptions = () => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/source'
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 获取统计表中的合计信息
|
||||
export const getOkrStatisticsTotal = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/node/data/count',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createWait = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/okr/agent-work/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateWait = (data) => {
|
||||
return request.put({
|
||||
url: '/admin-api/okr/agent-work/update',
|
||||
data
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 分页
|
||||
export const getWaitPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/agent-work/page',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 详情
|
||||
export const getWaitDetail = (id) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/agent-work/get',
|
||||
params: { id }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deleteWait = (id) => {
|
||||
return request.delete({
|
||||
url: '/admin-api/okr/agent-work/delete',
|
||||
params: { id }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 催办
|
||||
export const urgeWait = (workId) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/agent-work/urge',
|
||||
params: { workId }
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 跟进待办
|
||||
export const followWait = (data) => {
|
||||
return request.post({
|
||||
url: '/admin-api/okr/agent-work-follow/create',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
// 查询跟进记录
|
||||
export const getFollowWaitPage = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/agent-work-follow/list',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
|
||||
export const getWaitCount = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/okr/agent-work/getAgentWorkNum',
|
||||
params
|
||||
// headers: { 'instance-id': 1016 }
|
||||
})
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createPlan = (data) => {
|
||||
return request.post({ url: '/admin-api/oa/attendance-setting/create', data, isSubmitForm: true })
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updatePlan = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/attendance-setting/update', data })
|
||||
}
|
||||
|
||||
// 修改状态
|
||||
export const updatePlanStatus = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/attendance-setting/status/update', data })
|
||||
}
|
||||
|
||||
// 分页
|
||||
export const getPlanPage = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/attendance-setting/page', params })
|
||||
}
|
||||
|
||||
// 列表
|
||||
export const getPlanSimpleList = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/attendance-setting/simple-list', params })
|
||||
}
|
||||
|
||||
// 详情
|
||||
export const getPlanDetail = (id) => {
|
||||
return request.get({ url: '/admin-api/oa/attendance-setting/get', params: { id } })
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deletePlan = (id) => {
|
||||
return request.delete({ url: '/admin-api/oa/attendance-setting/delete', params: { id } })
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 创建
|
||||
export const createEmployee = (data) => {
|
||||
return request.post({ url: '/admin-api/oa/employee/create', data, isSubmitForm: true })
|
||||
}
|
||||
|
||||
// 分页
|
||||
export const getEmployeeSimpleList = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/employee/list-all-simple', params })
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateEmployee = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/employee/update', data })
|
||||
}
|
||||
|
||||
// 修改状态
|
||||
export const updateEmployeeStatus = (data) => {
|
||||
return request.put({ url: '/admin-api/oa/employee/status/update', data })
|
||||
}
|
||||
|
||||
// 分页
|
||||
export const getEmployeePage = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/employee/page', params })
|
||||
}
|
||||
|
||||
// 详情
|
||||
export const getEmployeeDetail = (id) => {
|
||||
return request.get({ url: '/admin-api/oa/employee/get', params: { id } })
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deleteEmployee = (id) => {
|
||||
return request.delete({ url: '/admin-api/oa/employee/delete', params: { id } })
|
||||
}
|
||||
|
||||
// 获取钉钉id
|
||||
export const getDingUserId = (params) => {
|
||||
return request.get({ url: '/admin-api/oa/employee/getDingTalkUserIdByMobile', params })
|
||||
}
|
||||
@@ -5,10 +5,6 @@ export const getClassTypePage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sch-class-type/page', params })
|
||||
}
|
||||
|
||||
export const getClassTypeList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/sch-class-type/list', params })
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
export const getClassType = async (id) => {
|
||||
return await request.get({ url: '/admin-api/crm/sch-class-type/get?id=' + id })
|
||||
@@ -16,11 +12,7 @@ export const getClassType = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createClassType = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sch-class-type/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/sch-class-type/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
@@ -30,7 +22,7 @@ export const updateClassType = async (params) => {
|
||||
|
||||
// 删除
|
||||
export const deleteClassType = async (id) => {
|
||||
return await request.delete({ url: '/admin-api/crm/sch-class-type/delete?id=' + id })
|
||||
return await request.delete({ url: '/admin-api/crm/sch-class-type/delete?typeId=' + id })
|
||||
}
|
||||
|
||||
// 修改状态
|
||||
|
||||
@@ -17,11 +17,7 @@ export const getPlace = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createPlace = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sch-place/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/sch-place/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
@@ -34,10 +30,10 @@ export const deletePlace = async (id) => {
|
||||
return await request.delete({ url: '/admin-api/crm/sch-place/delete?id=' + id })
|
||||
}
|
||||
|
||||
export const updatePlaceStatus = async (placeId, status) => {
|
||||
export const updatePlaceStatus = async (id, status) => {
|
||||
const data = {
|
||||
placeId,
|
||||
id,
|
||||
status
|
||||
}
|
||||
return request.put({ url: '/admin-api/crm/sch-place/status/update', data: data })
|
||||
return request.put({ url: '/admin-api/crm/sch-place/update-status', data: data })
|
||||
}
|
||||
|
||||
@@ -11,11 +11,7 @@ export const getSchool = async (id) => {
|
||||
|
||||
// 新增
|
||||
export const createSchool = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/sch-school/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
return await request.post({ url: '/admin-api/crm/sch-school/create', data: data })
|
||||
}
|
||||
|
||||
// 修改
|
||||
@@ -28,10 +24,10 @@ export const deleteSchool = async (id) => {
|
||||
return await request.delete({ url: '/admin-api/crm/sch-school/delete?id=' + id })
|
||||
}
|
||||
|
||||
export const updateSchoolStatus = async (schoolId, status) => {
|
||||
export const updateSchoolStatus = async (id, status) => {
|
||||
const data = {
|
||||
schoolId,
|
||||
id,
|
||||
status
|
||||
}
|
||||
return request.put({ url: '/admin-api/crm/sch-school/status/update', data: data })
|
||||
return request.put({ url: '/admin-api/crm/sch-school/update-status', data: data })
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
// 查询列表
|
||||
export const getAreaPage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/area/page', params })
|
||||
}
|
||||
|
||||
export const getAreaSimpleList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/area/simple-list', params })
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
export const getArea = async (id) => {
|
||||
return await request.get({ url: '/admin-api/crm/area/get?id=' + id })
|
||||
}
|
||||
|
||||
// 新增
|
||||
export const createArea = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/area/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateArea = async (params) => {
|
||||
return await request.put({ url: '/admin-api/crm/area/update', data: params })
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deleteArea = async (id) => {
|
||||
return await request.delete({ url: '/admin-api/crm/area/delete?id=' + id })
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
// 查询列表
|
||||
export const getSupplierPage = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/erp-supplier/page', params })
|
||||
}
|
||||
|
||||
export const getSupplierSimpleList = async (params) => {
|
||||
return await request.get({ url: '/admin-api/crm/erp-supplier/simple-list', params })
|
||||
}
|
||||
|
||||
// 查询详情
|
||||
export const getSupplier = async (id) => {
|
||||
return await request.get({ url: '/admin-api/crm/erp-supplier/get?id=' + id })
|
||||
}
|
||||
|
||||
// 新增
|
||||
export const createSupplier = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/crm/erp-supplier/create',
|
||||
data: data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
}
|
||||
|
||||
// 修改
|
||||
export const updateSupplier = async (params) => {
|
||||
return await request.put({ url: '/admin-api/crm/erp-supplier/update', data: params })
|
||||
}
|
||||
|
||||
// 删除
|
||||
export const deleteSupplier = async (id) => {
|
||||
return await request.delete({ url: '/admin-api/crm/erp-supplier/delete?id=' + id })
|
||||
}
|
||||
@@ -41,13 +41,3 @@ export const updateDept = async (params: DeptVO) => {
|
||||
export const deleteDept = async (id: number) => {
|
||||
return await request.delete({ url: '/admin-api/system/dept/delete?id=' + id })
|
||||
}
|
||||
|
||||
// 获取部门业务指标
|
||||
export const getDeptTarget = async (deptId: number) => {
|
||||
return await request.get({ url: '/admin-api/crm/dept-target/get', params: { deptId } })
|
||||
}
|
||||
|
||||
// 更新部门业务指标
|
||||
export const updateDeptTarget = async (data: any) => {
|
||||
return await request.put({ url: '/admin-api/crm/dept-target/save', data, isSubmitForm: true })
|
||||
}
|
||||
|
||||
@@ -44,11 +44,6 @@ export const deleteDictData = (id: number) => {
|
||||
}
|
||||
|
||||
// 导出字典类型数据
|
||||
export const exportDictData = (params: any) => {
|
||||
export const exportDictData = (params) => {
|
||||
return request.get({ url: '/admin-api/crm/dict-data/export', params })
|
||||
}
|
||||
|
||||
// 获取通用字典数据
|
||||
export const getGeneralSysDictData = (dictType: string) => {
|
||||
return request.get({ url: '/admin-api/system/dict-data/get-by-type', params: { dictType } })
|
||||
}
|
||||
|
||||
@@ -17,10 +17,7 @@ export interface MenuVO {
|
||||
alwaysShow?: boolean
|
||||
createTime: Date
|
||||
}
|
||||
// 获取服务列表
|
||||
export const getServiceAppList = () => {
|
||||
return request.get({ url: '/admin-api/system/service/list' })
|
||||
}
|
||||
|
||||
// 查询菜单(精简)列表
|
||||
export const getSimpleMenusList = () => {
|
||||
return request.get({ url: '/admin-api/system/menu/list-all-simple' })
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import request from '@/config/axios'
|
||||
import qs from 'qs'
|
||||
|
||||
export interface NotifyMessageVO {
|
||||
id: number
|
||||
@@ -15,39 +16,35 @@ export interface NotifyMessageVO {
|
||||
}
|
||||
|
||||
// 查询站内信消息列表
|
||||
export const getNotifyMessagePage = async (params: any) => {
|
||||
export const getNotifyMessagePage = async (params: PageParam) => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/page', params })
|
||||
}
|
||||
|
||||
// 获得我的站内信分页
|
||||
export const getMyNotifyMessagePage = async (params: any) => {
|
||||
export const getMyNotifyMessagePage = async (params: PageParam) => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/my-page', params })
|
||||
}
|
||||
|
||||
// 批量标记已读
|
||||
export const updateNotifyMessageRead = async (data: any) => {
|
||||
export const updateNotifyMessageRead = async (ids) => {
|
||||
return await request.put({
|
||||
url: '/admin-api/system/notify-message/update-read?',
|
||||
data
|
||||
url:
|
||||
'/admin-api/system/notify-message/update-read?' +
|
||||
qs.stringify({ ids: ids }, { indices: false })
|
||||
})
|
||||
}
|
||||
|
||||
// 标记所有站内信为已读
|
||||
export const updateAllNotifyMessageRead = async (data: any) => {
|
||||
return await request.put({ url: '/admin-api/system/notify-message/update-all-read', data })
|
||||
export const updateAllNotifyMessageRead = async () => {
|
||||
return await request.put({ url: '/admin-api/system/notify-message/update-all-read' })
|
||||
}
|
||||
|
||||
// 获取当前用户的最新站内信列表
|
||||
export const getUnreadNotifyMessageList = async (params: any) => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/get-unread-list', params })
|
||||
export const getUnreadNotifyMessageList = async () => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/get-unread-list' })
|
||||
}
|
||||
|
||||
// 获得当前用户的未读站内信数量
|
||||
export const getUnreadNotifyMessageCount = async (params: any) => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/get-unread-count', params })
|
||||
}
|
||||
|
||||
// 获取详情
|
||||
export const getNotifyMessageDetail = async (id: number) => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/get', params: { id } })
|
||||
export const getUnreadNotifyMessageCount = async () => {
|
||||
return await request.get({ url: '/admin-api/system/notify-message/get-unread-count' })
|
||||
}
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 获取角色快报配置
|
||||
export const getRoleDaliyReport = async (roleId) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/system/role-message-setting/get',
|
||||
params: { roleId }
|
||||
})
|
||||
}
|
||||
|
||||
// 保存角色每日快报配置
|
||||
export const updateRoleDaliyReport = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/system/role-message-setting/save',
|
||||
data,
|
||||
isSubmitForm: true
|
||||
})
|
||||
}
|
||||
|
||||
// 获取每日快报发送内容
|
||||
export const getDaliyReportContent = async () => {
|
||||
return await request.get({
|
||||
url: '/admin-api/system/message-item/list-all-simple'
|
||||
})
|
||||
}
|
||||
@@ -12,11 +12,9 @@ export interface UserVO {
|
||||
avatar: string
|
||||
loginIp: string
|
||||
status: number
|
||||
hireStatus: number
|
||||
remark: string
|
||||
loginDate: Date
|
||||
createTime: Date
|
||||
retireDate: string
|
||||
}
|
||||
|
||||
// 查询用户管理列表
|
||||
@@ -64,17 +62,10 @@ export const resetUserPwd = (id: number, password: string) => {
|
||||
}
|
||||
|
||||
// 用户状态修改
|
||||
export const updateUserStatus = (
|
||||
id: number,
|
||||
status: number,
|
||||
retireDate: string,
|
||||
hireStatus: number
|
||||
) => {
|
||||
export const updateUserStatus = (id: number, status: number) => {
|
||||
const data = {
|
||||
id,
|
||||
status,
|
||||
retireDate,
|
||||
hireStatus
|
||||
status
|
||||
}
|
||||
return request.put({ url: '/admin-api/system/user/update-status', data: data })
|
||||
}
|
||||
@@ -83,18 +74,3 @@ export const updateUserStatus = (
|
||||
export const getSimpleUserList = (): Promise<UserVO[]> => {
|
||||
return request.get({ url: '/admin-api/system/user/list-all-simple' })
|
||||
}
|
||||
|
||||
// 获取所有用户列表-无权限限制
|
||||
export const getAllUserList = (): Promise<UserVO[]> => {
|
||||
return request.get({ url: '/admin-api/system/user/no/permission/list-all-simple' })
|
||||
}
|
||||
|
||||
// 获取所有包括离职的用户
|
||||
export const getAllUserListWithHire = (): Promise<UserVO[]> => {
|
||||
return request.get({ url: '/admin-api/system/user/no/permission/list-all' })
|
||||
}
|
||||
|
||||
// 获取钉钉id
|
||||
export const getDDIdByPhone = (params) => {
|
||||
return request.get({ url: '/admin-api/system/user/getDingTalkUserIdByMobile', params })
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 更新
|
||||
export const updateWechatConfig = (data) => {
|
||||
return request.post({ url: '/admin-api/system/wx-robot-message-setting/save', data })
|
||||
}
|
||||
|
||||
// 更新发送时间
|
||||
export const updateWechatSendTime = (data) => {
|
||||
return request.put({ url: '/admin-api/system/wx-robot-message-setting/update-send-time', data })
|
||||
}
|
||||
// 更新微信群
|
||||
export const updateWechatGroup = (data) => {
|
||||
return request.put({ url: '/admin-api/system/wx-robot-message-setting/update-wx-group', data })
|
||||
}
|
||||
|
||||
// 获得列表
|
||||
export const getWechatConfigList = (params) => {
|
||||
return request.get({
|
||||
url: '/admin-api/system/wx-robot-message-setting/list',
|
||||
params
|
||||
})
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export const getVipDiscountList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/member/discount/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const addVipDiscount = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/member/discount/add',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const updateVipDiscount = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/member/discount/update',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteVipDiscount = async (id) => {
|
||||
return await request.delete({
|
||||
url: '/admin-api/applet/xunjia/member/discount/delete?discountId=' + id
|
||||
})
|
||||
}
|
||||
|
||||
export const getVipDiscountOptions = async () => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/member/discount/simple-list'
|
||||
})
|
||||
}
|
||||
|
||||
export const getUserDiscountList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/user/discount/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const giveUserDiscount = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/user/discount/send',
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export const getResellList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/distribution/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const addResell = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/distribution/add',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const updateResell = async (data) => {
|
||||
return await request.put({
|
||||
url: '/admin-api/applet/xunjia/distribution/update',
|
||||
data
|
||||
})
|
||||
}
|
||||
export const deleteResell = async (id) => {
|
||||
return await request.delete({
|
||||
url: '/admin-api/applet/xunjia/distribution/delete?distributionId=' + id
|
||||
})
|
||||
}
|
||||
export const getResellDetail = async (id) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/distribution/' + id
|
||||
})
|
||||
}
|
||||
|
||||
export const getResellSimpleList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/distribution/simple-list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export const getUserMemberList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/user/member/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const giveUserMember = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/user/member/add',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const getVipTypeList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/member/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const addVipType = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/member/add',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const updateVipType = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/member/update',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteVipType = async (id) => {
|
||||
return await request.delete({
|
||||
url: '/admin-api/applet/xunjia/member/delete?memberId=' + id
|
||||
})
|
||||
}
|
||||
|
||||
export const getVipTypeOptions = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/member/simple-list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const getRechargeRecords = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/pay/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export const addJx = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/question/jx/add',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export const getJxQuestionList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/question/jx/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const delJxData = async (id) => {
|
||||
return await request.delete({
|
||||
url: `/admin-api/applet/xunjia/question/jx/delete?id=${id}`
|
||||
})
|
||||
}
|
||||
|
||||
export const addMj = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/secret/add',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export const getMjList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/secret/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const delMj = async (secretId) => {
|
||||
return await request.delete({
|
||||
url: `/admin-api/applet/xunjia/secret/delete?secretId=${secretId}`
|
||||
})
|
||||
}
|
||||
|
||||
export const clearMj = async (secretId) => {
|
||||
return await request.delete({
|
||||
url: `/admin-api/applet/xunjia/secret/clear?secretId=${secretId}`
|
||||
})
|
||||
}
|
||||
|
||||
export const getMjQuestionList = async (params) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/secret/question/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const addMjQuestion = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/secret/question/add',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export const delMjQuestion = async (id) => {
|
||||
return await request.delete({
|
||||
url: `/admin-api/applet/xunjia/secret/question/delete?id=${id}`
|
||||
})
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
import request from '@/config/axios'
|
||||
export const searchQuestion = async (param) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/question/list',
|
||||
params: param
|
||||
})
|
||||
}
|
||||
|
||||
export const updateQuestion = async (data) => {
|
||||
return await request.put({
|
||||
url: '/admin-api/applet/xunjia/question/update',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export const addQuestion = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/question/add',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteQuestion = async (id) => {
|
||||
return await request.delete({
|
||||
url: '/admin-api/applet/xunjia/question/delete?id=' + id
|
||||
})
|
||||
}
|
||||
|
||||
export const uploadFile = async (data) => {
|
||||
return await request.post({
|
||||
url: '/admin-api/applet/xunjia/question/upload',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export const getQuestionSort = async (param) => {
|
||||
return await request.get({
|
||||
url: '/admin-api/applet/xunjia/question/sort/list',
|
||||
params: param
|
||||
})
|
||||
}
|
||||
|
||||
export const getMjList = async (params) => {
|
||||
return await request.get({
|
||||
url: 'http://localhost/tiku-api/tiku/xunjia/secret/list',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 309 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 192 KiB |
@@ -22,13 +22,13 @@ onMounted(() => {
|
||||
appStore.setCssVarTheme()
|
||||
})
|
||||
|
||||
const { width, height } = useWindowSize()
|
||||
const { width } = useWindowSize()
|
||||
|
||||
// 监听窗口变化
|
||||
watch(
|
||||
() => width.value,
|
||||
(width: number) => {
|
||||
if (width < 768 || height.value < 450) {
|
||||
if (width < 768) {
|
||||
!appStore.getMobile ? appStore.setMobile(true) : undefined
|
||||
setCssVar('--left-menu-min-width', '0')
|
||||
appStore.setCollapse(true)
|
||||
|
||||
@@ -67,7 +67,6 @@ const emit = defineEmits(['close'])
|
||||
destroy-on-close
|
||||
draggable
|
||||
lock-scroll
|
||||
append-to-body
|
||||
v-bind="getBindValue"
|
||||
@close="emit('close')"
|
||||
>
|
||||
@@ -76,17 +75,14 @@ const emit = defineEmits(['close'])
|
||||
<slot name="title">
|
||||
{{ title }}
|
||||
</slot>
|
||||
<div class="flex items-center">
|
||||
<slot name="btn"></slot>
|
||||
<Icon
|
||||
v-if="fullscreen"
|
||||
:icon="isFullscreen ? 'zmdi:fullscreen-exit' : 'zmdi:fullscreen'"
|
||||
class="mr-22px cursor-pointer is-hover z-10"
|
||||
class="mr-22px cursor-pointer is-hover mt-2px z-10"
|
||||
color="var(--el-color-info)"
|
||||
@click="toggleFull"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- 情况一:如果 scroll 为 true,说明开启滚动条 -->
|
||||
|
||||
@@ -8,7 +8,7 @@ export default defineComponent({
|
||||
name: 'DictTag',
|
||||
props: {
|
||||
type: {
|
||||
type: String,
|
||||
type: String as PropType<string>,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
@@ -42,7 +42,7 @@ export default defineComponent({
|
||||
return (
|
||||
<ElTag
|
||||
style={dictData.value?.cssClass ? 'color: #fff' : ''}
|
||||
type={dictData.value?.colorType || 'primary'}
|
||||
type={dictData.value?.colorType}
|
||||
color={
|
||||
dictData.value?.cssClass && isHexColor(dictData.value?.cssClass)
|
||||
? dictData.value?.cssClass
|
||||
@@ -50,7 +50,7 @@ export default defineComponent({
|
||||
}
|
||||
disableTransitions={true}
|
||||
>
|
||||
{dictData.value?.label || '未知'}
|
||||
{dictData.value?.label}
|
||||
</ElTag>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -66,7 +66,6 @@ watch(
|
||||
(options) => {
|
||||
if (echartRef) {
|
||||
echartRef?.setOption(options)
|
||||
resizeHandler()
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -21,34 +21,10 @@ const props = defineProps({
|
||||
height: propTypes.oneOfType([Number, String]).def('40vh'),
|
||||
editorConfig: {
|
||||
type: Object as PropType<Partial<IEditorConfig>>,
|
||||
default: () => ({})
|
||||
default: () => undefined
|
||||
},
|
||||
readonly: propTypes.bool.def(false),
|
||||
modelValue: propTypes.string.def(''),
|
||||
toolbarConfig: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
excludeKeys: [
|
||||
'insertVideo', // 网络视频
|
||||
'insertImage', // 网络图片
|
||||
'insertLink', // 链接
|
||||
'codeBlock', // 代码块
|
||||
'headerSelect', // 标题
|
||||
'blockquote', // 引用
|
||||
'fontFamily', // 字体
|
||||
'todo', // 代办
|
||||
'group-indent', // 缩进
|
||||
'emotion', // 表情
|
||||
'undo', // 撤销
|
||||
'redo', // 重做
|
||||
'fullScreen'
|
||||
],
|
||||
insertKeys: {
|
||||
index: 20, // 自定义插入的位置
|
||||
keys: ['uploadAttachment'] // “上传附件”菜单
|
||||
}
|
||||
})
|
||||
}
|
||||
modelValue: propTypes.string.def('')
|
||||
})
|
||||
|
||||
const emit = defineEmits(['change', 'update:modelValue'])
|
||||
@@ -108,12 +84,6 @@ const editorConfig = computed((): IEditorConfig => {
|
||||
},
|
||||
autoFocus: false,
|
||||
scroll: true,
|
||||
// 在编辑器中,点击选中“附件”节点时,要弹出的菜单
|
||||
hoverbarKeys: {
|
||||
attachment: {
|
||||
menuKeys: ['downloadAttachment'] // “下载附件”菜单
|
||||
}
|
||||
},
|
||||
MENU_CONF: {
|
||||
['uploadImage']: {
|
||||
server: import.meta.env.VITE_UPLOAD_URL,
|
||||
@@ -228,52 +198,6 @@ const editorConfig = computed((): IEditorConfig => {
|
||||
customInsert(res: any, insertFn: InsertFnType) {
|
||||
insertFn(res.data, 'video', res.data)
|
||||
}
|
||||
},
|
||||
uploadAttachment: {
|
||||
server: import.meta.env.VITE_UPLOAD_URL,
|
||||
timeout: 20 * 1000, // 2s
|
||||
|
||||
fieldName: 'file',
|
||||
// meta: { token: 'xxx', a: 100 }, // 请求时附加的数据
|
||||
// metaWithUrl: true, // meta 拼接到 url 上
|
||||
// headers: { Accept: 'text/x-json' },
|
||||
// 自定义增加 http header
|
||||
headers: {
|
||||
Accept: '*',
|
||||
Authorization: 'Bearer ' + getAccessToken(),
|
||||
'tenant-id': getTenantId(),
|
||||
'instance-id': getAppId()
|
||||
},
|
||||
|
||||
maxFileSize: 20 * 1024 * 1024, // 20M
|
||||
|
||||
onBeforeUpload(file: File) {
|
||||
console.log('onBeforeUpload', file)
|
||||
return file // 上传 file 文件
|
||||
// return false // 会阻止上传
|
||||
},
|
||||
onProgress(progress: number) {
|
||||
console.log('onProgress', progress)
|
||||
},
|
||||
onSuccess(file: File, res: any) {
|
||||
console.log('onSuccess', file, res)
|
||||
},
|
||||
onFailed(file: File, res: any) {
|
||||
alert(res.message)
|
||||
console.log('onFailed', file, res)
|
||||
},
|
||||
onError(file: File, err: Error, res: any) {
|
||||
alert(err.message)
|
||||
console.error('onError', file, err, res)
|
||||
},
|
||||
// 上传成功后,用户自定义插入文件
|
||||
customInsert(res: any, file: File, insertFn: Function) {
|
||||
console.log('customInsert', res)
|
||||
|
||||
// 插入附件到编辑器
|
||||
insertFn(file.name, res.data)
|
||||
// insertFn(res.data, `customInsert-${file.name}`, res.data)
|
||||
}
|
||||
}
|
||||
},
|
||||
uploadImgShowBase64: true
|
||||
@@ -288,6 +212,24 @@ const editorStyle = computed(() => {
|
||||
}
|
||||
})
|
||||
|
||||
const toolbarConfig = ref({
|
||||
excludeKeys: [
|
||||
'insertVideo', // 网络视频
|
||||
'insertImage', // 网络图片
|
||||
'insertLink', // 链接
|
||||
'codeBlock', // 代码块
|
||||
'headerSelect', // 标题
|
||||
'blockquote', // 引用
|
||||
'fontFamily', // 字体
|
||||
'todo', // 代办
|
||||
'group-indent', // 缩进
|
||||
'emotion', // 表情
|
||||
'undo', // 撤销
|
||||
'redo', // 重做
|
||||
'fullScreen'
|
||||
]
|
||||
})
|
||||
|
||||
// 回调函数
|
||||
const handleChange = (editor: IDomEditor) => {
|
||||
emit('change', editor)
|
||||
|
||||
@@ -78,10 +78,7 @@ export default defineComponent({
|
||||
})
|
||||
|
||||
// 对表单赋值
|
||||
const setValues = (data: Recordable = {}, isReset: Boolean = false) => {
|
||||
if (isReset) {
|
||||
formModel.value = initModel(unref(getProps).schema, unref(formModel))
|
||||
}
|
||||
const setValues = (data: Recordable = {}) => {
|
||||
formModel.value = Object.assign(unref(formModel), data)
|
||||
}
|
||||
|
||||
@@ -236,7 +233,6 @@ export default defineComponent({
|
||||
vModel={formModel.value[item.field]}
|
||||
{...(autoSetPlaceholder && setTextPlaceholder(item))}
|
||||
{...setComponentProps(item)}
|
||||
filterable
|
||||
format={item.component == 'DatePicker' ? 'YYYY-MM-DD' : null}
|
||||
value-format={item.component == 'DatePicker' ? 'YYYY-MM-DD' : null}
|
||||
style={baseSty + item.componentProps?.style}
|
||||
|
||||
@@ -13,7 +13,7 @@ export const useRenderRadio = () => {
|
||||
return item?.options?.map((option) => {
|
||||
const { ...other } = option
|
||||
return (
|
||||
<Com {...other} label={option[valueAlias || 'value']} value={option[valueAlias || 'value']}>
|
||||
<Com {...other} label={option[valueAlias || 'value']}>
|
||||
{option[labelAlias || 'label']}
|
||||
</Com>
|
||||
)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
v-model:page-size="pageSize"
|
||||
:small="small"
|
||||
:background="true"
|
||||
:page-sizes="[10, 50, 100, 500, 1000]"
|
||||
:page-sizes="[10, 20, 30, 50, 100]"
|
||||
:pager-count="pagerCount"
|
||||
:total="total"
|
||||
class="float-right mt-15px mb-15px"
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="flex">
|
||||
<el-table
|
||||
:data="tableObject.tableList"
|
||||
:row-key="rowkey"
|
||||
:expand-row-keys="expandRowKeys"
|
||||
:show-summary="showSummary"
|
||||
:summary-method="summaryMethod"
|
||||
border
|
||||
style="flex: 1"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table :data="tableObject.tableList" border style="flex: 1">
|
||||
<slot></slot>
|
||||
</el-table>
|
||||
<el-button
|
||||
@@ -37,7 +28,7 @@
|
||||
@end="onDragEnd"
|
||||
>
|
||||
<template #item="{ element: item }">
|
||||
<el-checkbox :key="item.id" :label="item.id" :value="item.id">
|
||||
<el-checkbox :key="item.id" :label="item.id">
|
||||
{{ item.label }}
|
||||
</el-checkbox>
|
||||
</template>
|
||||
@@ -62,14 +53,10 @@ import { useRoute } from 'vue-router'
|
||||
|
||||
const props = defineProps({
|
||||
tableObject: { type: Object, default: () => ({ tableList: [] }) },
|
||||
tableColumns: { type: Array, default: () => [] },
|
||||
rowkey: { type: String, default: 'id' },
|
||||
expandRowKeys: { type: Array, default: () => [] },
|
||||
showSummary: { type: Boolean, default: false },
|
||||
summaryMethod: { type: Function, default: null }
|
||||
tableColumns: { type: Array, default: () => [] }
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:tableObject', 'getList', 'getCheckedColumns', 'selection-change'])
|
||||
const emit = defineEmits(['update:tableObject', 'getList', 'getCheckedColumns'])
|
||||
const route = useRoute()
|
||||
|
||||
const pageNo = ref(props.tableObject?.pageNo || 1)
|
||||
@@ -123,10 +110,6 @@ function onDragEnd() {
|
||||
emitColumns()
|
||||
}
|
||||
|
||||
function handleSelectionChange(val) {
|
||||
emit('selection-change', val)
|
||||
}
|
||||
|
||||
// 勾选确认
|
||||
function confirm() {
|
||||
ClueCacheApi.setClueCache({
|
||||
|
||||
@@ -59,11 +59,6 @@ const usedSchema = ref([])
|
||||
|
||||
const newSchema = computed(() => {
|
||||
let schema: FormSchema[] = cloneDeep(usedSchema.value)
|
||||
schema.forEach((item: FormSchema) => {
|
||||
if (item.component == 'TreeSelect') {
|
||||
item.componentProps['check-strictly'] = true
|
||||
}
|
||||
})
|
||||
if (props.expand && props.expandField && !unref(visible)) {
|
||||
const index = findIndex(schema, (v: FormSchema) => v.field === props.expandField)
|
||||
if (index > -1) {
|
||||
@@ -183,7 +178,7 @@ initSearch()
|
||||
virtual-triggering
|
||||
>
|
||||
<el-checkbox-group v-model="checkedSchema" @change="changeSearch">
|
||||
<el-checkbox v-for="item in schema" :key="item.id" :label="item.id" :value="item.id">
|
||||
<el-checkbox v-for="item in schema" :key="item.id" :label="item.id">
|
||||
{{ item.label }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
|
||||
@@ -44,10 +44,9 @@ const props = defineProps({
|
||||
modelValue: propTypes.oneOfType<string | string[]>([String, Array<String>]).isRequired,
|
||||
title: propTypes.string.def('文件上传'),
|
||||
updateUrl: propTypes.string.def(import.meta.env.VITE_UPLOAD_URL),
|
||||
// fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf']), // 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileType: propTypes.array.def([]),
|
||||
fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf']), // 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
accept: propTypes.string.def('*'),
|
||||
fileSize: propTypes.number.def(100), // 大小限制(MB)
|
||||
fileSize: propTypes.number.def(5), // 大小限制(MB)
|
||||
limit: propTypes.number.def(5), // 数量限制
|
||||
autoUpload: propTypes.bool.def(true), // 自动上传
|
||||
drag: propTypes.bool.def(false), // 拖拽上传
|
||||
|
||||
@@ -7,7 +7,7 @@ const config: {
|
||||
/**
|
||||
* api请求基础路径
|
||||
*/
|
||||
base_url: import.meta.env.VITE_API_BASEPATH,
|
||||
base_url: 'http://localhost' + import.meta.env.VITE_API_BASEPATH,
|
||||
/**
|
||||
* 接口成功返回状态码
|
||||
*/
|
||||
|
||||
@@ -5,11 +5,10 @@ import { config } from './config'
|
||||
const { default_headers } = config
|
||||
|
||||
const request = (option: any) => {
|
||||
const { url, method, params, data, headersType, responseType, isSubmitForm } = option
|
||||
const { url, method, params, data, headersType, responseType } = option
|
||||
return service({
|
||||
url: url,
|
||||
method,
|
||||
isSubmitForm,
|
||||
params,
|
||||
data,
|
||||
responseType: responseType,
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
import errorCode from './errorCode'
|
||||
|
||||
import { resetRouter } from '@/router'
|
||||
import cache from '@/plugins/cache'
|
||||
import { useCache } from '@/hooks/web/useCache'
|
||||
|
||||
const { result_code, base_url, request_timeout } = config
|
||||
|
||||
@@ -49,9 +49,6 @@ const service: AxiosInstance = axios.create({
|
||||
// request拦截器
|
||||
service.interceptors.request.use(
|
||||
(config: InternalAxiosRequestConfig) => {
|
||||
if (config.url?.startsWith('/out-api')) {
|
||||
config.baseURL = ''
|
||||
}
|
||||
// 是否需要设置 token
|
||||
let isToken = (config!.headers || {}).isToken === false
|
||||
whiteList.some((v) => {
|
||||
@@ -65,11 +62,15 @@ service.interceptors.request.use(
|
||||
}
|
||||
// 设置租户
|
||||
const tenantId = getTenantId()
|
||||
if (tenantId) (config as Recordable).headers['tenant-id'] = tenantId
|
||||
if (tenantId) {
|
||||
;(config as Recordable).headers['tenant-id'] = tenantId
|
||||
}
|
||||
|
||||
// 设置实例
|
||||
const appId = getAppId()
|
||||
if (appId) (config as Recordable).headers['instance-id'] = appId
|
||||
if (appId) {
|
||||
;(config as Recordable).headers['instance-id'] = appId
|
||||
}
|
||||
|
||||
const params = config.params || {}
|
||||
const data = config.data || false
|
||||
@@ -82,39 +83,27 @@ service.interceptors.request.use(
|
||||
}
|
||||
// get参数编码
|
||||
if (config.method?.toUpperCase() === 'GET' && params) {
|
||||
let url = config.url + '?'
|
||||
for (const propName of Object.keys(params)) {
|
||||
const value = params[propName]
|
||||
if (value !== void 0 && value !== null && typeof value !== 'undefined') {
|
||||
if (typeof value === 'object') {
|
||||
for (const val of Object.keys(value)) {
|
||||
const params = propName + '[' + val + ']'
|
||||
const subPart = encodeURIComponent(params) + '='
|
||||
url += subPart + encodeURIComponent(value[val]) + '&'
|
||||
}
|
||||
} else {
|
||||
url += `${propName}=${encodeURIComponent(value)}&`
|
||||
}
|
||||
}
|
||||
}
|
||||
// 给 get 请求加上时间戳参数,避免从缓存中拿数据
|
||||
// const now = new Date().getTime()
|
||||
// params = params.substring(0, url.length - 1) + `?_t=${now}`
|
||||
url = url.slice(0, -1)
|
||||
config.params = {}
|
||||
const paramsStr = qs.stringify(params, { allowDots: true })
|
||||
if (paramsStr) {
|
||||
config.url = config.url + '?' + paramsStr
|
||||
}
|
||||
}
|
||||
// 是否提交表单型的接口,如果是,不要频繁调接口
|
||||
if (config?.isSubmitForm) {
|
||||
const requestObj = {
|
||||
url: config.url,
|
||||
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
|
||||
time: new Date().getTime()
|
||||
}
|
||||
const sessionObj = cache.session.get('sessionObj')
|
||||
if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
|
||||
cache.session.set('sessionObj', requestObj)
|
||||
} else {
|
||||
const s_url = sessionObj.url // 请求地址
|
||||
const s_data = sessionObj.data // 请求数据
|
||||
const s_time = sessionObj.time // 请求时间
|
||||
const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交
|
||||
if (
|
||||
s_data === requestObj.data &&
|
||||
requestObj.time - s_time < interval &&
|
||||
s_url === requestObj.url
|
||||
) {
|
||||
const message = '数据正在处理,请勿重复提交'
|
||||
console.warn(`[${s_url}]: ` + message)
|
||||
return Promise.reject(new Error(message))
|
||||
} else {
|
||||
cache.session.set('sessionObj', requestObj)
|
||||
}
|
||||
}
|
||||
config.url = url
|
||||
}
|
||||
return config
|
||||
},
|
||||
@@ -135,9 +124,6 @@ service.interceptors.response.use(
|
||||
throw new Error()
|
||||
}
|
||||
const { t } = useI18n()
|
||||
// if (data.code === undefined) {
|
||||
// return response
|
||||
// }
|
||||
// 未设置状态码则默认成功状态
|
||||
const code = data.code || result_code
|
||||
// 二进制数据则直接返回
|
||||
@@ -211,22 +197,17 @@ service.interceptors.response.use(
|
||||
if (msg === '无效的刷新令牌') {
|
||||
// hard coding:忽略这个提示,直接登出
|
||||
console.log(msg)
|
||||
} else if (code == 18888) {
|
||||
return { data }
|
||||
} else {
|
||||
ElNotification.error({ title: msg })
|
||||
if (code == 403) {
|
||||
ElMessageBox.confirm(`${msg},是否重新登陆`, '提示', {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
// 无访问权限,退出登录
|
||||
const tenantId = cache.local.get('TENANT_ID')
|
||||
const appId = cache.local.get('App_ID')
|
||||
const { wsCache } = useCache()
|
||||
const tenantId = wsCache.get('TENANT_ID')
|
||||
const appId = wsCache.get('App_ID')
|
||||
resetRouter() // 重置静态路由表
|
||||
cache.local.clear()
|
||||
wsCache.clear()
|
||||
removeToken()
|
||||
window.location.href = `/crm/login?tenantId=${tenantId}&appId=${appId}`
|
||||
})
|
||||
window.location.href = `/login?tenantId=${tenantId}&appId=${appId}`
|
||||
}
|
||||
}
|
||||
return Promise.reject('error')
|
||||
@@ -265,15 +246,16 @@ const handleAuthorized = () => {
|
||||
confirmButtonText: t('login.relogin'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
const tenantId = cache.local.get('TENANT_ID')
|
||||
const appId = cache.local.get('App_ID')
|
||||
const { wsCache } = useCache()
|
||||
const tenantId = wsCache.get('TENANT_ID')
|
||||
const appId = wsCache.get('App_ID')
|
||||
resetRouter() // 重置静态路由表
|
||||
cache.local.clear()
|
||||
wsCache.clear()
|
||||
removeToken()
|
||||
isRelogin.show = false
|
||||
// 干掉token后再走一次路由让它过router.beforeEach的校验
|
||||
// window.location.href = window.location.href
|
||||
window.location.href = `/crm/login?tenantId=${tenantId}&appId=${appId}`
|
||||
window.location.href = `/login?tenantId=${tenantId}&appId=${appId}`
|
||||
})
|
||||
}
|
||||
return Promise.reject(t('sys.api.timeoutMessage'))
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import type { App } from 'vue'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import cache from '@/plugins/cache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
export function hasPermi(app: App<Element>) {
|
||||
app.directive('hasPermi', (el, binding) => {
|
||||
const { wsCache } = useCache()
|
||||
const { value } = binding
|
||||
const all_permission = '*:*:*'
|
||||
const permissions = cache.local.get(CACHE_KEY.USER)?.permissions || []
|
||||
const permissions = wsCache.get(CACHE_KEY.USER).permissions
|
||||
|
||||
if (value && value instanceof Array && value.length > 0) {
|
||||
const permissionFlag = value
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import type { App } from 'vue'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import cache from '@/plugins/cache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
export function hasRole(app: App<Element>) {
|
||||
app.directive('hasRole', (el, binding) => {
|
||||
const { wsCache } = useCache()
|
||||
const { value } = binding
|
||||
const super_admin = 'admin'
|
||||
const roles = cache.local.get(CACHE_KEY.USER).roles
|
||||
const roles = wsCache.get(CACHE_KEY.USER).roles
|
||||
|
||||
if (value && value instanceof Array && value.length > 0) {
|
||||
const roleFlag = value
|
||||
|
||||
@@ -229,7 +229,6 @@ const filterFormSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): For
|
||||
value: defaultValue,
|
||||
...schemaItem.form,
|
||||
field: schemaItem.field,
|
||||
isRequired: schemaItem.isRequired,
|
||||
label: schemaItem.form?.label || schemaItem.label
|
||||
}
|
||||
|
||||
@@ -266,6 +265,7 @@ const filterFormSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): For
|
||||
// 过滤 descriptions 结构
|
||||
const filterDescriptionsSchema = (crudSchema: CrudSchema[]): DescriptionsSchema[] => {
|
||||
const descriptionsSchema: FormSchema[] = []
|
||||
|
||||
eachTree(crudSchema, (schemaItem: CrudSchema) => {
|
||||
// 判断是否显示
|
||||
if (schemaItem?.isDetail !== false && schemaItem.detail?.show !== false) {
|
||||
@@ -274,10 +274,6 @@ const filterDescriptionsSchema = (crudSchema: CrudSchema[]): DescriptionsSchema[
|
||||
field: schemaItem.field,
|
||||
label: schemaItem.detail?.label || schemaItem.label
|
||||
}
|
||||
if (schemaItem.form?.component == 'Editor') {
|
||||
descriptionsSchemaItem.span = 2
|
||||
descriptionsSchemaItem.isEditor = true
|
||||
}
|
||||
if (schemaItem.dictType) {
|
||||
descriptionsSchemaItem.dictType = schemaItem.dictType
|
||||
}
|
||||
|
||||
@@ -13,12 +13,7 @@ export const useMessage = () => {
|
||||
},
|
||||
// 成功消息
|
||||
success(content: string) {
|
||||
// ElMessage.success(content)
|
||||
ElMessage({
|
||||
message: content,
|
||||
duration: 1500,
|
||||
type: 'success'
|
||||
})
|
||||
ElMessage.success(content)
|
||||
},
|
||||
// 警告消息
|
||||
warning(content: string) {
|
||||
|
||||
@@ -15,14 +15,14 @@ export function useWatermark(appendEl: HTMLElement | null = document.body) {
|
||||
clear()
|
||||
|
||||
const can = document.createElement('canvas')
|
||||
can.width = 500
|
||||
can.width = 300
|
||||
can.height = 240
|
||||
|
||||
const cans = can.getContext('2d')
|
||||
if (cans) {
|
||||
cans.rotate((-20 * Math.PI) / 120)
|
||||
cans.font = '15px Vedana'
|
||||
cans.fillStyle = 'rgba(0, 0, 0, 0.05)'
|
||||
cans.fillStyle = 'rgba(0, 0, 0, 0.15)'
|
||||
cans.textAlign = 'left'
|
||||
cans.textBaseline = 'middle'
|
||||
cans.fillText(str, can.width / 20, can.height)
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
<script lang="ts" name="Message" setup>
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import * as NotifyMessageApi from '@/api/system/notify/message'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
const { push } = useRouter()
|
||||
const activeName = ref('notice')
|
||||
@@ -12,27 +9,22 @@ const list = ref<any[]>([]) // 消息列表
|
||||
|
||||
// 获得消息列表
|
||||
const getList = async () => {
|
||||
const data = await NotifyMessageApi.getUnreadNotifyMessageList({
|
||||
roleId: userStore.getUser?.currentRole
|
||||
})
|
||||
list.value = data.list
|
||||
list.value = await NotifyMessageApi.getUnreadNotifyMessageList()
|
||||
// 强制设置 unreadCount 为 0,避免小红点因为轮询太慢,不消除
|
||||
unreadCount.value = 0
|
||||
}
|
||||
|
||||
// 获得未读消息数
|
||||
const getUnreadCount = async () => {
|
||||
NotifyMessageApi.getUnreadNotifyMessageCount({ roleId: userStore.getUser?.currentRole }).then(
|
||||
(data) => {
|
||||
NotifyMessageApi.getUnreadNotifyMessageCount().then((data) => {
|
||||
unreadCount.value = data
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
// 跳转我的站内信
|
||||
const goMyList = () => {
|
||||
push({
|
||||
name: 'NotifyMessage'
|
||||
name: 'MyNotifyMessage'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -64,9 +56,10 @@ onUnmounted(() => {
|
||||
<div class="message-list">
|
||||
<template v-for="item in list" :key="item.id">
|
||||
<div class="message-item">
|
||||
<img alt="" class="message-icon" src="@/assets/imgs/avatar.gif" />
|
||||
<div class="message-content">
|
||||
<span class="message-title">
|
||||
{{ item.title }}
|
||||
{{ item.templateNickname }}:{{ item.templateContent }}
|
||||
</span>
|
||||
<span class="message-date">
|
||||
{{ formatDate(item.createTime) }}
|
||||
@@ -101,7 +94,7 @@ onUnmounted(() => {
|
||||
.message-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 5px 0;
|
||||
padding: 20px 0;
|
||||
border-bottom: 1px solid var(--el-border-color-light);
|
||||
|
||||
&:last-child {
|
||||
@@ -120,7 +113,6 @@ onUnmounted(() => {
|
||||
|
||||
.message-title {
|
||||
margin-bottom: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.message-date {
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
// import { ElMessage } from 'element-plus'
|
||||
// import { useClipboard, useCssVar } from '@vueuse/core'
|
||||
import { useCssVar } from '@vueuse/core'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
import { useDesign } from '@/hooks/web/useDesign'
|
||||
import cache from '@/plugins/cache'
|
||||
|
||||
import { setCssVar, trim } from '@/utils'
|
||||
import { colorIsDark, hexToRGB, lighten } from '@/utils/color'
|
||||
@@ -13,13 +12,6 @@ import { ThemeSwitch } from '@/layout/components/ThemeSwitch'
|
||||
import ColorRadioPicker from './components/ColorRadioPicker.vue'
|
||||
// import InterfaceDisplay from './components/InterfaceDisplay.vue'
|
||||
// import LayoutRadioPicker from './components/LayoutRadioPicker.vue'
|
||||
import { useWatermark } from '@/hooks/web/useWatermark'
|
||||
|
||||
const { setWatermark } = useWatermark()
|
||||
|
||||
nextTick(() => {
|
||||
setWatermark('安徽莳松科技有限公司')
|
||||
})
|
||||
|
||||
const { t } = useI18n()
|
||||
const appStore = useAppStore()
|
||||
@@ -196,16 +188,16 @@ watch(
|
||||
|
||||
// 清空缓存
|
||||
const clear = () => {
|
||||
cache.local.delete(CACHE_KEY.LAYOUT)
|
||||
cache.local.delete(CACHE_KEY.THEME)
|
||||
cache.local.delete(CACHE_KEY.IS_DARK)
|
||||
const { wsCache } = useCache()
|
||||
wsCache.delete(CACHE_KEY.LAYOUT)
|
||||
wsCache.delete(CACHE_KEY.THEME)
|
||||
wsCache.delete(CACHE_KEY.IS_DARK)
|
||||
window.location.reload()
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
v-if="false"
|
||||
:class="prefixCls"
|
||||
class="fixed top-[45%] right-0 w-40px h-40px text-center leading-40px bg-[var(--el-color-primary)] cursor-pointer"
|
||||
@click="drawer = true"
|
||||
@@ -213,9 +205,7 @@ const clear = () => {
|
||||
<Icon color="#fff" icon="ep:setting" />
|
||||
</div>
|
||||
|
||||
<div @click="drawer = true">主题配置</div>
|
||||
|
||||
<ElDrawer v-model="drawer" :z-index="4000" append-to-body direction="rtl" size="350px">
|
||||
<ElDrawer v-model="drawer" :z-index="4000" direction="rtl" size="350px">
|
||||
<template #header>
|
||||
<span class="text-16px font-700">{{ t('setting.projectSetting') }}</span>
|
||||
</template>
|
||||
|
||||
@@ -124,6 +124,7 @@ const fixedMenuChange = (show: boolean) => {
|
||||
const setWater = () => {
|
||||
setWatermark(water.value)
|
||||
}
|
||||
setWater()
|
||||
|
||||
const layout = computed(() => appStore.getLayout)
|
||||
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
<script lang="ts" name="UserInfo" setup>
|
||||
import { ElMessageBox } from 'element-plus'
|
||||
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
import { useDesign } from '@/hooks/web/useDesign'
|
||||
import avatarImg from '@/assets/imgs/avatar.gif'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||||
import { getTenantId, getAppId } from '@/utils/auth'
|
||||
import cache from '@/plugins/cache'
|
||||
|
||||
import { Setting } from '@/layout/components/Setting'
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const { wsCache } = useCache()
|
||||
|
||||
const { push, replace } = useRouter()
|
||||
|
||||
const userStore = useUserStore()
|
||||
@@ -23,7 +22,7 @@ const { getPrefixCls } = useDesign()
|
||||
|
||||
const prefixCls = getPrefixCls('user-info')
|
||||
|
||||
const user = cache.local.get(CACHE_KEY.USER)
|
||||
const user = wsCache.get(CACHE_KEY.USER)
|
||||
|
||||
const avatar = user.user.avatar ? user.user.avatar : avatarImg
|
||||
|
||||
@@ -59,10 +58,6 @@ const toProfile = async () => {
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<ElDropdownMenu>
|
||||
<ElDropdownItem>
|
||||
<Icon icon="ep:tools" />
|
||||
<Setting />
|
||||
</ElDropdownItem>
|
||||
<ElDropdownItem>
|
||||
<Icon icon="ep:tools" />
|
||||
<div @click="toProfile">{{ t('common.profile') }}</div>
|
||||
|
||||
@@ -42,13 +42,8 @@ import '@/plugins/tongji' // 百度统计
|
||||
import Logger from '@/utils/Logger'
|
||||
import VueDOMPurifyHTML from 'vue-dompurify-html'
|
||||
|
||||
import { Boot } from '@wangeditor/editor'
|
||||
import attachmentModule from '@wangeditor/plugin-upload-attachment'
|
||||
|
||||
// 创建实例
|
||||
const setupAll = async () => {
|
||||
// 注册。要在创建编辑器之前注册,且只能注册一次,不可重复注册。
|
||||
Boot.registerModule(attachmentModule)
|
||||
const app = createApp(App)
|
||||
|
||||
await setupI18n(app)
|
||||
|
||||
@@ -7,51 +7,25 @@ import { usePageLoading } from '@/hooks/web/usePageLoading'
|
||||
import { useDictStoreWithOut } from '@/store/modules/dict'
|
||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||
import { usePermissionStoreWithOut } from '@/store/modules/permission'
|
||||
import { useAppStoreWithOut } from '@/store/modules/app'
|
||||
import { getTenantId, getAppId, setTenantId, setAppId } from '@/utils/auth'
|
||||
import { checkPermi } from '@/utils/permission'
|
||||
import { getTenantId, getAppId } from '@/utils/auth'
|
||||
|
||||
const { start, done } = useNProgress()
|
||||
|
||||
const { loadStart, loadDone } = usePageLoading()
|
||||
// 路由不重定向白名单
|
||||
const whiteList = [
|
||||
'/login',
|
||||
'/mp-login',
|
||||
'/nm-detail',
|
||||
'/social-login',
|
||||
'/auth-redirect',
|
||||
'/bind',
|
||||
'/register',
|
||||
'/swagger'
|
||||
// '/crm/'
|
||||
]
|
||||
const whiteList = ['/login', '/social-login', '/auth-redirect', '/bind', '/register', '/swagger']
|
||||
|
||||
// 路由加载前
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
start()
|
||||
loadStart()
|
||||
const userStore = useUserStoreWithOut()
|
||||
if (to.path == '/login') {
|
||||
userStore.resetState() // 重置用户信息状态
|
||||
}
|
||||
if (getAccessToken()) {
|
||||
if (to.path === '/login') {
|
||||
if (to.query?.tenantId && to.query?.appId) {
|
||||
setApp(to.query.tenantId, to.query.appId)
|
||||
await waitTime(1500)
|
||||
}
|
||||
next({ path: '/' })
|
||||
} else if (to.name == 'ReceiveInput') {
|
||||
if (!checkPermi(['clue:remark:receive-input'])) {
|
||||
next({ path: '/403', replace: true, query: { noGoBack: true } })
|
||||
return
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
} else {
|
||||
// 获取所有字典
|
||||
const dictStore = useDictStoreWithOut()
|
||||
const userStore = useUserStoreWithOut()
|
||||
const permissionStore = usePermissionStoreWithOut()
|
||||
if (!dictStore.getIsSetDict) {
|
||||
await dictStore.setDictMap()
|
||||
@@ -82,29 +56,12 @@ router.beforeEach(async (to, from, next) => {
|
||||
if (tenantId && appId) {
|
||||
next(`/login?tenantId=${tenantId}&appId=${appId}&redirect=${to.fullPath}`) // 否则全部重定向到登录页
|
||||
} else {
|
||||
// next(`/login?redirect=${to.fullPath}`) // 使用内部路由重定向到登录页
|
||||
window.location.href = 'https://cloud.ahduima.com/ss/login' // 已注释:避免外部跳转
|
||||
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
async function waitTime(seconds) {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve()
|
||||
}, seconds)
|
||||
})
|
||||
}
|
||||
|
||||
function setApp(tenantId, appId) {
|
||||
setTenantId(tenantId)
|
||||
|
||||
setAppId(appId)
|
||||
const appStore = useAppStoreWithOut()
|
||||
appStore.setAppInfo(appId)
|
||||
}
|
||||
|
||||
router.afterEach((to) => {
|
||||
useTitle(to?.meta?.title)
|
||||
done() // 结束Progress
|
||||
|
||||
8
src/plugins/cache/index.js
vendored
8
src/plugins/cache/index.js
vendored
@@ -26,7 +26,7 @@ const sessionCache = {
|
||||
let storage = storageStr ? JSON.parse(storageStr) : {}
|
||||
return storage[key]
|
||||
},
|
||||
delete(key) {
|
||||
remove(key) {
|
||||
if (!sessionStorage) {
|
||||
return null
|
||||
}
|
||||
@@ -62,7 +62,7 @@ const localCache = {
|
||||
let storage = storageStr ? JSON.parse(storageStr) : {}
|
||||
return storage[key]
|
||||
},
|
||||
delete(key) {
|
||||
remove(key) {
|
||||
if (!localStorage) {
|
||||
return null
|
||||
}
|
||||
@@ -73,10 +73,6 @@ const localCache = {
|
||||
let storage = storageStr ? JSON.parse(storageStr) : {}
|
||||
delete storage[key]
|
||||
localStorage.setItem(name, JSON.stringify(storage))
|
||||
},
|
||||
clear() {
|
||||
let storage = {}
|
||||
localStorage.setItem(name, JSON.stringify(storage))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import remainingRouter from './modules/remaining'
|
||||
|
||||
// 创建路由实例
|
||||
const router = createRouter({
|
||||
history: createWebHistory(import.meta.env.VITE_BASE_PATH), // createWebHashHistory URL带#,createWebHistory URL不带#
|
||||
history: createWebHistory(), // createWebHashHistory URL带#,createWebHistory URL不带#
|
||||
strict: true,
|
||||
routes: remainingRouter as RouteRecordRaw[],
|
||||
scrollBehavior: () => ({ left: 0, top: 0 })
|
||||
|
||||
@@ -51,7 +51,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
path: '',
|
||||
component: Layout,
|
||||
redirect: '/Home/index',
|
||||
name: '',
|
||||
@@ -59,21 +59,6 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
title: '首页',
|
||||
hidden: true
|
||||
}
|
||||
// ,
|
||||
// children: [
|
||||
// {
|
||||
// path: '/index',
|
||||
// component: () => import('@/views/Basic/Menu/index.vue'),
|
||||
// name: 'Home',
|
||||
// meta: {
|
||||
// title: '首页',
|
||||
// icon: 'ep:home-filled',
|
||||
// noTagsView: true,
|
||||
// affix: true
|
||||
// // hidden: true
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
},
|
||||
{
|
||||
path: '/swagger',
|
||||
@@ -109,8 +94,8 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
},
|
||||
{
|
||||
path: 'notify-message',
|
||||
component: () => import('@/views/Profile/NotifyMessage.vue'),
|
||||
name: 'NotifyMessage',
|
||||
component: () => import('@/views/system/notify/my/index.vue'),
|
||||
name: 'MyNotifyMessage',
|
||||
meta: {
|
||||
canTo: true,
|
||||
hidden: true,
|
||||
@@ -121,6 +106,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// {
|
||||
// path: '/dict',
|
||||
// component: Layout,
|
||||
@@ -144,59 +130,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// path: '/Basic',
|
||||
// component: Layout,
|
||||
// name: 'Basic',
|
||||
// redirect: '/Basic/menu',
|
||||
// meta: { title: '菜单管理' },
|
||||
// children: [
|
||||
// {
|
||||
// path: 'menu',
|
||||
// component: () => import('@/views/Basic/Menu/index.vue'),
|
||||
// name: 'Menu',
|
||||
// meta: {
|
||||
// canTo: true,
|
||||
// hidden: true,
|
||||
// noTagsView: false,
|
||||
// icon: 'ep:user',
|
||||
// title: '菜单管理'
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
path: '/clue-add',
|
||||
name: 'ClueAdd',
|
||||
component: () => import('@/views/Clue/Pool/ClueAdd.vue'),
|
||||
meta: {
|
||||
title: '线索录入',
|
||||
hidden: true,
|
||||
noTagsView: true
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/receive-input/:id',
|
||||
name: 'ReceiveInput',
|
||||
component: () => import('@/views/Clue/ReceiveInput/index.vue'),
|
||||
meta: {
|
||||
title: '接待信息录入',
|
||||
hidden: true,
|
||||
noTagsView: true,
|
||||
permission: 'clue:receiveInput:index'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/clue-enroll/:id',
|
||||
name: 'ClueEnroll',
|
||||
component: () => import('@/views/Clue/Pool/ClueEnroll.vue'),
|
||||
meta: {
|
||||
title: '学员报名登记',
|
||||
hidden: true,
|
||||
noTagsView: true,
|
||||
permission: 'clue:pool:enroll'
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
path: '/login',
|
||||
component: () => import('@/views/Login/Login.vue'),
|
||||
@@ -207,16 +141,6 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
noTagsView: true
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/mp-login',
|
||||
component: () => import('@/views/Login/MPLogin.vue'),
|
||||
name: 'MPLogin',
|
||||
meta: {
|
||||
hidden: true,
|
||||
title: '用户绑定',
|
||||
noTagsView: true
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/sso',
|
||||
component: () => import('@/views/Login/Login.vue'),
|
||||
@@ -227,16 +151,6 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||
noTagsView: true
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/nm-detail',
|
||||
component: () => import('@/views/Profile/NotifyMessageDetail.vue'),
|
||||
name: 'NMDetail',
|
||||
meta: {
|
||||
hidden: true,
|
||||
title: '通知详情',
|
||||
noTagsView: true
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/403',
|
||||
component: () => import('@/views/Error/403.vue'),
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
const staticRouter: AppCustomRouteRecordRaw[] = [
|
||||
{
|
||||
icon: 'ep:calendar',
|
||||
path: '/Okr',
|
||||
component: '',
|
||||
name: 'OKR',
|
||||
componentName: '',
|
||||
redirect: '',
|
||||
parentId: 0,
|
||||
visible: true,
|
||||
alwaysShow: true,
|
||||
children: [
|
||||
{
|
||||
icon: 'ep:finished',
|
||||
path: 'okr-management',
|
||||
name: 'OKR管理',
|
||||
componentName: 'OkrManagement',
|
||||
component: 'OKR/Management/index',
|
||||
visible: true,
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: 'OKR管理'
|
||||
},
|
||||
redirect: ''
|
||||
},
|
||||
{
|
||||
icon: 'ep:alarm-clock',
|
||||
path: 'okr-wait',
|
||||
name: '待办事项',
|
||||
componentName: 'OkrWait',
|
||||
component: 'OKR/Wait/index',
|
||||
meta: {
|
||||
title: '待办事项'
|
||||
},
|
||||
visible: true,
|
||||
alwaysShow: true,
|
||||
redirect: ''
|
||||
},
|
||||
{
|
||||
icon: 'ep:data-line',
|
||||
path: 'okr-analysis',
|
||||
name: 'Okr统计',
|
||||
componentName: 'OkrAnalysis',
|
||||
component: 'OKR/Analysis/index',
|
||||
meta: {
|
||||
title: 'Okr统计'
|
||||
},
|
||||
visible: true,
|
||||
alwaysShow: true,
|
||||
redirect: ''
|
||||
},
|
||||
{
|
||||
icon: 'ep:data-board',
|
||||
path: 'okr-meeting',
|
||||
name: '会议管理',
|
||||
componentName: 'OkrMeeting',
|
||||
component: 'OKR/Meeting/index',
|
||||
meta: {
|
||||
title: '会议管理'
|
||||
},
|
||||
visible: true,
|
||||
alwaysShow: true,
|
||||
redirect: ''
|
||||
},
|
||||
{
|
||||
icon: 'ep:data-board',
|
||||
path: 'okr-meeting-info/:id',
|
||||
name: '会议详情',
|
||||
componentName: 'MeetingInfo',
|
||||
component: 'OKR/Meeting/MeetingInfo',
|
||||
meta: {
|
||||
title: '会议详情'
|
||||
},
|
||||
visible: false,
|
||||
alwaysShow: true,
|
||||
redirect: '',
|
||||
keepAlive: true
|
||||
}
|
||||
],
|
||||
meta: {
|
||||
title: 'OKR',
|
||||
icon: 'ep:calendar'
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
export default staticRouter
|
||||
@@ -2,12 +2,13 @@ import { defineStore } from 'pinia'
|
||||
import { store } from '../index'
|
||||
import { setCssVar, humpToUnderline } from '@/utils'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
import { ElementPlusSize } from '@/types/elementPlus'
|
||||
import { LayoutType } from '@/types/layout'
|
||||
import { ThemeTypes } from '@/types/theme'
|
||||
import { getAppInfo } from '@/api/login'
|
||||
import cache from '@/plugins/cache'
|
||||
|
||||
const { wsCache } = useCache()
|
||||
|
||||
interface AppState {
|
||||
breadcrumb: boolean
|
||||
@@ -45,7 +46,7 @@ export const useAppStore = defineStore('app', {
|
||||
sizeMap: ['default', 'large', 'small'],
|
||||
mobile: false, // 是否是移动端
|
||||
title: import.meta.env.VITE_APP_TITLE, // 标题
|
||||
appInfo: cache.local.get('appInfo'),
|
||||
appInfo: wsCache.get('appInfo'),
|
||||
pageLoading: false, // 路由跳转loading
|
||||
|
||||
breadcrumb: true, // 面包屑
|
||||
@@ -63,12 +64,12 @@ export const useAppStore = defineStore('app', {
|
||||
fixedHeader: true, // 固定toolheader
|
||||
footer: false, // 显示页脚
|
||||
greyMode: false, // 是否开始灰色模式,用于特殊悼念日
|
||||
fixedMenu: cache.local.get('fixedMenu') || false, // 是否固定菜单
|
||||
fixedMenu: wsCache.get('fixedMenu') || false, // 是否固定菜单
|
||||
|
||||
layout: cache.local.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局
|
||||
isDark: cache.local.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式
|
||||
currentSize: cache.local.get('default') || 'default', // 组件尺寸
|
||||
theme: cache.local.get(CACHE_KEY.THEME) || {
|
||||
layout: wsCache.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局
|
||||
isDark: wsCache.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式
|
||||
currentSize: wsCache.get('default') || 'default', // 组件尺寸
|
||||
theme: wsCache.get(CACHE_KEY.THEME) || {
|
||||
// 主题色
|
||||
elColorPrimary: '#409eff',
|
||||
// 左侧菜单边框颜色
|
||||
@@ -224,7 +225,7 @@ export const useAppStore = defineStore('app', {
|
||||
this.greyMode = greyMode
|
||||
},
|
||||
setFixedMenu(fixedMenu: boolean) {
|
||||
cache.local.set('fixedMenu', fixedMenu)
|
||||
wsCache.set('fixedMenu', fixedMenu)
|
||||
this.fixedMenu = fixedMenu
|
||||
},
|
||||
setPageLoading(pageLoading: boolean) {
|
||||
@@ -236,7 +237,7 @@ export const useAppStore = defineStore('app', {
|
||||
return
|
||||
}
|
||||
this.layout = layout
|
||||
cache.local.set(CACHE_KEY.LAYOUT, this.layout)
|
||||
wsCache.set(CACHE_KEY.LAYOUT, this.layout)
|
||||
},
|
||||
setTitle(title: string) {
|
||||
this.title = title
|
||||
@@ -250,18 +251,18 @@ export const useAppStore = defineStore('app', {
|
||||
document.documentElement.classList.add('light')
|
||||
document.documentElement.classList.remove('dark')
|
||||
}
|
||||
cache.local.set(CACHE_KEY.IS_DARK, this.isDark)
|
||||
wsCache.set(CACHE_KEY.IS_DARK, this.isDark)
|
||||
},
|
||||
setCurrentSize(currentSize: ElementPlusSize) {
|
||||
this.currentSize = currentSize
|
||||
cache.local.set('currentSize', this.currentSize)
|
||||
wsCache.set('currentSize', this.currentSize)
|
||||
},
|
||||
setMobile(mobile: boolean) {
|
||||
this.mobile = mobile
|
||||
},
|
||||
setTheme(theme: ThemeTypes) {
|
||||
this.theme = Object.assign(this.theme, theme)
|
||||
cache.local.set(CACHE_KEY.THEME, this.theme)
|
||||
wsCache.set(CACHE_KEY.THEME, this.theme)
|
||||
},
|
||||
setCssVarTheme() {
|
||||
for (const key in this.theme) {
|
||||
@@ -273,7 +274,7 @@ export const useAppStore = defineStore('app', {
|
||||
},
|
||||
async setAppInfo(appId: number) {
|
||||
const appInfo = await getAppInfo(appId)
|
||||
cache.local.set('appInfo', appInfo)
|
||||
wsCache.set('appInfo', appInfo)
|
||||
this.appInfo = appInfo
|
||||
return appInfo
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ import { defineStore } from 'pinia'
|
||||
import { store } from '../index'
|
||||
// @ts-ignore
|
||||
import { DictDataVO } from '@/api/system/dict/types'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import cache from '@/plugins/cache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
const { wsCache } = useCache('sessionStorage')
|
||||
import { listSimpleDictData } from '@/api/system/dict/dict.data'
|
||||
|
||||
export interface DictValueType {
|
||||
@@ -28,7 +28,7 @@ export const useDictStore = defineStore('dict', {
|
||||
}),
|
||||
getters: {
|
||||
getDictMap(): Recordable {
|
||||
const dictMap = cache.session.get(CACHE_KEY.DICT_CACHE)
|
||||
const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE)
|
||||
if (dictMap) {
|
||||
this.dictMap = dictMap
|
||||
}
|
||||
@@ -40,12 +40,12 @@ export const useDictStore = defineStore('dict', {
|
||||
},
|
||||
actions: {
|
||||
async setDictMap() {
|
||||
const dictMap = cache.session.get(CACHE_KEY.DICT_CACHE)
|
||||
const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE)
|
||||
if (dictMap) {
|
||||
this.dictMap = dictMap
|
||||
this.isSetDict = true
|
||||
} else {
|
||||
const res = (await listSimpleDictData()) || []
|
||||
const res = await listSimpleDictData()
|
||||
// 设置数据
|
||||
const dictDataMap = new Map<string, any>()
|
||||
res.forEach((dictData: DictDataVO) => {
|
||||
@@ -64,7 +64,7 @@ export const useDictStore = defineStore('dict', {
|
||||
})
|
||||
this.dictMap = dictDataMap
|
||||
this.isSetDict = true
|
||||
cache.session.set(CACHE_KEY.DICT_CACHE, dictDataMap) // 60 秒 过期
|
||||
wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期
|
||||
}
|
||||
},
|
||||
getDictByType(type: string) {
|
||||
@@ -74,8 +74,8 @@ export const useDictStore = defineStore('dict', {
|
||||
return this.dictMap[type]
|
||||
},
|
||||
async resetDict() {
|
||||
cache.session.delete(CACHE_KEY.DICT_CACHE)
|
||||
const res = (await listSimpleDictData()) || []
|
||||
wsCache.delete(CACHE_KEY.DICT_CACHE)
|
||||
const res = await listSimpleDictData()
|
||||
// 设置数据
|
||||
const dictDataMap = new Map<string, any>()
|
||||
res.forEach((dictData: DictDataVO) => {
|
||||
@@ -94,7 +94,7 @@ export const useDictStore = defineStore('dict', {
|
||||
})
|
||||
this.dictMap = dictDataMap
|
||||
this.isSetDict = true
|
||||
cache.session.set(CACHE_KEY.DICT_CACHE, dictDataMap) // 60 秒 过期
|
||||
wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -2,10 +2,10 @@ import { defineStore } from 'pinia'
|
||||
import { store } from '../index'
|
||||
import { cloneDeep } from 'lodash-es'
|
||||
import remainingRouter from '@/router/modules/remaining'
|
||||
import staticRouter from '@/router/modules/static'
|
||||
import { generateRoute, flatMultiLevelRoutes } from '@/utils/routerHelper'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import cache from '@/plugins/cache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
|
||||
const { wsCache } = useCache()
|
||||
|
||||
export interface PermissionState {
|
||||
routers: AppRouteRecordRaw[]
|
||||
@@ -34,28 +34,9 @@ export const usePermissionStore = defineStore('permission', {
|
||||
async generateRoutes(): Promise<unknown> {
|
||||
return new Promise<void>(async (resolve) => {
|
||||
let res: AppCustomRouteRecordRaw[] = []
|
||||
if (cache.local.get(CACHE_KEY.ROLE_ROUTERS)) {
|
||||
res = cache.local.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[]
|
||||
if (wsCache.get(CACHE_KEY.ROLE_ROUTERS)) {
|
||||
res = wsCache.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[]
|
||||
}
|
||||
const staticRouters = cloneDeep(staticRouter)
|
||||
// 与动态路由比较,首先判断目录是否存在,如果存在就合并,并替换动态路由中的目录
|
||||
staticRouters.forEach((item) => {
|
||||
const index = res.findIndex((item2) => item2.path === item.path)
|
||||
if (index !== -1) {
|
||||
const arr = []
|
||||
if (!item.children || item.children.length === 0) {
|
||||
item.children = arr
|
||||
}
|
||||
if (res[index].children && res[index].children.length > 0) {
|
||||
item.children = item.children.concat(res[index].children)
|
||||
}
|
||||
// routerMap[index].children = item.children
|
||||
// 插入动态路由数组的第二位
|
||||
res[index] = { ...res, ...item }
|
||||
} else {
|
||||
res = [...staticRouters, ...res]
|
||||
}
|
||||
})
|
||||
const routerMap: AppRouteRecordRaw[] = generateRoute(res)
|
||||
// 动态路由,404一定要放到最后面
|
||||
this.addRouters = routerMap.concat([
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import { store } from '../index'
|
||||
import { defineStore } from 'pinia'
|
||||
import { getAccessToken, removeToken } from '@/utils/auth'
|
||||
import { CACHE_KEY } from '@/hooks/web/useCache'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
import { getInfo, loginOut } from '@/api/login'
|
||||
import cache from '@/plugins/cache'
|
||||
|
||||
const { wsCache } = useCache()
|
||||
|
||||
interface UserVO {
|
||||
id: number
|
||||
avatar: string
|
||||
nickname: string
|
||||
currentRole: number
|
||||
}
|
||||
interface UserInfoVO {
|
||||
permissions: string[]
|
||||
@@ -26,8 +26,7 @@ export const useUserStore = defineStore('admin-user', {
|
||||
user: {
|
||||
id: 0,
|
||||
avatar: '',
|
||||
nickname: '',
|
||||
currentRole: 0
|
||||
nickname: ''
|
||||
}
|
||||
}),
|
||||
getters: {
|
||||
@@ -50,21 +49,21 @@ export const useUserStore = defineStore('admin-user', {
|
||||
this.resetState()
|
||||
return null
|
||||
}
|
||||
let userInfo = cache.local.get(CACHE_KEY.USER)
|
||||
if (!userInfo || !userInfo?.menus || userInfo.menus.length == 0) {
|
||||
let userInfo = wsCache.get(CACHE_KEY.USER)
|
||||
if (!userInfo) {
|
||||
userInfo = await getInfo({})
|
||||
}
|
||||
this.permissions = userInfo.permissions
|
||||
this.roles = userInfo.roles
|
||||
this.user = userInfo.user
|
||||
this.isSetUser = true
|
||||
cache.local.set(CACHE_KEY.USER, userInfo)
|
||||
cache.local.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus)
|
||||
wsCache.set(CACHE_KEY.USER, userInfo)
|
||||
wsCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus)
|
||||
},
|
||||
async loginOut() {
|
||||
await loginOut()
|
||||
removeToken()
|
||||
// cache.local.clear()
|
||||
wsCache.clear()
|
||||
this.resetState()
|
||||
},
|
||||
resetState() {
|
||||
@@ -74,13 +73,11 @@ export const useUserStore = defineStore('admin-user', {
|
||||
this.user = {
|
||||
id: 0,
|
||||
avatar: '',
|
||||
nickname: '',
|
||||
currentRole: 0
|
||||
nickname: ''
|
||||
}
|
||||
cache.local.delete(CACHE_KEY.USER)
|
||||
},
|
||||
refresh() {
|
||||
cache.local.delete(CACHE_KEY.USER)
|
||||
wsCache.delete(CACHE_KEY.USER)
|
||||
this.resetState()
|
||||
window.location.href = ''
|
||||
}
|
||||
|
||||
@@ -69,51 +69,3 @@
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.el-table {
|
||||
.caret-wrapper {
|
||||
width: 16px;
|
||||
}
|
||||
.sort-caret {
|
||||
left: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.el-table--default .cell {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.flex-radio{
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
.el-radio__label {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
/* 去除 Chrome、Safari、Edge、Opera 中的指示器 */
|
||||
.el-input__inner::-webkit-outer-spin-button,
|
||||
.el-input__inner::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* 去除 Firefox 中的指示器 */
|
||||
.el-input__inner[type='number'] {
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
.el-drawer__header {
|
||||
padding: 16px 16px 8px 16px !important;
|
||||
margin: 0 !important;
|
||||
line-height: 24px !important;
|
||||
font-size: 18px !important;
|
||||
color: #303133 !important;
|
||||
box-sizing: border-box !important;
|
||||
// border-bottom: 1px solid #e8e8e8 !important;
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import { useCache } from '@/hooks/web/useCache'
|
||||
import { TokenType } from '@/api/login/types'
|
||||
import { decrypt, encrypt } from '@/utils/jsencrypt'
|
||||
import cache from '@/plugins/cache'
|
||||
|
||||
const { wsCache } = useCache()
|
||||
|
||||
const AccessTokenKey = 'ACCESS_TOKEN'
|
||||
const RefreshTokenKey = 'REFRESH_TOKEN'
|
||||
@@ -8,34 +10,24 @@ const RefreshTokenKey = 'REFRESH_TOKEN'
|
||||
// 获取token
|
||||
export const getAccessToken = () => {
|
||||
// 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错
|
||||
return localStorage.getItem(AccessTokenKey)
|
||||
? localStorage.getItem(AccessTokenKey)
|
||||
: localStorage.getItem('ACCESS_TOKEN')
|
||||
// return cache.local.get(AccessTokenKey)
|
||||
// ? cache.local.get(AccessTokenKey)
|
||||
// : cache.local.get('ACCESS_TOKEN')
|
||||
return wsCache.get(AccessTokenKey) ? wsCache.get(AccessTokenKey) : wsCache.get('ACCESS_TOKEN')
|
||||
}
|
||||
|
||||
// 刷新token
|
||||
export const getRefreshToken = () => {
|
||||
return localStorage.getItem(RefreshTokenKey)
|
||||
// return cache.local.get(RefreshTokenKey)
|
||||
return wsCache.get(RefreshTokenKey)
|
||||
}
|
||||
|
||||
// 设置token
|
||||
export const setToken = (token: TokenType) => {
|
||||
localStorage.setItem(AccessTokenKey, token.accessToken)
|
||||
localStorage.setItem(RefreshTokenKey, token.refreshToken)
|
||||
// cache.local.set(RefreshTokenKey, token.refreshToken)
|
||||
// cache.local.set(AccessTokenKey, token.accessToken)
|
||||
wsCache.set(RefreshTokenKey, token.refreshToken, { exp: token.expiresTime })
|
||||
wsCache.set(AccessTokenKey, token.accessToken)
|
||||
}
|
||||
|
||||
// 删除token
|
||||
export const removeToken = () => {
|
||||
localStorage.removeItem(AccessTokenKey)
|
||||
localStorage.removeItem(RefreshTokenKey)
|
||||
// cache.local.delete(AccessTokenKey)
|
||||
// cache.local.delete(RefreshTokenKey)
|
||||
wsCache.delete(AccessTokenKey)
|
||||
wsCache.delete(RefreshTokenKey)
|
||||
}
|
||||
|
||||
/** 格式化token(jwt格式) */
|
||||
@@ -55,7 +47,7 @@ export type LoginFormType = {
|
||||
}
|
||||
|
||||
export const getLoginForm = () => {
|
||||
const loginForm: LoginFormType = cache.local.get(LoginFormKey)
|
||||
const loginForm: LoginFormType = wsCache.get(LoginFormKey)
|
||||
if (loginForm) {
|
||||
loginForm.password = decrypt(loginForm.password) as string
|
||||
}
|
||||
@@ -64,11 +56,11 @@ export const getLoginForm = () => {
|
||||
|
||||
export const setLoginForm = (loginForm: LoginFormType) => {
|
||||
loginForm.password = encrypt(loginForm.password) as string
|
||||
cache.local.set(LoginFormKey, loginForm)
|
||||
wsCache.set(LoginFormKey, loginForm, { exp: 30 * 24 * 60 * 60 })
|
||||
}
|
||||
|
||||
export const removeLoginForm = () => {
|
||||
cache.local.delete(LoginFormKey)
|
||||
wsCache.delete(LoginFormKey)
|
||||
}
|
||||
|
||||
// ========== 租户相关 ==========
|
||||
@@ -77,52 +69,52 @@ const TenantIdKey = 'TENANT_ID'
|
||||
const TenantNameKey = 'TENANT_NAME'
|
||||
|
||||
export const getTenantName = () => {
|
||||
return cache.local.get(TenantNameKey)
|
||||
return wsCache.get(TenantNameKey)
|
||||
}
|
||||
|
||||
export const setTenantName = (username: string) => {
|
||||
cache.local.set(TenantNameKey, username)
|
||||
wsCache.set(TenantNameKey, username, { exp: 30 * 24 * 60 * 60 })
|
||||
}
|
||||
|
||||
export const removeTenantName = () => {
|
||||
cache.local.delete(TenantNameKey)
|
||||
wsCache.delete(TenantNameKey)
|
||||
}
|
||||
|
||||
export const getTenantId = () => {
|
||||
return cache.local.get(TenantIdKey)
|
||||
return wsCache.get(TenantIdKey)
|
||||
}
|
||||
|
||||
export const setTenantId = (username: string) => {
|
||||
cache.local.set(TenantIdKey, username)
|
||||
wsCache.set(TenantIdKey, username)
|
||||
}
|
||||
|
||||
export const removeTenantId = () => {
|
||||
cache.local.delete(TenantIdKey)
|
||||
wsCache.delete(TenantIdKey)
|
||||
}
|
||||
|
||||
const AppIdKey = 'App_ID'
|
||||
const AppNameKey = 'App_NAME'
|
||||
|
||||
export const getAPPName = () => {
|
||||
return cache.local.get(AppNameKey)
|
||||
return wsCache.get(AppNameKey)
|
||||
}
|
||||
|
||||
export const setAppName = (name: string) => {
|
||||
cache.local.set(AppNameKey, name)
|
||||
wsCache.set(AppNameKey, name, { exp: 30 * 24 * 60 * 60 })
|
||||
}
|
||||
|
||||
export const removeAppName = () => {
|
||||
cache.local.delete(AppNameKey)
|
||||
wsCache.delete(AppNameKey)
|
||||
}
|
||||
|
||||
export const getAppId = () => {
|
||||
return cache.local.get(AppIdKey)
|
||||
return wsCache.get(AppIdKey)
|
||||
}
|
||||
|
||||
export const setAppId = (id: number) => {
|
||||
cache.local.set(AppIdKey, id)
|
||||
wsCache.set(AppIdKey, id)
|
||||
}
|
||||
|
||||
export const removeAppId = () => {
|
||||
cache.local.delete(AppIdKey)
|
||||
wsCache.delete(AppIdKey)
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user