diff --git a/src/App.vue b/src/App.vue
index 569a43c..e09f6e8 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -32,4 +32,14 @@
\ No newline at end of file
diff --git a/src/pages/login.vue b/src/pages/login.vue
index 8b9f1c1..3f39825 100644
--- a/src/pages/login.vue
+++ b/src/pages/login.vue
@@ -19,23 +19,31 @@
-
+
-
+
+
+ 记住密码
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+ 已阅读并同意
+ 《用户协议》
+ 和
+ 《隐私协议》
+
+
@@ -43,15 +51,15 @@
登录
+
+
+ 立即注册
+
-
@@ -66,12 +74,19 @@ import { getWxCode } from '@/utils/geek';
import { wxLogin } from '@/api/oauth';
import { setToken } from '@/utils/auth';
import { encrypt, decrypt } from '@/utils/jsencrypt'
+
+let isH5 = false
+// #ifdef H5
+isH5 = true
+// #endif
+
const userStore = useUserStore()
const codeUrl = ref("");
const captchaEnabled = ref(true); // 是否开启验证码
const useWxLogin = ref(false); // 是否使用微信登录
const globalConfig = ref(config);
const rememberMe = ref(false);
+const agree = ref(true);
const loginForm = ref({
username: "",
password: "",
@@ -92,6 +107,9 @@ if (useWxLogin.value) {
}
// 页面加载时检查是否记住了密码
onMounted(() => {
+ if (!isH5) {
+ return
+ }
const username = localStorage.getItem('username');
const password = localStorage.getItem('password');
@@ -123,6 +141,8 @@ async function handleLogin() {
modal.msgError("请输入您的账号")
} else if (loginForm.value.password === "") {
modal.msgError("请输入您的密码")
+ } else if (!agree.value) {
+ modal.msgError("请先阅读并同意用户协议和隐私协议")
} else {
modal.loading("登录中,请等待...")
pwdLogin()
@@ -141,7 +161,9 @@ async function pwdLogin() {
})
};
function loginSuccess(result) {
- if (rememberMe.value) {
+ if (!isH5) {
+ rememberMe.value = false
+ } else if (rememberMe.value) {
localStorage.setItem('username', loginForm.value.username);
localStorage.setItem('password', encrypt(loginForm.value.password));
} else {
@@ -161,6 +183,16 @@ function rememberMeChange(){
rememberMe.value = !rememberMe.value;
}
+
+function agreeChange() {
+ agree.value = !agree.value
+}
+
+function handlePrivacy() {
+ uni.navigateTo({
+ url: '/pages/common/privacy/index'
+ })
+}
// 官方网址
function handleWebsite() {
let site = globalConfig.value.appInfo.site_url;
@@ -219,9 +251,9 @@ page {
width: 140rpx;
height: 140rpx;
border-radius: 28rpx;
- box-shadow: 0 16rpx 48rpx rgba(0, 0, 0, 0.2);
+ box-shadow: 0 15rpx 28rpx rgba(0, 0, 0, 0.2);
background: #ffffff;
- padding: 20rpx;
+ padding: 0rpx;
}
}
@@ -285,13 +317,100 @@ page {
color: #c0c4cc;
}
}
+
+ .pwd-remember {
+ display: flex;
+ align-items: center;
+ margin-left: 16rpx;
+ flex-shrink: 0;
+ padding: 6rpx 4rpx;
+
+ .pwd-remember-text {
+ font-size: 22rpx;
+ color: #909399;
+ margin-right: 10rpx;
+ line-height: 1;
+ }
+
+ .mini-switch {
+ width: 56rpx;
+ height: 30rpx;
+ border-radius: 15rpx;
+ background: #dcdfe6;
+ position: relative;
+ transition: background 0.25s ease;
+
+ &.on {
+ background: #667eea;
+ }
+
+ .mini-switch-dot {
+ position: absolute;
+ top: 3rpx;
+ left: 3rpx;
+ width: 24rpx;
+ height: 24rpx;
+ border-radius: 50%;
+ background: #ffffff;
+ transition: transform 0.25s ease;
+ box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.15);
+ }
+
+ &.on .mini-switch-dot {
+ transform: translateX(26rpx);
+ }
+ }
+ }
}
- .remember-section {
- margin-bottom: 40rpx;
- padding-left: 8rpx;
+ .agreement-box {
+ margin-bottom: 32rpx;
+ margin-top: 24rpx;
+ padding-left: 8rpx;
+
+ .agreement-line {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
}
+ .agreement-row {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ line-height: 1.6;
+
+ .checkbox-small {
+ width: 28rpx;
+ height: 28rpx;
+ border: 2rpx solid #dcdfe6;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 10rpx;
+ flex-shrink: 0;
+
+ &.checked {
+ background: #667eea;
+ border-color: #667eea;
+ }
+ }
+
+ .agreement-text {
+ font-size: 24rpx;
+ color: #606266;
+ line-height: 1.6;
+ }
+
+ .link-text {
+ font-size: 24rpx;
+ color: #667eea;
+ line-height: 1.6;
+ }
+ }
+ }
+
.action-btn {
margin-top: 48rpx;
@@ -323,31 +442,38 @@ page {
}
}
}
- }
- .footer-links {
- text-align: center;
- padding: 60rpx 0 80rpx;
- position: relative;
- z-index: 1;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 16rpx;
-
- .link-item {
- color: rgba(255, 255, 255, 0.9);
- font-size: 26rpx;
- transition: all 0.3s ease;
-
+ .register-btn {
+ width: 100%;
+ height: 88rpx;
+ background: transparent;
+ border: 2rpx solid #667eea;
+ border-radius: 44rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-top: 24rpx;
+
+ text {
+ font-size: 32rpx;
+ color: #667eea;
+ font-weight: 500;
+ }
+
&:active {
- opacity: 0.7;
+ opacity: 0.8;
+ background: rgba(102, 126, 234, 0.05);
}
}
-
- .separator {
- color: rgba(255, 255, 255, 0.5);
- font-size: 26rpx;
+ }
+
+ .copyright {
+ text-align: center;
+ padding: 40rpx 0 60rpx;
+
+ text {
+ font-size: 22rpx;
+ color: rgba(255, 255, 255, 0.7);
}
}
}
diff --git a/src/pages/register.vue b/src/pages/register.vue
index 058dcea..733570d 100644
--- a/src/pages/register.vue
+++ b/src/pages/register.vue
@@ -123,15 +123,14 @@
methods: {
handleRegister() {
this.$refs.form.validate().then(res => {
- register(this.user)
- .then((res) => {
- uni.showToast({
- title: '注册成功,请登录',
- icon: 'success',
- duration: 2000
-});
-uni.navigateTo({ url: `/pages/login` })
- })
+ register(this.user).then(() => {
+ uni.showToast({
+ title: '注册成功,请登录',
+ icon: 'success',
+ duration: 2000
+ })
+ uni.redirectTo({ url: '/pages/login' })
+ })
})
}
diff --git a/src/pages/work/accounts/accountDealRecord/list.vue b/src/pages/work/accounts/accountDealRecord/list.vue
index 9ca9f72..06fa648 100644
--- a/src/pages/work/accounts/accountDealRecord/list.vue
+++ b/src/pages/work/accounts/accountDealRecord/list.vue
@@ -114,8 +114,12 @@
地点
{{ item.locationAddress || item.locationName }}
+
-