This commit is contained in:
aihe 2024-08-01 00:54:49 +08:00
parent eafbc58bc0
commit 48e9782c38
11 changed files with 152 additions and 76 deletions

6
common/loginHandle.js Normal file
View File

@ -0,0 +1,6 @@
import { goto } from "./untool"
export const goLogin = ()=> {
// goto("login/login", 2)
}

View File

@ -2,6 +2,8 @@ import { goto, getImageTempFilePath } from "./untool";
import { showToast, showLoading, hideLoading, downloadFile } from "./untool" import { showToast, showLoading, hideLoading, downloadFile } from "./untool"
import { setSessionXToken, getSessionXToken } from "@/session" import { setSessionXToken, getSessionXToken } from "@/session"
import { textEncoder, textDecoder } from "./util" import { textEncoder, textDecoder } from "./util"
import { goLogin } from "@/common/loginHandle"
const getCommonReqData = ()=> { const getCommonReqData = ()=> {
const xToken = getSessionXToken() const xToken = getSessionXToken()
return { return {
@ -84,7 +86,7 @@ async function handleResponse(options) {
setSessionXToken() setSessionXToken()
msg = '登录失效,请重新登录' msg = '登录失效,请重新登录'
showToast(msg) showToast(msg)
goto("login/login", 2) goLogin()
return reject({ return reject({
code: {} code: {}
}); });

View File

@ -1,6 +1,6 @@
import { showToast } from "./untool" import { showToast } from "./untool"
const checkParams = (param, validConfig, showErrMsg = true)=> { const checkParams = (param, validConfig, showErrMsg = true)=> {
return new Promise((resolve)=> { return new Promise((resolve, reject)=> {
let errMsg = '' let errMsg = ''
Object.keys(validConfig).map(key=> { Object.keys(validConfig).map(key=> {
const itemConf = validConfig[key] const itemConf = validConfig[key]
@ -14,6 +14,7 @@ const checkParams = (param, validConfig, showErrMsg = true)=> {
}) })
if(errMsg) { if(errMsg) {
showErrMsg && showToast(errMsg) showErrMsg && showToast(errMsg)
reject()
} else { } else {
resolve() resolve()
} }

View File

@ -0,0 +1,72 @@
<template>
<tpx-dialog v-model:show="lgDialog.show">
<LoginComponent @succeedBack="handleLoginedBack" @needLoginInput="handleShowLogin"></LoginComponent>
</tpx-dialog>
</template>
<script>
import { USERKEY } from "@/store/actionKey"
import { getSessionLoginInfo, setSessionLoginInfo, setSessionXToken } from "@/session"
import { encrypt } from "@/common/libs/jsencrypt_utils"
import { promiseTimeout, showToast } from "@/common/untool"
// #ifdef MP
import LoginComponent from "@/components/buns-api/login/mp-login"
// #endif
// #ifndef MP
import LoginComponent from "@/components/buns-api/login/com-login"
// #endif
export default {
components: { LoginComponent },
data() {
return {
lgDialog: { show: false },
}
},
computed: {
},
created() {
// setSessionXToken() // 登录前先清除xtoke
},
methods: {
async handleLoginedBack() {
await promiseTimeout(300)
await this.$store.dispatch(USERKEY.GETUSERINFO)
showToast("登录成功")
this.reloadCurrentPage(this) // 刷新当前页面
},
handleShowLogin() {
this.lgDialog.show = true
}
}
}
</script>
<style scoped lang="scss">
.lgn-page {
background-color: #B12D29;
position: relative;
min-height: 100%;
background-size: 100% auto;
background-repeat: no-repeat;
}
.yunduo{
position: absolute;
bottom: 0rpx;
left: 0;
right: 0;
}
.avatar-empty{
width: 100rpx;
height: 100rpx;
line-height: 100rpx;
background-color: #fff;
text-align: center;
border-radius: 10rpx;
font-size: 28rpx;
color: $uni-color-primary;
}
</style>

View File

@ -1,18 +1,6 @@
<template> <template>
<view class="lgn-page"> <tpx-layout>
<view class="pos-abt-all" style="z-index: 0;overflow: hidden;"> <template #body>
<tpx-image width="750" mode="widthFix" :src="getCdnUrl('login/bg.png')"></tpx-image>
<view class="yunduo">
<tpx-image width="750" mode="widthFix" :src="getCdnUrl('login/bg-yun.png')"></tpx-image>
</view>
</view>
<view class="pos-rlt" style="z-index: 1;">
<view>
<u-image custom-style="margin: 160rpx auto 0 auto;" width="140" height="140" :src="getCdnUrl('logo.png')"></u-image>
<u-text margin="70rpx 0 0 0" size="60" text="探路物流 速运全球" color="#fff" bold="true" align="center"></u-text>
</view>
<view style="margin-top: 90rpx;" class="pl-30 pr-30">
<u-row custom-style="margin-top: 30rpx;"> <u-row custom-style="margin-top: 30rpx;">
<u-input type="nickname" v-model="submitLogin.nickName" placeholder="昵称" <u-input type="nickname" v-model="submitLogin.nickName" placeholder="昵称"
color="#fff" font-size="30" placeholder-style="color: #FFF;" color="#fff" font-size="30" placeholder-style="color: #FFF;"
@ -41,14 +29,12 @@
</template> </template>
</u-input> </u-input>
</u-row> </u-row>
</template>
<view style="margin-top: 70rpx;"> <template #footer>
<u-button v-if="!pageLoading" @click="handleConfirmLogin" custom-style="height:90rpx;font-size:32rpx;color: #B12D29;font-weight: bold;;box-shadow: 0rpx 12rpx 21rpx 0rpx rgba(177,45,41,0.32);border-radius: 16rpx;">登录</u-button> <u-button v-if="!pageLoading" @click="handleConfirmLogin" custom-style="height:66rpx;font-size:32rpx;border-radius: 16rpx;">登录</u-button>
</view> </template>
</tpx-layout>
</view>
</view>
</view>
</template> </template>
<script> <script>
@ -58,7 +44,7 @@
import * as apiService from "@/common/api" import * as apiService from "@/common/api"
import { getCommonReqData } from "@/common/manageServer" import { getCommonReqData } from "@/common/manageServer"
import { doRequest } from "@/common/upload" import { doRequest } from "@/common/upload"
import { getSessionUserInfo } from "@/session" import { getSessionUserInfo, getSessionXToken } from "@/session"
export default { export default {
data() { data() {
@ -76,6 +62,7 @@
phoneNumber: { required: true, requiredMsg: '手机号不能为空' }, phoneNumber: { required: true, requiredMsg: '手机号不能为空' },
}, },
token: '', token: '',
isLogined: !!getSessionXToken()
} }
}, },
computed: { computed: {
@ -97,6 +84,7 @@
} }
}, },
async initData(){ async initData(){
if(!this.isLogined) {
await this.autoLogin() await this.autoLogin()
if(this.token) { if(this.token) {
// 如果用户信息已绑定,直接触发登录成功 // 如果用户信息已绑定,直接触发登录成功
@ -107,11 +95,14 @@
avatarUrl: userInfo.avatar, avatarUrl: userInfo.avatar,
phoneNumber: userInfo.phonenumber, phoneNumber: userInfo.phonenumber,
}) })
// let seInfo = getSessionUserInfo() try{
// // 手动退出的场景,不做自动登录
// if(!seInfo.logout){}
await checkParams(this.submitLogin, this.submitValidConfig, false) await checkParams(this.submitLogin, this.submitValidConfig, false)
this.loginSucceed() this.loginSucceed()
}catch(err){
this.$emit("needLoginInput")
console.error("auto login checkParams err=====", err)
}
}
} }
}, },
async onChooseAvatar(res) { async onChooseAvatar(res) {
@ -158,11 +149,8 @@
<style scoped lang="scss"> <style scoped lang="scss">
.lgn-page { .lgn-page {
background-color: #B12D29;
position: relative; position: relative;
min-height: 100%; min-height: 100%;
background-size: 100% auto;
background-repeat: no-repeat;
} }
.yunduo{ .yunduo{
position: absolute; position: absolute;

View File

@ -33,7 +33,7 @@
<view class="edm-input-item"> <view class="edm-input-item">
<u-row justify="between" align="top"> <u-row justify="between" align="top">
<text class="font-28 pt-20 font-weight">总体积</text> <text class="font-28 pt-20 font-weight">总体积</text>
<view v-if="totalVolume || true"> <view>
<tpx-input v-model:value="modelInfo.totalVolume" placeholder="" inputAlign="right" suffix="m³" _digit="5"></tpx-input> <tpx-input v-model:value="modelInfo.totalVolume" placeholder="" inputAlign="right" suffix="m³" _digit="5"></tpx-input>
</view> </view>
</u-row> </u-row>

View File

@ -50,8 +50,9 @@
// 取消选中 // 取消选中
remark = remark.replace(val, "") remark = remark.replace(val, "")
} else { } else {
remark += `${val}` remark += `,${val}`
} }
remark = remark.split(",").filter(v=> !!v).join(",") // 去除多余,
this.modelInfo.remark = remark this.modelInfo.remark = remark
}, 300) }, 300)
}, },

