// pages/login/login.js const app = getApp(); import { deepClone, encryption, randomLenNum } from "./../../utils/util"; const accountInfo = wx.getAccountInfoSync(); const current = accountInfo.miniProgram.envVersion; const pass = { //开发 develop: "BXD123456", //体验版 trial: "BXD123456", // 正式 release: "" } const passwd = pass[current]; const { requestPath } = require('./../../url') Page({ /** * 页面的初始数据 */ data: { user: { username: "", password: passwd || "", // username: "SZMAdmin", // password: "BXD123456", mobile: "", code: '', wxCode: '', randomStr: '', code1: '' }, smsTime: 0, eyes: false, straumann: false, ownerCodeList: [], virtualInventoryList: [], changeCompanyName: false, companyName: "", selectCompanyName: "", virtualInventoryId: "", virtualInventoryName: "", virtualInventoryValue: [], code: { src: "/code", value: "", len: 4, type: "image" }, tokenData: { userData: null, user: null, company: null, }, loginType: 0 }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { // wx.setStorageSync('111', 111); // wx.enableAlertBeforeUnload({ // message: "您确定取消登录吗?", // success: function (res) { // wx.clearStorageSync(); // //console.log("成功", res); // }, // fail: function (errMsg) {} // }); let userInfo = wx.getStorageSync('userInfo'); if (userInfo && userInfo.userId) { // app.globalData.tabbar.list[0].show = false; wx.switchTab({ url: '/pages/index/index', }) return; } this.getCode(); this.renderCode() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ async onShow() { }, async getCode() { let res = await wx.login(); this.setData({ wxCode: res.code }) return res.code; }, renderCode() { let codeV = this.data.code; let user = this.data.user; user.code = ""; user.randomStr = randomLenNum(codeV.len, true); codeV.type === "text" ? (codeV.value = randomLenNum(codeV.len)) : (codeV.src = `${requestPath}/code?randomStr=${this.data.user.randomStr}`); this.setData({ user, code: codeV }) }, async getSmsCode() { if (!this.data.user.mobile) { wx.showToast({ title: '请输入正确的手机号', icon: "none" }); return; } let { data } = await app.ajax.gets(`/admin/mobile/${this.data.user.mobile}`); if (!data.data) { wx.showToast({ title: data.msg, icon: "none" }); } else {} wx.showToast({ title: '验证码发送成功', icon: "none" }); this.setData({ smsTime: 60 }); let that = this; let smsTime = setInterval(() => { if (that.data.smsTime - 1 == 0) { clearInterval(smsTime); } this.setData({ smsTime: that.data.smsTime - 1 }); }, 1000); }, setLoginType(e) { this.setData({ loginType: Number(e.currentTarget.dataset.index) }) }, async submit(e) { let userInfo = e.detail.value; let userEnc = encryption({ data: userInfo, key: "pigxpigxpigxpigx", param: ["password"] }); // return; try { let data = { ...this.data.user, ...userEnc }; let userData = {}; if (this.data.loginType == 0) { if (!userInfo.mobile) { wx.showToast({ title: '手机号不可为空', icon: "error" }); return; } if (!userInfo.code1) { wx.showToast({ title: '手机号不可为空', icon: "error" }); return; } userData = await app.ajax.post({ url: `/auth/mobile/token/sms?scope=server&mobile=SMS@${userInfo.mobile}&code=${userInfo.code1}`, data: { mobile: "SMS@" + userInfo.mobile, code: userInfo.code1, scope: "server" }, header: { Authorization: "Basic bWluaTptaW5p", isToken: false } }); } else if (this.data.loginType == 1) { userData = await app.ajax.post({ url: `/auth/oauth/token?code=${data.code}&grant_type=password&password=${encodeURIComponent(data.password)}&randomStr=${data.randomStr}&scope=server&username=${data.username}`, data: {}, header: { Authorization: "Basic bWluaTptaW5p", isToken: false } }); } wx.clearStorageSync(); wx.setStorageSync('access_token', userData.data.access_token); wx.setStorageSync('refresh_token', userData.data.refresh_token); wx.setStorageSync('expires_in', userData.data.expires_in); wx.setStorageSync('isLock', false); wx.setStorageSync('lockPasswd', ''); //console.log(userData) // app.globalData.userInfo = userData; // wx.setStorageSync('userInfo', userData.data); let user = await app.ajax.get({ url: "/admin/user/info", data: {} }); user = user.data.data; let company = await app.ajax.get({ url: `/admin/bxdClientCompany/${user.sysUser.companyId}`, data: {} }); let isStraumann = company.data.data.corporationCode == 'straumann'; wx.setStorageSync('isStraumann', isStraumann); if (isStraumann) { } else if (user.sysUser.roleType === "2") { this.renderCode(); wx.clearStorageSync(); wx.showToast({ title: '您没下单或审批权限,请更换账号!', icon: 'none' }); return; } else if (user.sysUser.roleType === "0") { let roles = user.roleList.find(v => v.roleCode == 'ROLE_ORDER_AUDIT' || v.roleCode == 'SZMAdmin'); if (!roles) { this.renderCode(); wx.clearStorageSync(); wx.showToast({ title: '您没下单或审批权限,请更换账号!', icon: 'none' }); return; } } let xiadan = user.roleList.find(v => v.roleCode == 'User' || v.roleCode == 'ROLE_ORDER_AUDIT' || v.roleCode == 'SZMAdmin'); if (!xiadan && !isStraumann) { this.renderCode(); wx.clearStorageSync(); wx.showToast({ title: '您没下单或审批权限,请更换账号!', icon: 'none' }); return; } await app.ajax.post({ url: `/admin/social/bind?state=WX&code=${await this.getCode()}`, }); company = company.data.data; app.globalData.userInfo = user; wx.setStorageSync('userInfo', user.sysUser); wx.setStorageSync('userRole', user.roles); wx.setStorageSync('roleList', user.roleList); wx.setStorageSync('companyId', user.sysUser.companyId); wx.setStorageSync('companyName', user.sysUser.companyName || ''); wx.setStorageSync('selectCompanyName', user.sysUser.companyName || ''); wx.setStorageSync('virtualInventoryId', user.sysUser.virtualInventoryId || 0); wx.setStorageSync('virtualInventoryName', user.sysUser.virtualInventoryName || ''); wx.setStorageSync('virtualInventoryValue', []); wx.setStorageSync('virtualInventoryList', []); // wx.setStorageSync('ownerCodeList', company.ownerCodeList); wx.setStorageSync('ownerCodeList', user.sysUser.companyName.split(",")); // app.globalData.tabbar.list[0].show = false; app.globalData.company = company; wx.setStorageSync('company', company); app.globalData.logout = false; wx.setStorageSync('logout', false); wx.setStorageSync('showChangeCompanyName', false); this.setData({ companyName: company.companyName, tokenData: { userData: userData.data.data, user: user, company: company } }) let role = user.roleList.find(v => v.roleCode == 'SZMAdmin'); if (role) { wx.setStorageSync('companyName', ''); wx.setStorageSync('selectCompanyName', ''); wx.setStorageSync('showChangeCompanyName', true); app.globalData.changeCompanyName = true; } else { this.goHome(); } } catch (e) { //console.log(e) this.renderCode(); } }, eyesTap() { this.setData({ eyes: !this.data.eyes }) }, asyncValue(e) { this.setData({ ["user." + e.target.dataset.name]: e.detail.value }); }, setCompanyName(e) { //console.log(e) this.setData({ selectCompanyName: this.data.ownerCodeList[Number(e.detail.value)] }) this.getVirtualInventoryList(); }, async changeCompany(userData, user, company) { this.setData({ ownerCodeList: wx.getStorageSync('ownerCodeList'), changeCompanyName: true, }); }, async getVirtualInventoryList() { let companyId = this.data.tokenData.company.companyId; let selectCompanyName = this.data.selectCompanyName; let { data } = await app.ajax.get({ url: `/admin/bxdVirtualInventory/page?companyId=${companyId}&companyName=${selectCompanyName}¤t=1&size=10000`, noCompany: true }); let virtualInventoryList = data.data.records.map(v => { v.children = [{ virtualInventoryName: '一级' }].concat(v.children); return v; }); this.setData({ virtualInventoryValue: [0, 0], virtualInventoryList: [ virtualInventoryList, virtualInventoryList[0].children ] }) }, setVirtualInventoryId(e) { //console.log(e) let virtualInventoryList = this.data.virtualInventoryList; let virtualInventoryName = virtualInventoryList[0][e.detail.value[0]].virtualInventoryName; let virtualInventoryId = virtualInventoryList[0][e.detail.value[0]].virtualInventoryId; if (virtualInventoryList[1][e.detail.value[1]].virtualInventoryId) { virtualInventoryName += "/" + virtualInventoryList[1][e.detail.value[1]].virtualInventoryName; virtualInventoryId = virtualInventoryList[1][e.detail.value[1]].virtualInventoryId; } this.setData({ virtualInventoryValue: e.detail.value, virtualInventoryName, virtualInventoryId }); }, setVirtualInventoryChildren(e) { let virtualInventoryValue = this.data.virtualInventoryValue; let virtualInventoryList = this.data.virtualInventoryList; virtualInventoryValue[e.detail.column] = e.detail.value; if (e.detail.column == 0) { virtualInventoryValue[1] = 0; } this.setData({ virtualInventoryValue }); if (e.detail.column == 0) { virtualInventoryList[1] = virtualInventoryList[e.detail.column][e.detail.value].children; this.setData({ virtualInventoryList }); } }, selectConfirm() { if (!this.data.selectCompanyName) { wx.showToast({ title: '请选择货主', icon: 'error' }); return; } if (!this.data.virtualInventoryName) { wx.showToast({ title: '请选择成本中心', icon: 'error' }); return; } this.goHome(); }, goHome() { let { userData, user, company } = this.data.tokenData; app.globalData.userInfo = user; wx.setStorageSync('userInfo', user.sysUser); wx.setStorageSync('userRole', user.roles); wx.setStorageSync('roleList', user.roleList); wx.setStorageSync('companyId', user.sysUser.companyId); wx.setStorageSync('companyName', this.data.selectCompanyName || user.sysUser.companyName); wx.setStorageSync('virtualInventoryId', this.data.virtualInventoryId || user.sysUser.virtualInventoryId || 0); wx.setStorageSync('virtualInventoryName', this.data.virtualInventoryName); wx.setStorageSync('virtualInventoryValue', this.data.virtualInventoryValue); wx.setStorageSync('virtualInventoryList', this.data.virtualInventoryList); wx.setStorageSync('ownerCodeList', this.data.ownerCodeList); // app.globalData.tabbar.list[0].show = false; app.globalData.company = company; wx.setStorageSync('company', company); wx.setStorageSync('isStraumann', company.corporationCode == 'straumann'); app.globalData.logout = true; wx.setStorageSync('logout', false); setTimeout(() => { wx.showToast({ title: '登录成功', icon: "success" }); }, 200); setTimeout(() => { wx.switchTab({ url: '/pages/index/index', }) }, 1000) }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })