c293da23
刘淇
新园林init
|
1
|
<template>
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
2
|
<view class="page-container">
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
3
|
<!-- 顶部标题区 -->
|
8ddc6f6e
刘淇
登录 修改样式
|
4
|
<view class="top-title">
|
e2e5221c
刘淇
验证码登录
|
5
6
|
<text class="welcome-text">你好,欢迎登录</text>
<text class="platform-name">蓟城山水全域智能运营管理平台</text>
|
8ddc6f6e
刘淇
登录 修改样式
|
7
|
</view>
|
37c26bd3
刘淇
巡查计划
|
8
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
9
|
<!-- 登录表单区域 -->
|
c293da23
刘淇
新园林init
|
10
|
<view class="login-form">
|
e2e5221c
刘淇
验证码登录
|
11
|
<!-- 登录方式切换 -->
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
12
13
|
<up-tabs
:list="tabList"
|
578c1373
刘淇
样式优化
|
14
15
|
line-width="55"
line-height="2"
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
16
|
@change="handleTabChange"
|
e2e5221c
刘淇
验证码登录
|
17
18
|
:activeStyle="{ color: '#3c9cff', fontWeight:'500', fontSize: '14px' }"
:inactiveStyle="{ color: '#606060', fontSize: '14px' }"
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
19
|
></up-tabs>
|
37c26bd3
刘淇
巡查计划
|
20
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
21
|
<!-- 表单校验容器 -->
|
8ddc6f6e
刘淇
登录 修改样式
|
22
23
24
25
26
27
|
<up-form
label-position="left"
:model="form"
ref="loginFormRef"
labelWidth="0"
>
|
e2e5221c
刘淇
验证码登录
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<!-- ========== 手机号登录区域 ========== -->
<view v-if="loginType === '手机号登录'">
<!-- 手机号输入框 -->
<up-form-item prop="mobile">
<up-input
v-model="form.mobile"
border="surround"
maxlength="11"
input-align="left"
fontSize="14px"
:disabled="isLoading"
shape="circle"
placeholder="请输入手机号"
@blur="() => loginFormRef.validateField('mobile')"
/>
</up-form-item>
<!-- 验证码输入框 + 自定义倒计时按钮 -->
<up-form-item prop="code">
<up-input
v-model="form.code"
border="surround"
maxlength="4"
type="number"
input-align="left"
fontSize="14px"
:disabled="isLoading"
shape="circle"
placeholder="请输入验证码"
@blur="() => loginFormRef.validateField('code')"
>
<template #suffix>
<up-button
size="mini"
type="primary"
:disabled="isCodeBtnDisabled"
:loading="isCodeLoading"
@tap="getVerificationCode"
shape="circle"
>
{{ countdown > 0 ? `${countdown}秒后重新获取` : '获取验证码' }}
</up-button>
</template>
</up-input>
</up-form-item>
</view>
<!-- ========== 账号登录区域 ========== -->
<view v-else>
<!-- 账号输入框 -->
<up-form-item prop="account">
<up-input
v-model="form.account"
border="surround"
maxlength="30"
input-align="left"
fontSize="14px"
:disabled="isLoading"
shape="circle"
placeholder="请输入账户"
@blur="() => loginFormRef.validateField('account')"
/>
</up-form-item>
<!-- 密码输入框 -->
<up-form-item prop="password" class="password-item">
<up-input
v-model="form.password"
placeholder="请输入密码"
maxlength="20"
border="surround"
input-align="left"
type="password"
:disabled="isLoading"
shape="circle"
@blur="() => loginFormRef.validateField('password')"
/>
</up-form-item>
<!-- 记住密码 -->
<view class="remember-wrap">
<up-checkbox
:customStyle="{marginBottom: '8px'}"
label="记住密码"
name="agree"
size="14"
iconSize="14"
labelSize="14"
labelColor="#3F3F3F"
usedAlone
v-model:checked="rememberPwd"
>
</up-checkbox>
</view>
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
122
|
</view>
|
8ddc6f6e
刘淇
登录 修改样式
|
123
|
</up-form>
|
c293da23
刘淇
新园林init
|
124
125
126
127
128
129
130
131
|
<!-- 登录按钮 -->
<up-button
class="login-btn"
type="primary"
size="large"
:loading="isLoading"
@click="handleLogin"
|
8ddc6f6e
刘淇
登录 修改样式
|
132
|
shape="circle"
|
c293da23
刘淇
新园林init
|
133
134
135
136
|
>
登录
</up-button>
</view>
|
8ddc6f6e
刘淇
登录 修改样式
|
137
138
139
|
<!-- 版权信息 -->
<view class="copyright">蓟城山水集团版权所有</view>
|
c293da23
刘淇
新园林init
|
140
141
142
143
|
</view>
</template>
<script setup>
|
e2e5221c
刘淇
验证码登录
|
144
145
|
import { ref, reactive, onMounted, nextTick, computed, onUnmounted} from 'vue';
import {onShow} from '@dcloudio/uni-app'
|
c293da23
刘淇
新园林init
|
146
147
|
import { useUserStore } from '@/pinia/user';
import globalConfig from '@/common/config/global';
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
148
|
import CryptoJS from 'crypto-js';
|
e2e5221c
刘淇
验证码登录
|
149
|
import { getSmsCode } from "@/api/user";
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
150
|
|
5b5a4862
刘淇
按钮放大
|
151
|
// ========== 加密工具函数 ==========
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
152
|
const CRYPTO_CONFIG = {
|
5b5a4862
刘淇
按钮放大
|
153
|
key: CryptoJS.enc.Utf8.parse('jcsscrypto123abc'), // 16位key
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
154
155
156
157
|
iv: CryptoJS.enc.Utf8.parse('abc123jcsscrypto'), // 16位iv
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
};
|
c293da23
刘淇
新园林init
|
158
|
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
const aesEncrypt = (text) => {
if (!text) return '';
try {
return CryptoJS.AES.encrypt(text, CRYPTO_CONFIG.key, {
iv: CRYPTO_CONFIG.iv,
mode: CRYPTO_CONFIG.mode,
padding: CRYPTO_CONFIG.padding
}).toString();
} catch (err) {
console.error('AES加密失败:', err);
return '';
}
};
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
const aesDecrypt = (encryptedText) => {
if (!encryptedText) return '';
try {
const decryptObj = CryptoJS.AES.decrypt(encryptedText, CRYPTO_CONFIG.key, {
iv: CRYPTO_CONFIG.iv,
mode: CRYPTO_CONFIG.mode,
padding: CRYPTO_CONFIG.padding
});
return decryptObj.toString(CryptoJS.enc.Utf8);
} catch (err) {
console.error('AES解密失败:', err);
return '';
}
};
|
e2e5221c
刘淇
验证码登录
|
188
|
// ========== 核心业务逻辑 ==========
|
8ddc6f6e
刘淇
登录 修改样式
|
189
|
const userStore = useUserStore();
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
190
191
|
const loginFormRef = ref(null);
const isLoading = ref(false);
|
e2e5221c
刘淇
验证码登录
|
192
|
const isCodeLoading = ref(false); // 验证码按钮独立loading状态
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
193
|
|
e2e5221c
刘淇
验证码登录
|
194
195
|
// 登录方式切换
const tabList = ref([{ name: '手机号登录' }, { name: '账号登录' }]);
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
196
|
const loginType = ref('手机号登录');
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
197
|
|
e2e5221c
刘淇
验证码登录
|
198
|
// 记住密码(仅账号登录生效)
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
199
|
const rememberPwd = ref(true);
|
8ddc6f6e
刘淇
登录 修改样式
|
200
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
201
|
// 表单数据
|
c293da23
刘淇
新园林init
|
202
|
const form = reactive({
|
5b5a4862
刘淇
按钮放大
|
203
204
|
account: '', // 账号
mobile: '', // 手机号
|
e2e5221c
刘淇
验证码登录
|
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
|
password: '', // 密码
code: '' // 验证码
});
// 验证码倒计时相关
const countdown = ref(0);
let countdownTimer = null; // 倒计时定时器
// 临时缓存KEY
const TEMP_FORM_KEY = 'login_temp_form_data';
// ========== 方案二核心:保存/恢复表单数据 ==========
// 保存表单数据到本地缓存
const saveFormData = () => {
try {
const tempData = {
form: { ...form },
loginType: loginType.value,
countdown: countdown.value,
rememberPwd: rememberPwd.value
};
// 加密存储,提升安全性
const encryptData = aesEncrypt(JSON.stringify(tempData));
uni.setStorageSync(TEMP_FORM_KEY, encryptData);
} catch (err) {
console.warn('保存表单数据失败:', err);
}
};
// 从本地缓存恢复表单数据
const restoreFormData = () => {
try {
const encryptData = uni.getStorageSync(TEMP_FORM_KEY);
if (!encryptData) return;
const tempData = JSON.parse(aesDecrypt(encryptData));
// 恢复表单数据
if (tempData.form) {
Object.assign(form, tempData.form);
}
// 恢复登录类型
// if (tempData.loginType) {
// loginType.value = tempData.loginType;
// }
// 恢复记住密码状态
if (tempData.rememberPwd !== undefined) {
rememberPwd.value = tempData.rememberPwd;
}
// 恢复倒计时
if (tempData.countdown && tempData.countdown > 0) {
countdown.value = tempData.countdown;
// 重启倒计时定时器
startCountdown(countdown.value);
}
// 恢复记住密码的缓存数据(原有逻辑)
if (rememberPwd.value && loginType.value === '账号登录') {
const savedAccount = aesDecrypt(uni.getStorageSync('login_account') || '');
const savedPwd = aesDecrypt(uni.getStorageSync('login_password') || '');
if (savedAccount) {
form.account = savedAccount;
form.password = savedPwd;
}
}
} catch (err) {
console.warn('恢复表单数据失败:', err);
}
};
// 校验手机号格式
const isMobileValid = computed(() => {
const mobileReg = /^1[3-9]\d{9}$/;
return mobileReg.test(form.mobile);
});
// 统一计算验证码按钮禁用状态
const isCodeBtnDisabled = computed(() => {
return countdown.value > 0 || isLoading.value || isCodeLoading.value || !isMobileValid.value;
|
c293da23
刘淇
新园林init
|
283
284
|
});
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
285
|
// 表单校验规则
|
8ddc6f6e
刘淇
登录 修改样式
|
286
|
const loginFormRules = reactive({
|
8ddc6f6e
刘淇
登录 修改样式
|
287
288
289
290
|
account: [
{ type: 'string', required: true, message: '请输入登录账号', trigger: ['change', 'blur'] },
{ type: 'string', min: 2, max: 30, message: '账号长度为2-30个字符', trigger: ['change', 'blur'] }
],
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
291
292
293
294
|
mobile: [
{ type: 'string', required: true, message: '请输入手机号', trigger: ['change', 'blur'] },
{ type: 'string', pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号格式', trigger: ['change', 'blur'] }
],
|
8ddc6f6e
刘淇
登录 修改样式
|
295
296
|
password: [
{ type: 'string', required: true, message: '请输入登录密码', trigger: ['change', 'blur'] },
|
12e66ec8
刘淇
新增树
|
297
|
{ type: 'string', min: 3, max: 20, message: '密码长度为3-20个字符', trigger: ['change', 'blur'] }
|
e2e5221c
刘淇
验证码登录
|
298
299
300
301
|
],
code: [
{ type: 'string', required: true, message: '请输入验证码', trigger: ['change', 'blur'] },
{ type: 'string', len: 4, message: '验证码长度4位', trigger: ['change', 'blur'] }
|
8ddc6f6e
刘淇
登录 修改样式
|
302
|
]
|
c293da23
刘淇
新园林init
|
303
304
|
});
|
e2e5221c
刘淇
验证码登录
|
305
|
// 切换登录方式
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
306
|
const handleTabChange = ({ name }) => {
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
307
|
if (isLoading.value) return;
|
e2e5221c
刘淇
验证码登录
|
308
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
309
|
loginType.value = name;
|
e2e5221c
刘淇
验证码登录
|
310
|
// 清空校验状态和无关输入框
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
311
312
313
314
315
|
nextTick(() => {
loginFormRef.value?.clearValidate();
});
};
|
e2e5221c
刘淇
验证码登录
|
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
// 开始验证码倒计时
const startCountdown = (seconds = 60) => {
countdown.value = seconds;
// 清除已有定时器,避免重复
if (countdownTimer) clearInterval(countdownTimer);
countdownTimer = setInterval(() => {
if (countdown.value <= 0) {
clearCountdown();
return;
}
countdown.value--;
}, 1000);
};
// 清除倒计时
const clearCountdown = () => {
countdown.value = 0;
if (countdownTimer) {
clearInterval(countdownTimer);
countdownTimer = null;
}
};
// 获取验证码
const getVerificationCode = async () => {
// 双重校验:按钮禁用状态
if (isCodeBtnDisabled.value) {
console.warn('验证码按钮已禁用,不执行请求');
return;
}
try {
isCodeLoading.value = true; // 按钮进入loading
uni.showLoading({ title: '发送验证码中...', mask: true }); // 遮罩防止重复点击
const postData = {
mobile: form.mobile,
scene: 21
};
// 调用验证码接口
const res = await getSmsCode(postData);
uni.hideLoading();
uni.$u.toast('验证码已发送,请注意查收');
startCountdown(); // 仅接口成功时开始倒计时
} catch (err) {
// 捕获接口异常
uni.hideLoading();
console.error('获取验证码失败:', err);
uni.$u.toast(err.msg || '发送验证码失败,请重试');
} finally {
isCodeLoading.value = false; // 结束loading状态
}
};
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
373
|
// 检查登录状态
|
37c26bd3
刘淇
巡查计划
|
374
|
const checkLoginStatus = () => {
|
c293da23
刘淇
新园林init
|
375
|
try {
|
c293da23
刘淇
新园林init
|
376
377
|
if (userStore.isLogin) {
uni.switchTab({
|
e6a04285
刘淇
单图情况 宽高70*70
|
378
|
url: '/pages/workbench/index',
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
379
|
fail: () => uni.reLaunch({ url: '/pages/workbench/index' })
|
c293da23
刘淇
新园林init
|
380
|
});
|
c293da23
刘淇
新园林init
|
381
382
|
}
} catch (err) {
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
383
|
console.warn('检查登录状态失败:', err);
|
c293da23
刘淇
新园林init
|
384
|
}
|
37c26bd3
刘淇
巡查计划
|
385
|
};
|
c293da23
刘淇
新园林init
|
386
|
|
e2e5221c
刘淇
验证码登录
|
387
|
// 登录处理
|
c293da23
刘淇
新园林init
|
388
|
const handleLogin = async () => {
|
c293da23
刘淇
新园林init
|
389
|
try {
|
e2e5221c
刘淇
验证码登录
|
390
391
392
393
394
395
396
397
398
399
400
|
// 根据登录类型校验对应字段
const validateFields = loginType.value === '手机号登录'
? ['mobile', 'code']
: ['account', 'password'];
// 执行表单校验
const validateRes = await loginFormRef.value.validate(validateFields);
if (!validateRes) {
return;
}
|
8ddc6f6e
刘淇
登录 修改样式
|
401
|
isLoading.value = true;
|
c293da23
刘淇
新园林init
|
402
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
403
|
// 组装登录参数
|
e2e5221c
刘淇
验证码登录
|
404
|
const loginParams = {};
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
405
|
if (loginType.value === '手机号登录') {
|
e2e5221c
刘淇
验证码登录
|
406
407
408
|
loginParams.mobile = form.mobile;
loginParams.code = form.code;
loginParams.type = 'sms';
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
409
410
|
} else {
loginParams.username = form.account;
|
e2e5221c
刘淇
验证码登录
|
411
412
|
loginParams.password = form.password;
loginParams.type = 'password';
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
413
414
415
416
|
}
// 执行登录
await userStore.login(loginParams);
|
c293da23
刘淇
新园林init
|
417
|
|
e2e5221c
刘淇
验证码登录
|
418
419
|
// 保存登录信息(仅账号登录且勾选记住密码)
if (loginType.value === '账号登录' && rememberPwd.value) {
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
420
|
try {
|
e2e5221c
刘淇
验证码登录
|
421
|
uni.setStorageSync('login_account', aesEncrypt(form.account));
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
422
|
uni.setStorageSync('login_password', aesEncrypt(form.password));
|
e2e5221c
刘淇
验证码登录
|
423
|
uni.removeStorageSync('login_mobile');
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
424
|
} catch (err) {
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
425
|
console.warn('保存登录信息失败:', err);
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
426
427
|
}
} else {
|
e2e5221c
刘淇
验证码登录
|
428
|
// 清除缓存
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
429
430
431
432
433
|
uni.removeStorageSync('login_account');
uni.removeStorageSync('login_mobile');
uni.removeStorageSync('login_password');
}
|
e2e5221c
刘淇
验证码登录
|
434
435
436
|
// 登录成功后清除临时表单缓存
uni.removeStorageSync(TEMP_FORM_KEY);
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
437
|
// 登录成功跳转
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
438
|
uni.showToast({ title: '登录成功', icon: 'success', duration: 1000 });
|
c293da23
刘淇
新园林init
|
439
|
setTimeout(() => {
|
c293da23
刘淇
新园林init
|
440
441
|
uni.switchTab({
url: globalConfig.router.tabBarList[1].path,
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
442
|
fail: () => uni.reLaunch({ url: '/pages/workbench/index' })
|
c293da23
刘淇
新园林init
|
443
|
});
|
e6a04285
刘淇
单图情况 宽高70*70
|
444
|
}, 1000);
|
c293da23
刘淇
新园林init
|
445
|
} catch (err) {
|
e2e5221c
刘淇
验证码登录
|
446
447
448
449
450
451
|
console.error('登录失败:', err);
uni.showToast({
title: err.msg || (loginType.value === '手机号登录' ? '验证码错误' : '账号或密码错误'),
icon: 'none',
duration: 1000
});
|
c293da23
刘淇
新园林init
|
452
453
454
455
|
} finally {
isLoading.value = false;
}
};
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
456
|
|
e2e5221c
刘淇
验证码登录
|
457
458
459
460
461
462
463
464
465
466
467
468
469
|
// ========== 小程序生命周期适配(方案二核心) ==========
// 页面显示时(切回页面)恢复数据
onShow(() => {
restoreFormData();
});
// 页面卸载时保存数据
onUnmounted(() => {
clearCountdown();
saveFormData();
});
// 页面挂载时初始化
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
470
471
|
onMounted(() => {
checkLoginStatus();
|
e2e5221c
刘淇
验证码登录
|
472
|
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
473
474
475
|
// 初始化表单规则
nextTick(() => {
loginFormRef.value?.setRules(loginFormRules);
|
e2e5221c
刘淇
验证码登录
|
476
477
|
// 首次挂载也恢复一次数据
restoreFormData();
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
478
|
});
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
479
|
});
|
c293da23
刘淇
新园林init
|
480
481
482
|
</script>
<style scoped lang="scss">
|
e2e5221c
刘淇
验证码登录
|
483
484
|
.page-container {
height: 100vh;
|
83673de2
刘淇
ai 大区经理 优化添加结束功能
|
485
486
487
488
|
background: url("https://img.jichengshanshui.com.cn:28207/appimg/loginbg.jpg") no-repeat;
background-position: bottom center;
background-size: 100% 240px;
}
|
e2e5221c
刘淇
验证码登录
|
489
|
|
8ddc6f6e
刘淇
登录 修改样式
|
490
|
.top-title {
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
491
492
|
background: url("https://img.jichengshanshui.com.cn:28207/appimg/bg.jpg") no-repeat;
background-size: 100% 100%;
|
8ddc6f6e
刘淇
登录 修改样式
|
493
|
color: #fff;
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
494
|
padding: 200rpx 0 200rpx 40rpx;
|
8ddc6f6e
刘淇
登录 修改样式
|
495
|
text-align: left;
|
8ddc6f6e
刘淇
登录 修改样式
|
496
497
|
position: relative;
z-index: 1;
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
498
|
|
8ddc6f6e
刘淇
登录 修改样式
|
499
|
.welcome-text {
|
578c1373
刘淇
样式优化
|
500
|
font-size: 20px;
|
8ddc6f6e
刘淇
登录 修改样式
|
501
502
|
display: block;
margin-bottom: 10px;
|
37c26bd3
刘淇
巡查计划
|
503
504
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
505
506
|
.platform-name {
margin-bottom: 10px;
|
578c1373
刘淇
样式优化
|
507
|
font-size: 20px;
|
8ddc6f6e
刘淇
登录 修改样式
|
508
|
display: block;
|
37c26bd3
刘淇
巡查计划
|
509
510
511
|
}
}
|
c293da23
刘淇
新园林init
|
512
|
.login-form {
|
8ddc6f6e
刘淇
登录 修改样式
|
513
|
background-color: #fff;
|
12e66ec8
刘淇
新增树
|
514
515
516
517
|
padding: 20px 15px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
margin: -90px 20px 0;
|
37c26bd3
刘淇
巡查计划
|
518
519
|
position: relative;
z-index: 10;
|
8ddc6f6e
刘淇
登录 修改样式
|
520
|
box-sizing: border-box;
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
521
|
}
|
37c26bd3
刘淇
巡查计划
|
522
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
523
524
|
:deep(.u-tabs) {
margin-bottom: 15px;
|
e2e5221c
刘淇
验证码登录
|
525
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
526
527
528
|
.u-tabs__content {
height: auto !important;
}
|
e2e5221c
刘淇
验证码登录
|
529
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
530
531
|
.u-tab-item {
padding: 0 10px;
|
37c26bd3
刘淇
巡查计划
|
532
|
}
|
c293da23
刘淇
新园林init
|
533
534
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
535
|
:deep(.u-form-item) {
|
12e66ec8
刘淇
新增树
|
536
|
margin-bottom: 10px;
|
c293da23
刘淇
新园林init
|
537
|
position: relative;
|
8ddc6f6e
刘淇
登录 修改样式
|
538
|
}
|
c293da23
刘淇
新园林init
|
539
|
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
540
541
542
543
544
|
.password-item {
position: relative;
margin-bottom: 5px !important;
}
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
545
|
.remember-wrap {
|
24c0bbe7
刘淇
登录账号密码 加密存储
|
546
|
padding: 0;
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
547
548
549
550
551
552
|
margin: 10px 0 20px;
:deep(.u-checkbox) {
font-size: 12px;
color: #666;
justify-content: flex-end;
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
553
554
555
556
557
558
559
560
|
margin-left: 0 !important;
.u-checkbox__label {
margin-left: 5px;
}
}
}
|
8ddc6f6e
刘淇
登录 修改样式
|
561
|
.login-btn {
|
cf70629b
刘淇
养护计划 照片 自己写样式
|
562
|
margin-top: 10px;
|
8ddc6f6e
刘淇
登录 修改样式
|
563
|
width: 100%;
|
12e66ec8
刘淇
新增树
|
564
565
566
|
height: 44px;
line-height: 44px;
border-radius: 4px;
|
578c1373
刘淇
样式优化
|
567
|
font-size: 18px;
|
12e66ec8
刘淇
新增树
|
568
569
570
|
background: #0A86F4;
box-shadow: 0px 4px 6px 1px rgba(25,94,215,0.5);
border-radius: 23px;
|
c293da23
刘淇
新园林init
|
571
572
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
573
574
575
|
.copyright {
width: 100%;
text-align: center;
|
12e66ec8
刘淇
新增树
|
576
|
font-size: 12px;
|
8ddc6f6e
刘淇
登录 修改样式
|
577
578
|
color: #999;
position: fixed;
|
83673de2
刘淇
ai 大区经理 优化添加结束功能
|
579
|
bottom: 60px;
|
8ddc6f6e
刘淇
登录 修改样式
|
580
|
}
|
e2e5221c
刘淇
验证码登录
|
581
582
583
584
585
586
587
588
589
590
591
|
// 验证码按钮样式优化
:deep(.u-input__suffix) {
padding-right: 10rpx;
}
:deep(.u-button--mini) {
height: 60rpx;
line-height: 60rpx;
padding: 0 15rpx;
}
|
c293da23
刘淇
新园林init
|
592
|
</style>
|