bonus-Certificate-app/pages/certificateExamCenter/certificateApply/applyDetail.vue

365 lines
13 KiB
Vue

<template>
<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
<Navbar2 title="存取证申请" :showRightText="false" :isBack="false" :goTo="'/pages/certificateExamCenter/certificateApply/index'"/>
<view class="apply-view">
<view style="width: 100%;display: flex;margin-bottom: 10rpx;">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">{{apply.name}}提交的申请</view>
<view class="status-view" v-if="apply.applyType==1">存证</view>
<view class="status-view" v-if="apply.applyType==2">取证</view>
</view>
<view class="info-text">证件编号:{{apply.certificateNo}}</view>
<view class="info-text">申请时间:{{apply.createTime}}</view>
<!-- <image style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon1.png"></image> -->
<!-- <image v-if="item.status==2" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon2.png"></image>
<image v-if="item.status==3" style="width: 120rpx;height: 120rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/examIcon3.png"></image> -->
</view>
<view class="apply-view">
<view style="color: #2A2B2F;font-size: 32rpx;margin-right: 20rpx;font-weight: 600;">证件</view>
<view v-for="(item,index) in certificateList" :key="index" class="certificate-box">
<!-- <image style="width: 140rpx;height: 140rpx;position: absolute;top:30%;right: 5%;" src="/static/images/system/statusIcon1.png"></image> -->
<view class="certificate-view1" v-if="item.certificateType==1">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} 至 {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view2" v-if="item.certificateType==2">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} 至 {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
<view class="certificate-view3" v-if="item.certificateType==3">
<view style="display: flex;align-items: center;margin-bottom: 10rpx;">
<view style="font-size: 28rpx;color: #2A2B2F;font-weight: 600;">{{item.certificateTypeName}}</view>
<view style="color:#64686E;margin-left: 10px;font-size: 26rpx;">{{item.certificateNo}}</view>
<view class="status-view" style="margin-left: 10px;">{{item.stateName}}</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">有效期</view>
<view class="text-view" style="color: #2A2B2F;">{{ item.issueDay }} 至 {{ item.issueLifespan }}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">姓名 </view>
<view class="text-view" style="color: #2A2B2F;">{{item.name}}</view>
</view>
</view>
<view style="width: 100%;margin: 10rpx 0;display: flex;align-items: center;">
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">证件柜</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceName||'无'}}</view>
</view>
<view style="width: 50%;">
<view class="text-view" style="color: #979B9F;">槽位 </view>
<view class="text-view" style="color: #2A2B2F;">{{item.slotNo||'无'}}</view>
</view>
</view>
<view class="text-view" style="color: #979B9F;">位置</view>
<view class="text-view" style="color: #2A2B2F;">{{item.deviceAddr||'无'}}</view>
</view>
</view>
</view>
<view class="apply-view">
<view class="apply-info" v-if="apply.applyType==1">
<view class="apply-info-label">证件柜</view>
<view class="apply-info-text">
<text>{{apply.deviceName}}</text>
</view>
</view>
<view class="apply-info">
<view class="apply-info-label">证件用途</view>
<view class="apply-info-text">
<text v-if="apply.applyReason==1">公事</text>
<text v-if="apply.applyReason==2">私事</text>
</view>
</view>
<view class="apply-info">
<view class="apply-info-label">事由</view>
<view class="apply-info-text">{{apply.applyDetail}}</view>
</view>
<view class="apply-info" v-if="apply.applyType==2">
<view class="apply-info-label">计划出国(境)地点</view>
<view class="apply-info-text">{{apply.exitAddr}}</view>
</view>
<view class="apply-info" v-if="apply.applyType==2">
<view class="apply-info-label">计划出国(境)日期</view>
<view class="apply-info-text">{{apply.exitTime}}</view>
</view>
<view class="apply-info" v-if="apply.applyType==2">
<view class="apply-info-label">计划回国(境)日期</view>
<view class="apply-info-text">{{apply.entryTime}}</view>
</view>
<view class="apply-info" v-if="apply.applyType==2">
<view class="apply-info-label">允许他人代办</view>
<view class="apply-info-text">
<text v-if="apply.isThrid==1">是</text>
<text v-if="apply.isThrid==2">否</text>
</view>
</view>
<view class="apply-info" v-if="apply.isThrid==1">
<view class="apply-info-label">代办人姓名</view>
<view class="apply-info-text">{{apply.thridIdName}}</view>
</view>
<view class="apply-info" v-if="apply.isThrid==1">
<view class="apply-info-label">代办人身份证号</view>
<view class="apply-info-text">{{apply.thridIdNumber}} </view>
</view>
<view class="apply-info">
<view class="apply-info-label">备注</view>
<view class="apply-info-text">{{apply.remark}}</view>
</view>
<view class="apply-info" style="height: 120px;">
<view class="apply-info-label">附件</view>
<view class="apply-info-text">
<view class="img-box" v-if="apply.fileUrl!=''">
<view style="width: 110rpx;height: 110rpx;margin-right: 20rpx;" v-for="(imgItem,imgIndex) in apply.fileUrl.split(',')" :key="imgIndex">
<image :src="imgItem" mode="" style="width: 100rpx;height: 100rpx;" @click="opePopup(imgItem)"></image>
</view>
</view>
<text v-else>无附件</text>
</view>
</view>
</view>
<view style="width: 100%;background: #fff;padding: 20rpx;">
<view style="font-weight: 600;">流程</view>
<u-steps :current="currentIndex" direction="column" style="margin: 20rpx;">
<u-steps-item v-for="(item,index) in checkProcess" :key="index" :title="item.createBy+' '+item.processName">
<view slot="desc">
<text v-if="item.checkState==0" style="color: #000;">未处理</text>
<text v-if="item.checkState==1" style="color: rgb(31, 114, 234);">同意</text>
<text v-if="item.checkState==2" style="color: rgb(230, 0, 68);">拒绝</text>
<text style="margin-left: 20rpx;font-size: 24rpx;">{{item.createTime}}</text>
</view>
</u-steps-item>
</u-steps>
</view>
<view style="width: 100%;padding: 20rpx;margin: 40rpx auto;background: #fff;" v-if="apply.applyState==0">
<view @click="submitRevoke" style="width: 92%;height: 80rpx;margin: 20rpx auto;background: #E60044;color: #fff;border-radius: 10rpx;text-align: center;line-height: 80rpx;" >
撤销申请
</view>
</view>
<u-popup :show="showPic" mode="center" @close="showPic=false">
<image :src="imagerUrl" mode="aspectFit" style="height: 99vh;width: 99vw;" @click="showPic=false"></image>
</u-popup>
</template>
<script>
import { revokeCertificateApplyApi,checkProcessCertificateApplyApi } from '@/api/certificateExamCenter/index.js';
export default {
data() {
return {
fontValue:uni.getStorageSync('fontSize') || 8,
show:false,
// 单选数据源
checkBoxLocalData: [{text: '存证',value: 1}, {text: '取证',value: 0}],
checkBoxLocalData2: [{text: '公事',value: 1}, {text: '私事',value: 2}],
checkBoxLocalData3: [{text: '是',value: 1}, {text: '否',value: 2}],
isSumbit:false,
apply:{
applyType:1,
applyReason:1,
applyLocation:"",
isThrid:1,
thridId:"",
thridName:"",
thridIdNumber:"",
applyDetail:"",
exitAddr:"",
exitTime:"",
entryTime:"",
remark:"",
certificateNos:[],
},
checkProcess:[],
currentIndex:0,
showPic:false,
imagerUrl:"",
certificateList:[]
}
},
onLoad(options) {
this.apply = JSON.parse(options.apply)
console.log(this.apply)
this.certificateList = this.apply.details;
console.log(this.certificateList)
this.getCheckProcess()
},
methods: {
async getCheckProcess(){
let param = {
"checkId":this.apply.checkId
}
const res = await checkProcessCertificateApplyApi(param);
console.log("getCheckProcess",res)
if(res.code==200){
this.checkProcess = res.data||[];
let index = res.data.findIndex(v=>v.checkState==0)
if(index==-1){
this.currentIndex = 3
}else{
this.currentIndex = index
}
}else{
this.checkProcess = []
}
},
async submitRevoke(){
let param = {
"checkId":this.apply.checkId
}
const res = await revokeCertificateApplyApi(param);
if(res.code==200){
uni.$u.toast(`操作成功!`)
setTimeout(()=>{
uni.navigateBack()
this.isSumbit=false
},500)
}else{
this.isSumbit=false
uni.$u.toast(`操作失败!`)
}
},
opePopup(item){
this.imagerUrl = item;
this.showPic = true
}
}
}
</script>
<style lang="scss">
page {
background-color: #F5F5F5;
}
.apply-view{
width: 100%;
height: auto;
margin: 40rpx auto;
background: #FFF;
padding: 20rpx;
}
.apply-item{
width: 100%;
height: 80px;
padding: 20rpx;
background: #FFF;
border-bottom: 1px solid rgba(209,211,215,0.5);
font-size: 28rpx;
}
.certificate-box{
width: 96%;
// height: 420rpx;
margin: 20rpx auto;
position: relative;
}
.certificate-view1{
width: 100%;
height: 100%;
padding: 20rpx;
background-image: url('@/static/images/system/certificate1.png');
background-size: 100% 100%;
}
.certificate-view2{
width: 100%;
height: 100%;
padding: 20rpx;
background-image: url('@/static/images/system/certificate2.png');
background-size: 100% 100%;
}
.certificate-view3{
width: 100%;
height: 100%;
padding: 20rpx;
background-image: url('@/static/images/system/certificate3.png');
background-size: 100% 100%;
}
.status-view{
padding: 5rpx 10rpx;
background: #BEDAFF;
color: #1F72EA;
font-size: 24rpx;
border-radius: 8rpx;
}
.text-view{
margin-bottom: 10rpx;font-size: 28rpx;
}
.apply-info{
width: 100%;
height: auto;
padding: 10rpx 20rpx;
}
.apply-info-label{
color: #64686E;
font-size: 24rpx;
margin-bottom: 10rpx;
}
.apply-info-text{
color: #2A2B2F;
font-size: 28rpx;
}
.img-box{
width: 94%;
margin: 10px auto;
display: flex;
align-items: center;
height: auto;
margin-bottom: 10px;
}
</style>