【前端】印包客H5
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
5.5 KiB

<template>
<view class="content">
<view class="flex-col group_4">
<view class="flex-row group_5">
<image src="/static/imgs/device-info/logo.png" class="image_4" />
<text class="text_4">印包客</text>
</view>
<view class="flex-row group_6">
<image src="/static/imgs/device-info/factory-avatar.png" class="image_5" />
<view class="flex-col group_7">
<text class="text_5">{{ userInfo.companyName || 'xxx' }} 的分享</text>
<text class="text_6">{{ userInfo.name || userInfo.mobile || 'xxx' }}</text>
</view>
</view>
<view class="flex-col section_1">
<view class="flex-col items-center button">
<qn-easyinput :inputBorder="false" v-model="password" placeholder="请输入访问密码" text="center"></qn-easyinput>
</view>
<view class="flex-col items-center button_1" @click="checkPassword">
<text>立即访问</text>
</view>
<text class="text_9">{{ expireTip }}</text>
</view>
</view>
</view>
</template>
<script>
import { go2, back } from '@/utils/hook.js'
import { difTime } from '@/utils/index.js'
import { checkShareId, checkSharePassword } from '@/apis/deviceApi'
import { isEncrypt } from '@/enums/index.js'
export default {
data() {
return {
shareId: null,
mechanicalEquipmentId: null,
isValid: false,
expireTime: null,
password: '',
userInfo: {
name: '',
companyName: '',
mobile: ''
}
}
},
methods: {
go2,
back
},
onLoad(options) {
if (options.shareId) {
this.shareId = options.shareId
} else {
uni.showModal({
title: '分享id不存在,请询问印包厂',
icon: 'error'
})
}
},
mounted() {
this.check()
},
computed: {
expireTip() {
if (this.isValid) {
return `${this.expireTime.hours}小时${this.expireTime.minutes}分钟后过期`
}
return '该分享已到期,请重新联系印包厂'
}
},
methods: {
check() {
if (this.shareId) {
checkShareId({ id: this.shareId }).then((res) => {
if (res && res.expireTime) {
this.userInfo.name = res.userName
this.userInfo.companyName = res.enterpriseName
this.userInfo.mobile = res.userMobile
this.mechanicalEquipmentId = res.mechanicalEquipmentId
// 先判断是否过期
const { beyond, hours, minutes } = difTime(Date.now(), res.expireTime)
if (beyond) {
this.isValid = false
return
} else {
this.isValid = true
this.expireTime = {
hours,
minutes
}
}
if (res.encryptOrNot == isEncrypt.NO) {
this.jumpDevice()
}
}
})
}
},
jumpDevice() {
go2(
'device-production-detail',
{
id: this.mechanicalEquipmentId
},
true
)
},
checkPassword() {
if (!this.isValid) {
uni.showToast({
title: '该分享已到期,请重新联系印包厂',
icon: 'none'
})
return
}
checkSharePassword({
id: this.shareId,
password: this.password
}).then((res) => {
if (res) {
this.jumpDevice()
} else {
uni.showToast({
title: '密码错误',
icon: 'error'
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
.content {
width: 750rpx;
padding-top: 128rpx;
.group_4 {
padding-top: 32rpx;
flex: 1 1 auto;
overflow-y: auto;
.group_5 {
padding: 0 39rpx;
color: rgb(0, 0, 0);
font-size: 42rpx;
font-weight: 500;
line-height: 59rpx;
letter-spacing: 6rpx;
white-space: nowrap;
.image_4 {
width: 67rpx;
height: 81rpx;
}
.text_4 {
margin-left: 22rpx;
align-self: center;
}
}
.group_6 {
margin-top: 40rpx;
padding: 0 32rpx;
.image_5 {
width: 80rpx;
height: 80rpx;
}
.group_7 {
margin: 4rpx 0 4rpx 16rpx;
flex: 1 1 auto;
.text_5 {
color: rgb(51, 51, 51);
font-size: 30rpx;
font-weight: 500;
line-height: 42rpx;
white-space: nowrap;
}
.text_6 {
color: rgb(136, 136, 136);
font-size: 22rpx;
line-height: 30rpx;
white-space: nowrap;
}
}
}
.section_1 {
margin-top: 24rpx;
padding: 131rpx 80rpx 848rpx;
background-color: rgb(255, 255, 255);
border-radius: 32rpx 32rpx 0px 0px;
.button {
padding: 26rpx 0;
color: rgb(85, 85, 85);
font-size: 30rpx;
font-weight: 500;
line-height: 42rpx;
white-space: nowrap;
background-color: rgb(247, 248, 250);
border-radius: 47rpx;
}
.button_1 {
margin-top: 64rpx;
padding: 26rpx 0;
color: rgb(255, 255, 255);
font-size: 30rpx;
font-weight: 500;
line-height: 42rpx;
white-space: nowrap;
background-color: rgb(0, 122, 255);
border-radius: 47rpx;
}
.text_9 {
margin-top: 22rpx;
align-self: center;
color: rgb(136, 136, 136);
font-size: 22rpx;
line-height: 30rpx;
white-space: nowrap;
}
}
}
}
</style>