View File

@ -2,11 +2,15 @@
<view @click="handleClick" style="height: 100%;"> <view @click="handleClick" style="height: 100%;">
<slot></slot> <slot></slot>
</view> </view>
<LoginComponent ref="loginRef"></LoginComponent>
</template> </template>
<script> <script>
import { pageEventNames } from "@/common/enum" import { pageEventNames } from "@/common/enum"
import LoginComponent from "@/components/buns-api/login/index"
export default { export default {
components: { LoginComponent },
props: { props: {
}, },

View File

@ -82,7 +82,7 @@
<tpx-select v-model:value="submitParam.paymentType" :list="dicData.emis_payment_type" <tpx-select v-model:value="submitParam.paymentType" :list="dicData.emis_payment_type"
mode="drop" mode="drop"
> >
<tpx-text-item label="付款方式" :value="submitParam.paymentType" :list="dicData.emis_payment_type"></tpx-text-item> <tpx-text-item :required="true" label="付款方式" :value="submitParam.paymentType" :list="dicData.emis_payment_type"></tpx-text-item>
</tpx-select> </tpx-select>
</view> </view>
<template v-if="isShowYueJie"> <template v-if="isShowYueJie">
@ -368,6 +368,7 @@
if(this.isEdit) { } if(this.isEdit) { }
let params = JSON.parse(JSON.stringify(this.submitParam)); let params = JSON.parse(JSON.stringify(this.submitParam));
params.goodsPics = params.goodsPics.join(",") params.goodsPics = params.goodsPics.join(",")
params.totalVolume = params.totalVolume || 0
await saveServerHand(params) await saveServerHand(params)
await this.saveSuccessBack() await this.saveSuccessBack()
}, },

