diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index 5949dc4..c378291 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -9,6 +9,7 @@ :on-error="handleUploadError" :on-exceed="handleExceed" :on-success="handleUploadSuccess" + :on-progress="handleUploadProgress" :show-file-list="false" :data="uploadData" :drag="drag" @@ -51,6 +52,16 @@ + + + + @@ -130,6 +141,19 @@ watch( { deep: true, immediate: true } ) +const colors = [ + { color: '#409EFF', percentage: 100 }, + { color: '#67C23A', percentage: 80 }, + { color: '#EBB563', percentage: 60 }, + { color: '#E6A23C', percentage: 40 }, + { color: '#F56C6C', percentage: 20 } +] +const percentage = ref(0) +const handleUploadProgress = (evt) => { + percentage.value = parseInt(evt.percent, 10) +} +const uploadOnProgress = ref(false) + // 上传前校检格式和大小 function handleBeforeUpload(file) { // 校检文件类型 @@ -156,7 +180,9 @@ function handleBeforeUpload(file) { return false } } - proxy.$modal.loading('正在上传文件,请稍候...') + // proxy.$modal.loading('正在上传文件,请稍候...') + percentage.value = 0 + uploadOnProgress.value = true number.value++ return true } @@ -169,7 +195,8 @@ function handleExceed() { // 上传失败 function handleUploadError(err) { proxy.$modal.msgError('上传失败') - proxy.$modal.closeLoading() + // proxy.$modal.closeLoading() + uploadOnProgress.value = false number.value-- } @@ -178,7 +205,8 @@ function handleUploadSuccess(response, uploadFile) { if (response.code != 200) { fileList.value = [] proxy.$modal.msgError(`上传失败,原因:${response.msg}!`) - proxy.$modal.closeLoading() + // proxy.$modal.closeLoading() + uploadOnProgress.value = false number.value-- return } @@ -191,7 +219,8 @@ function handleUploadSuccess(response, uploadFile) { number.value = 0 emit('update:modelValue', listToString(fileList.value)) emit('success', listToString(fileList.value)) - proxy.$modal.closeLoading() + // proxy.$modal.closeLoading() + uploadOnProgress.value = false } } diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue index 10de195..71e6090 100644 --- a/src/components/Pagination/index.vue +++ b/src/components/Pagination/index.vue @@ -18,7 +18,7 @@ // import { scrollTo } from "@/utils/scroll-to"; import { computed } from 'vue' export default { - name: 'pagingation', + name: 'Pagination', emits: ['update:page', 'update:limit', 'pagination'], props: { total: { @@ -64,12 +64,17 @@ export default { setup(props, { ctx, emit }) { const router = useRouter() const route = useRoute() + const noCache = router.currentRoute.value.meta.noCache const currentPage = computed({ get() { - if (route.query.page) { - emit('update:page', parseInt(route.query.page)) + if (noCache) { + if (route.query.page) { + emit('update:page', parseInt(route.query.page)) + } + return route.query.page ? parseInt(route.query.page) : props.page + } else { + return props.page } - return route.query.page ? parseInt(route.query.page) : props.page }, set(val) { emit('update:page', val) @@ -77,10 +82,14 @@ export default { }) const pageSize = computed({ get() { - if (route.query.limit) { - emit('update:limit', parseInt(route.query.limit)) + if (noCache) { + if (route.query.limit) { + emit('update:limit', parseInt(route.query.limit)) + } + return route.query.limit ? parseInt(route.query.limit) : props.limit + } else { + return props.limit } - return route.query.limit ? parseInt(route.query.limit) : props.limit }, set(val) { emit('update:limit', val) @@ -92,26 +101,30 @@ export default { if (props.autoScroll) { // scrollTo(0, 800); } - router.replace({ - path: router.currentRoute.value.path, - query: { - page: currentPage.value, - limit: val - } - }) + if (noCache) { + router.replace({ + path: router.currentRoute.value.path, + query: { + page: currentPage.value, + limit: val + } + }) + } } function handleCurrentChange(val) { emit('pagination', { page: val, limit: pageSize.value }) if (props.autoScroll) { // scrollTo(0, 800); } - router.replace({ - path: router.currentRoute.value.path, - query: { - page: val, - limit: pageSize.value - } - }) + if (noCache) { + router.replace({ + path: router.currentRoute.value.path, + query: { + page: val, + limit: pageSize.value + } + }) + } } return { diff --git a/src/i18n/lang/zh-cn.json b/src/i18n/lang/zh-cn.json index 18ed111..638771c 100644 --- a/src/i18n/lang/zh-cn.json +++ b/src/i18n/lang/zh-cn.json @@ -28,7 +28,7 @@ "articleList": "文章列表", "formBuild": "表单构建", "officialWebsite": "官网地址", - "fileStorage": "文件存儲", + "fileStorage": "文件存储", "personalCenter": "个人中心", "menuPermi": "菜单权限", "assignUsers": "分配用户", diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 22b5566..617b6b5 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -65,6 +65,7 @@ const { proxy } = getCurrentInstance() const appStore = useAppStore() const userStore = useUserStore() const settingsStore = useSettingsStore() +const router = useRouter() const sideTheme = computed(() => settingsStore.sideTheme) function toggleSideBar() { @@ -105,7 +106,8 @@ function logout() { }) .then(() => { userStore.logOut().then(() => { - location.href = import.meta.env.VITE_APP_ROUTER_PREFIX + 'index' + // location.href = import.meta.env.VITE_APP_ROUTER_PREFIX + 'index' + location.href = import.meta.env.VITE_APP_ROUTER_PREFIX + router.currentRoute.value.fullPath.slice(1).replace('?', '&') }) }) .catch(() => {}) diff --git a/src/permission.js b/src/permission.js index a260169..8b28eec 100644 --- a/src/permission.js +++ b/src/permission.js @@ -34,7 +34,11 @@ router.beforeEach((to, from, next) => { router.addRoute(route) // 动态添加可访问路由表 } }) - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 + if (!!to.matched.find((item) => item.path === '/:pathMatch(.*)*')) { + next({ path: '/index' }) + } else { + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 + } }) }) .catch((err) => { diff --git a/src/utils/request.js b/src/utils/request.js index 174cd4f..49d7a1a 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -5,7 +5,7 @@ import errorCode from '@/utils/errorCode' import useUserStore from '@/store/modules/user' import { blobValidate } from '@/utils/ruoyi' import { saveAs } from 'file-saver' - +import router from '@/router/index' let downloadLoadingInstance // 解决后端跨域获取不到cookie问题 // axios.defaults.withCredentials = true @@ -66,7 +66,8 @@ service.interceptors.response.use( useUserStore() .logOut() .then(() => { - location.href = import.meta.env.VITE_APP_ROUTER_PREFIX + 'index' + // location.href = import.meta.env.VITE_APP_ROUTER_PREFIX + 'index' + location.href = import.meta.env.VITE_APP_ROUTER_PREFIX + router.currentRoute.value.fullPath.slice(1).replace('?', '&') }) }) .catch(() => { diff --git a/src/views/login.vue b/src/views/login.vue index c0c0bb7..fd9ca1d 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -7,10 +7,10 @@ @@ -111,6 +111,14 @@ const register = ref(false) const redirect = ref() redirect.value = route.query.redirect +const query = ref() +query.value = Object.keys(route.query).reduce((params, key) => { + if (key !== 'redirect') { + params[key] = route.query[key] + } + return params +}, {}) + function handleLogin() { proxy.$refs.loginRef.validate((valid) => { if (valid) { @@ -131,7 +139,7 @@ function handleLogin() { .login(loginForm.value) .then(() => { proxy.$modal.msgSuccess(proxy.$t('login.loginSuccess')) - router.push({ path: redirect.value || '/' }) + router.push({ path: redirect.value || '/', query: query.value }) }) .catch((error) => { console.error(error) diff --git a/src/views/loginByEmail.vue b/src/views/loginByEmail.vue index 83810d8..8ef9d11 100644 --- a/src/views/loginByEmail.vue +++ b/src/views/loginByEmail.vue @@ -10,7 +10,7 @@ - {{ $t('loginByEmail.toLogin') }} + {{ $t('loginByEmail.toLogin') }} @@ -49,7 +49,7 @@
- + { + if (key !== 'redirect') { + params[key] = route.query[key] + } + return params +}, {}) + interface roles { id: number name: string @@ -233,7 +242,7 @@ function handleLogin() { return } globalProperties.$modal.msgSuccess(globalProperties.$t('login.loginSuccess')) - router.push({ path: redirect.value || '/' }) + router.push({ path: redirect.value || '/', query: query.value }) }) .catch((error) => { console.error(error)