import { defineStore } from 'pinia' import { getStorage } from '@/api/myResource/file' import { checkUserLoginInfo } from '@/api/myResource/user' import { message } from 'ant-design-vue' export const useMyResourceStore = defineStore('myResource', { state: () => ({ showUploadMask: false, // 表格中显示的列 selectedColumnList: localStorage.getItem('qiwen_selected_column_list'), // 文件展示模式 0 列表模式 | 1 网格模式 | 2 时间线模式 fileModel: localStorage.getItem('qiwen_file_model'), // 网格模式 & 时间线模式下 图标大小 单位px gridSize: localStorage.getItem('qiwen_grid_size') ? Number(localStorage.getItem('qiwen_grid_size')) : 80, // 批量模式下:被选中的文件列表 selectedFiles: [], // 是否批量操作:true - 批量,false - 单文件 isBatchOperation: false, isAdmin: -1, screenWidth: document.body.clientWidth, // 屏幕宽度 storageValue: 0, // 文件已占用的存储空间大小 totalStorageValue: 0, isLogin: localStorage.getItem('qiwen_isLogin') === 'true', // 用户登录状态 userInfoObj: {}, // 用户信息 query: {} //路径信息 }), getters: { // 登录状态 getIsLogin: (state) => state.isLogin, // 用户姓名 getUsername: (state) => state.userInfoObj.username, // 用户ID getUserId: (state) => state.userInfoObj.userId, getIsAdmin: (state) => state.isAdmin, // 表格显示列 getSelectedColumnList: (state) => state.selectedColumnList === null ? [] // 假设 allColumnList 是一个空数组,如果它有其他来源,请您自行补充 : state.selectedColumnList.split(','), // 文件查看模式 getFileModel: (state) => (state.fileModel === null ? 0 : Number(state.fileModel)), // 网格模式 & 时间线模式下 文件图标大小 getGridSize: (state) => state.gridSize, // 剩余存储空间 getRemainderStorageValue: (state) => state.totalStorageValue - state.storageValue, getQuery: (state) => state.query }, actions: { changeQuery(data) { this.query = data }, toggleUploadMask() { this.showUploadMask = !this.showUploadMask }, /** * 改变表格显示列 * @description 表格显示列保存在 Pinia 和 cookie 中 * @param {[]} data 表格需要显示的列数组 */ changeSelectedColumnList(data) { localStorage.setItem('qiwen_selected_column_list', data.toString()) this.selectedColumnList = data.toString() }, /** * 改变文件展示模式 * @description 文件展示模式保存在 Pinia 和 cookie 中 * @param {string} data 文件展示模式 */ changeFileModel(data) { localStorage.setItem('qiwen_file_model', data) this.fileModel = data }, /** * 网格模式 & 时间线模式 改变文件图标大小 * @description 文件图标大小保存在 Pinia 和 cookie 中 * @param {string} data 文件图标大小 */ changeGridSize(data) { localStorage.setItem('qiwen_grid_size', data) this.gridSize = data }, /** * 设置批量操作模式下被选中的文件列表 * @param {array} data 批量操作模式下,被选中的文件列表 */ changeSelectedFiles(data) { this.selectedFiles = data }, /** * 设置是否批量操作 * @param {boolean} data 是否批量操作 */ changeIsBatchOperation(data) { this.isBatchOperation = data }, changeIsAdmin(data) { this.isAdmin = data }, /** * 改变屏幕宽度 * @param {[]} data 屏幕宽度 */ changeScreenWidth(data) { this.screenWidth = data }, /** * 获取文件已占用的存储空间 */ async showStorage() { try { const res = await getStorage() if (res.success) { this.storageValue = res.data ? (res.data.storageSize === null ? 0 : Number(res.data.storageSize)) : 0 this.totalStorageValue = res.data ? res.data.totalStorageSize === null ? 0 : Number(res.data.totalStorageSize) : 0 } else { message.error(res.message) } } catch (error) { message.error('获取存储空间失败') } }, /** * 获取用户信息 */ async getUserInfo() { this.isLogin = true localStorage.setItem('qiwen_isLogin', 'true') // try { // const res = await checkUserLoginInfo() // if (res.success) { // this.isLogin = true // this.userInfoObj = Object.assign({}, res.data.userInfoObj, data) // } else { // this.isLogin = false // this.userInfoObj = {} // } // } catch (error) { // this.isLogin = false // this.userInfoObj = {} // } } } })