|
@@ -8,30 +8,38 @@
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="list" v-for="(item,index) in dataList" :key="index">
|
|
<view class="list" v-for="(item,index) in dataList" :key="index">
|
|
- <view class="list-t">{{item.time}}</view>
|
|
|
|
- <view class="list-b" v-for="(item2,index2) in item.child" :key="index2">
|
|
|
|
|
|
+ <view class="list-t">{{item.showInTime}}</view>
|
|
|
|
+ <view class="list-b" v-for="(item2,index2) in item.list" :key="index2">
|
|
<view class="list-b-t">
|
|
<view class="list-b-t">
|
|
- <img :src="item2.avatar">
|
|
|
|
- <view>{{item2.name}}</view>
|
|
|
|
|
|
+ <img v-if="item2.avatar" :src="baseUrl+item2.avatar">
|
|
|
|
+ <img v-else src="@/pages_basics/images/icon_01.png">
|
|
|
|
+ <view>{{item2.userName}}</view>
|
|
<view>{{item2.phone}}</view>
|
|
<view>{{item2.phone}}</view>
|
|
- <view :class="item2.status==0?'color-A':(item2.status==1?'color-B':(item2.status==2?'color-C':''))">
|
|
|
|
- {{item2.status==0?'实验中':(item2.status==1?'已离开':(item2.status==2?'未离开考勤违规':''))}}
|
|
|
|
|
|
+ <view
|
|
|
|
+ :class="item2.accessStatus==1?'color-A':(item2.accessStatus==2?'color-B':(item2.accessStatus==3?'color-C':''))">
|
|
|
|
+ {{item2.accessStatusStr}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<img class="list-b-img" src="@/pages_manage/images/for_min_bg.png">
|
|
<img class="list-b-img" src="@/pages_manage/images/for_min_bg.png">
|
|
<view class="list-b-b">
|
|
<view class="list-b-b">
|
|
- <view>签到时间:{{item2.time1}}</view>
|
|
|
|
- <view>离开时间:{{item2.time2}}</view>
|
|
|
|
- <view>停留时间:{{item2.time3}}</view>
|
|
|
|
|
|
+ <view>签到时间:{{item2.inTime?item2.inTime:'-'}}</view>
|
|
|
|
+ <view>离开时间:{{item2.outTime?item2.outTime:'-'}}</view>
|
|
|
|
+ <view>停留时间:{{item2.hoursMinutes?item2.hoursMinutes:'-'}}</view>
|
|
</view>
|
|
</view>
|
|
-
|
|
|
|
|
|
+
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
- import {} from '@/pages_manage/api/index.js'
|
|
|
|
|
|
+ import {
|
|
|
|
+ config
|
|
|
|
+ } from '@/api/request/config.js'
|
|
|
|
+ import {
|
|
|
|
+ laboratoryAppletPassOutList,
|
|
|
|
+ laboratoryAppletPassOutCount
|
|
|
|
+ } from '@/pages_basics/api/index.js'
|
|
export default {
|
|
export default {
|
|
name: "accessRecord",
|
|
name: "accessRecord",
|
|
props: {
|
|
props: {
|
|
@@ -39,71 +47,107 @@
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- statisticsData:[
|
|
|
|
- {name:'当前实验人数',num:'1'},
|
|
|
|
- {name:'今日累计人次',num:'23'},
|
|
|
|
- {name:'当月累计人次',num:'302'},
|
|
|
|
- ],
|
|
|
|
- newData:{
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- dataList:[
|
|
|
|
- {
|
|
|
|
- time:'2023年12月',
|
|
|
|
- child:[
|
|
|
|
- {
|
|
|
|
- avatar:require('@/pages_manage/images/icon_yw_yc.png'),
|
|
|
|
- name:'姓名',
|
|
|
|
- phone:'123456987',
|
|
|
|
- status:0,
|
|
|
|
- time1:'2023-12-14 12:20',
|
|
|
|
- time2:'2023-12-14 14:56',
|
|
|
|
- time3:'2小时26分钟',
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
-
|
|
|
|
|
|
+ baseUrl: config.base_url,
|
|
|
|
+ statisticsData: [{
|
|
|
|
+ name: '当前实验人数',
|
|
|
|
+ num: '0'
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- time:'2023年12月',
|
|
|
|
- child:[
|
|
|
|
- {
|
|
|
|
- avatar:require('@/pages_manage/images/icon_yw_yc.png'),
|
|
|
|
- name:'姓名',
|
|
|
|
- phone:'123456987',
|
|
|
|
- status:1,
|
|
|
|
- time1:'2023-12-14 12:20',
|
|
|
|
- time2:'2023-12-14 14:56',
|
|
|
|
- time3:'2小时26分钟',
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
-
|
|
|
|
|
|
+ name: '今日累计人次',
|
|
|
|
+ num: '0'
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- time:'2023年12月',
|
|
|
|
- child:[
|
|
|
|
- {
|
|
|
|
- avatar:require('@/pages_manage/images/icon_yw_yc.png'),
|
|
|
|
- name:'姓名',
|
|
|
|
- phone:'123456987',
|
|
|
|
- status:2,
|
|
|
|
- time1:'2023-12-14 12:20',
|
|
|
|
- time2:'2023-12-14 14:56',
|
|
|
|
- time3:'2小时26分钟',
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- ]
|
|
|
|
|
|
+ name: '当月累计人次',
|
|
|
|
+ num: '0'
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ newData: {
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ dataList: [],
|
|
|
|
+ // 查询参数
|
|
|
|
+ queryParams: {
|
|
|
|
+ page: 1,
|
|
|
|
+ pageSize: 10,
|
|
|
|
+ subId: '',
|
|
|
|
+ },
|
|
|
|
+ total: 0,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
|
|
|
|
|
|
+ },
|
|
|
|
+ beforeMount() {
|
|
|
|
+ uni.$on('onReachBottom', () => { // 监听上拉加载
|
|
|
|
+ console.log("到达底部,onReachBottom")
|
|
|
|
+ this.scrollGet();
|
|
|
|
+ })
|
|
|
|
+ uni.$on('onPullDownRefresh', () => { // 监听下拉刷新
|
|
|
|
+ console.log("进行了上拉刷新,onPullDownRefresh")
|
|
|
|
+ })
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
-
|
|
|
|
|
|
+ this.$set(this.queryParams, 'subId', this.subjectData.subId);
|
|
|
|
+ this.laboratoryAppletPassOutCount();
|
|
|
|
+ this.getList();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
-
|
|
|
|
|
|
+ //滚动加载事件
|
|
|
|
+ scrollGet() {
|
|
|
|
+ if (this.total / this.queryParams.pageSize <= this.queryParams.page) {
|
|
|
|
+ this.$set(this, 'getDataType', true);
|
|
|
|
+ } else {
|
|
|
|
+ this.queryParams.page += 1;
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.getList();
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ async laboratoryAppletPassOutCount() {
|
|
|
|
+ let self = this;
|
|
|
|
+ const {
|
|
|
|
+ data
|
|
|
|
+ } = await laboratoryAppletPassOutCount(this.queryParams.subId);
|
|
|
|
+ if (data.code == 200) {
|
|
|
|
+ this.statisticsData[0].num = data.data.experimenters
|
|
|
|
+ this.statisticsData[1].num = data.data.numberPeople
|
|
|
|
+ this.statisticsData[2].num = data.data.monthNumberPeople
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ async getList() {
|
|
|
|
+ let self = this;
|
|
|
|
+ let obj = JSON.parse(JSON.stringify(this.queryParams));
|
|
|
|
+ const {
|
|
|
|
+ data
|
|
|
|
+ } = await laboratoryAppletPassOutList(obj);
|
|
|
|
+ if (data.code == 200) {
|
|
|
|
+ let list = [];
|
|
|
|
+ if (this.queryParams.page != 1) {
|
|
|
|
+ list = JSON.parse(JSON.stringify(this.dataList));
|
|
|
|
+ }
|
|
|
|
+ data.data.records.forEach((item) => {
|
|
|
|
+ let num = 0;
|
|
|
|
+ list.forEach((minItem) => {
|
|
|
|
+ if (item.showInTime == minItem.showInTime) {
|
|
|
|
+ num++
|
|
|
|
+ minItem.list.push(item)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ if (num == 0) {
|
|
|
|
+ list.push({
|
|
|
|
+ showInTime: item.showInTime,
|
|
|
|
+ list: [item]
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ this.$set(this, 'dataList', list);
|
|
|
|
+ this.$set(this, 'total', data.data.total);
|
|
|
|
+ if (data.data.total / this.queryParams.pageSize <= this.queryParams.page) {
|
|
|
|
+ this.$set(this, 'getDataType', true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
},
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
@@ -111,7 +155,8 @@
|
|
<style lang="stylus" scoped>
|
|
<style lang="stylus" scoped>
|
|
.accessRecord {
|
|
.accessRecord {
|
|
width: 750rpx;
|
|
width: 750rpx;
|
|
- .title{
|
|
|
|
|
|
+
|
|
|
|
+ .title {
|
|
width: 750rpx;
|
|
width: 750rpx;
|
|
height: 160rpx;
|
|
height: 160rpx;
|
|
background: #fff;
|
|
background: #fff;
|
|
@@ -119,9 +164,11 @@
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
padding: 0 20rpx;
|
|
padding: 0 20rpx;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
- >view{
|
|
|
|
|
|
+
|
|
|
|
+ >view {
|
|
flex: 1;
|
|
flex: 1;
|
|
- >view:nth-of-type(1){
|
|
|
|
|
|
+
|
|
|
|
+ >view:nth-of-type(1) {
|
|
font-family: PingFang SC;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
font-size: 36rpx;
|
|
font-size: 36rpx;
|
|
@@ -130,7 +177,8 @@
|
|
text-align: center;
|
|
text-align: center;
|
|
margin: 30rpx 0 34rpx 0;
|
|
margin: 30rpx 0 34rpx 0;
|
|
}
|
|
}
|
|
- >view:nth-of-type(2){
|
|
|
|
|
|
+
|
|
|
|
+ >view:nth-of-type(2) {
|
|
font-family: PingFang SC;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
font-size: 30rpx;
|
|
@@ -140,16 +188,19 @@
|
|
border-right: 1rpx solid #E0E0E0;
|
|
border-right: 1rpx solid #E0E0E0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- >view:last-child{
|
|
|
|
- >view:nth-of-type(2){
|
|
|
|
|
|
+
|
|
|
|
+ >view:last-child {
|
|
|
|
+ >view:nth-of-type(2) {
|
|
border-right: none;
|
|
border-right: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .list{
|
|
|
|
|
|
+
|
|
|
|
+ .list {
|
|
padding: 0 20rpx;
|
|
padding: 0 20rpx;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
- .list-t{
|
|
|
|
|
|
+
|
|
|
|
+ .list-t {
|
|
height: 80rpx;
|
|
height: 80rpx;
|
|
font-family: PingFang SC;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
@@ -157,21 +208,26 @@
|
|
color: #222222;
|
|
color: #222222;
|
|
line-height: 80rpx;
|
|
line-height: 80rpx;
|
|
}
|
|
}
|
|
- .list-b{
|
|
|
|
- .list-b-t{
|
|
|
|
|
|
+
|
|
|
|
+ .list-b {
|
|
|
|
+ margin-bottom: 20rpx;
|
|
|
|
+
|
|
|
|
+ .list-b-t {
|
|
background: #FFFFFF;
|
|
background: #FFFFFF;
|
|
- border-radius:20rpx 20rpx 0 0;
|
|
|
|
|
|
+ border-radius: 20rpx 20rpx 0 0;
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
align-items: center;
|
|
padding: 30rpx 26rpx 16rpx 30rpx;
|
|
padding: 30rpx 26rpx 16rpx 30rpx;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
- >img{
|
|
|
|
|
|
+
|
|
|
|
+ >img {
|
|
width: 70rpx;
|
|
width: 70rpx;
|
|
height: 70rpx;
|
|
height: 70rpx;
|
|
border-radius: 35rpx;
|
|
border-radius: 35rpx;
|
|
}
|
|
}
|
|
- >view:nth-of-type(1){
|
|
|
|
|
|
+
|
|
|
|
+ >view:nth-of-type(1) {
|
|
font-family: PingFang SC;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
font-size: 28rpx;
|
|
@@ -179,7 +235,8 @@
|
|
line-height: 30rpx;
|
|
line-height: 30rpx;
|
|
margin-left: 22rpx;
|
|
margin-left: 22rpx;
|
|
}
|
|
}
|
|
- >view:nth-of-type(2){
|
|
|
|
|
|
+
|
|
|
|
+ >view:nth-of-type(2) {
|
|
font-family: PingFang SC;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
font-size: 28rpx;
|
|
@@ -187,7 +244,8 @@
|
|
line-height: 30rpx;
|
|
line-height: 30rpx;
|
|
margin-left: 44rpx;
|
|
margin-left: 44rpx;
|
|
}
|
|
}
|
|
- >view:nth-of-type(3){
|
|
|
|
|
|
+
|
|
|
|
+ >view:nth-of-type(3) {
|
|
font-family: PingFang SC;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
font-size: 28rpx;
|
|
@@ -195,31 +253,37 @@
|
|
flex: 1;
|
|
flex: 1;
|
|
text-align: right;
|
|
text-align: right;
|
|
}
|
|
}
|
|
- .color-A{
|
|
|
|
|
|
+
|
|
|
|
+ .color-A {
|
|
color: #0183FA;
|
|
color: #0183FA;
|
|
}
|
|
}
|
|
- .color-B{
|
|
|
|
|
|
+
|
|
|
|
+ .color-B {
|
|
color: #999999;
|
|
color: #999999;
|
|
}
|
|
}
|
|
- .color-C{
|
|
|
|
|
|
+
|
|
|
|
+ .color-C {
|
|
color: #FFAE00;
|
|
color: #FFAE00;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .list-b-img{
|
|
|
|
|
|
+
|
|
|
|
+ .list-b-img {
|
|
width: 710rpx;
|
|
width: 710rpx;
|
|
height: 32rpx;
|
|
height: 32rpx;
|
|
}
|
|
}
|
|
- .list-b-b{
|
|
|
|
|
|
+
|
|
|
|
+ .list-b-b {
|
|
background: #FFFFFF;
|
|
background: #FFFFFF;
|
|
- border-radius:0 0 20rpx 20rpx;
|
|
|
|
|
|
+ border-radius: 0 0 20rpx 20rpx;
|
|
padding-top: 32rpx;
|
|
padding-top: 32rpx;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
- >view{
|
|
|
|
- margin: 0 0 26rpx 20rpx;
|
|
|
|
|
|
+
|
|
|
|
+ >view {
|
|
|
|
+ margin: 0 0 26rpx 20rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-</style>
|
|
|
|
|
|
+</style>
|