Browse Source

借阅宝办证

master
xuhuajiao 4 weeks ago
parent
commit
62214cdf9a
  1. 16
      pages.json
  2. 515
      pages/register/register-form.vue
  3. 490
      pages/register/register.vue
  4. 8
      pages/user/user.vue
  5. BIN
      static/register/1.jpg
  6. BIN
      static/register/2.jpg
  7. BIN
      static/register/3.jpg
  8. BIN
      static/register/4.jpg
  9. BIN
      static/register/5.jpg
  10. BIN
      static/register/6.jpg
  11. BIN
      static/register/7.jpg
  12. 0
      subpkg/pages/seat-record/seat-record.vue

16
pages.json

@ -106,6 +106,13 @@
"navigationBarTitleText": "活动详情" "navigationBarTitleText": "活动详情"
} }
}, },
{
"path": "pages/activity-record/activity-record",
"style": {
"navigationBarTitleText": "活动预约记录",
"enablePullDownRefresh": true
}
},
{ {
"path": "pages/myLending/myLending", "path": "pages/myLending/myLending",
"style": { "style": {
@ -159,19 +166,12 @@
} }
}, },
{ {
"path": "pages/booking-record/booking-record",
"path": "pages/seat-record/seat-record",
"style": { "style": {
"navigationBarTitleText": "预约入馆记录", "navigationBarTitleText": "预约入馆记录",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
{
"path": "pages/activity-record/activity-record",
"style": {
"navigationBarTitleText": "活动预约记录",
"enablePullDownRefresh": true
}
},
{ {
"path": "pages/agreement/agreement", "path": "pages/agreement/agreement",
"style": { "style": {

515
pages/register/register-form.vue

@ -0,0 +1,515 @@
<template>
<view class="page-container">
<!-- 顶部背景 + 标题 -->
<view class="top-bar">
<image class="top-bar-bg" src="@/static/images/mingqi-beij@2x.png" mode="aspectFill"></image>
<view class="library-info">
<image class="avatar" src="@/static/images/logo.jpg" mode="aspectFill"></image>
<view class="library-name">葛店经济技术开发区图书馆</view>
<view class="sub-title">读者证办理</view>
</view>
</view>
<!-- 表单卡片 -->
<view class="form-card">
<!-- 姓名 -->
<view class="form-item">
<uni-icons class="form-icon" custom-prefix="iconfont" type="icon-xingming" size="22"></uni-icons>
<input
class="input"
placeholder="请输入真实姓名"
v-model="formData.name"
maxlength="20"
/>
</view>
<!-- 身份证号 -->
<view class="form-item">
<uni-icons class="form-icon" custom-prefix="iconfont" type="icon-duzhezheng" size="24"></uni-icons>
<input
class="input"
placeholder="请输入18位身份证号"
v-model="formData.idCard"
maxlength="18"
/>
</view>
<!-- 手机号 -->
<view class="form-item">
<uni-icons class="form-icon" type="phone" size="24"></uni-icons>
<input
class="input"
placeholder="请输入手机号"
v-model="formData.phone"
type="number"
maxlength="11"
/>
<button class="get-phone-btn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
一键获取
</button>
</view>
<!-- 密码 -->
<view class="form-item">
<uni-icons class="form-icon" type="locked" size="24"></uni-icons>
<input
class="input"
placeholder="请设置6-20位密码"
:password="!showPwd"
v-model="formData.password"
maxlength="20"
/>
<uni-icons
class="pwd-icon"
:type="showPwd ? 'eye' : 'eye-slash'"
size="20"
@click="togglePwd"
></uni-icons>
</view>
<!-- 确认密码 -->
<view class="form-item">
<uni-icons class="form-icon" type="locked" size="24"></uni-icons>
<input
class="input"
placeholder="请再次确认密码"
:password="!showConfirmPwd"
v-model="formData.confirmPassword"
maxlength="20"
/>
<uni-icons
class="pwd-icon"
:type="showConfirmPwd ? 'eye' : 'eye-slash'"
size="20"
@click="toggleConfirmPwd"
></uni-icons>
</view>
<!-- 提交按钮 -->
<button class="submit-btn" type="primary" @click="submit" :loading="loading">
{{ loading ? '提交中...' : '确认办理' }}
</button>
<!-- 同意协议 -->
<view class="agreement-item">
<view class="radio-box" :class="{ checked: agreed }" @click="agreed = !agreed">
<view class="radio-inner" v-if="agreed"></view>
</view>
<text class="agreement-text">
我已阅读并同意遵守
<text class="agreement-link" @click="openAgreement">爱图智服服务协议</text>
</text>
</view>
</view>
<!-- 温馨提示 -->
<view class="tips-card">
<view class="tips-title">温馨提示</view>
<view class="tips-text">
1. 请填写真实身份信息用于办理读者证<br>
2. 密码请牢记用于登录和借阅查询<br>
<!-- 3. 提交后工作人员将尽快审核 -->
</view>
</view>
</view>
</template>
<script>
import config from '@/utils/config';
import { getOpenId } from '@/utils/storage';
import { FetchSessionKey, FetchDecryptPhone } from '@/api/user.js';
export default {
data() {
return {
sessionKey: '',
openid: '',
formData: {
name: '',
idCard: '',
phone: '',
password: '',
confirmPassword: ''
},
showPwd: false,
showConfirmPwd: false,
loading: false,
agreed: false
};
},
onLoad() {
this.getSessionKey();
},
methods: {
async getSessionKey() {
try {
uni.login({
success: async (loginRes) => {
console.log('loginRes',loginRes)
if (loginRes.code) {
const res = await FetchSessionKey({
libcode: config.LIB_CODE,
code: loginRes.code
});
if (res.code === 200) {
this.sessionKey = res.data.session_key;
this.openid = res.data.openid;
}
}
}
});
} catch (error) {
console.error('获取sessionKey失败:', error);
}
},
getPhoneNumber(e) {
if (e.detail.errMsg !== 'getPhoneNumber:ok') {
uni.showToast({ title: '取消授权', icon: 'none' });
return;
}
if (!this.sessionKey) {
uni.showToast({ title: '请稍后再试', icon: 'none' });
return;
}
FetchDecryptPhone({
sessionKey: this.sessionKey,
encryptedData: e.detail.encryptedData,
iv: e.detail.iv
}).then(res => {
if (res.code === 200) {
this.formData.phone = res.data.phoneNumber || '';
uni.showToast({ title: '获取成功', icon: 'success' });
} else {
uni.showToast({ title: res.message || '获取失败', icon: 'none' });
}
}).catch(() => {
uni.showToast({ title: '获取手机号失败', icon: 'none' });
});
},
togglePwd() {
this.showPwd = !this.showPwd;
},
toggleConfirmPwd() {
this.showConfirmPwd = !this.showConfirmPwd;
},
// 1518
validateIdCard(idCard) {
if (!idCard) return false;
//
idCard = idCard.replace(/[\s-]/g, '');
// 15
const idCard15Reg = /^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/;
// 18
const idCard18Reg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/;
// 15
if (idCard.length === 15) {
return idCard15Reg.test(idCard);
}
// 18
if (idCard.length !== 18 || !idCard18Reg.test(idCard)) {
return false;
}
//
const year = +idCard.substring(6, 10);
const month = +idCard.substring(10, 12);
const day = +idCard.substring(12, 14);
const date = new Date(year, month - 1, day);
return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;
},
//
validatePhone(phone) {
return /^1[3-9]\d{9}$/.test(phone);
},
//
validateForm() {
const { name, idCard, phone, password, confirmPassword } = this.formData;
// 1. trim
if (!name || name.trim() === '') {
uni.showToast({ title: '请输入姓名', icon: 'none' });
return false;
}
// 2. +
if (!idCard || idCard.trim() === '') {
uni.showToast({ title: '请输入身份证号', icon: 'none' });
return false;
}
if (!this.validateIdCard(idCard.trim())) {
uni.showToast({ title: '身份证号格式不正确', icon: 'none' });
return false;
}
// 3. +
if (!phone || phone.trim() === '') {
uni.showToast({ title: '请输入手机号', icon: 'none' });
return false;
}
if (!this.validatePhone(phone.trim())) {
uni.showToast({ title: '手机号格式不正确', icon: 'none' });
return false;
}
// 4. 6
if (!password || password.length < 6) {
uni.showToast({ title: '密码至少6位', icon: 'none' });
return false;
}
// 5.
if (password !== confirmPassword) {
uni.showToast({ title: '两次密码不一致', icon: 'none' });
return false;
}
//
return true;
},
//
showAgreementModal() {
uni.showModal({
title: '提示',
content: '请先阅读并同意《爱图智服服务协议》',
confirmText: '同意',
cancelText: '不同意',
success: (res) => {
if (res.confirm) {
// radio
this.agreed = true;
this.submitForm();
}
}
});
},
//
openAgreement() {
uni.navigateTo({
url: '/subpkg/pages/agreement/agreement'
});
},
async submit() {
//
if (this.loading) return;
// input data
await this.$nextTick();
// return
if (!this.validateForm()) {
return;
}
//
if (!this.agreed) {
this.showAgreementModal();
return;
}
//
await this.submitForm();
},
//
async submitForm() {
this.loading = true;
try {
const openId = await getOpenId();
if (!openId) {
uni.showToast({ title: '获取用户信息失败', icon: 'none' });
return;
}
uni.showToast({ title: '后续流程正在研发中,请稍后试用~', icon: 'none' });
setTimeout(() => uni.navigateBack(), 1500);
// trim
// const res = await uni.request({
// url: config.baseUrl + '/api/reader/register',
// method: 'POST',
// data: {
// name: this.formData.name.trim(),
// idCard: this.formData.idCard.trim(),
// phone: this.formData.phone.trim(),
// password: this.formData.password,
// openId,
// libcode: config.LIB_CODE
// }
// });
// if (res.data?.code === 200) {
// uni.showToast({ title: '', icon: 'success' });
// setTimeout(() => uni.navigateBack(), 1500);
// } else {
// uni.showToast({ title: res.data?.message || '', icon: 'none' });
// }
} catch (err) {
console.error('提交异常', err);
uni.showToast({ title: '网络异常,请重试', icon: 'none' });
} finally {
this.loading = false;
}
}
}
};
</script>
<style lang="scss" scoped>
page {
background-color: #f5f7fa;
}
.page-container {
min-height: 100vh;
background-color: #f5f7fa;
padding-bottom: 20px;
}
/* 顶部 */
.top-bar {
height: 210px;
.library-info {
position: relative;
z-index: 2;
color: #fff;
}
}
/* 表单卡片 */
.form-card {
margin: -30px 12px 12px;
background: #fff;
border-radius: 12px;
padding: 20px 16px;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
position: relative;
z-index: 3;
}
.form-item {
display: flex;
align-items: center;
height: 44px;
border-bottom: 1rpx solid #f2f3f5;
margin-bottom: 4px;
.form-icon {
font-size: 14px;
color: #01a4fe;
margin-right: 10px;
}
.input {
flex: 1;
font-size: 14px;
color: #333;
}
.pwd-icon {
color: #999;
padding: 5px;
}
.get-phone-btn {
font-size: 12px;
color: #fff;
background-color: #01a4fe;
border-radius: 20px;
padding: 6px 10px;
border: none;
line-height: 1.2;
&::after {
border: none;
}
}
}
/* 提交按钮 */
.submit-btn {
width: 100%;
height: 44px;
background-color: #01a4fe;
color: #fff;
border-radius: 22px;
font-size: 15px;
margin-top: 20px;
border: none;
&::after {
border: none;
}
}
/* 同意协议 */
.agreement-item {
display: flex;
align-items: center;
margin-top: 16px;
.radio-box {
width: 22rpx;
height: 22rpx;
border: 2rpx solid #ccc;
border-radius: 50%;
margin-right: 10rpx;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s;
&.checked {
border-color: #01a4fe;
background-color: #01a4fe;
}
.radio-inner {
width: 12rpx;
height: 12rpx;
background-color: #fff;
border-radius: 50%;
}
}
.agreement-text {
font-size: 12px;
color: #666;
flex: 1;
}
.agreement-link {
color: #01a4fe;
}
}
/* 温馨提示 */
.tips-card {
margin: 0 12px;
background: #fff;
border-radius: 10px;
padding: 15px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
.tips-title {
font-size: 13px;
color: #333;
font-weight: 500;
margin-bottom: 8px;
}
.tips-text {
font-size: 12px;
color: #666;
line-height: 1.6;
}
}
</style>

490
pages/register/register.vue

@ -6,360 +6,61 @@
<view class="library-info"> <view class="library-info">
<image class="avatar" src="@/static/images/logo.jpg" mode="aspectFill"></image> <image class="avatar" src="@/static/images/logo.jpg" mode="aspectFill"></image>
<view class="library-name">葛店经济技术开发区图书馆</view> <view class="library-name">葛店经济技术开发区图书馆</view>
<view class="sub-title">读者证办理</view>
<view class="sub-title">信用免押金办证流程</view>
</view> </view>
</view> </view>
<!-- 表单卡片 -->
<view class="form-card">
<!-- 姓名 -->
<view class="form-item">
<uni-icons class="form-icon" custom-prefix="iconfont" type="icon-xingming" size="22"></uni-icons>
<input
class="input"
placeholder="请输入真实姓名"
v-model="formData.name"
maxlength="20"
/>
</view>
<!-- 身份证号 -->
<view class="form-item">
<uni-icons class="form-icon" custom-prefix="iconfont" type="icon-duzhezheng" size="24"></uni-icons>
<input
class="input"
placeholder="请输入18位身份证号"
v-model="formData.idCard"
maxlength="18"
/>
</view>
<!-- 手机号 -->
<view class="form-item">
<uni-icons class="form-icon" type="phone" size="24"></uni-icons>
<input
class="input"
placeholder="请输入手机号"
v-model="formData.phone"
type="number"
maxlength="11"
/>
<button class="get-phone-btn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
一键获取
</button>
</view>
<!-- 密码 -->
<view class="form-item">
<uni-icons class="form-icon" type="locked" size="24"></uni-icons>
<input
class="input"
placeholder="请设置6-20位密码"
:password="!showPwd"
v-model="formData.password"
maxlength="20"
/>
<uni-icons
class="pwd-icon"
:type="showPwd ? 'eye' : 'eye-slash'"
size="20"
@click="togglePwd"
></uni-icons>
</view>
<!-- 确认密码 -->
<view class="form-item">
<uni-icons class="form-icon" type="locked" size="24"></uni-icons>
<input
class="input"
placeholder="请再次确认密码"
:password="!showConfirmPwd"
v-model="formData.confirmPassword"
maxlength="20"
/>
<uni-icons
class="pwd-icon"
:type="showConfirmPwd ? 'eye' : 'eye-slash'"
size="20"
@click="toggleConfirmPwd"
></uni-icons>
</view>
<!-- 提交按钮 -->
<button class="submit-btn" type="primary" @click="submit" :loading="loading">
{{ loading ? '提交中...' : '确认办理' }}
</button>
<!-- 同意协议 -->
<view class="agreement-item">
<view class="radio-box" :class="{ checked: agreed }" @click="agreed = !agreed">
<view class="radio-inner" v-if="agreed"></view>
</view>
<text class="agreement-text">
我已阅读并同意遵守
<text class="agreement-link" @click="openAgreement">爱图智服服务协议</text>
</text>
</view>
<view class="online-card">
<view class="online-item">
<text>支付宝扫码进入借阅宝生活号</text>
<image src="/static/register/1.jpg" mode="widthFix" />
</view>
<view class="online-item">
<text>进入服务点击图书馆</text>
<image src="/static/register/2.jpg" mode="widthFix" />
</view>
<view class="online-item">
<text>点击切换进入葛店经济技术开发区图书馆</text>
<text>然后点击暂无借阅证点击注册</text>
<image src="/static/register/3.jpg" mode="widthFix" />
</view>
<view class="online-item">
<text>然后点击暂无借阅证点击注册</text>
<image src="/static/register/4.jpg" mode="widthFix" />
</view>
<view class="online-item">
<text>点击去授权</text>
<image src="/static/register/5.jpg" mode="widthFix" />
</view>
<view class="online-item">
<text>下一步然后点击同意协议</text>
<image src="/static/register/6.jpg" mode="widthFix" />
</view>
<view class="online-item">
<text>注册成功后点击前往服务大厅</text>
<text>借阅证即成功办理</text>
<image src="/static/register/7.jpg" mode="widthFix" />
</view>
</view> </view>
<!-- 温馨提示 -->
<view class="tips-card"> <view class="tips-card">
<view class="tips-title">温馨提示</view>
<view class="tips-title">借阅宝注册成功即可凭<text style="padding: 0 8px; color: #007AFF;">电子证</text>借阅图书</view>
<view class="tips-text"> <view class="tips-text">
1. 请填写真实身份信息用于办理读者证<br>
2. 密码请牢记用于登录和借阅查询<br>
<!-- 3. 提交后工作人员将尽快审核 -->
若需换取实体读者证需持本人身份证原件前往二楼总服务办理
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import config from '@/utils/config';
import { getOpenId } from '@/utils/storage';
import { FetchSessionKey, FetchDecryptPhone } from '@/api/user.js';
export default { export default {
data() { data() {
return {
sessionKey: '',
openid: '',
formData: {
name: '',
idCard: '',
phone: '',
password: '',
confirmPassword: ''
},
showPwd: false,
showConfirmPwd: false,
loading: false,
agreed: false
return {
}; };
}, },
onLoad() { onLoad() {
this.getSessionKey();
}, },
methods: { methods: {
async getSessionKey() {
try {
uni.login({
success: async (loginRes) => {
console.log('loginRes',loginRes)
if (loginRes.code) {
const res = await FetchSessionKey({
libcode: config.LIB_CODE,
code: loginRes.code
});
if (res.code === 200) {
this.sessionKey = res.data.session_key;
this.openid = res.data.openid;
}
}
}
});
} catch (error) {
console.error('获取sessionKey失败:', error);
}
},
getPhoneNumber(e) {
if (e.detail.errMsg !== 'getPhoneNumber:ok') {
uni.showToast({ title: '取消授权', icon: 'none' });
return;
}
if (!this.sessionKey) {
uni.showToast({ title: '请稍后再试', icon: 'none' });
return;
}
FetchDecryptPhone({
sessionKey: this.sessionKey,
encryptedData: e.detail.encryptedData,
iv: e.detail.iv
}).then(res => {
if (res.code === 200) {
this.formData.phone = res.data.phoneNumber || '';
uni.showToast({ title: '获取成功', icon: 'success' });
} else {
uni.showToast({ title: res.message || '获取失败', icon: 'none' });
}
}).catch(() => {
uni.showToast({ title: '获取手机号失败', icon: 'none' });
});
},
togglePwd() {
this.showPwd = !this.showPwd;
},
toggleConfirmPwd() {
this.showConfirmPwd = !this.showConfirmPwd;
},
// 1518
validateIdCard(idCard) {
if (!idCard) return false;
//
idCard = idCard.replace(/[\s-]/g, '');
// 15
const idCard15Reg = /^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/;
// 18
const idCard18Reg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/;
// 15
if (idCard.length === 15) {
return idCard15Reg.test(idCard);
}
// 18
if (idCard.length !== 18 || !idCard18Reg.test(idCard)) {
return false;
}
//
const year = +idCard.substring(6, 10);
const month = +idCard.substring(10, 12);
const day = +idCard.substring(12, 14);
const date = new Date(year, month - 1, day);
return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;
},
//
validatePhone(phone) {
return /^1[3-9]\d{9}$/.test(phone);
},
//
validateForm() {
const { name, idCard, phone, password, confirmPassword } = this.formData;
// 1. trim
if (!name || name.trim() === '') {
uni.showToast({ title: '请输入姓名', icon: 'none' });
return false;
}
// 2. +
if (!idCard || idCard.trim() === '') {
uni.showToast({ title: '请输入身份证号', icon: 'none' });
return false;
}
if (!this.validateIdCard(idCard.trim())) {
uni.showToast({ title: '身份证号格式不正确', icon: 'none' });
return false;
}
// 3. +
if (!phone || phone.trim() === '') {
uni.showToast({ title: '请输入手机号', icon: 'none' });
return false;
}
if (!this.validatePhone(phone.trim())) {
uni.showToast({ title: '手机号格式不正确', icon: 'none' });
return false;
}
// 4. 6
if (!password || password.length < 6) {
uni.showToast({ title: '密码至少6位', icon: 'none' });
return false;
}
// 5.
if (password !== confirmPassword) {
uni.showToast({ title: '两次密码不一致', icon: 'none' });
return false;
}
//
return true;
},
//
showAgreementModal() {
uni.showModal({
title: '提示',
content: '请先阅读并同意《爱图智服服务协议》',
confirmText: '同意',
cancelText: '不同意',
success: (res) => {
if (res.confirm) {
// radio
this.agreed = true;
this.submitForm();
}
}
});
},
//
openAgreement() {
uni.navigateTo({
url: '/subpkg/pages/agreement/agreement'
});
},
async submit() {
//
if (this.loading) return;
// input data
await this.$nextTick();
// return
if (!this.validateForm()) {
return;
}
//
if (!this.agreed) {
this.showAgreementModal();
return;
}
//
await this.submitForm();
},
//
async submitForm() {
this.loading = true;
try {
const openId = await getOpenId();
if (!openId) {
uni.showToast({ title: '获取用户信息失败', icon: 'none' });
return;
}
uni.showToast({ title: '后续流程正在研发中,请稍后试用~', icon: 'none' });
setTimeout(() => uni.navigateBack(), 1500);
// trim
// const res = await uni.request({
// url: config.baseUrl + '/api/reader/register',
// method: 'POST',
// data: {
// name: this.formData.name.trim(),
// idCard: this.formData.idCard.trim(),
// phone: this.formData.phone.trim(),
// password: this.formData.password,
// openId,
// libcode: config.LIB_CODE
// }
// });
// if (res.data?.code === 200) {
// uni.showToast({ title: '', icon: 'success' });
// setTimeout(() => uni.navigateBack(), 1500);
// } else {
// uni.showToast({ title: res.data?.message || '', icon: 'none' });
// }
} catch (err) {
console.error('提交异常', err);
uni.showToast({ title: '网络异常,请重试', icon: 'none' });
} finally {
this.loading = false;
}
}
} }
}; };
</script> </script>
@ -384,110 +85,33 @@ page {
} }
} }
/* 表单卡片 */
.form-card {
.online-card {
margin: -30px 12px 12px; margin: -30px 12px 12px;
background: #fff;
border-radius: 12px;
padding: 20px 16px;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
position: relative; position: relative;
z-index: 3; z-index: 3;
}
.form-item {
display: flex;
align-items: center;
height: 44px;
border-bottom: 1rpx solid #f2f3f5;
margin-bottom: 4px;
.form-icon {
font-size: 14px;
color: #01a4fe;
margin-right: 10px;
}
.input {
flex: 1;
font-size: 14px;
color: #333;
}
.pwd-icon {
color: #999;
padding: 5px;
}
.get-phone-btn {
font-size: 12px;
color: #fff;
background-color: #01a4fe;
border-radius: 20px;
padding: 6px 10px;
border: none;
line-height: 1.2;
&::after {
border: none;
}
}
}
/* 提交按钮 */
.submit-btn {
width: 100%;
height: 44px;
background-color: #01a4fe;
color: #fff;
border-radius: 22px;
font-size: 15px;
margin-top: 20px;
border: none;
&::after {
border: none;
}
}
/* 同意协议 */
.agreement-item {
display: flex;
align-items: center;
margin-top: 16px;
.radio-box {
width: 22rpx;
height: 22rpx;
border: 2rpx solid #ccc;
border-radius: 50%;
margin-right: 10rpx;
.online-item {
display: flex; display: flex;
flex-direction: column;
align-items: center; align-items: center;
justify-content: center;
transition: all 0.2s;
&.checked {
border-color: #01a4fe;
background-color: #01a4fe;
margin-bottom: 20px;
padding: 16px;
background: #fff;
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
text{
font-size: 14px;
font-weight: bold;
color: #000;
margin-bottom: 10px;
} }
.radio-inner {
width: 12rpx;
height: 12rpx;
background-color: #fff;
border-radius: 50%;
}
}
.agreement-text {
font-size: 12px;
color: #666;
flex: 1;
} }
.agreement-link {
color: #01a4fe;
image {
width: 100%;
max-width: 100%;
display: block;
margin: 0 auto;
border-radius: 8px;
// box-shadow: 0 2px 8px rgba(0,0,0,0.1);
} }
} }
@ -500,9 +124,9 @@ page {
box-shadow: 0 2px 10px rgba(0,0,0,0.05); box-shadow: 0 2px 10px rgba(0,0,0,0.05);
.tips-title { .tips-title {
font-size: 13px;
font-size: 16px;
font-weight: bold;
color: #333; color: #333;
font-weight: 500;
margin-bottom: 8px; margin-bottom: 8px;
} }

8
pages/user/user.vue

@ -82,16 +82,14 @@ export default {
toBookingRecord() { toBookingRecord() {
uni.navigateTo({ uni.navigateTo({
url: '/subpkg/pages/booking-record/booking-record'
url: '/subpkg/pages/seat-record/seat-record'
}); });
}, },
toActivityRecord() {
toActivityRecord() {
uni.navigateTo({ uni.navigateTo({
url: '/subpkg/pages/activity-record/activity-record' url: '/subpkg/pages/activity-record/activity-record'
}); });
}, },
async loadUserInfo() { async loadUserInfo() {
if (this.loading) return; if (this.loading) return;
this.loading = true; this.loading = true;
@ -145,7 +143,6 @@ export default {
this.loading = false; this.loading = false;
} }
}, },
async toCheckLogin(pageName) { async toCheckLogin(pageName) {
const readerList = await getReaderCardList(); const readerList = await getReaderCardList();
@ -163,7 +160,6 @@ export default {
}); });
return; return;
} }
const routeMap = { const routeMap = {
'收藏': '/subpkg/pages/collect-list/collect-list', '收藏': '/subpkg/pages/collect-list/collect-list',
'借阅': () => { '借阅': () => {

BIN
static/register/1.jpg

After

Width: 1313  |  Height: 2335  |  Size: 94 KiB

BIN
static/register/2.jpg

After

Width: 1280  |  Height: 2637  |  Size: 248 KiB

BIN
static/register/3.jpg

After

Width: 1312  |  Height: 2716  |  Size: 130 KiB

BIN
static/register/4.jpg

After

Width: 1312  |  Height: 2716  |  Size: 102 KiB

BIN
static/register/5.jpg

After

Width: 1312  |  Height: 2716  |  Size: 87 KiB

BIN
static/register/6.jpg

After

Width: 1312  |  Height: 2703  |  Size: 111 KiB

BIN
static/register/7.jpg

After

Width: 1312  |  Height: 2716  |  Size: 144 KiB

0
subpkg/pages/booking-record/booking-record.vue → subpkg/pages/seat-record/seat-record.vue

Loading…
Cancel
Save