Commit 44c817d9 authored by 王玉鑫's avatar 王玉鑫

feat: 登录逻辑

parent f0e510df
<script>
import { mapMutations } from "vuex";
import store from "./store";
import { login } from '@/utils/request.js';
export default {
onLaunch: function () {
console.log("App Launch");
......
......@@ -27,5 +27,7 @@ export default {
// 联系我们列表
queryContacts: '/postcard/api/scSourceInfo/contact',
// 获取查询条件列表
queryFiltersList: '/postcard/api/sysDictData/listByCodes'
queryFiltersList: '/postcard/api/sysDictData/listByCodes',
/** 登录 */
login: '/postcard/user/login',
}
import baseUrl from '../core/config'
import store from '@/store'
export default function fetch (option) {
import baseUrl from "../core/config";
import API from "@/api/url/index.js";
import store from "@/store";
function _fetch(option) {
return new Promise((resolve, reject) => {
var {
url,
data = {},
header,
methods = 'post',
success,
fail
} = option
var { url, data = {}, header, methods = "post", success, fail } = option;
wx.request({
url: baseUrl + url,
......@@ -17,46 +11,90 @@ export default function fetch (option) {
method: methods,
header: {
"Content-Type": "application/x-www-form-urlencoded",
...header
Authorization: `Bearer ${uni.getStorageSync("token") || ""}`,
...header,
},
success: res => {
success: (res) => {
res = res.data;
if (res.code == 200) {
success && success(res.data);
resolve(res.data);
} else if (res.code == 300) {
} else {
if (res.code == 300) {
if (fail) {
fail(res.msg)
fail(res.msg);
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
icon: "none",
});
}
if (res.msg === '当前会话失效,请重新登录') {
store.commit('logout')
if (res.msg === "当前会话失效,请重新登录") {
store.commit("logout");
}
} else if (res.code == 500) {
if (fail) {
fail(res.msg)
fail(res.msg);
} else {
uni.showToast({
title: '服务器繁忙,请稍候重试',
icon: 'none'
})
title: "服务器繁忙,请稍候重试",
icon: "none",
});
}
}
reject(res);
}
},
fail: err => {
console.log(err)
fail && fail(err)
fail: (err) => {
console.log(err);
fail && fail(err);
uni.showToast({
title: '服务器繁忙,请稍候重试',
icon: 'none'
})
title: "服务器繁忙,请稍候重试",
icon: "none",
});
reject(err);
},
});
});
}
/**
* 获取小程序code
*/
function getCode() {
return new Promise((resolve, reject) => {
uni.login({
provider: "weixin",
success(res) {
resolve(res);
},
fail(error) {
reject(error);
},
});
});
}
export async function login(force = false) {
const token = uni.getStorageSync("token");
if (!token || force) {
const { code } = await getCode();
const result = await _fetch({ url: API.login, data: { code } });
uni.setStorageSync("token", result);
}
}
export default async function fetch(...args) {
await login();
try {
const result = await _fetch(...args);
return result;
} catch (error) {
if (error?.code === 401) {
await login(true);
return _fetch(...args);
} else {
return Promise.reject(result);
}
}
})
})
}
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