.env.development | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
.env.production | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/App.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/permission.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/request.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/login.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/register.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/system/oss/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
vite.config.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.env.development
@@ -6,15 +6,15 @@ # 开发环境 VITE_APP_BASE_API = '/dev-api' #VITE_APP_BASE_API='/' #VITE_APP_BASE_API='/prod-api' # 应用访问路径 例如使用前缀 /admin/ VITE_APP_CONTEXT_PATH = '/' # 监控地址 VITE_APP_MONITRO_ADMIN = 'http://192.168.3.228:8080/admin/applications' VITE_APP_MONITRO_ADMIN = 'http://162.14.79.111:8080/admin/applications' # powerjob 控制台地址 VITE_APP_POWERJOB_ADMIN = 'http://192.168.3.228:8080/' VITE_APP_POWERJOB_ADMIN = 'http://162.14.79.111:8080/' VITE_APP_PORT = 80 .env.production
@@ -2,10 +2,10 @@ VITE_APP_TITLE = 跨网文件同步系统 # 生产环境配置 VITE_APP_ENV = 'production' VITE_APP_ENV='production' # 应用访问路径 例如使用前缀 /admin/ VITE_APP_CONTEXT_PATH = '/' VITE_APP_CONTEXT_PATH='/' # 监控地址 VITE_APP_MONITRO_ADMIN = '/admin/applications' src/App.vue
@@ -16,10 +16,6 @@ const appStore = useAppStore(); const size = computed(() => appStore.size as any); import router from './router'; import { to as tos } from "await-to-js"; import useUserStore from "@/store/modules/user"; src/permission.ts
@@ -10,22 +10,22 @@ import usePermissionStore from '@/store/modules/permission'; NProgress.configure({ showSpinner: false }); const whiteList = ['/login', '/register', '/social-callback','/index']; const whiteList = ['/login', '/register', '/social-callback']; router.beforeEach(async (to, from, next) => { NProgress.start(); if (getToken()) { console.log('有token',to.path); console.log('判断当前用户是否已拉取完user_info信息'); to.meta.title && useSettingsStore().setTitle(to.meta.title as string); /* has token*/ if (to.path === '/login') { next({ path: '/' }); NProgress.done(); } else { console.log(useUserStore().roles); if (useUserStore().roles.length === 0) { isRelogin.show = true; // 判断当前用户是否已拉取完user_info信息 const [err] = await tos(useUserStore().getInfo()); if (err) { await useUserStore().logout(); @@ -48,12 +48,12 @@ } } else { // 没有token console.log("没有token"); if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入 next(); } else { // next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页 next(`/index`); // 否则全部重定向到登录页 next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页 NProgress.done(); } } src/utils/request.ts
@@ -10,6 +10,7 @@ import { getLanguage } from '@/lang'; import { encryptBase64, encryptWithAes, generateAesKey } from '@/utils/crypto'; import { encrypt } from '@/utils/jsencrypt'; import router from "@/router"; let downloadLoadingInstance: LoadingInstance; // 是否显示重新登录 @@ -105,23 +106,25 @@ return res.data; } if (code === 401) { console.log(code,'code=============='); router.push({ path: '/login' }); // prettier-ignore if (!isRelogin.show) { // isRelogin.show = true; isRelogin.show = true; ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { isRelogin.show = false; useUserStore().logout().then(() => { location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index'; }); }).catch(() => { isRelogin.show = false; }); } // if (!isRelogin.show) { // // isRelogin.show = true; // isRelogin.show = true; // ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { // confirmButtonText: '重新登录', // cancelButtonText: '取消', // type: 'warning' // }).then(() => { // isRelogin.show = false; // useUserStore().logout().then(() => { // location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index'; // }); // }).catch(() => { // isRelogin.show = false; // }); // } return Promise.reject('无效的会话,或者会话已过期,请重新登录。'); } else if (code === HttpStatus.SERVER_ERROR) { console.log(msg); src/views/index.vue
@@ -4,29 +4,11 @@ <div class="mb-[10px]" v-show="showSearch"> <el-card shadow="hover"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <!-- <el-form-item label="文件名" prop="fileName">--> <!-- <el-input v-model="queryParams.fileName" placeholder="请输入文件名" clearable style="width: 200px" @keyup.enter="handleQuery" />--> <!-- </el-form-item>--> <el-form-item label="原名" prop="originalName"> <el-input v-model="queryParams.originalName" placeholder="请输入原名" clearable style="width: 200px" @keyup.enter="handleQuery" /> </el-form-item> <!-- <el-form-item label="文件后缀" prop="fileSuffix">--> <!-- <el-input v-model="queryParams.fileSuffix" placeholder="请输入文件后缀" clearable style="width: 200px" @keyup.enter="handleQuery" />--> <!-- </el-form-item>--> <!-- <el-form-item label="创建时间">--> <!-- <el-date-picker--> <!-- v-model="dateRangeCreateTime"--> <!-- value-format="YYYY-MM-DD HH:mm:ss"--> <!-- type="daterange"--> <!-- range-separator="-"--> <!-- start-placeholder="开始日期"--> <!-- end-placeholder="结束日期"--> <!-- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"--> <!-- ></el-date-picker>--> <!-- </el-form-item>--> <!-- <el-form-item label="服务商" prop="service">--> <!-- <el-input v-model="queryParams.service" placeholder="请输入服务商" clearable style="width: 200px" @keyup.enter="handleQuery" />--> <!-- </el-form-item>--> <el-form-item> <el-button type="primary" icon="search" @click="handleQuery">搜索</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button> @@ -42,35 +24,15 @@ <el-col :span="1.5"> <el-button type="primary" plain icon="Upload" @click="handleFile" v-if="isContains(useUserStore().permissions, 'system:oss:upload')">上传文件</el-button> </el-col> <!-- <el-col :span="1.5">--> <!-- <el-button type="primary" plain icon="Upload" @click="handleImage" v-if="isContains(useUserStore().permissions, 'system:oss:upload')">上传图片</el-button>--> <!-- </el-col>--> <!-- <el-col :span="1.5">--> <!-- <el-button type="primary" plain icon="Upload" @click="handleVideo" v-if="isContains(useUserStore().permissions, 'system:oss:upload')">上传视频</el-button>--> <!-- </el-col>--> <el-col :span="1.5"> <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"> 删除 </el-button> </el-col> <!-- <el-col :span="1.5">--> <!-- <el-button--> <!-- :type="previewListResource ? 'danger' : 'warning'"--> <!-- plain--> <!-- @click="handlePreviewListResource(!previewListResource)"--> <!-- v-hasPermi="['system:oss:edit']"--> <!-- >预览开关 :--> <!-- {{--> <!-- previewListResource ? "禁用" : "启用" }}</el-button--> <!-- >--> <!-- </el-col>--> <el-col :span="1.5"> <el-button type="info" plain icon="Operation" @click="handleOssConfig" v-hasPermi="['system:oss:lists']">配置管理</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> </template> <el-table v-loading="loading" :data="ossList" @@ -80,29 +42,8 @@ v-if="showTable" > <el-table-column type="selection" width="55" align="center" /> <!-- <el-table-column label="对象存储主键" align="center" prop="ossId" v-if="true" />--> <!-- <el-table-column label="文件名" align="center" prop="fileName" />--> <el-table-column label="原名" align="center" prop="originalName" /> <!-- <el-table-column label="文件后缀" align="center" prop="fileSuffix" />--> <!-- <el-table-column label="文件展示" align="center" prop="url">--> <!-- <template #default="scope">--> <!-- <ImagePreview--> <!-- v-if="previewListResource && checkFileSuffix(scope.row.fileSuffix)"--> <!-- :width="100"--> <!-- :height="100"--> <!-- :src="scope.row.url"--> <!-- :preview-src-list="[scope.row.url]"--> <!-- />--> <!-- <span v-text="scope.row.url" v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource" />--> <!-- </template>--> <!-- </el-table-column>--> <!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180" sortable="custom">--> <!-- <template #default="scope">--> <!-- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column label="上传人" align="center" prop="createByName" /> <!-- <el-table-column label="服务商" align="center" prop="service" sortable="custom" />--> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-tooltip content="查看提取码" placement="top"> @@ -152,17 +93,13 @@ <script setup name="Oss" lang="ts"> import { listOss, delOss, createUser, examineIds } from "@/api/system/oss"; import ImagePreview from "@/components/ImagePreview/index.vue"; import { OssForm, OssQuery, OssVO } from "@/api/system/oss/types"; import { getInfo } from "@/api/login"; import { to as tos } from "await-to-js"; import useUserStore from "@/store/modules/user"; import { setToken } from "@/utils/auth"; import { getToken, setToken } from "@/utils/auth"; import usePermissionStore from "@/store/modules/permission"; import { isHttp } from "@/utils/validate"; import { any } from "vue-types"; const router = useRouter(); import router from '@/router'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const ossList = ref<OssVO[]>([]); @@ -318,9 +255,6 @@ getList(); } /** 任务日志列表查询 */ const handleOssConfig = () => { router.push('/system/oss-config/index') } /** 文件按钮操作 */ const handleFile = () => { reset(); @@ -346,8 +280,6 @@ const submitForm = async () => { await childFile.value.handleCilck() dialog.visible = false; // setTimeout(() =>{ getList();},1000) } const handleCode = async (row: OssVO) => { console.log(row, row.ossId); @@ -396,15 +328,6 @@ } /** 用户状态修改 */ const handlePreviewListResource = async (preview: boolean) => { let text = preview ? "启用" : "停用"; try { await proxy?.$modal.confirm('确认要"' + text + '""预览列表图片"配置吗?'); await proxy?.updateConfigByKey("sys.oss.previewListResource", preview); await getList() proxy?.$modal.msgSuccess(text + "成功"); } catch { return } } /** 删除按钮操作 */ const handleDelete = async (row?: OssVO) => { const ossIds = row?.ossId || ids.value; @@ -415,9 +338,8 @@ proxy?.$modal.msgSuccess("删除成功"); } const refreshPage = async () => { // const [err] = await tos(useUserStore().getInfo()); // console.log(err); const accessRoutes = await usePermissionStore().generateRoutes(); console.log(accessRoutes,'accessRoutes',router); // 根据roles权限生成可访问的路由表 accessRoutes.forEach((route) => { if (!isHttp(route.path)) { @@ -429,6 +351,7 @@ const isContains = (arr: string | any[], value: any) => { return arr.includes(value); }; const setAddUser = async (val: any | number | (string | number)[]) => { console.log(val); const res = await createUser(val) @@ -436,15 +359,13 @@ if (res.code==200){ const data = res.data; setToken(data.access_token); await refreshPage() const [err] = await tos(useUserStore().getInfo()); console.log('useUserStore', useUserStore,err); await getList() await nextTick(async () => { const [err] = await tos(useUserStore().getInfo()); console.log('useUserStore', useUserStore,err); // await refreshPage() console.log('permissions', useUserStore().permissions,'system:oss:upload'); }) // token.value = data.access_token; } } @@ -457,32 +378,36 @@ // }); onBeforeMount( async () => { console.log('第一',useUserStore().permissions); try { // 使用fetch API获取当前IP地址 await fetch('https://api.ipify.org/?format=json') .then(response => response.json()) .then(async data => { currentIp.value = data.ip; let obj = { username: data.ip } await setAddUser(obj) }) .catch(error => { console.error('获取IP地址失败:', error); }); } catch (error) { console.log(error); } // try { // // 使用fetch API获取当前IP地址 // await fetch('https://api.ipify.org/?format=json') // .then(response => response.json()) // .then(async data => { // currentIp.value = data.ip; // let obj = { // username: data.ip // } // await setAddUser(obj) // }) // .catch(error => { // console.error('获取IP地址失败:', error); // }); // } catch (error) { // console.log(error); // } }) onMounted(async () => { console.log('第二',useUserStore().permissions); console.log('第二aaaaaaa',useUserStore().permissions); // 等待 useUserStore() 方法的 getInfo() 方法返回结果并赋值给 err 变量 // const [err] = await tos(useUserStore().getInfo()); if (getToken()){ await getList(); }else { router.push('/login') } // 调用 getList() 方法 // await getList(); }) </script> src/views/login.vue
@@ -63,8 +63,10 @@ import { authBinding } from '@/api/system/social/auth'; import { useUserStore } from '@/store/modules/user'; import { LoginData, TenantVO } from '@/api/types'; import { to } from 'await-to-js'; import { to as tos, to } from "await-to-js"; import { HttpStatus } from "@/enums/RespEnum"; import { createUser } from "@/api/system/oss"; import { setToken } from "@/utils/auth"; const userStore = useUserStore(); const router = useRouter(); @@ -203,12 +205,38 @@ }); }; const setAddUser = async (val: any | number | (string | number)[]) => { console.log(val); const res = await createUser(val) console.log(res); if (res.code == 200) { const data = res.data; setToken(data.access_token); } } onMounted(() => { getCode(); initTenantList(); getLoginData(); onMounted(async () => { try { // 使用fetch API获取当前IP地址 await fetch('https://api.ipify.org/?format=json') .then(response => response.json()) .then(async data => { let obj = { username: data.ip } await setAddUser(obj) }) .catch(error => { console.error('获取IP地址失败:', error); }); } catch (error) { console.log(error); } router.push('index') // getCode(); // initTenantList(); // getLoginData(); }); </script> src/views/register.vue
@@ -153,8 +153,8 @@ } onMounted(() => { getCode(); initTenantList(); // getCode(); // initTenantList(); }) </script> src/views/system/oss/index.vue
@@ -4,29 +4,11 @@ <div class="mb-[10px]" v-show="showSearch"> <el-card shadow="hover"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <!-- <el-form-item label="文件名" prop="fileName">--> <!-- <el-input v-model="queryParams.fileName" placeholder="请输入文件名" clearable style="width: 200px" @keyup.enter="handleQuery" />--> <!-- </el-form-item>--> <el-form-item label="原名" prop="originalName"> <el-input v-model="queryParams.originalName" placeholder="请输入原名" clearable style="width: 200px" @keyup.enter="handleQuery" /> </el-form-item> <el-form-item label="文件后缀" prop="fileSuffix"> <el-input v-model="queryParams.fileSuffix" placeholder="请输入文件后缀" clearable style="width: 200px" @keyup.enter="handleQuery" /> </el-form-item> <!-- <el-form-item label="创建时间">--> <!-- <el-date-picker--> <!-- v-model="dateRangeCreateTime"--> <!-- value-format="YYYY-MM-DD HH:mm:ss"--> <!-- type="daterange"--> <!-- range-separator="-"--> <!-- start-placeholder="开始日期"--> <!-- end-placeholder="结束日期"--> <!-- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"--> <!-- ></el-date-picker>--> <!-- </el-form-item>--> <!-- <el-form-item label="服务商" prop="service">--> <!-- <el-input v-model="queryParams.service" placeholder="请输入服务商" clearable style="width: 200px" @keyup.enter="handleQuery" />--> <!-- </el-form-item>--> <el-form-item> <el-button type="primary" icon="search" @click="handleQuery">搜索</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button> @@ -40,37 +22,17 @@ <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="Upload" @click="handleFile" v-hasPermi="['system:oss:upload']">上传文件</el-button> <el-button type="primary" plain icon="Upload" @click="handleFile" v-if="isContains(useUserStore().permissions, 'system:oss:upload')">上传文件</el-button> </el-col> <el-col :span="1.5"> <el-button type="primary" plain icon="Upload" @click="handleImage" v-hasPermi="['system:oss:upload']">上传图片</el-button> </el-col> <el-col :span="1.5"> <el-button type="primary" plain icon="Upload" @click="handleVideo" v-hasPermi="['system:oss:upload']">上传视频</el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:oss:remove']"> <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"> 删除 </el-button> </el-col> <!-- <el-col :span="1.5">--> <!-- <el-button--> <!-- :type="previewListResource ? 'danger' : 'warning'"--> <!-- plain--> <!-- @click="handlePreviewListResource(!previewListResource)"--> <!-- v-hasPermi="['system:oss:edit']"--> <!-- >预览开关 :--> <!-- {{--> <!-- previewListResource ? "禁用" : "启用" }}</el-button--> <!-- >--> <!-- </el-col>--> <el-col :span="1.5"> <el-button type="info" plain icon="Operation" @click="handleOssConfig" v-hasPermi="['system:oss:lists']">配置管理</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> </template> <el-table v-loading="loading" :data="ossList" @@ -80,39 +42,18 @@ v-if="showTable" > <el-table-column type="selection" width="55" align="center" /> <!-- <el-table-column label="对象存储主键" align="center" prop="ossId" v-if="true" />--> <!-- <el-table-column label="文件名" align="center" prop="fileName" />--> <el-table-column label="原名" align="center" prop="originalName" /> <el-table-column label="文件后缀" align="center" prop="fileSuffix" /> <!-- <el-table-column label="文件展示" align="center" prop="url">--> <!-- <template #default="scope">--> <!-- <ImagePreview--> <!-- v-if="previewListResource && checkFileSuffix(scope.row.fileSuffix)"--> <!-- :width="100"--> <!-- :height="100"--> <!-- :src="scope.row.url"--> <!-- :preview-src-list="[scope.row.url]"--> <!-- />--> <!-- <span v-text="scope.row.url" v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource" />--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column label="创建时间" align="center" prop="createTime" width="180" sortable="custom"> <template #default="scope"> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> </template> </el-table-column> <el-table-column label="上传人" align="center" prop="createByName" /> <!-- <el-table-column label="服务商" align="center" prop="service" sortable="custom" />--> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-tooltip content="查看提取码" placement="top"> <el-button link type="primary" icon="Search" @click="handleCode(scope.row)" v-hasPermi="['system:oss:decode']"></el-button> <el-button link type="primary" icon="Search" @click="handleCode(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:view')"></el-button> </el-tooltip> <el-tooltip content="下载" placement="top"> <el-button link type="primary" icon="Download" @click="handleDownload(scope.row)" v-hasPermi="['system:oss:download']"></el-button> <el-button link type="primary" icon="Download" @click="handleDownload(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:download')"></el-button> </el-tooltip> <el-tooltip content="删除" placement="top"> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:oss:remove']"></el-button> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"></el-button> </el-tooltip> </template> </el-table-column> @@ -124,7 +65,7 @@ <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> <el-form ref="ossFormRef" :model="form" :rules="rules" label-width="80px"> <el-form-item label="文件名"> <fileUpload v-model="form.file" v-if="type === 0" /> <fileUpload ref="childFile" @closePopup="getList()" v-model="form.file" v-if="type === 0" /> <imageUpload v-model="form.file" v-if="type === 1" /> <video-upload v-model="form.file" v-if="type === 2" />" </el-form-item> @@ -136,8 +77,10 @@ </div> </template> </el-dialog> <el-dialog title="查看提取码" v-model="visibleCode" width="500px" append-to-body> <span>qw15rw</span> <el-dialog :title="titleDownload" v-model="visibleCode" width="500px" append-to-body> <span v-show="titleDownload=='查看提取码'">{{testtxt}}</span> <el-input style="margin: 10px 0" ref="inputRef" :style="inputSty" v-show="titleDownload!='查看提取码'" v-model="pasTxt" v-if="isContains(useUserStore().permissions, 'system:oss:download')" placeholder="请输入文件提取码"></el-input> <el-button link type="primary" v-show="titleDownload!='查看提取码'" icon="Download" @click="handleDownloadFile()" v-if="isContains(useUserStore().permissions, 'system:oss:download')">下载</el-button> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="visibleCode = false">确 定</el-button> @@ -149,11 +92,14 @@ </template> <script setup name="Oss" lang="ts"> import { listOss, delOss } from "@/api/system/oss"; import ImagePreview from "@/components/ImagePreview/index.vue"; import { listOss, delOss, createUser, examineIds } from "@/api/system/oss"; import { OssForm, OssQuery, OssVO } from "@/api/system/oss/types"; const router = useRouter(); import { to as tos } from "await-to-js"; import useUserStore from "@/store/modules/user"; import { setToken } from "@/utils/auth"; import usePermissionStore from "@/store/modules/permission"; import { isHttp } from "@/utils/validate"; import router from '@/router'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const ossList = ref<OssVO[]>([]); @@ -173,7 +119,14 @@ visible: false, title: '' }); const testtxt = ref<any>() const pasTxt = ref<any>() const titleDownload = ref<any>() const downIds = ref<any>() const inputRef = ref<any>() const inputSty =ref<any>() const currentIp = ref('') const childFile = ref<any>() // 默认排序 const defaultSort = ref({ prop: 'createTime', order: 'ascending' }); @@ -205,9 +158,12 @@ }); const { queryParams, form, rules } = toRefs(data); const sure = () => { testtxt.value += 1 } /** 查询OSS对象存储列表 */ const getList = async () => { loading.value = true; const res = await proxy?.getConfigKey("sys.oss.previewListResource"); previewListResource.value = res?.data === undefined ? true : res.data === 'true'; @@ -299,9 +255,6 @@ getList(); } /** 任务日志列表查询 */ const handleOssConfig = () => { router.push('/system/oss-config/index') } /** 文件按钮操作 */ const handleFile = () => { reset(); @@ -323,27 +276,58 @@ dialog.title = "上传视频"; } /** 提交按钮 */ const submitForm = () => { const submitForm = async () => { await childFile.value.handleCilck() dialog.visible = false; getList(); } const handleCode = ()=>{ visibleCode.value = true const handleCode = async (row: OssVO) => { console.log(row, row.ossId); await examineIds(row.ossId).then(res => { console.log(res); if (res.code == 200) { testtxt.value = res.msg; titleDownload.value = '查看提取码' pasTxt.value = '' // inputSty.value ={ // border: '1px solid blue' // } visibleCode.value = true } else { const message = res.msg; proxy?.$modal.msgSuccess(message); } }) } /** 下载按钮操作 */ const handleDownload = (row: OssVO) => { proxy?.$download.oss(row.ossId) titleDownload.value = '输入提取码' pasTxt.value = '' inputSty.value ={ border: '1px solid blue', borderRadius: '5px' } visibleCode.value = true downIds.value = ref(row.ossId) console.log(toRaw(downIds.value.value)); } const handleDownloadFile = ()=>{ console.log(downIds.value); if (pasTxt.value){ proxy?.$download.ossDown(downIds.value.value,pasTxt.value) }else { console.log(inputRef.value); inputSty.value ={ border: '1px solid red' } // inputRef.value.style.border = '1px solid red' } } /** 用户状态修改 */ const handlePreviewListResource = async (preview: boolean) => { let text = preview ? "启用" : "停用"; try { await proxy?.$modal.confirm('确认要"' + text + '""预览列表图片"配置吗?'); await proxy?.updateConfigByKey("sys.oss.previewListResource", preview); await getList() proxy?.$modal.msgSuccess(text + "成功"); } catch { return } } /** 删除按钮操作 */ const handleDelete = async (row?: OssVO) => { const ossIds = row?.ossId || ids.value; @@ -353,8 +337,70 @@ await getList(); proxy?.$modal.msgSuccess("删除成功"); } const refreshPage = async () => { const accessRoutes = await usePermissionStore().generateRoutes(); // 根据roles权限生成可访问的路由表 accessRoutes.forEach((route) => { if (!isHttp(route.path)) { router.addRoute(route); // 动态添加可访问路由表 } }); // location.reload(); }; const isContains = (arr: string | any[], value: any) => { return arr.includes(value); }; const setAddUser = async (val: any | number | (string | number)[]) => { console.log(val); const res = await createUser(val) console.log(res); if (res.code==200){ const data = res.data; setToken(data.access_token); await getList() // await refreshPage() onMounted(() => { getList(); const [err] = await tos(useUserStore().getInfo()); console.log('useUserStore', useUserStore,err); console.log('permissions', useUserStore().permissions,'system:oss:upload'); // token.value = data.access_token; } } // watch(() => value.value, (newValue) => { // if (newValue) { // showValue.value = true; // } else { // showValue.value = false; // } // }); onBeforeMount( async () => { console.log('第一',useUserStore().permissions); try { // 使用fetch API获取当前IP地址 await fetch('https://api.ipify.org/?format=json') .then(response => response.json()) .then(async data => { currentIp.value = data.ip; let obj = { username: data.ip } await setAddUser(obj) }) .catch(error => { console.error('获取IP地址失败:', error); }); } catch (error) { console.log(error); } }) onMounted(async () => { console.log('第二',useUserStore().permissions); // 等待 useUserStore() 方法的 getInfo() 方法返回结果并赋值给 err 变量 // const [err] = await tos(useUserStore().getInfo()); // 调用 getList() 方法 // await getList(); }) </script> vite.config.ts
@@ -26,7 +26,8 @@ open: true, proxy: { [env.VITE_APP_BASE_API]: { target: 'http://192.168.3.228:8080', target: 'http://162.14.79.111:8080', // target: 'http://192.168.3.228:8080', changeOrigin: true, rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '') }