401 lines
10 KiB
Vue
401 lines
10 KiB
Vue
<template>
|
||
<view class="bodyContainer">
|
||
<uni-nav-bar @clickLeft="goBack()" class="nav-bar" height="110rpx" leftWidth="200rpx" leftText="来访项目"
|
||
leftIcon="left" border backgroundColor="#2cade8" color="#fff" fixed statusBar shadow></uni-nav-bar>
|
||
<view class="wrap-view wrap-top">
|
||
<view class="item title"> <text class="blueLine"></text>项目信息:</view>
|
||
<view class="item">
|
||
<view class="title">来访事由</view>
|
||
<view class="content">
|
||
<text>{{purposeOptions[formData.purpose]}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访状态</view>
|
||
<view class="content">
|
||
<text>{{stateOptions[formData.state]}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访概述</view>
|
||
<view class="content">
|
||
<text>{{formData.name}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访详述</view>
|
||
<view class="content">
|
||
<text>{{formData.description}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访时间</view>
|
||
<view class="content">
|
||
<text>{{formData.visit_time}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">离开时间</view>
|
||
<view class="content">
|
||
<text>{{formData.leave_time}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">接待人</view>
|
||
<view class="content">
|
||
<text v-if="formData.receptionist">{{formData.receptionist_.name}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访单位</view>
|
||
<view class="content">
|
||
<text>{{formData.company}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访级别</view>
|
||
<view class="content">
|
||
<text>{{levelOptions[formData.level]}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="title">来访人数</view>
|
||
<view class="content">
|
||
<text>{{formData.count_people}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="wrap-view wrap-top">
|
||
<view class="item title"> <text class="blueLine"></text>人员列表:</view>
|
||
<view class="visitorsWrap">
|
||
<view class="visitorsItem itemTitle">
|
||
<text class="visitorCell">姓名</text>
|
||
<text class="visitorCell">主访</text>
|
||
<text class="visitorCell">操作</text>
|
||
</view>
|
||
<view class="visitorsItem" v-for="item in visitorsList" :key="item.id">
|
||
<text class="visitorCell" style="color:blue" @click="viewPeople(item)">{{item.visitor_.name}}</text>
|
||
<text class="visitorCell">
|
||
<span v-if="item.is_main">是</span>
|
||
</text>
|
||
<view class="visitorCell">
|
||
<view v-if="formData.state == 40">
|
||
<text class="bindBtn" @click="bindBtl(item,10)" v-if="item.visitor_.blt_===null">绑卡</text>
|
||
<text class="bindBtn" @click="bindBtl(item,20)" v-else>解绑</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view id="visitorWrap" v-if="visitorDetailLimited">
|
||
<view class="visitorContainer">
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">姓名:</view><view>{{visitorItem.visitor_.name}}</view>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">手机:</view><view>{{visitorItem.visitor_.phone}}</view>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">头像:</view>
|
||
<image :src="visitorItem.photo" @click="preView(visitorItem.photo)"></image>
|
||
</view>
|
||
<!-- <view class="visitorInfo">
|
||
<view class="infoTitle">返乡时间:</view><view>{{visitorItem.return_date}}</view>
|
||
</view> -->
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">来源地:</view><view>{{visitorItem.come_place}}</view>
|
||
</view>
|
||
<!-- <view class="visitorInfo">
|
||
<view class="infoTitle">行程轨迹:</view><view>{{visitorItem.trip_desc}}</view>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">管控措施:</view><view>{{visitorItem.measure}}</view>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">检测日期:</view><view>{{visitorItem.test_date}}</view>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">是否已报备:</view><view>{{visitorItem.is_reported?'已报备':'未报备'}}</view>
|
||
</view> -->
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">是否主访客:</view><view>{{visitorItem.is_main?'是':'否'}}</view>
|
||
</view>
|
||
<!-- <view class="visitorInfo">
|
||
<view class="infoTitle">健康码:</view>
|
||
<view v-if="visitorItem.health_code==''">未上传</view>
|
||
<image v-else :src="visitorItem.health_code" @click="preView(visitorItem.health_code)"></image>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">行程码:</view>
|
||
<view v-if="visitorItem.travel_code==''">未上传</view>
|
||
<image v-else :src="visitorItem.travel_code" @click="preView(visitorItem.travel_code)"></image>
|
||
</view>
|
||
<view class="visitorInfo">
|
||
<view class="infoTitle">核酸报告:</view>
|
||
<view v-if="visitorItem.test_report==''">未上传</view>
|
||
<image v-else :src="visitorItem.test_report" @click="preView(visitorItem.test_report)"></image>
|
||
</view> -->
|
||
</view>
|
||
<icon class="closeDetailIcon" type="cancel" size="36" color="#fefefe" @click="closeVisitorDetail"/>
|
||
</view>
|
||
<img-view ref="imgPreView" :imgSrc="preImgSrc" @cancelPreView="cancelPreView"></img-view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import imgView from "@/components/image-view/image-view.vue";
|
||
export default {
|
||
name: "visit",
|
||
components: {
|
||
imgView
|
||
},
|
||
data() {
|
||
return {
|
||
formData:{},
|
||
visitorsList:[],
|
||
purposeOptions: {
|
||
10: "参观",
|
||
20: "拜访",
|
||
30: "面试",
|
||
40: "开会",
|
||
50: "拉送货"
|
||
},
|
||
stateOptions: {
|
||
10: "创建中",
|
||
20: "审批中",
|
||
30: "待入厂",
|
||
40: "进行中",
|
||
50: "已完成",
|
||
60: "已关闭",
|
||
},
|
||
levelOptions: {
|
||
10: "一般",
|
||
20: "重要",
|
||
},
|
||
preImgSrc:null,
|
||
visitorItem:null,
|
||
visitorDetailLimited:false,
|
||
}
|
||
},
|
||
onLoad(params) {
|
||
if (params.visit) {
|
||
this.visitId = params.visit;
|
||
}
|
||
},
|
||
onShow() {
|
||
this.getVisitItem();
|
||
this.getVpeopleList();
|
||
},
|
||
methods: {
|
||
//获取已有游客
|
||
getVpeopleList() {
|
||
let that = this;
|
||
that.$u.api.vmVpeople({
|
||
page: 0,
|
||
visit: that.visitId
|
||
}).then(res => {
|
||
that.visitorsList =res;
|
||
})
|
||
},
|
||
getVisitItem() {
|
||
this.$u.api.visitItem(this.visitId).then(res => {
|
||
this.formData = res;
|
||
})
|
||
},
|
||
bindBtl(row,type){
|
||
let that = this;
|
||
uni.scanCode({
|
||
success: function (res) {
|
||
console.log('条码类型:' + res.scanType);
|
||
console.log('条码内容:' + res.result);
|
||
let form = {};
|
||
form.type = type;
|
||
form.code = res.result;
|
||
form.employee = row.visitor_.employee;
|
||
that.$u.api.thirdBltBind(form).then(res=>{
|
||
debugger;
|
||
uni.showToast({
|
||
title: res,
|
||
icon: "none"
|
||
})
|
||
})
|
||
}
|
||
});
|
||
},
|
||
goBack() {
|
||
uni.navigateBack({
|
||
delta: 1
|
||
})
|
||
},
|
||
viewPeople(item) {
|
||
this.visitorItem = item;
|
||
this.visitorItem.photo = item.visitor_.photo!==''?this.vuex_host + item.visitor_.photo:'';
|
||
// this.visitorItem.health_code = item.health_code!==''?(this.vuex_host + item.health_code):'';
|
||
// this.visitorItem.travel_code = item.travel_code!==''?this.vuex_host + item.travel_code:'';
|
||
// this.visitorItem.test_report = item.test_report!==''?this.vuex_host + item.test_report:'';
|
||
this.visitorDetailLimited = true;
|
||
},
|
||
closeVisitorDetail(){
|
||
this.visitorDetailLimited = false;
|
||
this.visitorItem = null;
|
||
},
|
||
preView(srcImg){
|
||
let imgs = [];
|
||
imgs.push(srcImg)
|
||
uni.previewImage({
|
||
urls: imgs,
|
||
current: 0,
|
||
});
|
||
},
|
||
cancelPreView(){
|
||
this.preImgSrc = '';
|
||
},
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
uni-page-body {
|
||
color: #303133;
|
||
font-size: 15px;
|
||
height: 100%;
|
||
background: #f3fbff;
|
||
}
|
||
.bodyContainer {
|
||
background-color: #f3fbff;
|
||
}
|
||
>>>.uni-navbar__header,
|
||
>>>.uni-status-bar {
|
||
background-image: linear-gradient(254deg,
|
||
#0ca7ee 0%,
|
||
#005aff 100%,
|
||
#2a8cff 100%,
|
||
#54bdff 100%),
|
||
linear-gradient(#e60012,
|
||
#e60012);
|
||
}
|
||
>>>uni-image{
|
||
height: 200upx;
|
||
width: 200upx;
|
||
}
|
||
.my-data {
|
||
background-color: #f3fbff;
|
||
padding-bottom: 227rpx;
|
||
}
|
||
|
||
.nav-bar>>>.uni-navbar-btn-text text {
|
||
font-size: 32rpx !important;
|
||
}
|
||
|
||
.wrap-view {
|
||
width: 720rpx;
|
||
margin: 0 auto;
|
||
background-color: #ffffff;
|
||
border-radius: 10rpx;
|
||
line-height: 94rpx;
|
||
font-family: PingFang-SC-Medium;
|
||
font-size: 30rpx;
|
||
padding-bottom: 30upx;
|
||
}
|
||
.wrap-top{
|
||
line-height: 60upx;
|
||
margin-top: 20upx;
|
||
}
|
||
.item {
|
||
margin: 0rpx 32rpx;
|
||
display: flex;
|
||
margin-top: 10rpx;
|
||
}
|
||
.item.title{
|
||
height: 100upx;
|
||
line-height: 100upx;
|
||
border-bottom: 1upx solid #dddddd;
|
||
}
|
||
.item_bottom_border{
|
||
border-bottom: 1rpx solid #eeeeee;
|
||
}
|
||
|
||
.title {
|
||
color: #212121;
|
||
flex: 1;
|
||
}
|
||
|
||
.content {
|
||
flex: 3;
|
||
color: #666666;
|
||
|
||
}
|
||
.visitorsWrap{
|
||
|
||
}
|
||
|
||
.visitorsItem{
|
||
display: flex;
|
||
font-size: 28upx;
|
||
}
|
||
|
||
.itemTitle{
|
||
height: 80upx;
|
||
font-size: 32upx;
|
||
line-height: 80upx;
|
||
}
|
||
.itemTitle>.visitorCell{
|
||
color: #212121;
|
||
}
|
||
.visitorCell{
|
||
flex: 1;
|
||
color: #666666;
|
||
text-align: center;
|
||
}
|
||
.blueLine{
|
||
height: 24upx;
|
||
width: 10upx;
|
||
background: #2a8cff;
|
||
margin-top: 39upx;
|
||
margin-right: 12upx;
|
||
}
|
||
.bindBtn{
|
||
width: 80upx;
|
||
height: 50upx;
|
||
line-height: 50upx;
|
||
background: #2a8cff;
|
||
display: inline-block;
|
||
border-radius: 16upx;
|
||
color: #ffffff;
|
||
font-size: 25upx;
|
||
}
|
||
#visitorWrap{
|
||
height: 100%;
|
||
width: 100%;
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
background: rgba(0,0,0,.6);
|
||
}
|
||
.visitorContainer{
|
||
position: relative;
|
||
width: 90%;
|
||
left: 5%;
|
||
background: #ffffff;
|
||
padding: 40upx;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
max-height: 80%;
|
||
overflow-y: scroll;
|
||
border-radius: 20upx;
|
||
}
|
||
.visitorInfo{
|
||
display: flex;
|
||
margin: 20upx 0;
|
||
}
|
||
.infoTitle{
|
||
width: 170upx;
|
||
}
|
||
.closeDetailIcon{
|
||
position: absolute;
|
||
bottom: 5%;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
}
|
||
</style>
|