diff --git a/src/store/modules/user.js b/src/store/modules/user.js index ab0a6fe..1abf164 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,96 +1,104 @@ -import { login, logout, getInfo } from '@/api/login' -import { getToken, setToken, removeToken } from '@/utils/auth' +import { login, logout, getInfo } from "@/api/login"; +import { getToken, setToken, removeToken } from "@/utils/auth"; +import { getAvatar } from "../../utils"; const user = { state: { token: getToken(), - name: '', - avatar: '', + name: "", + avatar: "", roles: [], - permissions: [] + permissions: [], }, mutations: { SET_TOKEN: (state, token) => { - state.token = token + state.token = token; }, SET_NAME: (state, name) => { - state.name = name + state.name = name; }, SET_AVATAR: (state, avatar) => { - state.avatar = avatar + state.avatar = avatar; }, SET_ROLES: (state, roles) => { - state.roles = roles + state.roles = roles; }, SET_PERMISSIONS: (state, permissions) => { - state.permissions = permissions - } + state.permissions = permissions; + }, }, actions: { // 登录 Login({ commit }, userInfo) { - const username = userInfo.username.trim() - const password = userInfo.password - const code = userInfo.code - const uuid = userInfo.uuid + const username = userInfo.username.trim(); + const password = userInfo.password; + const code = userInfo.code; + const uuid = userInfo.uuid; return new Promise((resolve, reject) => { - login(username, password, code, uuid).then(res => { - setToken(res.token) - commit('SET_TOKEN', res.token) - resolve() - }).catch(error => { - reject(error) - }) - }) + login(username, password, code, uuid) + .then((res) => { + setToken(res.token); + commit("SET_TOKEN", res.token); + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { - getInfo().then(res => { - const user = res.user - const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; - if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 - commit('SET_ROLES', res.roles) - commit('SET_PERMISSIONS', res.permissions) - } else { - commit('SET_ROLES', ['ROLE_DEFAULT']) - } - commit('SET_NAME', user.userName) - commit('SET_AVATAR', avatar) - resolve(res) - }).catch(error => { - reject(error) - }) - }) + getInfo() + .then((res) => { + const user = res.user; + const avatar = getAvatar(user); + if (res.roles && res.roles.length > 0) { + // 验证返回的roles是否是一个非空数组 + commit("SET_ROLES", res.roles); + commit("SET_PERMISSIONS", res.permissions); + } else { + commit("SET_ROLES", ["ROLE_DEFAULT"]); + } + commit("SET_NAME", user.userName); + commit("SET_AVATAR", avatar); + resolve(res); + }) + .catch((error) => { + reject(error); + }); + }); }, // 退出系统 LogOut({ commit, state }) { return new Promise((resolve, reject) => { - logout(state.token).then(() => { - commit('SET_TOKEN', '') - commit('SET_ROLES', []) - commit('SET_PERMISSIONS', []) - removeToken() - resolve() - }).catch(error => { - reject(error) - }) - }) + logout(state.token) + .then(() => { + commit("SET_TOKEN", ""); + commit("SET_ROLES", []); + commit("SET_PERMISSIONS", []); + removeToken(); + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); }, // 前端 登出 FedLogOut({ commit }) { - return new Promise(resolve => { - commit('SET_TOKEN', '') - removeToken() - resolve() - }) - } - } -} + return new Promise((resolve) => { + commit("SET_TOKEN", ""); + removeToken(); + resolve(); + }); + }, + }, +}; -export default user +export default user; diff --git a/src/utils/index.js b/src/utils/index.js index 4e65504..9808eaf 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,18 +1,25 @@ -import { parseTime } from './ruoyi' +import { parseTime } from "./ruoyi"; /** * 表格时间格式化 */ export function formatDate(cellValue) { if (cellValue == null || cellValue == "") return ""; - var date = new Date(cellValue) - var year = date.getFullYear() - var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 - var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() - var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() - var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() - var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() - return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds + var date = new Date(cellValue); + var year = date.getFullYear(); + var month = + date.getMonth() + 1 < 10 + ? "0" + (date.getMonth() + 1) + : date.getMonth() + 1; + var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); + var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); + var minutes = + date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); + var seconds = + date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); + return ( + year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + ); } /** @@ -21,40 +28,40 @@ export function formatDate(cellValue) { * @returns {string} */ export function formatTime(time, option) { - if (('' + time).length === 10) { - time = parseInt(time) * 1000 + if (("" + time).length === 10) { + time = parseInt(time) * 1000; } else { - time = +time + time = +time; } - const d = new Date(time) - const now = Date.now() + const d = new Date(time); + const now = Date.now(); - const diff = (now - d) / 1000 + const diff = (now - d) / 1000; if (diff < 30) { - return '刚刚' + return "刚刚"; } else if (diff < 3600) { // less 1 hour - return Math.ceil(diff / 60) + '分钟前' + return Math.ceil(diff / 60) + "分钟前"; } else if (diff < 3600 * 24) { - return Math.ceil(diff / 3600) + '小时前' + return Math.ceil(diff / 3600) + "小时前"; } else if (diff < 3600 * 24 * 2) { - return '1天前' + return "1天前"; } if (option) { - return parseTime(time, option) + return parseTime(time, option); } else { return ( d.getMonth() + 1 + - '月' + + "月" + d.getDate() + - '日' + + "日" + d.getHours() + - '时' + + "时" + d.getMinutes() + - '分' - ) + "分" + ); } } @@ -63,18 +70,18 @@ export function formatTime(time, option) { * @returns {Object} */ export function getQueryObject(url) { - url = url == null ? window.location.href : url - const search = url.substring(url.lastIndexOf('?') + 1) - const obj = {} - const reg = /([^?&=]+)=([^?&=]*)/g + url = url == null ? window.location.href : url; + const search = url.substring(url.lastIndexOf("?") + 1); + const obj = {}; + const reg = /([^?&=]+)=([^?&=]*)/g; search.replace(reg, (rs, $1, $2) => { - const name = decodeURIComponent($1) - let val = decodeURIComponent($2) - val = String(val) - obj[name] = val - return rs - }) - return obj + const name = decodeURIComponent($1); + let val = decodeURIComponent($2); + val = String(val); + obj[name] = val; + return rs; + }); + return obj; } /** @@ -83,14 +90,14 @@ export function getQueryObject(url) { */ export function byteLength(str) { // returns the byte length of an utf8 string - let s = str.length + let s = str.length; for (var i = str.length - 1; i >= 0; i--) { - const code = str.charCodeAt(i) - if (code > 0x7f && code <= 0x7ff) s++ - else if (code > 0x7ff && code <= 0xffff) s += 2 - if (code >= 0xDC00 && code <= 0xDFFF) i-- + const code = str.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) s++; + else if (code > 0x7ff && code <= 0xffff) s += 2; + if (code >= 0xdc00 && code <= 0xdfff) i--; } - return s + return s; } /** @@ -98,13 +105,13 @@ export function byteLength(str) { * @returns {Array} */ export function cleanArray(actual) { - const newArray = [] + const newArray = []; for (let i = 0; i < actual.length; i++) { if (actual[i]) { - newArray.push(actual[i]) + newArray.push(actual[i]); } } - return newArray + return newArray; } /** @@ -112,13 +119,13 @@ export function cleanArray(actual) { * @returns {Array} */ export function param(json) { - if (!json) return '' + if (!json) return ""; return cleanArray( - Object.keys(json).map(key => { - if (json[key] === undefined) return '' - return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]) + Object.keys(json).map((key) => { + if (json[key] === undefined) return ""; + return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]); }) - ).join('&') + ).join("&"); } /** @@ -126,21 +133,21 @@ export function param(json) { * @returns {Object} */ export function param2Obj(url) { - const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') + const search = decodeURIComponent(url.split("?")[1]).replace(/\+/g, " "); if (!search) { - return {} + return {}; } - const obj = {} - const searchArr = search.split('&') - searchArr.forEach(v => { - const index = v.indexOf('=') + const obj = {}; + const searchArr = search.split("&"); + searchArr.forEach((v) => { + const index = v.indexOf("="); if (index !== -1) { - const name = v.substring(0, index) - const val = v.substring(index + 1, v.length) - obj[name] = val + const name = v.substring(0, index); + const val = v.substring(index + 1, v.length); + obj[name] = val; } - }) - return obj + }); + return obj; } /** @@ -148,9 +155,9 @@ export function param2Obj(url) { * @returns {string} */ export function html2Text(val) { - const div = document.createElement('div') - div.innerHTML = val - return div.textContent || div.innerText + const div = document.createElement("div"); + div.innerHTML = val; + return div.textContent || div.innerText; } /** @@ -160,21 +167,21 @@ export function html2Text(val) { * @returns {Object} */ export function objectMerge(target, source) { - if (typeof target !== 'object') { - target = {} + if (typeof target !== "object") { + target = {}; } if (Array.isArray(source)) { - return source.slice() + return source.slice(); } - Object.keys(source).forEach(property => { - const sourceProperty = source[property] - if (typeof sourceProperty === 'object') { - target[property] = objectMerge(target[property], sourceProperty) + Object.keys(source).forEach((property) => { + const sourceProperty = source[property]; + if (typeof sourceProperty === "object") { + target[property] = objectMerge(target[property], sourceProperty); } else { - target[property] = sourceProperty + target[property] = sourceProperty; } - }) - return target + }); + return target; } /** @@ -183,18 +190,18 @@ export function objectMerge(target, source) { */ export function toggleClass(element, className) { if (!element || !className) { - return + return; } - let classString = element.className - const nameIndex = classString.indexOf(className) + let classString = element.className; + const nameIndex = classString.indexOf(className); if (nameIndex === -1) { - classString += '' + className + classString += "" + className; } else { classString = classString.substr(0, nameIndex) + - classString.substr(nameIndex + className.length) + classString.substr(nameIndex + className.length); } - element.className = classString + element.className = classString; } /** @@ -202,10 +209,10 @@ export function toggleClass(element, className) { * @returns {Date} */ export function getTime(type) { - if (type === 'start') { - return new Date().getTime() - 3600 * 1000 * 24 * 90 + if (type === "start") { + return new Date().getTime() - 3600 * 1000 * 24 * 90; } else { - return new Date(new Date().toDateString()) + return new Date(new Date().toDateString()); } } @@ -216,38 +223,38 @@ export function getTime(type) { * @return {*} */ export function debounce(func, wait, immediate) { - let timeout, args, context, timestamp, result + let timeout, args, context, timestamp, result; - const later = function() { + const later = function () { // 据上一次触发时间间隔 - const last = +new Date() - timestamp + const last = +new Date() - timestamp; // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait if (last < wait && last > 0) { - timeout = setTimeout(later, wait - last) + timeout = setTimeout(later, wait - last); } else { - timeout = null + timeout = null; // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 if (!immediate) { - result = func.apply(context, args) - if (!timeout) context = args = null + result = func.apply(context, args); + if (!timeout) context = args = null; } } - } + }; - return function(...args) { - context = this - timestamp = +new Date() - const callNow = immediate && !timeout + return function (...args) { + context = this; + timestamp = +new Date(); + const callNow = immediate && !timeout; // 如果延时不存在,重新设定延时 - if (!timeout) timeout = setTimeout(later, wait) + if (!timeout) timeout = setTimeout(later, wait); if (callNow) { - result = func.apply(context, args) - context = args = null + result = func.apply(context, args); + context = args = null; } - return result - } + return result; + }; } /** @@ -258,18 +265,18 @@ export function debounce(func, wait, immediate) { * @returns {Object} */ export function deepClone(source) { - if (!source && typeof source !== 'object') { - throw new Error('error arguments', 'deepClone') + if (!source && typeof source !== "object") { + throw new Error("error arguments", "deepClone"); } - const targetObj = source.constructor === Array ? [] : {} - Object.keys(source).forEach(keys => { - if (source[keys] && typeof source[keys] === 'object') { - targetObj[keys] = deepClone(source[keys]) + const targetObj = source.constructor === Array ? [] : {}; + Object.keys(source).forEach((keys) => { + if (source[keys] && typeof source[keys] === "object") { + targetObj[keys] = deepClone(source[keys]); } else { - targetObj[keys] = source[keys] + targetObj[keys] = source[keys]; } - }) - return targetObj + }); + return targetObj; } /** @@ -277,16 +284,16 @@ export function deepClone(source) { * @returns {Array} */ export function uniqueArr(arr) { - return Array.from(new Set(arr)) + return Array.from(new Set(arr)); } /** * @returns {string} */ export function createUniqueString() { - const timestamp = +new Date() + '' - const randomNum = parseInt((1 + Math.random()) * 65536) + '' - return (+(randomNum + timestamp)).toString(32) + const timestamp = +new Date() + ""; + const randomNum = parseInt((1 + Math.random()) * 65536) + ""; + return (+(randomNum + timestamp)).toString(32); } /** @@ -296,7 +303,7 @@ export function createUniqueString() { * @returns {boolean} */ export function hasClass(ele, cls) { - return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')) + return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); } /** @@ -305,7 +312,7 @@ export function hasClass(ele, cls) { * @param {string} cls */ export function addClass(ele, cls) { - if (!hasClass(ele, cls)) ele.className += ' ' + cls + if (!hasClass(ele, cls)) ele.className += " " + cls; } /** @@ -315,76 +322,81 @@ export function addClass(ele, cls) { */ export function removeClass(ele, cls) { if (hasClass(ele, cls)) { - const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)') - ele.className = ele.className.replace(reg, ' ') + const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); + ele.className = ele.className.replace(reg, " "); } } export function makeMap(str, expectsLowerCase) { - const map = Object.create(null) - const list = str.split(',') + const map = Object.create(null); + const list = str.split(","); for (let i = 0; i < list.length; i++) { - map[list[i]] = true + map[list[i]] = true; } - return expectsLowerCase - ? val => map[val.toLowerCase()] - : val => map[val] + return expectsLowerCase ? (val) => map[val.toLowerCase()] : (val) => map[val]; } - -export const exportDefault = 'export default ' + +export const exportDefault = "export default "; export const beautifierConf = { html: { - indent_size: '2', - indent_char: ' ', - max_preserve_newlines: '-1', + indent_size: "2", + indent_char: " ", + max_preserve_newlines: "-1", preserve_newlines: false, keep_array_indentation: false, break_chained_methods: false, - indent_scripts: 'separate', - brace_style: 'end-expand', + indent_scripts: "separate", + brace_style: "end-expand", space_before_conditional: true, unescape_strings: false, jslint_happy: false, end_with_newline: true, - wrap_line_length: '110', + wrap_line_length: "110", indent_inner_html: true, comma_first: false, e4x: true, - indent_empty_lines: true + indent_empty_lines: true, }, js: { - indent_size: '2', - indent_char: ' ', - max_preserve_newlines: '-1', + indent_size: "2", + indent_char: " ", + max_preserve_newlines: "-1", preserve_newlines: false, keep_array_indentation: false, break_chained_methods: false, - indent_scripts: 'normal', - brace_style: 'end-expand', + indent_scripts: "normal", + brace_style: "end-expand", space_before_conditional: true, unescape_strings: false, jslint_happy: true, end_with_newline: true, - wrap_line_length: '110', + wrap_line_length: "110", indent_inner_html: true, comma_first: false, e4x: true, - indent_empty_lines: true - } -} + indent_empty_lines: true, + }, +}; // 首字母大小 export function titleCase(str) { - return str.replace(/( |^)[a-z]/g, L => L.toUpperCase()) + return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); } // 下划转驼峰 export function camelCase(str) { - return str.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase()) + return str.replace(/_[a-z]/g, (str1) => str1.substr(-1).toUpperCase()); } export function isNumberStr(str) { - return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str) + return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str); +} + +export function getAvatar(user) { + const avatar = + user.avatar == "" || user.avatar == null + ? require("@/assets/images/profile.jpg") + : process.env.VUE_APP_BASE_API + user.avatar; + return avatar; } - diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index bd41618..8fdcd1d 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -1,20 +1,8 @@