登录相关

This commit is contained in:
qsh
2023-08-19 00:52:53 +08:00
parent 266b7d4a0f
commit ae7e2bc17f
16 changed files with 484 additions and 809 deletions

View File

@@ -2,9 +2,25 @@ import request from '../request/index.js';
export function login(data) {
return request({
url: 'api-admin/pcLogin',
url: 'driver-api/tdSysUser/login',
method: 'POST',
data,
noToken: true
});
}
export function getCode(data) {
return request({
url: 'driver-api/tdSysUser/code',
method: 'get',
data,
noToken: true
});
}
export function logout() {
return request({
url: 'driver-api/tdSysUser/loginOut',
method: 'get',
});
}

9
src/jtools/api/vip.js Normal file
View File

@@ -0,0 +1,9 @@
import request from '../request/index.js';
export function queryVip(data) {
return request({
url: 'driver-api/tdMember/queryUserMember',
method: 'POST',
data,
});
}

View File

@@ -1,4 +1,6 @@
import storage from '../storage/index.js';
import useUserStore from '@/jtools/store/user'
//把配置项单独处理
let server_url = ' '; // 请求地址
let token = ' '; // 凭证
@@ -27,11 +29,15 @@ function service(options = {}) {
title: res.data.message,
icon: 'none'
});
uni.redirectTo({
url: '/pages/login/login'
});
useUserStore().logout()
//请求成功
resolved(res.data);
} else if(res.data.code != '0000') {
uni.showToast({
title: resp.message,
icon: 'none'
})
resolved(res.data)
} else {
//请求成功
resolved(res.data);

View File

@@ -1,9 +1,9 @@
import { defineStore } from 'pinia';
import http from '@/jtools/request/index';
import { login,logout } from '@/jtools/api/login';
import constants from '@/jtools/constants';
import storage from '@/jtools/storage';
const user = defineStore({
const useUserStore = defineStore({
id: 'user',
state: () => ({
token: storage.get('token'),
@@ -12,57 +12,43 @@ const user = defineStore({
}),
actions: {
// 登录
showAuth() {
// router.replaceAll('/pages/login/login');
login(params) {
// commit('isLogin', true);
return new Promise(async (resolve, reject) => {
const resp = await login(params);
if (resp.code === '0000') {
// 保存登录信息,用于重新登录
this.isLogin = true;
this.token = resp.data.token;
this.userInfo = resp.data
storage.set('isLogin', true)
storage.set('token', resp.data.token)
storage.set('userInfo', resp.data)
resolve(resp.data);
} else {
reject();
}
});
},
// 获取个人信息
async getInfo() {
const { error, data } = await userApi.profile();
if (error !== 0) return;
this.userInfo = data;
return Promise.resolve(data);
},
// 设置token
setToken(token = '') {
if (token === '') {
this.isLogin = false;
this.token = ''
this.userInfo = {}
storage.set('token', '');
storage.set('isLogin', false);
storage.set('userInfo', {});
} else {
this.isLogin = true;
this.token = token
storage.set('token', token);
storage.set('isLogin', true);
}
return this.isLogin;
},
// 重置用户默认数据
resetUserData() {
this.setToken();
},
// 登出
async logout(force = false) {
if (!force) {
const { error } = await userApi.logout();
if (error === 0) {
this.resetUserData();
}
}
if (force) {
logout(force = false) {
return new Promise((resolve, reject) => {
this.resetUserData();
}
return !this.isLogin;
uni.redirectTo({
url: '/pages/login/login'
})
resolve();
})
},
resetUserData() {
this.isLogin = false;
this.token = '';
this.userInfo = {}
storage.remove('isLogin')
storage.remove('token')
storage.remove('userInfo')
}
},
});
export default user;
export default useUserStore;

View File

@@ -0,0 +1,167 @@
/**
* 判断url是否是http或https
* @param {string} path
* @returns {Boolean}
*/
export function isHttp(url) {
return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1;
}
/**
* 判断path是否为外链
* @param {string} path
* @returns {Boolean}
*/
export function isExternal(path) {
return /^(https?:|mailto:|tel:)/.test(path);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validUsername(str) {
const valid_map = ['admin', 'editor'];
return valid_map.indexOf(str.trim()) >= 0;
}
/**
* @param {string} url
* @returns {Boolean}
*/
export function isURL(url) {
const reg =
/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
return reg.test(url);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validLowerCase(str) {
const reg = /^[a-z]+$/;
return reg.test(str);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validUpperCase(str) {
const reg = /^[A-Z]+$/;
return reg.test(str);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validAlphabets(str) {
const reg = /^[A-Za-z]+$/;
return reg.test(str);
}
/**
* @param {string} email
* @returns {Boolean}
*/
export function isEmail(email) {
const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return reg.test(email);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function isString(str) {
if (typeof str === 'string' || str instanceof String) {
return true;
}
return false;
}
export function isPhone(str) {
return str && /^1[3456789]\d{9}$/.test(str)
}
/**
* @param {Array} arg
* @returns {Boolean}
*/
export function isArray(arg) {
if (typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(arg) === '[object Array]';
}
return Array.isArray(arg);
}
// 是否纯英文
export function isAllEN(val) {
return /^[a-zA-Z]*$/.test(val);
}
// 是否纯中文
export function isAllCN(val) {
return /^[\u4E00-\u9FA5]*$/.test(val);
}
// 校验手机号
export function validPhone(rule, value, callback) {
if (value && !/^1[3456789]\d{9}$/.test(value)) {
return callback(new Error('请输入正确的11位号码'));
} else {
return callback();
}
}
// 校验固话和手机号
export function validPhoneAndMobile(rule, value, callback) {
if (value && !/^((0\d{2,3}-?\d{7,8})|(1[3465789]\d{9}))$/.test(value)) {
return callback(new Error('请输入正确的电话号码'));
} else {
return callback();
}
}
// 校验邮箱
export function validEmail(rule, value, callback) {
if (value && !isEmail(value)) {
return callback(new Error('请输入正确的邮箱'));
} else {
return callback();
}
}
// 校验纳税人识别号
export function validTaxpayer(rule, value, callback) {
if (value && !/^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/.test(value)) {
return callback(new Error('请输入正确的纳税人识别号'));
} else {
return callback();
}
}
// 校验是否网站
export function validUrl(rule, value, callback) {
if (value && !isURL(value)) {
return callback(new Error('请输入正确的网站'));
} else {
return callback();
}
}
// 校验银行卡
export function validBankCard(rule, value, callback) {
const strBin = '10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99';
if (!value) {
return callback();
} else if (!Number.isInteger(+value)) {
callback(new Error('银行卡号必须全为数字'));
} else if (value.trim().length < 8 || value.trim().length > 32) {
callback(new Error('银行卡号长度必须在8到32之间'));
} else {
callback();
}
}