2024-09-09 07:35:17 +00:00
|
|
|
|
<template>
|
|
|
|
|
<view class="content">
|
2024-10-21 02:44:55 +00:00
|
|
|
|
<!-- <navBar> 登录 </navBar> -->
|
2024-09-09 07:35:17 +00:00
|
|
|
|
<view class="container-box">
|
|
|
|
|
<view class="title">
|
|
|
|
|
<span>登录</span>
|
2024-10-10 02:58:44 +00:00
|
|
|
|
<span style="color: #efc54e">仓库管理</span>
|
2024-09-09 07:35:17 +00:00
|
|
|
|
</view>
|
|
|
|
|
<view>使用你的手机号登录</view>
|
2024-09-14 03:31:59 +00:00
|
|
|
|
<view class="login">
|
2024-09-12 06:53:48 +00:00
|
|
|
|
<view class="login-input" v-if="!haveCode">
|
|
|
|
|
<up-input placeholder="请输入手机号" v-model="state.TelNum" clearable>
|
2024-09-09 07:35:17 +00:00
|
|
|
|
<template #prefix>
|
|
|
|
|
<up-text
|
|
|
|
|
text="手机号"
|
|
|
|
|
margin="0 3px 0 0"
|
|
|
|
|
color="#000000"
|
|
|
|
|
style="width: 100rpx"
|
|
|
|
|
></up-text>
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</view>
|
2024-09-12 06:53:48 +00:00
|
|
|
|
<span
|
2024-09-14 03:31:59 +00:00
|
|
|
|
style="text-align: right; color: #e3af1c"
|
|
|
|
|
@click="goToPassword"
|
|
|
|
|
v-if="isCode && !haveCode"
|
|
|
|
|
>密码登录</span
|
|
|
|
|
>
|
2024-09-12 06:53:48 +00:00
|
|
|
|
<view class="login-input" v-if="!isCode">
|
2024-09-14 03:31:59 +00:00
|
|
|
|
<up-input
|
|
|
|
|
placeholder="请输入密码"
|
|
|
|
|
:password="true"
|
|
|
|
|
v-model="state.Password"
|
|
|
|
|
>
|
2024-09-09 07:35:17 +00:00
|
|
|
|
<template #prefix>
|
|
|
|
|
<up-text
|
|
|
|
|
text="密码"
|
|
|
|
|
margin="0 3px 0 0"
|
|
|
|
|
color="#000000"
|
|
|
|
|
style="width: 100rpx"
|
|
|
|
|
></up-text>
|
|
|
|
|
</template>
|
|
|
|
|
</up-input>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2024-09-12 06:53:48 +00:00
|
|
|
|
<view v-if="haveCode">
|
2024-09-09 07:35:17 +00:00
|
|
|
|
<view class="code-box">
|
|
|
|
|
<span style="color: #888888">已发送验证码至 </span>
|
2024-09-14 03:31:59 +00:00
|
|
|
|
<span style="font-weight: bold">{{ state.TelNum }}</span>
|
2024-09-09 07:35:17 +00:00
|
|
|
|
</view>
|
2024-09-19 07:40:39 +00:00
|
|
|
|
<up-code-input v-model="state.code" :maxlength="6"></up-code-input>
|
2024-09-14 03:31:59 +00:00
|
|
|
|
<view
|
|
|
|
|
style="
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
"
|
|
|
|
|
>
|
2024-09-24 02:46:51 +00:00
|
|
|
|
<span style="text-align: left; color: #e3af1c" @click="obtainCode"
|
2024-09-14 03:31:59 +00:00
|
|
|
|
>重新发送</span
|
|
|
|
|
>
|
2024-09-11 06:57:03 +00:00
|
|
|
|
<span
|
2024-09-14 03:31:59 +00:00
|
|
|
|
style="text-align: right; color: #e3af1c"
|
|
|
|
|
@click.stop="goToPassword"
|
|
|
|
|
>密码登录</span
|
|
|
|
|
>
|
2024-09-11 06:57:03 +00:00
|
|
|
|
</view>
|
2024-09-09 07:35:17 +00:00
|
|
|
|
</view>
|
2024-10-09 07:57:35 +00:00
|
|
|
|
|
2024-09-14 03:31:59 +00:00
|
|
|
|
<text
|
2024-09-09 07:35:17 +00:00
|
|
|
|
style="text-align: right; color: #e3af1c; margin-top: 20rpx"
|
2024-09-14 03:31:59 +00:00
|
|
|
|
@click="toCode"
|
|
|
|
|
v-if="!isCode"
|
|
|
|
|
>验证码登录</text
|
2024-09-09 07:35:17 +00:00
|
|
|
|
>
|
|
|
|
|
<up-button
|
2024-09-14 03:31:59 +00:00
|
|
|
|
style="width: 626rpx; margin: auto; height: 96rpx; margin-top: 90rpx"
|
2024-09-09 07:35:17 +00:00
|
|
|
|
color="#EFC54E"
|
|
|
|
|
throttleTime="5"
|
|
|
|
|
:loading="loading"
|
2024-09-11 06:57:03 +00:00
|
|
|
|
@click="logining"
|
2024-09-14 03:31:59 +00:00
|
|
|
|
v-if="!isCode || haveCode"
|
2024-09-09 07:35:17 +00:00
|
|
|
|
>登录</up-button
|
|
|
|
|
>
|
2024-09-12 06:53:48 +00:00
|
|
|
|
<up-button
|
2024-10-08 07:34:23 +00:00
|
|
|
|
style="width: 626rpx; margin: auto; height: 96rpx; margin-top: 160rpx"
|
2024-09-12 06:53:48 +00:00
|
|
|
|
color="#EFC54E"
|
|
|
|
|
throttleTime="5"
|
|
|
|
|
:loading="loading"
|
|
|
|
|
@click="obtainCode"
|
2024-09-14 03:31:59 +00:00
|
|
|
|
v-if="isCode && !haveCode"
|
2024-09-12 06:53:48 +00:00
|
|
|
|
>获取验证码</up-button
|
|
|
|
|
>
|
2024-10-08 07:34:23 +00:00
|
|
|
|
<!-- <view >
|
2024-09-26 02:58:40 +00:00
|
|
|
|
<up-image src="../../static/icon.png" width="40px" height="40px" ></up-image>
|
2024-10-08 07:34:23 +00:00
|
|
|
|
</view> -->
|
2024-09-09 07:35:17 +00:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2024-09-14 03:31:59 +00:00
|
|
|
|
import { ref, reactive } from "vue";
|
2024-09-09 07:35:17 +00:00
|
|
|
|
import useToast from "@/hooks/toast/useToast.js";
|
2024-09-14 03:31:59 +00:00
|
|
|
|
import { onLoad } from "@dcloudio/uni-app";
|
2024-10-17 09:46:46 +00:00
|
|
|
|
import { userLogin, userSend, pbDetail, getRules } from "@/api/login.js";
|
2024-09-12 06:53:48 +00:00
|
|
|
|
const state = reactive({
|
2024-09-24 08:18:42 +00:00
|
|
|
|
TelNum: "",
|
2024-09-19 07:40:39 +00:00
|
|
|
|
Password: "",
|
2024-09-14 03:31:59 +00:00
|
|
|
|
id: "",
|
|
|
|
|
pid: "",
|
2024-10-09 07:57:35 +00:00
|
|
|
|
code: "",
|
2024-09-14 03:31:59 +00:00
|
|
|
|
});
|
2024-09-09 07:35:17 +00:00
|
|
|
|
const { showMessage } = useToast();
|
|
|
|
|
const loading = ref(false);
|
|
|
|
|
const isCode = ref(false);
|
2024-09-12 06:53:48 +00:00
|
|
|
|
const haveCode = ref(false);
|
2024-09-14 03:31:59 +00:00
|
|
|
|
onLoad((options) => {
|
2024-09-14 03:44:44 +00:00
|
|
|
|
if (options.id && options.pid) {
|
|
|
|
|
state.id = options.id;
|
|
|
|
|
state.pid = options.pid;
|
|
|
|
|
// 已经登录了
|
2024-10-22 08:25:34 +00:00
|
|
|
|
setTimeout(() => {
|
2024-10-22 11:30:24 +00:00
|
|
|
|
if (
|
|
|
|
|
window?.plus?.webview.getWebviewById("wv").tokenScan ||
|
|
|
|
|
uni.getStorageSync("store-token")
|
|
|
|
|
) {
|
2024-10-22 08:25:34 +00:00
|
|
|
|
paintingDetail();
|
|
|
|
|
getBtngetRules();
|
|
|
|
|
}
|
|
|
|
|
}, 200);
|
2024-09-14 03:31:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-10-17 09:46:46 +00:00
|
|
|
|
/*
|
2024-09-14 03:31:59 +00:00
|
|
|
|
1.先调用options的对应接口
|
|
|
|
|
2.判断是是否有没有登录
|
|
|
|
|
3如果登录了判断状态去相应页面
|
|
|
|
|
4.没有登录让他登录,然后根据状态判断去相应页面
|
2024-10-17 09:46:46 +00:00
|
|
|
|
|
2024-09-14 03:31:59 +00:00
|
|
|
|
**/
|
|
|
|
|
});
|
|
|
|
|
const paintingDetail = async () => {
|
|
|
|
|
loading.value = true;
|
|
|
|
|
const res = await pbDetail({
|
|
|
|
|
id: state.id,
|
|
|
|
|
pid: state.pid,
|
|
|
|
|
});
|
|
|
|
|
if (res.status === 0) {
|
2024-09-14 03:44:44 +00:00
|
|
|
|
state.boxRelBucketStatus = res.data.boxRelBucketStatus;
|
|
|
|
|
console.log("boxRelBucketStatus", state.boxRelBucketStatus);
|
|
|
|
|
if (res.data.pbStatus == 1) {
|
2024-10-24 06:36:27 +00:00
|
|
|
|
uni.redirectTo({
|
2024-09-14 03:44:44 +00:00
|
|
|
|
url: "/pages/index/index?id=" + state.id + "&pid=" + state.pid,
|
2024-09-14 03:31:59 +00:00
|
|
|
|
success: () => {
|
|
|
|
|
loading.value = false;
|
|
|
|
|
},
|
|
|
|
|
fail: () => {
|
|
|
|
|
loading.value = false;
|
|
|
|
|
showMessage({ type: "default", message: "跳转失败" });
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2024-10-09 07:57:35 +00:00
|
|
|
|
if (
|
|
|
|
|
res.data.boxRelBucketStatus == 3 &&
|
|
|
|
|
res.data.locateAddress == "公司内"
|
|
|
|
|
) {
|
2024-10-24 06:36:27 +00:00
|
|
|
|
uni.redirectTo({
|
2024-09-14 03:44:44 +00:00
|
|
|
|
url: "/pages/painting/index?id=" + state.id + "&pid=" + state.pid,
|
2024-09-14 03:31:59 +00:00
|
|
|
|
success: () => {
|
|
|
|
|
loading.value = false;
|
|
|
|
|
},
|
|
|
|
|
fail: () => {
|
|
|
|
|
loading.value = false;
|
|
|
|
|
showMessage({ type: "default", message: "跳转失败" });
|
|
|
|
|
},
|
|
|
|
|
});
|
2024-09-14 03:44:44 +00:00
|
|
|
|
} else {
|
2024-10-24 06:36:27 +00:00
|
|
|
|
uni.setStorageSync("data", res.data);
|
|
|
|
|
uni.redirectTo({
|
2024-09-14 03:44:44 +00:00
|
|
|
|
url:
|
2024-10-24 06:36:27 +00:00
|
|
|
|
"/pages/detail/index?id=" +
|
|
|
|
|
state.id +
|
|
|
|
|
"&pid=" +
|
|
|
|
|
state.pid +
|
|
|
|
|
"&boxRelBucketStatus=" +
|
|
|
|
|
state.boxRelBucketStatus,
|
2024-09-14 03:31:59 +00:00
|
|
|
|
success: () => {
|
|
|
|
|
loading.value = false;
|
|
|
|
|
},
|
|
|
|
|
fail: () => {
|
|
|
|
|
loading.value = false;
|
|
|
|
|
showMessage({ type: "default", message: "跳转失败" });
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2024-09-09 07:35:17 +00:00
|
|
|
|
// const show = () => {
|
|
|
|
|
// showMessage({ type: "default", message: "验证码已发送" });
|
|
|
|
|
// };
|
|
|
|
|
const toCode = () => {
|
|
|
|
|
isCode.value = true;
|
2024-10-17 09:46:46 +00:00
|
|
|
|
state.Password = "";
|
2024-09-09 07:35:17 +00:00
|
|
|
|
};
|
2024-09-19 07:40:39 +00:00
|
|
|
|
//获取验证码
|
2024-09-12 06:53:48 +00:00
|
|
|
|
const obtainCode = async () => {
|
2024-09-14 03:31:59 +00:00
|
|
|
|
console.log("获取验证码");
|
2024-09-12 06:53:48 +00:00
|
|
|
|
loading.value = true;
|
2024-09-14 03:31:59 +00:00
|
|
|
|
const res = await userSend({
|
|
|
|
|
TelNum: state.TelNum ?? "",
|
|
|
|
|
});
|
|
|
|
|
if (res.status === 0) {
|
|
|
|
|
haveCode.value = true;
|
|
|
|
|
showMessage({ type: "default", message: "验证码已发送" });
|
|
|
|
|
} else {
|
2024-10-09 07:57:35 +00:00
|
|
|
|
if (res.msg == "已经发送过,验证码尚可用") {
|
2024-09-19 07:40:39 +00:00
|
|
|
|
haveCode.value = true;
|
2024-10-09 07:57:35 +00:00
|
|
|
|
} else {
|
|
|
|
|
showMessage({ type: "error", message: res.msg });
|
|
|
|
|
}
|
2024-09-14 03:31:59 +00:00
|
|
|
|
}
|
|
|
|
|
loading.value = false;
|
2024-09-12 06:53:48 +00:00
|
|
|
|
};
|
2024-09-14 03:31:59 +00:00
|
|
|
|
const goToPassword = () => {
|
|
|
|
|
isCode.value = false;
|
2024-09-12 06:53:48 +00:00
|
|
|
|
haveCode.value = false;
|
2024-09-14 03:31:59 +00:00
|
|
|
|
};
|
2024-09-11 06:57:03 +00:00
|
|
|
|
|
|
|
|
|
// 登录方法
|
2024-09-12 06:53:48 +00:00
|
|
|
|
const logining = async () => {
|
2024-09-11 06:57:03 +00:00
|
|
|
|
loading.value = true;
|
2024-09-12 06:53:48 +00:00
|
|
|
|
const res = await userLogin({
|
2024-09-14 03:31:59 +00:00
|
|
|
|
TelNum: state.TelNum ?? "",
|
|
|
|
|
Password: state.Password ?? "",
|
2024-10-09 07:57:35 +00:00
|
|
|
|
code: state.code ?? "",
|
2024-09-12 06:53:48 +00:00
|
|
|
|
});
|
2024-09-14 03:31:59 +00:00
|
|
|
|
if (res.status === 0) {
|
2024-10-21 07:11:52 +00:00
|
|
|
|
uni.setStorageSync("store-token", res.data.Token);
|
2024-09-14 03:31:59 +00:00
|
|
|
|
uni.setStorageSync("userInfo", res.data.AccountInfo);
|
2024-09-14 03:44:44 +00:00
|
|
|
|
await paintingDetail();
|
2024-10-17 09:46:46 +00:00
|
|
|
|
await getBtngetRules();
|
2024-09-14 03:31:59 +00:00
|
|
|
|
}
|
2024-10-08 05:32:08 +00:00
|
|
|
|
loading.value = false;
|
2024-09-11 06:57:03 +00:00
|
|
|
|
};
|
2024-10-17 09:46:46 +00:00
|
|
|
|
const getBtngetRules = async () => {
|
2024-10-18 02:19:37 +00:00
|
|
|
|
const res = await getRules({});
|
2024-10-17 09:46:46 +00:00
|
|
|
|
if (res.status === 0) {
|
2024-10-18 02:19:37 +00:00
|
|
|
|
const ruleBtn = res.data.MyButtonAuths?.map((button) => button.Url) || [];
|
2024-10-17 09:46:46 +00:00
|
|
|
|
uni.setStorageSync("ruleBtn", ruleBtn);
|
|
|
|
|
} else {
|
|
|
|
|
showMessage({ type: "error", message: res.msg });
|
|
|
|
|
}
|
|
|
|
|
};
|
2024-09-09 07:35:17 +00:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
page {
|
|
|
|
|
background: url("@/static/bg.png") no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
background-attachment: fixed;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
}
|
|
|
|
|
:deep(.u-code-input) {
|
|
|
|
|
margin-top: 10rpx;
|
|
|
|
|
gap: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
.content {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
height: 100%;
|
|
|
|
|
.container-box {
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
padding: 62rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
.title {
|
|
|
|
|
margin-top: 124rpx;
|
|
|
|
|
font-size: 64rpx;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
}
|
|
|
|
|
.login {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
margin-top: 140rpx;
|
|
|
|
|
gap: 20rpx;
|
|
|
|
|
.login-input {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
background-color: #f9f9f9;
|
|
|
|
|
padding: 32rpx 24rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
height: 96rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-22 02:40:32 +00:00
|
|
|
|
uni-button:after {
|
|
|
|
|
border: none;
|
|
|
|
|
}
|
2024-09-09 07:35:17 +00:00
|
|
|
|
</style>
|