1086 lines
31 KiB
Vue
Raw Normal View History

2022-06-08 14:51:11 +08:00
<template>
<div class="fullHeight page">
<img src="@/assets/images/inoutBigScreen/leftLine.png" class="leftLine" />
<img src="@/assets/images/inoutBigScreen/leftLine.png" class="rightLine" />
<img
src="@/assets/images/inoutBigScreen/bottomLine.png"
class="bottomLine"
/>
<div class="topHeader">
<div class="left">
<p class="date">{{ curDate }}</p>
<p>
<span>{{ curTime }}</span
><span>{{ curWeek }}</span>
</p>
</div>
<div class="projectName">
{{ $store.state.currentProDetail.projectName }}
</div>
<div class="tempBox">
<span>{{ weatherInfo.temperature }}</span
><span>{{ weatherInfo.weather }}</span>
</div>
</div>
<div class="pageBottom">
<div class="left fullHeight">
<div class="leftTop">
<div class="blockBox perNumBox">
<img
src="@/assets/images/inoutBigScreen/blockLine.png"
class="blockLine-top"
/>
<img
src="@/assets/images/inoutBigScreen/blockLine.png"
class="blockLine-bottom"
/>
<div class="perNumInner">
<p>
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.workersOnSite') }}<span
2022-06-08 14:51:11 +08:00
class="num1"
>{{ statictisData.presencePerson.totalPerson }}</span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.person') }}
2022-06-08 14:51:11 +08:00
</p>
<p>
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.peopleWhoPunchInToday') }}<span
2022-06-08 14:51:11 +08:00
class="num1"
>{{ statictisData.todayNum }}</span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.person') }}
2022-06-08 14:51:11 +08:00
</p>
<p>
{{
2022-06-16 14:33:15 +08:00
$t('message.laborMange.peopleWhoClockedInYesterday')
2022-06-08 14:51:11 +08:00
}}<span class="num1">{{ statictisData.yesterdayNum }}</span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.person') }}
2022-06-08 14:51:11 +08:00
</p>
</div>
</div>
<div class="blockBox">
<img
src="@/assets/images/inoutBigScreen/blockLine.png"
class="blockLine-top"
/>
<img
src="@/assets/images/inoutBigScreen/blockLine.png"
class="blockLine-bottom"
/>
<div class="currentPersonInfoBox">
<div
class="imgBox"
v-if="
currentPersonDetail.imageUrl != '' &&
currentPersonDetail.imageUrl != null
"
>
<img
:src="$store.state.FILEURL + currentPersonDetail.imageUrl"
/>
<img
:src="
$store.state.FILEURL +
currentPersonDetail.fieldAcquisitionUrl
"
/>
</div>
<div class="imgBox" v-else>
<img src="@/assets/images/profile_photo.png" />
<img src="@/assets/images/profile_photo.png" />
</div>
2022-06-16 14:33:15 +08:00
2022-06-08 14:51:11 +08:00
<div class="personName">
<span>
2022-06-16 14:33:15 +08:00
{{ currentPersonDetail.workerName }}
<b
class="codeResult"
v-show="currentPersonDetail.codeState === 0"
style="color: rgb(168, 168, 168)"
>
无码
2022-06-08 14:51:11 +08:00
</b>
2022-06-16 14:33:15 +08:00
<b
class="codeResult"
v-show="currentPersonDetail.codeState === 1"
style="color: red"
>
红码
2022-06-08 14:51:11 +08:00
</b>
2022-06-16 14:33:15 +08:00
<b
class="codeResult"
v-show="currentPersonDetail.codeState === 2"
style="color: yellow"
>
黄码
2022-06-08 14:51:11 +08:00
</b>
2022-06-16 14:33:15 +08:00
<b
class="codeResult"
v-show="currentPersonDetail.codeState === 3"
style="color: green"
>
绿码
2022-06-08 14:51:11 +08:00
</b>
</span>
2022-06-16 14:33:15 +08:00
2022-06-08 14:51:11 +08:00
<span class="inoutType">{{
currentPersonDetail.passType == 1
2022-06-16 14:33:15 +08:00
? $t('message.laborMange.enter')
: $t('message.laborMange.leave')
2022-06-08 14:51:11 +08:00
}}</span>
</div>
2022-06-16 14:33:15 +08:00
<p>体温{{ currentPersonDetail.temperature }}°</p>
2022-06-08 14:51:11 +08:00
<p>
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.inOutTime') }}{{
2022-06-08 14:51:11 +08:00
currentPersonDetail.createTime
}}
</p>
<p v-if="currentPersonDetail.teamName">
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.team') }}{{
2022-06-08 14:51:11 +08:00
currentPersonDetail.teamName
}}
</p>
<p v-else>
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.section') }}{{
2022-06-08 14:51:11 +08:00
currentPersonDetail.departmentName
}}
</p>
<p>
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.companies') }}{{
2022-06-08 14:51:11 +08:00
currentPersonDetail.enterpriseName
}}
</p>
</div>
</div>
</div>
<div class="leftBottom blockBox">
<img
src="@/assets/images/inoutBigScreen/blockLine_b.png"
class="blockLine-top"
/>
<img
src="@/assets/images/inoutBigScreen/blockLine_b.png"
class="blockLine-bottom"
/>
<div class="inListBox itemList">
<div class="typeTxt">
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.up') }}<br />{{
$t('message.laborMange.shift')
2022-06-08 14:51:11 +08:00
}}
</div>
<div class="personInner">
<div
class="personBox"
v-for="(item, index) in inList"
:key="index"
>
2022-06-16 14:33:15 +08:00
<div class="personBoxItem">
<div class="urseLogo">
<div class="stateLabel" v-if="item.nadTime&&item.workerClassify">
{{overtimeEve(item.nadTime,item.workerClassify)}}
</div>
<img
:src="$store.state.FILEURL + item.imageUrl"
:preview="$store.state.FILEURL + item.imageUrl"
/>
</div>
<div class="detail">
<p class="name">{{ item.workerName }}</p>
<p>
{{
item.departmentName
? item.departmentName
: item.teamName
}}
</p>
<p>{{ item.createTime.split(' ')[1] }}</p>
<p>体温:{{ item.temperature }}°</p>
<p>
<b
v-show="item.codeState == 0"
style="
color: rgb(168, 168, 168);
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
无码
2022-06-16 14:33:15 +08:00
</b>
<b
v-show="item.codeState == 1"
style="
color: red;
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
红码
2022-06-16 14:33:15 +08:00
</b>
<b
v-show="item.codeState == 2"
style="
color: yellow;
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
黄码
2022-06-16 14:33:15 +08:00
</b>
<b
v-show="item.codeState == 3"
style="
color: green;
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
绿码
2022-06-16 14:33:15 +08:00
</b>
</p>
</div>
2022-06-08 14:51:11 +08:00
</div>
</div>
</div>
</div>
<div class="outListBox itemList">
<div class="typeTxt">
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.down') }}<br />{{
$t('message.laborMange.shift')
2022-06-08 14:51:11 +08:00
}}
</div>
<div class="personInner">
<div
class="personBox"
v-for="(item, index) in outList"
:key="index"
>
2022-06-16 14:33:15 +08:00
<div class="personBoxItem">
<div class="urseLogo">
<div class="stateLabel" v-if="item.nadTime&&item.workerClassify">
{{overtimeEve(item.nadTime,item.workerClassify)}}
</div>
<img
:src="$store.state.FILEURL + item.imageUrl"
:preview="$store.state.FILEURL + item.imageUrl"
/>
</div>
<div class="detail">
<p class="name">{{ item.workerName }}</p>
<p>
{{
item.departmentName
? item.departmentName
: item.teamName
}}
</p>
<p>{{ item.createTime.split(' ')[1] }}</p>
<p>体温:{{ item.temperature }}°</p>
<p>
<b
v-show="item.codeState == 0"
style="
color: rgb(168, 168, 168);
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
无码
2022-06-16 14:33:15 +08:00
</b>
<b
v-show="item.codeState == 1"
style="
color: red;
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
红码
2022-06-16 14:33:15 +08:00
</b>
<b
v-show="item.codeState == 2"
style="
color: yellow;
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
黄码
2022-06-16 14:33:15 +08:00
</b>
<b
v-show="item.codeState == 3"
style="
color: green;
width: 40px;
height: 25px;
line-height: 25px;
font-size: 20px;
margin: 0;
"
class="codeResult"
>
2022-06-08 14:51:11 +08:00
绿码
2022-06-16 14:33:15 +08:00
</b>
</p>
</div>
2022-06-08 14:51:11 +08:00
</div>
</div>
</div>
</div>
</div>
</div>
<div class="right fullHeight">
<img
src="@/assets/images/inoutBigScreen/companyLine.png"
class="blockLine-top"
/>
<img
src="@/assets/images/inoutBigScreen/companyLine.png"
class="blockLine-bottom"
/>
<div class="title">
2022-06-16 14:33:15 +08:00
{{ $t('message.laborMange.enterprisesEnteringMarket') }}
2022-06-08 14:51:11 +08:00
</div>
<div
id="detetion-box2"
class="companyListBox"
@mouseover="clearTimer"
@mouseout="ScrollUp2"
>
<div id="detetion-con1">
<div
class="companyInner"
v-for="(item, index) in statictisData.list"
:key="index"
>
<div class="companyName">{{ item.enterpriseName }}</div>
<div class="groupBox groupBox1">
<p v-for="(data, i) in item.list" :key="i + 'child'">
<span>{{ data.name }}</span
><span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.today') }}{{
2022-06-08 14:51:11 +08:00
data.todayNum
}}</span
><span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.yesterday') }}{{
2022-06-08 14:51:11 +08:00
data.yesterdayNum
}}</span
>
</p>
</div>
<div class="groupBox">
<p class="groupTotal">
2022-06-16 14:33:15 +08:00
<span>{{ $t('message.laborMange.total') }}</span
2022-06-08 14:51:11 +08:00
><span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.today') }}{{
2022-06-08 14:51:11 +08:00
item.totaltodayNum
}}</span
><span
2022-06-16 14:33:15 +08:00
>{{ $t('message.laborMange.yesterday') }}{{
2022-06-08 14:51:11 +08:00
item.totalyesterdayNum
}}</span
>
</p>
</div>
</div>
</div>
<div id="detetion-con2"></div>
<div
class="placeholderBox placeholderBox2"
v-if="statictisData.list.length == 0"
>
<img src="@/assets/images/noData3.png" alt="" srcset="" />
2022-06-16 14:33:15 +08:00
<p>{{ $t('message.laborMange.noData') }}</p>
2022-06-08 14:51:11 +08:00
</div>
</div>
</div>
</div>
<!-- <p class="bottomDesc">佳信捷智慧工地 您的工地管理好帮手</p> -->
</div>
</template>
<script>
// import vueSeamlessScroll from 'vue-seamless-scroll'
import {
selectEnterpriseAttendanceCountApi,
selectWorkNewAttendanceListApi,
} from "@/assets/js/api/laborPerson.js";
import { GetTimeDiff, GetTimeStr } from "@/assets/js/util";
import mqtt from "mqtt";
const options = {
connectTimeout: 40000,
clientId: "mqttjs_" + Math.random().toString(16).substr(2, 8),
username: "root",
password: "123456",
clean: true,
};
2022-06-16 14:33:15 +08:00
import tool from "@/util/nowDate/index";
2022-06-08 14:51:11 +08:00
var client2 = null;
export default {
// components:{vueSeamlessScroll},
// computed: {
// classOption () {
// return {
// step: 0.2, // 数值越大速度滚动越快
// limitMoveNum: 2, // 开始无缝滚动的数据量 this.dataList.length
// hoverStop: true, // 是否开启鼠标悬停stop
// direction: 1, // 0向下 1向上 2向左 3向右
// openWatch: true, // 开启数据实时监控刷新dom
// singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
// singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
// waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
// }
// }
// },
data() {
return {
timer1: null,
timer2: null,
statictisData: {
todayNum: 0,
yesterdayNum: 0,
list: [],
presencePerson: {
totalPerson: 0,
},
},
inList: [],
outList: [],
curTime: "",
curDate: "",
curWeek: "",
weatherInfo: {
city: "--",
weather: "--",
temperature: "--",
winddirection: "--",
windpower: "-",
humidity: "--",
},
topicName: "attendance",
currentPersonDetail: {
teamName: "",
createTime: "",
workerName: "",
passType: 1, //1 进 2 出
departmentName: "",
enterpriseName: "",
imageUrl: "",
fieldAcquisitionUrl: "",
},
};
},
created() {
2022-06-16 14:33:15 +08:00
if (COMPANY == 'nanchang') {
document.title = '疫情防控LED大屏';
2022-06-08 14:51:11 +08:00
}
2022-06-16 14:33:15 +08:00
2022-06-08 14:51:11 +08:00
},
mounted() {
this.getTime();
this.getCompanyData();
this.getInoutData(1, 2);
this.getInoutData(2, 2);
this.getNewestData(1);
this.loadWeather();
console.log(mqttUrl);
// client2 = mqtt.connect("ws://139.159.226.224:8083/mqtt", options);
client2 = mqtt.connect(mqttUrl, options);
this.mqttMSG();
},
beforeDestroy() {
clearInterval(this.timer1);
clearInterval(this.timer2);
if (client2) {
client2.unsubscribe(this.topicName + this.$store.state.projectSn);
}
2022-06-16 14:33:15 +08:00
},
filters:{
2022-06-08 14:51:11 +08:00
},
methods: {
2022-06-16 14:33:15 +08:00
overtimeEve(data, workerClass) {
// console.log(time,'=============')
if (data && workerClass) {
let timestamp = new Date().getTime();
let codeTime = new Date(data).getTime();
let timeDifference = Number(timestamp) - Number(codeTime);
if(isNaN(timeDifference)){
return "核酸超时"
}
let hour = Math.floor(timeDifference / 3600000);
let res='';
switch (workerClass) {
case 1:
if(hour>168){
res="核酸超时"
}else{
res=hour.toString()+'小时'
}
break;
case 2:
if(hour>24){
res="核酸超时"
}else{
res=hour.toString()+'小时'
}
break;
case 3:
if(hour>72){
res="核酸超时"
}else{
res=hour.toString()+'小时'
}
break;
default:
res=''
}
return res;
} else {
return ""
}
},
2022-06-08 14:51:11 +08:00
mqttMSG() {
// mqtt连接 +"/#" +workerId
client2.on("connect", (e) => {
console.log("连接成功:", this.topicName + this.$store.state.projectSn);
client2.subscribe(
this.topicName + this.$store.state.projectSn,
{ qos: 0 },
(error) => {
if (!error) {
console.log("订阅成功");
} else {
console.log("订阅失败");
}
}
);
});
// 接收消息处理
client2.on("message", (topic, message) => {
console.log("收到来自", topic, "的消息", message.toString());
console.log(JSON.parse(message));
// console.log(message.content.toString());
// console.log(JSON.parse(message.content.toString()));
this.currentPersonDetail = JSON.parse(JSON.parse(message).content);
let arr = [this.currentPersonDetail];
if (this.currentPersonDetail.passType == 1) {
this.inList = arr.concat(this.inList);
} else if (this.currentPersonDetail.passType == 2) {
this.outList = arr.concat(this.outList);
}
this.getCompanyData();
});
// 断开发起重连
// client2.on("reconnect", (error) => {
// console.log("正在重连:", error);
// });
// 链接异常处理
client2.on("error", (error) => {
console.log("连接失败:", error);
});
},
getTime() {
let a = GetTimeStr(0, "-");
this.curDate = a.split(" ")[0];
this.curTime = a.split(" ")[1];
this.timer2 = setTimeout(() => {
this.getTime();
this.getDateWeek(this.curDate);
}, 1000);
},
getDateWeek(date) {
var day = new Date(Date.parse(date));
var today = this.$t("message.laborMange.dayArr");
this.curWeek = today[day.getDay()];
},
loadWeather() {
if (
localStorage.getItem("weatherInfo") &&
localStorage.getItem("weatherInfo") != "undefined"
) {
this.weatherInfo = JSON.parse(localStorage.getItem("weatherInfo"));
var diff = GetTimeDiff(this.weatherInfo.reporttime, GetTimeStr(0, "-"));
if (diff < 2) {
//2小时请求一次
return;
}
}
let url = "http://restapi.amap.com/v3/weather/weatherInfo";
let that = this;
//步骤一:创建异步对象
var ajax = new XMLHttpRequest();
//步骤二:设置请求的url参数,参数一是请求的类型,参数二是请求的url,可以带参数,动态的传递参数starName到服务端
ajax.open(
"get",
url +
2022-06-16 14:33:15 +08:00
"?key=a3217cf9335d333c307abee2fce600b5&extensions=base&output=json&city=" +
this.$store.state.currentProDetail.cityCode
2022-06-08 14:51:11 +08:00
);
//步骤三:发送请求
ajax.send();
//步骤四:注册事件 onreadystatechange 状态改变就会调用
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
//步骤五 如果能够进到这个判断 说明 数据 完美的回来了,并且请求的页面是存在的
// console.log(ajax.responseText);//输入相应的内容
let data = JSON.parse(ajax.responseText);
that.weatherInfo = data.lives[0];
localStorage.setItem("weatherInfo", JSON.stringify(that.weatherInfo));
}
};
// this.$http
// .get(url, {
// params: {
// key: "a3217cf9335d333c307abee2fce600b5",
// city: this.$store.state.currentProDetail.cityCode,
// extensions: "base",
// output: "JSON"
// }
// })
// .then(res => {
// if (res.data.status == "1") {
// this.weatherInfo = res.data.lives[0];
// localStorage.setItem(
// "weatherInfo",
// JSON.stringify(this.weatherInfo)
// );
// }
// });
},
//获取进出列表
getInoutData(passType, limitType) {
let json = {
projectSn: this.$store.state.projectSn,
passType: passType,
limitType: limitType,
userEnterpriseId: this.$store.state.userInfo.userEnterpriseId,
};
selectWorkNewAttendanceListApi(json).then((res) => {
if (passType == 1) {
this.inList = res.result;
} else if (passType == 2) {
this.outList = res.result;
}
this.$nextTick(() => {
this.$previewRefresh();
});
});
},
// 获取最新进出场的一名员工
getNewestData(limitType) {
let json = {
projectSn: this.$store.state.projectSn,
limitType: limitType,
userEnterpriseId: this.$store.state.userInfo.userEnterpriseId,
};
selectWorkNewAttendanceListApi(json).then((res) => {
this.currentPersonDetail = res.result[0];
console.log(this.currentPersonDetail);
});
},
//获取企业进场人数
getCompanyData() {
selectEnterpriseAttendanceCountApi({
projectSn: this.$store.state.projectSn,
}).then((res) => {
this.statictisData = res.result;
if (res.result.list.length > 0) {
this.$nextTick(() => {
this.ScrollUp2();
});
}
});
},
clearTimer() {
clearInterval(this.timer1);
},
ScrollUp2() {
var box = document.getElementById("detetion-box2");
var con1 = document.getElementById("detetion-con1");
var con2 = document.getElementById("detetion-con2");
if (con1.offsetHeight >= box.offsetHeight) {
con2.innerHTML = con1.innerHTML;
this.timer1 = setInterval(scrol, 50);
function scrol() {
/*判断滚动内容是否已经滚完滚完了则滚动的值重新设置到0否则就每个30默秒向上滚动1px */
if (box.scrollTop >= con1.scrollHeight) {
box.scrollTop = 0;
} else {
box.scrollTop++;
}
/*判断滚动的距离刚好为一条公告的高度时停掉定时器隔1s之后重新启动计时器即可实现公告滚动停留效果 */
// if (box.scrollTop % 25 == 0) {
// clearInterval(timer1);
// setTimeout(() => {
// timer1 = setInterval(scrol, 30);
// }, 2000);
// }
}
}
},
},
};
</script>
<style lang="less" scoped>
.page {
background-color: #142739;
color: white;
font-size: 30px;
position: relative;
width: 100%;
}
.leftLine {
position: absolute;
top: 50px;
left: 6px;
height: calc(100% - 70px);
}
.rightLine {
position: absolute;
top: 50px;
right: 6px;
height: calc(100% - 70px);
transform: rotateY(180deg);
}
.bottomLine {
position: absolute;
bottom: 10px;
left: 40px;
width: calc(100% - 80px);
}
.topHeader {
height: 100px;
padding: 0 70px;
display: flex;
align-items: center;
justify-content: space-between;
2022-06-16 14:33:15 +08:00
background: url('../../../assets/images/inoutBigScreen/headerBG.png')
2022-06-08 14:51:11 +08:00
no-repeat 100% 100%;
.left {
flex: 1;
.date {
font-size: 25px;
}
span {
margin-right: 28px;
}
}
}
.projectName {
font-size: 46px;
color: #00ecd5;
text-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
flex: 1;
text-align: center;
margin-top: -15px;
flex: 4;
}
.tempBox {
flex: 1;
text-align: right;
font-size: 40px;
span:first-child {
margin-right: 42px;
}
}
.blockBox {
background-color: rgba(19, 50, 66, 1);
position: relative;
}
.perNumBox {
.perNumInner {
padding: 20px 0;
height: calc(100% - 40px);
}
p {
height: 33.33%;
display: flex;
align-items: center;
justify-content: center;
}
.num1 {
margin-right: 23px;
font-size: 50px;
color: #00ecd5;
width: 168px;
height: 70px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 34px;
// border-bottom: 1px dashed rgba(0, 236, 213, 1);
2022-06-16 14:33:15 +08:00
background: url('../../../assets/images/inoutBigScreen/numBG.png') no-repeat
2022-06-08 14:51:11 +08:00
100% 100%;
}
}
.pageBottom {
padding: 40px 40px 60px;
overflow: hidden;
height: calc(100% - 100px - 60px - 40px);
.left {
width: calc(65% - 20px);
float: left;
margin-right: 20px;
}
.right {
width: 35%;
float: left;
background-color: rgba(19, 50, 66, 1);
position: relative;
.title {
background: linear-gradient(
to right,
#133242,
rgba(2, 211, 193, 0.4),
#133242
);
width: 80%;
margin: 0 10%;
font-size: 39px;
text-align: center;
height: 65px;
line-height: 65px;
}
}
.leftTop {
height: calc(100% - 330px - 45px);
margin-bottom: 45px;
.blockBox {
width: calc(50% - 10px);
float: left;
height: 100%;
&:first-child {
margin-right: 20px;
}
}
}
}
.currentPersonInfoBox {
padding: 6px 40px 0;
.imgBox {
text-align: center;
img {
width: 217px;
height: 229px;
display: inline-block;
&:first-child {
margin-right: 40px;
}
}
}
.personName {
font-size: 40px;
position: relative;
margin: 10px 0 0;
.inoutType {
position: absolute;
right: 0;
top: 0;
border-radius: 23px;
background-color: rgba(0, 236, 213, 0.6);
width: 80px;
height: 46px;
line-height: 46px;
font-size: 35px;
text-align: center;
}
}
p {
color: #f2f2f2;
margin-top: 5px;
}
}
.companyListBox {
padding: 0 20px 0;
height: calc(100% - 65px - 40px);
overflow: hidden;
margin: 20px 0;
.companyName {
color: #02fbe2;
margin: 0px 0 5px;
}
// .companyInner{
// padding-top: 10px;
// }
.groupBox {
background-color: rgba(20, 43, 60, 1);
font-size: 24px;
color: rgba(242, 242, 242, 100);
margin-bottom: 20px;
p {
display: flex;
align-items: center;
height: 54px;
span {
flex: 1;
padding-left: 30px;
}
}
.groupTotal {
background: linear-gradient(
rgba(34, 115, 131, 0.58),
rgba(15, 63, 76, 0.58)
);
}
}
.groupBox1 {
margin-bottom: 0;
}
}
.typeTxt {
background: linear-gradient(#152739, #097c7d, #152739);
color: #f2f2f2;
width: 62px;
height: 100%;
display: inline-flex;
justify-content: center;
align-items: center;
margin-right: 28px;
float: left;
}
.inListBox {
border-bottom: 1px solid rgba(255, 255, 255, 0.09);
}
.itemList {
height: 165px;
overflow: hidden;
}
.personInner {
width: calc(100% - 90px);
float: left;
padding-top: 20px;
white-space: nowrap;
}
.personBox {
2022-06-16 14:33:15 +08:00
.personBoxItem {
display: flex;
.urseLogo {
position: relative;
.stateLabel {
font-size: 14px;
position: absolute;
left: 10px;
top: 10px;
padding: 0 6px;
height: 24px;
line-height: 24px;
text-align: center;
background-color: #3662d6;
color: #fff;
}
}
}
2022-06-08 14:51:11 +08:00
display: inline-block;
// margin-right: 5px;
min-width: 240px;
img {
width: 110px;
height: 126px;
display: inline-block;
margin-right: 10px;
}
.detail {
display: inline-block;
vertical-align: top;
font-size: 20px;
.name {
font-size: 26px;
margin-bottom: 9px;
// padding-top: 6px;
}
p {
// margin-bottom: 12px;
width: 153px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
2022-06-16 14:33:15 +08:00
.codeResult {
2022-06-08 14:51:11 +08:00
font-weight: normal;
display: inline-block;
width: 60px;
height: 45px;
font-size: 30px;
margin-left: 10px;
background: rgba(233, 255, 220, 0.2);
padding: 0 10px;
border-radius: 6px;
line-height: 45px;
}
.bottomDesc {
font-size: 25px;
color: #f2f2f2;
position: absolute;
left: 50%;
bottom: 5px;
transform: translateX(-50%);
}
.blockLine-top {
position: absolute;
top: -18px;
left: 0;
width: 100%;
}
.blockLine-bottom {
position: absolute;
bottom: -12px;
left: 0;
width: 100%;
transform: rotateX(180deg);
opacity: 0.2;
}
// @media screen and (max-height: 1050px) {
// .currentPersonInfoBox{
// font-size: 20px;
// .personName{
// font-size: 35px;
// }
// .imgBox{
// transform: scale(0.6);
// height: 180px;
// }
// }
// }
</style>