Commit e43635dc by 焦子成

1

parent d03986cd
......@@ -31,6 +31,8 @@ const config = {
fileUploadDetail: `${domain}/uploadBatch/fileUploadDetail`,
queryFileAll: `${domain}/uploadBatch/queryFileAll`,
detailInfo: `${domain}/uploadDetail/detailInfo`,
updateInfo: `${domain}/user/updateInfo`,
getInfo: `${domain}/user/getInfo`,
};
export default config;
......@@ -112,11 +112,11 @@ export const useAuthStore = defineStore('auth', () => {
loadUsersFromStorage()
}
console.log('当前用户列表:', users.value.map(u => u.userName))
// console.log('当前用户列表:', users.value.map(u => u.userName))
// 查找用户
let user = users.value.find(u => u.userName === userName)
console.log('--->查找用户:', user)
// console.log('--->查找用户:', user)
if (!user) {
console.log('未找到用户:', userName)
// user.value.userName = userName
......@@ -154,7 +154,9 @@ console.log('--->查找用户:', user)
// 设置当前用户
const setCurrentUser = (userData) => {
console.log('setCurrentUser userData->', userData)
user.value = userData
console.log('setCurrentUser user.value->', user.value)
isAuthenticated.value = true
// 保存到本地存储
......@@ -164,8 +166,11 @@ console.log('--->查找用户:', user)
// 用户登出
const logout = () => {
user.value = null
users.value = []
isAuthenticated.value = false
localStorage.removeItem('vue_downloader_current_user')
localStorage.removeItem('vue-downloader-settings')
localStorage.removeItem('vue_downloader_users')
}
// 更新用户设置
......@@ -246,12 +251,13 @@ console.log('--->查找用户:', user)
// 清除用户下载历史
const clearDownloadHistory = () => {
if (!user.value) return
// if (!user.value) return
try {
const allHistory = JSON.parse(localStorage.getItem('vue_downloader_history') || '[]')
const filteredHistory = allHistory.filter(history => history.userId !== user.value.id)
localStorage.setItem('vue_downloader_history', JSON.stringify(filteredHistory))
// const allHistory = JSON.parse(localStorage.getItem('vue_downloader_history') || '[]')
// const filteredHistory = allHistory.filter(history => history.userId !== user.value.id)
// localStorage.setItem('vue_downloader_history', JSON.stringify(filteredHistory))
localStorage.setItem('vue_downloader_history', JSON.stringify([]))
} catch (error) {
console.error('清除下载历史失败:', error)
}
......@@ -259,58 +265,67 @@ console.log('--->查找用户:', user)
// 初始化:从本地存储加载数据
const initialize = () => {
console.log('Auth store 初始化开始...')
// console.log('Auth store 初始化开始...')
// 清除旧的用户数据,重新创建默认管理员账号
console.log('清除旧的用户数据...')
// console.log('清除旧的用户数据...')
localStorage.removeItem('vue_downloader_users')
localStorage.removeItem('vue_downloader_current_user')
loadUsersFromStorage()
// loadUsersFromStorage()
// 如果没有用户,创建默认管理员账号
if (users.value.length === 0) {
console.log('创建默认管理员账号...')
const adminPassword = '123456'
const adminUser = {
id: 'admin',
userName: 'admin',
password: btoa(adminPassword),
email: '',
createdAt: new Date().toISOString(),
lastLoginAt: null,
settings: {
maxConcurrentDownloads: 3,
enableNotifications: true,
fileNamePrefix: ''
}
}
users.value.push(adminUser)
saveUsersToStorage()
console.log('默认管理员账号创建完成')
console.log('管理员密码:', adminPassword)
console.log('管理员密码编码后:', btoa(adminPassword))
}
console.log('当前用户列表:', users.value.map(u => u.userName))
// if (users.value.length === 0) {
// console.log('创建默认管理员账号...')
// const adminPassword = '123456'
// const adminUser = {
// id: 'admin',
// userName: 'admin',
// password: btoa(adminPassword),
// email: '',
// createdAt: new Date().toISOString(),
// lastLoginAt: null,
// settings: {
// maxConcurrentDownloads: 3,
// enableNotifications: true,
// fileNamePrefix: ''
// }
// }
// users.value.push(adminUser)
// saveUsersToStorage()
// console.log('默认管理员账号创建完成')
// console.log('管理员密码:', adminPassword)
// console.log('管理员密码编码后:', btoa(adminPassword))
// }
// console.log('当前用户列表:', users.value.map(u => u.userName))
// 尝试恢复当前用户会话
try {
const storedUser = localStorage.getItem('vue_downloader_current_user')
if (storedUser) {
const userData = JSON.parse(storedUser)
// 验证用户是否仍然存在
const existingUser = users.value.find(u => u.id === userData.id)
if (existingUser) {
setCurrentUser(existingUser)
console.log('用户会话已恢复:', existingUser.userName)
}
}
} catch (error) {
console.error('恢复用户会话失败:', error)
}
// try {
// const storedUser = localStorage.getItem('vue_downloader_current_user')
// if (storedUser) {
// const userData = JSON.parse(storedUser)
// // 验证用户是否仍然存在
// const existingUser = users.value.find(u => u.id === userData.id)
// if (existingUser) {
// setCurrentUser(existingUser)
// console.log('用户会话已恢复:', existingUser.userName)
// }
// }
// } catch (error) {
// console.error('恢复用户会话失败:', error)
// }
// console.log('Auth store 初始化完成')
}
console.log('Auth store 初始化完成')
// 新加-保存用户信息
function saveUserInfo(userInfo) {
// console.log('userInfo->',userInfo)
// users.value.push(userInfo)
// console.log('users->',users.value)
setCurrentUser(userInfo)
// saveUsersToStorage()
}
// 计算属性
......@@ -337,6 +352,7 @@ console.log('--->查找用户:', user)
validatePassword,
isUsernameExists,
initialize,
saveUserInfo,
// 计算属性
userCount
......
......@@ -30,7 +30,9 @@ export const useDownloadStore = defineStore('download', () => {
const loadFromStorage = () => {
try {
// 加载用户设置
const userSettings = authStore.getUserSettings()
// const userSettings = authStore.getUserSettings()
const userSettings = JSON.parse(sessionStorage.getItem('userInfo'))?.settings || {}
console.log('download.js userSettings-->',userSettings)
maxConcurrentDownloads.value = userSettings.maxConcurrentDownloads || 3
customSubFolder.value = userSettings.fileNamePrefix || ''
enableNotifications.value = userSettings.enableNotifications !== false
......@@ -635,6 +637,7 @@ export const useDownloadStore = defineStore('download', () => {
// 清除所有任务
const clearAll = () => {
downloads.value = []
// excelFiles.value = []
saveToStorage()
}
......
......@@ -15,6 +15,7 @@
<User />
</el-icon>
{{ userName }}
<!-- {{ authStore.user?.username }} -->
<el-icon>
<ArrowDown />
</el-icon>
......@@ -52,7 +53,7 @@
<el-button @click="selectExcelFile(row.batchId)" type="primary" size="small">
选择
</el-button>
<el-button @click="deleteExcelFile(row.batchId)" type="danger" size="small">
<el-button @click="deleteExcelFile(row.batchId, row.uploadName)" type="danger" size="small">
删除
</el-button>
</template>
......@@ -248,9 +249,9 @@
<el-button @click="downloadCurrentPage" type="info" size="small">
下载当前页
</el-button>
<el-button @click="pauseCurrentPage" type="warning" size="small">
<!-- <el-button @click="pauseCurrentPage" type="warning" size="small">
暂停当前页
</el-button>
</el-button> -->
<el-divider direction="vertical" />
<el-button @click="clearCompleted" size="small">
清除已完成
......@@ -269,7 +270,6 @@
<h3>暂无下载任务</h3>
<p>请在上方配置区域上传Excel文件并解析添加下载任务</p>
</div>
<div v-else class="download-table-container">
<!-- 分页表格 -->
<el-table :data="paginatedDownloads" style="width: 100%" border stripe highlight-current-row>
......@@ -295,9 +295,6 @@
</div>
<div class="file-details">
<div class="file-name">
<!-- <span v-if="downloadStore.customSubFolder" class="file-prefix">
{{ downloadStore.customSubFolder }}_
</span> -->
<span v-if="row.filePrefix" class="file-prefix">
{{ row.filePrefix }}_
</span>
......@@ -317,32 +314,6 @@
</template>
</el-table-column>
<!-- <el-table-column label="进度" width="200" align="center">
<template #default="{ row }">
<div v-if="row.status === 'downloading'" class="progress-container">
<el-progress :percentage="row.progress" :format="(percentage) => `${percentage}%`" size="small"
:stroke-width="8" />
<div class="speed-info">
{{ formatSpeed(row.speed) }}
</div>
</div>
<span v-else-if="row.status === 'completed'" class="completed-text">
100%
</span>
<span v-else class="pending-text">
{{ row.progress }}%
</span>
</template>
</el-table-column> -->
<!-- <el-table-column label="大小" width="120" align="center" prop="fileLength">
<template #default="{ row }">
<span v-if="row.totalBytes > 0" class="size-info">
{{ formatBytes(row.downloadedBytes) }} / {{ formatBytes(row.totalBytes) }}
</span>
<span v-else class="size-info">-</span>
</template>
</el-table-column> -->
<el-table-column label="大小" width="120" align="center">
<template #default="{ row }">
<span v-if="row.status == 'pending'">-</span>
......@@ -365,10 +336,10 @@
暂停
</el-button> -->
<el-button v-if="row.status === 'paused'" @click="resumeSingleDownload(row.id)" type="success"
<!-- <el-button v-if="row.status === 'paused'" @click="resumeSingleDownload(row.id)" type="success"
size="small">
继续
</el-button>
</el-button> -->
<el-button v-if="row.status === 'error'" @click="startSingleDownload(row)" type="warning"
size="small">
......@@ -459,6 +430,23 @@ let columnMapping = ref({
// 状态筛选
let statusFilter = ref('')
// 组件挂载时初始化
onMounted(() => {
// 先初始化下载store
downloadStore.initialize()
const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}')
userName.value = userInfo.username
customSubFolder.value = userInfo.settings?.fileNamePrefix || ''
// 从下载store中同步文件名前缀
// customSubFolder.value = downloadStore.customSubFolder || ''
detectBrowserDownloadPath()
loadUpTableData()
loadDetailTableData()
})
// 计算是否可以解析
const canParse = computed(() => {
return selectedFile.value &&
......@@ -519,7 +507,7 @@ const selectExcelFile = async (fileId) => {
http.post(config.uploadBatchQueryUpload, { batchId: fileId }).then(res => {
if (res.code === 200) {
if (!res.data || res.data.details.length === 0) {
ElMessage.error('文件信息不存在')
ElMessage.error('文件信息不存在或已删除')
return
}
downloadStore.setCurrentExcelFile(fileId)
......@@ -544,7 +532,7 @@ const selectExcelFile = async (fileId) => {
} else {
previewData.value = list || []
}
customSubFolder.value = res.data.filePrefix || ''
// customSubFolder.value = res.data.filePrefix || ''
} else {
ElMessage.error(res.message)
}
......@@ -552,30 +540,40 @@ const selectExcelFile = async (fileId) => {
}
// 删除Excel文件
const deleteExcelFile = async (fileId) => {
const deleteExcelFile = async (fileId, uploadName) => {
// 先尝试简单的确认
const confirmed = confirm('确定要删除这个Excel文件吗?删除后将无法恢复。')
if (!confirmed) {
return
}
try {
await downloadStore.deleteExcelFile(fileId)
ElMessage.success('Excel文件已删除')
http.post(config.uploadBatchDelete, { batchId: fileId }).then(res => {
if (res.code === 200) {
loadUpTableData()
loadDetailTableData()
} else {
ElMessage.error(res.message)
// 由后端batchId获取本地localstorage中vue-downloader-excel-files中 Excel 的 id, 获取不到则只删除后端数据
const excelFiles = JSON.parse(localStorage.getItem('vue-downloader-excel-files') || '[]')
if (excelFiles) {
const excelFile = excelFiles.find(file => file.fileName === uploadName)
console.log('excelFile-->', excelFile)
if (excelFile) {
try {
await downloadStore.deleteExcelFile(excelFile.id)
uploadBatchDelete(fileId)
} catch (error) {
console.error('删除Excel文件失败:', error)
ElMessage.error('删除Excel文件失败: ' + (error.message || '未知错误'))
}
})
} catch (error) {
console.error('删除Excel文件失败:', error)
ElMessage.error('删除Excel文件失败: ' + (error.message || '未知错误'))
} else {
ElMessage.error('将删除后端数据, 本地缓存未找到当前数据,无法清除本地缓存数据')
uploadBatchDelete(fileId)
}
}
}
function uploadBatchDelete(batchId) {
http.post(config.uploadBatchDelete, { batchId }).then(res => {
if (res.code === 200) {
loadUpTableData()
loadDetailTableData()
} else {
ElMessage.error(res.message)
}
})
}
// 处理文件选择
......@@ -802,23 +800,11 @@ const detectBrowserDownloadPath = () => {
// 更新文件名前缀
const updateDownloadPath = () => {
sessionStorage.setItem('cur_fileNamePrefix', customSubFolder.value)
// 更新store中的文件名前缀
downloadStore.setCustomSubFolder(customSubFolder.value)
}
// 组件挂载时初始化
onMounted(() => {
// 先初始化下载store
downloadStore.initialize()
userName.value = sessionStorage.getItem('userName') || ''
// 从下载store中同步文件名前缀
customSubFolder.value = downloadStore.customSubFolder || ''
detectBrowserDownloadPath()
loadUpTableData()
loadDetailTableData()
})
// 已上传 Excel 文件列表数据加载
const loadUpTableData = () => {
......@@ -843,9 +829,7 @@ function loadDetailTableData() {
}).then(res => {
if (res.code === 200) {
var list = []
var filePrefix = ''
for (const element of res.data.rows) {
filePrefix = element.filePrefix
list.push({
"id": element.detailId,
"fileName": element.fileName,
......@@ -868,8 +852,6 @@ function loadDetailTableData() {
}
// console.log('--lsit:',list)
downloadStore.downloads = list
downloadStore.setCustomSubFolder(filePrefix)
customSubFolder.value = filePrefix
deTotal.value = res.data.total
loadUploadDetailTotalNum()
} else {
......@@ -891,6 +873,9 @@ function loadUploadDetailTotalNum() {
http.post(config.uploadDetailTotalNum).then(res => {
if (res.code === 200) {
totalNumObj.value.countNum = res.data.countNum
totalNumObj.value.status0 = res.data.status0
totalNumObj.value.status1 = res.data.status1
totalNumObj.value.status2 = res.data.status2
totalNumObj.value.status3 = res.data.status3
totalNumObj.value.status4 = res.data.status4
totalNumObj.value.fileLength = res.data.fileLength
......@@ -919,6 +904,7 @@ function clearCompleted() {
// 清除所有
function clearAll() {
downloadStore.clearAll()
http.post(config.uploadDetailDeleteAll, {
type: 1
}).then(res => {
......@@ -936,7 +922,7 @@ function clearAll() {
function deleteRow(row) {
downloadStore.cancelDownload(row.id)
http.post(config.uploadDetailDelete, {
detailId: row.detailId
detailId: row.id
}).then(res => {
if (res.code === 200) {
ElMessage.success(res.message)
......@@ -978,6 +964,7 @@ const parseExcelFile = async () => {
// 获取完整数据(从原始数据或当前数据)
const allData = window.originalExcelData || rawExcelData.value
console.log('---allData:', allData)
// 过滤有效数据(分批处理)
const batchSize = 1000 // 每批处理1000行
const validData = []
......@@ -995,13 +982,11 @@ const parseExcelFile = async () => {
const fileNameParts = columnMapping.value.fileNameColumns.map(col => row[col] || '').filter(part => part)
let fileName = fileNameParts.join('-')
const url = row[columnMapping.value.url]
// 从URL中提取扩展名
const extension = getFileExtensionFromUrl(url)
if (extension) {
fileName += extension
}
return fileName && url
})
......@@ -1017,8 +1002,6 @@ const parseExcelFile = async () => {
ElMessage.warning('Excel文件中没有找到有效数据')
return
}
// 保存文件到本地之前先删除本地所有文件
downloadStore.clearAll()
// 保存Excel文件到本地存储
processingProgress.value = 30
processingMessage.value = '正在保存Excel文件到本地...'
......@@ -1138,7 +1121,6 @@ function getDetailList() {
var upDetailId = ''
let detailList = reactive([])
function uploadDetails() {
detailList = getDetailList()
http.post(config.uploadBatchFileUpload, {
......@@ -1307,10 +1289,11 @@ const startSingleDownload = async (row) => {
downloadStore.isSingleDownloading = true
try {
await downloadStore.startDownload(row.id)
loadDetailTableData()
loadUploadDetailTotalNum()
} finally {
downloadStore.isSingleDownloading = false
setTimeout(() => {
loadDetailTableData()
}, 1000);
}
}
......@@ -1319,8 +1302,6 @@ const resumeSingleDownload = async (downloadId) => {
downloadStore.isSingleDownloading = true
try {
await downloadStore.resumeDownload(downloadId)
loadDetailTableData()
loadUploadDetailTotalNum()
} finally {
downloadStore.isSingleDownloading = false
}
......@@ -1524,7 +1505,10 @@ const handleLogout = async () => {
type: 'warning'
})
authStore.logout()
// authStore.logout()
// sessionStorage.removeItem('userName')
sessionStorage.removeItem('userInfo')
sessionStorage.removeItem('token')
ElMessage.success('已退出登录')
router.push('/login')
} catch {
......
......@@ -50,6 +50,7 @@
<div class="header-actions">
<el-select v-model="statusFilter" placeholder="状态筛选" size="small" style="width: 120px;" @change="statusChange">
<el-option label="全部" value="all" />
<el-option label="等待中" value="pending" />
<el-option label="已完成" value="completed" />
<el-option label="失败" value="error" />
<el-option label="暂停" value="paused" />
......@@ -246,9 +247,11 @@ function laodFileAll(){
}
const statusFilterMap = {
'all': '',
'pending': 0,
'downloading': 1,
'paused': 2,
'completed': 3,
'error': 4,
'paused': 2
'error': 4
}
// 加载历史数据
const loadHistory = () => {
......@@ -268,7 +271,6 @@ const loadHistory = () => {
list.push({
"id": element.detailId,
"fileName": element.fileName,
"fileNamePrefix": "",
"excelFileName": element.uploadName,
"url": element.fileUrl,
"status": statusMap[element.fileStatus],
......
......@@ -219,6 +219,7 @@ const switchToLogin = () => {
// 切换到注册模式
const switchToRegister = () => {
isLoginMode.value = false
clearMessages()
resetForms()
......@@ -260,22 +261,43 @@ function handleLogin() {
loading.value = false
if (res.code === 200) {
sessionStorage.setItem("token", res.data)
let user = {
"id": res.data,
"username": loginForm.userName,
"password": loginForm.password,
"email": "",
"createdAt": new Date(),
"lastLoginAt": new Date(),
"settings": {
"maxConcurrentDownloads": 3,
"enableNotifications": true,
"fileNamePrefix": ""
loadUserInfo()
} else {
errorMessage.value = res.message
ElMessage.error(res.message)
}
})
}
function loadUserInfo() {
http.post(config.getInfo).then(res => {
if (res.code === 200) {
let userObj = {
id: res.data.userName,
username: res.data.userName,
password: loginForm.password,
email: res.data.email || '',
createdAt: res.data.createTime,
lastLoginAt: res.data.lastLoginTime,
settings: {
maxConcurrentDownloads: res.data.maxThread || 3,
enableNotifications: res.data.notifyStatus == 1 ? true : false,
fileNamePrefix: res.data.filePrefix,
}
}
authStore.setCurrentUser(user)
sessionStorage.setItem("userName", loginForm.userName)
router.push('/downloader')
console.log('登录用户信息:', userObj)
console.log('登录用户信息1:', userObj.settings)
sessionStorage.setItem('userInfo', JSON.stringify(userObj))
// authStore.saveUserInfo(userObj)
// authStore.users.value.push(user)
// authStore.saveUsersToStorage()
// authStore.setCurrentUser(user)
// sessionStorage.setItem("userName", loginForm.userName)
setTimeout(() => {
router.push('/downloader')
}, 1000);
} else {
errorMessage.value = res.message
ElMessage.error(res.message)
......@@ -377,8 +399,10 @@ function handleRegister() {
loading.value = false
if (res.code === 200) {
sessionStorage.setItem("token", res.data)
switchToLogin()
successMessage.value = '注册成功!请登录'
loginForm.userName = registerForm.userName
isLoginMode.value = true
// switchToLogin()
} else {
errorMessage.value = res.message
ElMessage.error(res.message)
......
......@@ -3,7 +3,9 @@
<!-- 头部 -->
<header class="header">
<div class="logo">
<el-icon><Setting /></el-icon>
<el-icon>
<Setting />
</el-icon>
个人设置
</div>
<el-button @click="goBack" type="primary" size="small">
......@@ -19,20 +21,20 @@
<span>用户信息</span>
</div>
</template>
<el-form :model="userInfo" label-width="120px">
<el-form-item label="用户名">
<el-input v-model="userInfo.userName" disabled />
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="userInfo.email" disabled />
</el-form-item>
<el-form-item label="注册时间">
<el-input v-model="userInfo.createdAt" disabled />
</el-form-item>
<el-form-item label="最后登录">
<el-input v-model="userInfo.lastLoginAt" disabled />
</el-form-item>
......@@ -43,34 +45,23 @@
<template #header>
<div class="card-header">
<span>下载设置</span>
<el-button type="primary" @click="saveSettings">保存</el-button>
</div>
</template>
<el-form :model="downloadSettings" label-width="120px">
<el-form-item label="最大并发数">
<el-input-number
v-model="downloadSettings.maxConcurrentDownloads"
:min="1"
:max="10"
@change="saveSettings"
/>
<el-input-number v-model="downloadSettings.maxConcurrentDownloads" :min="1" :max="10" />
<span class="form-tip">同时下载的最大文件数量</span>
</el-form-item>
<el-form-item label="文件名前缀">
<el-input
v-model="downloadSettings.fileNamePrefix"
placeholder="例如: vue-downloader"
@input="saveSettings"
/>
<el-input v-model="downloadSettings.fileNamePrefix" placeholder="例如: vue-downloader" />
<span class="form-tip">为所有下载文件添加前缀</span>
</el-form-item>
<el-form-item label="下载通知">
<el-switch
v-model="downloadSettings.enableNotifications"
@change="saveSettings"
/>
<el-switch v-model="downloadSettings.enableNotifications" />
<span class="form-tip">下载完成后显示通知</span>
</el-form-item>
</el-form>
......@@ -82,7 +73,7 @@
<span>数据管理</span>
</div>
</template>
<div class="data-management">
<div class="data-item">
<div class="data-info">
......@@ -93,7 +84,7 @@
清除历史
</el-button>
</div>
<div class="data-item">
<div class="data-info">
<h4>用户数据</h4>
......@@ -138,27 +129,66 @@ const downloadSettings = reactive({
// 初始化数据
const initializeData = () => {
const user = authStore.user
// const user = authStore.user
const user = JSON.parse(sessionStorage.getItem('userInfo'))
console.log('Settings.vue initializeData user-->', user)
if (user) {
userInfo.userName = user.userName
userInfo.userName = user.username
userInfo.email = user.email || '未设置'
userInfo.createdAt = new Date(user.createdAt).toLocaleString()
userInfo.lastLoginAt = user.lastLoginAt ? new Date(user.lastLoginAt).toLocaleString() : '从未登录'
// userInfo.createdAt = new Date(user.createdAt).toLocaleString()
// userInfo.lastLoginAt = user.lastLoginAt ? new Date(user.lastLoginAt).toLocaleString() : '从未登录'
userInfo.createdAt = user.createdAt
userInfo.lastLoginAt = user.lastLoginAt
// 加载用户设置
const settings = authStore.getUserSettings()
// const settings = authStore.getUserSettings()
const settings = user.settings
Object.assign(downloadSettings, settings)
}
}
// 保存设置
const saveSettings = () => {
try {
authStore.updateUserSettings(downloadSettings)
ElMessage.success('设置已保存')
} catch (error) {
ElMessage.error('保存设置失败')
}
// sessionStorage.setItem('userInfo', JSON.stringify({}))
http.post(config.updateInfo, {
maxThread: downloadSettings.maxConcurrentDownloads,
notifyStatus: downloadSettings.enableNotifications ? 1 : 0,
filePrefix: downloadSettings.fileNamePrefix
}).then(res => {
if (res.code === 200) {
ElMessage.success('设置已保存')
loadUserInfo()
} else {
ElMessage.error('保存设置失败')
}
})
// try {
// authStore.updateUserSettings(downloadSettings)
// } catch (error) {
// ElMessage.error('保存设置失败')
// }
}
function loadUserInfo() {
http.post(config.getInfo).then(res => {
if (res.code === 200) {
let userObj = {
id: res.data.userName,
username: res.data.userName,
password: '',
email: res.data.email || '',
createdAt: res.data.createTime,
lastLoginAt: res.data.lastLoginTime,
settings: {
maxConcurrentDownloads: res.data.maxThread || 3,
enableNotifications: res.data.notifyStatus == 1 ? true : false,
fileNamePrefix: res.data.filePrefix,
}
}
sessionStorage.setItem('userInfo', JSON.stringify(userObj))
} else {
ElMessage.error(res.message)
}
})
}
// 清除历史记录
......@@ -173,7 +203,7 @@ const clearHistory = async () => {
type: 'warning'
}
)
authStore.clearDownloadHistory()
ElMessage.success('历史记录已清除')
http.post(config.uploadDetailDeleteAll, {
......@@ -192,7 +222,7 @@ const clearHistory = async () => {
const deleteUserData = async () => {
try {
await ElMessageBox.confirm(
'确定要删除当前用户的所有数据吗?包括设置、历史记录等,此操作不可恢复。',
'确定要删除当前用户的所有数据吗?此操作不可恢复。',
'确认删除',
{
confirmButtonText: '确定',
......@@ -200,10 +230,10 @@ const deleteUserData = async () => {
type: 'warning'
}
)
// 清除历史记录
authStore.clearDownloadHistory()
// 重置用户设置
const defaultSettings = {
maxConcurrentDownloads: 3,
......@@ -212,8 +242,8 @@ const deleteUserData = async () => {
}
authStore.updateUserSettings(defaultSettings)
Object.assign(downloadSettings, defaultSettings)
ElMessage.success('用户数据已删除')
ElMessage.success('数据已删除')
http.post(config.uploadDetailDeleteAll, {
type: 2
}).then(res => {
......@@ -234,7 +264,7 @@ const goBack = () => {
// 组件挂载时初始化
onMounted(() => {
initializeData()
userInfo.userName = sessionStorage.getItem("userName") || ''
// userInfo.userName = sessionStorage.getItem("userName") || ''
})
</script>
......@@ -276,6 +306,8 @@ onMounted(() => {
font-size: 16px;
font-weight: 600;
color: #333;
display: flex;
justify-content: space-between;
}
.form-tip {
......@@ -316,7 +348,7 @@ onMounted(() => {
.main-content {
padding: 0 10px;
}
.data-item {
flex-direction: column;
align-items: flex-start;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment