asd/asd-pc/minePackage/pages/MineChild.vue
愉快的大福 eb8378e551 init
2024-11-21 11:06:22 +08:00

267 lines
7.0 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="content">
<!-- <view class="bg-line" v-if="childrenslist.length > 0">
</view> -->
<view class="card-list" v-if="childrenslist.length > 0">
<view class="card-item" v-for="(item,index) in childrenslist" :key="index">
<view class="card-item-left">
<view class="card-item-left-line1">{{item.username}}</view>
<view class="card-item-left-line2">基本信息{{item.sex+" "+item.age+"岁 "+item.birthday}}</view>
<view class="card-item-left-line3">身份证号{{item.idCard == null ? '未填' : item.idCard}}</view>
<view class="card-item-left-line4">测试次数{{item.recordCount+"次"}}</view>
<view class="card-item-left-line5">当前结果{{item.lastRecordResult ? item.lastRecordResult : '无'}}
</view>
</view>
<view class="card-item-btn-del">
<u-icon name="trash" size="20" color="#FA3534"
@tap="userDelChildrenById(item.id,item.username)"></u-icon>
</view>
<view class="card-item-btn-edit">
<u-icon name="edit-pen" size="20" color="#1BD191" @tap="goUserEditChildren(item.id)"></u-icon>
</view>
<view class="card-item-btn-view" @click="viewTest(item.lastRecordId,item.recordCount)">
查看测试
</view>
</view>
</view>
<u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" v-else></u-empty>
<u-toast ref="uToast"></u-toast>
</view>
</template>
<script>
export default {
data() {
return {
childrenslist: []
}
},
onLoad() {
this.userChildrenslist();
},
methods: {
viewTest(recordId, recordCount) {
if (!recordCount) {
return uni.showToast({
icon: 'error',
title: '尚未进行过测试'
})
}
uni.navigateTo({
url: `/tablePackage/pages/testRecord?recordId=${recordId}`
})
},
async userChildrenslist() {
const res = await this.$myRequest({
url: '/system/children/userChildrenslist'
})
for (let i = 0; i < res.data.rows.length; i++) {
res.data.rows[i].age = this.getCurrentAgeByBirthDate(res.data.rows[i].birthday)
}
this.childrenslist = res.data.rows
console.log(res);
},
userDelChildrenById(id, username) {
uni.showModal({
title: '提示',
content: '确认删除【' + username + '】?',
success: (res) => {
if (res.confirm) {
const res = this.$myRequest({
method: 'DELETE',
url: '/system/children/userDelChildrenById/' + id
})
this.$refs.uToast.show({
type: 'success',
message: '删除成功',
complete: () => {
this.userChildrenslist()
}
})
// console.log(res);
}
}
})
},
goUserEditChildren(id) {
uni.navigateTo({
url: "/minePackage/pages/BindChild?id=" + id
})
},
getCurrentAgeByBirthDate(strBirthday) {
// 将出生日期的字符串通过"-"分割成数组
const strBirthdayArr = strBirthday.split("-")
// 拿到出生日期的年
const birthYear = strBirthdayArr[0]
// 拿到出生日期的月
const birthMonth = strBirthdayArr[1]
// 拿到出生日期的日
const birthDay = strBirthdayArr[2]
// 创建一个时间对象
const d = new Date()
// 拿到当前时间的年
const nowYear = d.getFullYear()
// 拿到当前时间的月
const nowMonth = d.getMonth() + 1
// 拿到当前时间的日
const nowDay = d.getDate()
// 如果出生日期的年等于当前时间的年
if (nowYear === birthYear) return 0 // 返回周岁年龄 0,并终止函数执行
// 如果如果出生日期的年不等于于当前时间的年,则拿到年之差
const ageDiff = nowYear - birthYear; // 年之差
// 如果年之差是个负数,则表示用户输入的出生日期错误,晚于今天,返回 -1,并终止函数执行
if (ageDiff < 0) return -1 // 返回错误 -1,并终止函数执行
// 如果年之差是个正整数,但出生日期的月与当前时间的月不相等
if (nowMonth !== birthMonth) {
// 拿到出生日期的日与当前时间的月之差
const monthDiff = nowMonth - birthMonth; // 月之差
// 如果月之差是个负数,则年之差 - 1后得到周岁年龄,否则直接得到周岁年龄
return monthDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
}
// 如果出生日期的月与当前时间的月相等,则拿到出生日期的日与当前时间的日之差
const dayDiff = nowDay - birthDay;
// 如果日之差是个负数,则年之差 - 1得到周岁年龄,否则直接得到周岁年龄
return dayDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
}
}
}
</script>
<style scoped lang="less">
.card-list {
width: 100%;
position: fixed;
z-index: 2;
top: 100rpx;
bottom: 0;
left: 0;
right: 0;
overflow-y: auto;
.card-item {
width: 90%;
height: 280rpx;
margin: 0 auto;
margin-bottom: 20rpx;
box-shadow: 0rpx 4rpx 12rpx 0rpx #E4E4E4;
background-color: #fff;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
.card-item-left {
width: 100%;
height: 100%;
margin-left: 80rpx;
display: flex;
flex-direction: column;
// justify-content: center;
.card-item-left-line1 {
width: 80%;
font-size: 38rpx;
font-weight: bold;
margin-bottom: 10rpx;
display: flex;
justify-content: center;
align-items: center;
}
.card-item-left-line2,
.card-item-left-line3,
.card-item-left-line4,
.card-item-left-line5 {
display: flex;
align-items: center;
font-size: 28rpx;
margin-top: 8rpx;
}
}
.card-item-btn-del {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 50rpx;
top: 10rpx;
border: 2rpx #FA3534 solid;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
}
.card-item-btn-edit {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 50rpx;
top: 100rpx;
border: 2rpx #1BD191 solid;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
}
.card-item-btn-view {
position: absolute;
right: 50rpx;
bottom: 40rpx;
background-color: #287BCE;
color: #fff;
border-radius: 10rpx;
padding: 10rpx 20rpx;
font-size: 26rpx;
}
}
.card-item::after {
content: "";
display: inline-block;
position: absolute;
width: 20rpx;
height: 20rpx;
top: 15rpx;
left: 15rpx;
background-color: #287BCE;
border-radius: 50%;
}
// .card-item::before {
// content: "";
// display: inline-block;
// position: absolute;
// width: 20rpx;
// height: 20rpx;
// bottom: 15rpx;
// left: 15rpx;
// background-color: #287BCE;
// border-radius: 50%;
// }
}
// .bg-line::before {
// content: "";
// position: absolute;
// z-index: 1;
// display: inline-block;
// left: calc(5% + 20rpx);
// top: 0rpx;
// bottom: 0rpx;
// width: 10rpx;
// background-color: #287BCE;
// }
</style>