234 lines
6.4 KiB
Vue
234 lines
6.4 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="con-body">
|
|||
|
|
<view class="con-bg">
|
|||
|
|
<!-- 头部 -->
|
|||
|
|
<customHeader ref="customHeaderRef" :title="'打卡统计'" :leftFlag="true" :rightFlag="false"></customHeader>
|
|||
|
|
|
|||
|
|
<!-- 高度来避免头部遮挡 -->
|
|||
|
|
<view class="top-height"></view>
|
|||
|
|
|
|||
|
|
<!-- 正文内容 -->
|
|||
|
|
<view>
|
|||
|
|
<!-- 搜索 -->
|
|||
|
|
<view class="search">
|
|||
|
|
<picker @change="bindPickerChange" :value="cityIndex" :range="cityArr" class="picker-bg">
|
|||
|
|
<view class="picker">
|
|||
|
|
<uni-icons type="location" size="18"></uni-icons>
|
|||
|
|
<view>{{cityArr[cityIndex]}}</view>
|
|||
|
|
<uni-icons type="down" size="18"></uni-icons>
|
|||
|
|
</view>
|
|||
|
|
</picker>
|
|||
|
|
<picker mode="date" :value="defaultDate" :start="startDate" :end="endDate"
|
|||
|
|
@change="bindDateChange" class="picker-bg">
|
|||
|
|
<view class="picker">
|
|||
|
|
<uni-icons custom-prefix="iconfont" color="#ffffff" type="icon-phoneshizhong" size="18"></uni-icons>
|
|||
|
|
<view>{{defaultDate}}</view>
|
|||
|
|
<uni-icons type="down" size="18"></uni-icons>
|
|||
|
|
</view>
|
|||
|
|
</picker>
|
|||
|
|
<button type="default" @click="handleSearch" size="mini" class="btn-search">查询</button>
|
|||
|
|
</view>
|
|||
|
|
<!-- 签到打卡 -->
|
|||
|
|
<view class="checkin-tab">
|
|||
|
|
<view class="checkin-tab-item" :class="{active:tabType==0}" @click="handleTab(0)">
|
|||
|
|
<view class="tab-item-title">7</view>
|
|||
|
|
<view class="tab-item-name">最新签到打卡</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="checkin-tab-item" :class="{active:tabType==1}" @click="handleTab(1)">
|
|||
|
|
<view class="tab-item-title">4</view>
|
|||
|
|
<view class="tab-item-name">未签到打卡</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<!-- tab切换显示 -->
|
|||
|
|
<view class="white-bg">
|
|||
|
|
<!-- 最新签到列表 -->
|
|||
|
|
<view class="tab-con" v-if="tabType==0">
|
|||
|
|
<view class="tab-title" v-for="(item,index) in list1" :key="index">
|
|||
|
|
{{item}}
|
|||
|
|
<uni-icons type="checkbox-filled" size="26" color="#02C74C"></uni-icons>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<!-- 未签到列表 -->
|
|||
|
|
<view class="tab-con" v-if="tabType==1">
|
|||
|
|
<view class="tab-title" v-for="(item,index) in list2" :key="index">
|
|||
|
|
{{item}}
|
|||
|
|
<uni-icons type="info-filled" size="26" color="#FF8059"></uni-icons>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup>
|
|||
|
|
import { ref, onMounted } from 'vue'
|
|||
|
|
import customHeader from '@/components/customHeader.vue'
|
|||
|
|
import { getDate} from '@/utils/datetime.js'
|
|||
|
|
|
|||
|
|
let cityIndex = ref(0);
|
|||
|
|
let cityArr = ["北京大区","天津大区"];
|
|||
|
|
// 选择大区列表
|
|||
|
|
let bindPickerChange = (e)=>{
|
|||
|
|
console.log('picker发送选择改变,携带值为', e.detail.value)
|
|||
|
|
cityIndex.value = e.detail.value
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 开始时间
|
|||
|
|
let startDate = getDate('start');
|
|||
|
|
// 结束时间,间隔10年
|
|||
|
|
let endDate = getDate('end');
|
|||
|
|
let defaultDate = getDate({ format: true })
|
|||
|
|
let bindDateChange = (e) =>{
|
|||
|
|
defaultDate = e.detail.value
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let searchValue = ref(null)
|
|||
|
|
// 查询搜索跳转
|
|||
|
|
let handleSearch = () => {
|
|||
|
|
console.log(searchValue.value)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// tab 切换
|
|||
|
|
let tabType = ref(0)
|
|||
|
|
let handleTab = (type)=>{
|
|||
|
|
tabType.value = type;
|
|||
|
|
}
|
|||
|
|
// 列表
|
|||
|
|
let list1 = ref([]);
|
|||
|
|
list1.value = ["王振","胡本华","高勐","崔礼涛","汪津春","王永健","张浩"];
|
|||
|
|
|
|||
|
|
let list2 = ref([]);
|
|||
|
|
list2.value = ["付翰","张旭光","赵欣鸣","张王小北"];
|
|||
|
|
|
|||
|
|
// 确定
|
|||
|
|
let handleSubmit = () => {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
.search {
|
|||
|
|
display: flex;
|
|||
|
|
padding:0 30rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.search .btn-search {
|
|||
|
|
border: none;
|
|||
|
|
background: none;
|
|||
|
|
line-height: normal;
|
|||
|
|
color: #fff;
|
|||
|
|
line-height: 56rpx !important;
|
|||
|
|
padding: 10rpx 0 0;
|
|||
|
|
text-align: left;
|
|||
|
|
cursor: pointer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.search .btn-search::after {
|
|||
|
|
display: none;
|
|||
|
|
}
|
|||
|
|
.search .picker-bg{
|
|||
|
|
display: flex;
|
|||
|
|
background-color: #6FA2F8;
|
|||
|
|
border-radius: 25px;
|
|||
|
|
color:#fff;
|
|||
|
|
font-size:28rpx;
|
|||
|
|
padding:0rpx 20rpx;
|
|||
|
|
/* #ifndef APP-PLUS */
|
|||
|
|
padding:10rpx 20rpx 0 20rpx;
|
|||
|
|
/* #endif */
|
|||
|
|
margin-right:20rpx;
|
|||
|
|
}
|
|||
|
|
.search .picker-bg .picker {
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
/* #ifndef APP-PLUS */
|
|||
|
|
padding-top:2rpx;
|
|||
|
|
/* #endif */
|
|||
|
|
}
|
|||
|
|
.search .picker-bg .picker .uni-icons{
|
|||
|
|
color:#fff !important;
|
|||
|
|
}
|
|||
|
|
.search .picker-bg .picker .uni-icons:first-child{
|
|||
|
|
margin-right: 10rpx;
|
|||
|
|
}
|
|||
|
|
.search .picker-bg .picker .uniui-down{
|
|||
|
|
margin-left: 20rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.checkin-tab{
|
|||
|
|
margin-top:35rpx;
|
|||
|
|
display: flex;
|
|||
|
|
padding:0 30rpx;
|
|||
|
|
flex: 1;
|
|||
|
|
}
|
|||
|
|
.checkin-tab-item{
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: center;
|
|||
|
|
color:rgba(255, 255, 255, 0.5);
|
|||
|
|
text-align: center;
|
|||
|
|
margin-right:30rpx;
|
|||
|
|
font-weight: bold;
|
|||
|
|
padding-bottom:20rpx;
|
|||
|
|
}
|
|||
|
|
.checkin-tab-item.active{
|
|||
|
|
position: relative;
|
|||
|
|
color:#fff;
|
|||
|
|
}
|
|||
|
|
.checkin-tab-item.active::after{
|
|||
|
|
content: '';
|
|||
|
|
position: absolute;
|
|||
|
|
bottom: 0;
|
|||
|
|
left: 50%;
|
|||
|
|
transform: translateX(-50%);
|
|||
|
|
background-color: #fff;
|
|||
|
|
width: 100rpx;
|
|||
|
|
height: 8rpx;
|
|||
|
|
}
|
|||
|
|
.checkin-tab-item .tab-item-title{
|
|||
|
|
font-size:60rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.white-bg {
|
|||
|
|
width: 670rpx;
|
|||
|
|
margin: 0;
|
|||
|
|
border-radius: 8px 8px 0 0;
|
|||
|
|
padding:50rpx 40rpx;
|
|||
|
|
margin-top:20rpx;
|
|||
|
|
/* #ifdef APP-PLUS */
|
|||
|
|
height:calc(100vh - 260px);
|
|||
|
|
/* #endif */
|
|||
|
|
/* #ifndef APP-PLUS */
|
|||
|
|
height:calc(100vh - 230px);
|
|||
|
|
/* #endif */
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.tab-con{
|
|||
|
|
display: flex;
|
|||
|
|
flex-flow: row wrap
|
|||
|
|
}
|
|||
|
|
.tab-con .tab-title{
|
|||
|
|
border:1px solid #E8E8E8;
|
|||
|
|
text-align: center;
|
|||
|
|
border-radius: 5px;
|
|||
|
|
position: relative;
|
|||
|
|
/* padding:10rpx 20rpx; */
|
|||
|
|
margin-right:20rpx;
|
|||
|
|
margin-bottom:30rpx;
|
|||
|
|
width:148rpx;
|
|||
|
|
height: 60rpx;
|
|||
|
|
line-height: 60rpx;
|
|||
|
|
font-size: 28rpx;
|
|||
|
|
}
|
|||
|
|
.tab-con .tab-title:nth-child(4n){
|
|||
|
|
margin-right: 0;
|
|||
|
|
}
|
|||
|
|
.tab-con .uni-icons{
|
|||
|
|
position: absolute;
|
|||
|
|
right:-10px;
|
|||
|
|
top:-10px;
|
|||
|
|
}
|
|||
|
|
</style>
|