View File

@ -64,6 +64,7 @@
import { dealBtnMap } from "@/common/enum" import { dealBtnMap } from "@/common/enum"
import { USERKEY } from "@/store/actionKey" import { USERKEY } from "@/store/actionKey"
import * as apiService from "@/common/api" import * as apiService from "@/common/api"
import { goLogin } from "@/common/loginHandle"
export default { export default {
computed: { computed: {
@ -118,7 +119,7 @@
}, },
async handleUnlogin() { async handleUnlogin() {
await this.$store.dispatch(USERKEY.LOGOUT) await this.$store.dispatch(USERKEY.LOGOUT)
this.goto(`login/login?isConfirmLogin=true`, 2) goLogin()
}, },
} }
} }

View File

@ -7,6 +7,7 @@ import {
} from "@/session" } from "@/session"
import * as apiService from "@/common/api" import * as apiService from "@/common/api"
import { goto } from "@/common/untool" import { goto } from "@/common/untool"
import { goLogin } from "@/common/loginHandle"
export default { export default {
state: { state: {
@ -75,9 +76,8 @@ export default {
}, options) { }, options) {
if(!state.token) { if(!state.token) {
console.log('缺少token') console.log('缺少token')
// TODO
setTimeout(()=> { setTimeout(()=> {
goto("login/login", 2) goLogin()
}, 200) }, 200)
return return
} }