| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">丁恩凯的访客申请</view> |
| | | <view class="desc">等待我处理</view> |
| | | <view class="status">审批中</view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="emyty"></view> |
| | | <view class="module_list"> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">{{info.driverName}}的入园预约</view> |
| | | <view class="desc">{{info.carCodeFront}}</view> |
| | | <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view> |
| | | <image v-if="info.status == 2" class="icon" src="../../static/ic_passed@2x.png" mode=""></image> |
| | | <image v-if="info.status == 3" class="icon" src="../../static/ic_refused@2x.png" mode=""></image> |
| | | </view> |
| | | <!-- --> |
| | | <view class="emyty"></view> |
| | | <view class="module_list"> |
| | | <view class="item"> |
| | | <view class="label">入园原因</view> |
| | | <view class="value">{{info.inReason}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">合同/单据编号</view> |
| | | <view class="value">{{info.contractNum}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">拜访人</view> |
| | | <view class="value">廖成瑶</view> |
| | | <view class="label">到场时间</view> |
| | | <view class="value" v-if="info.arriveDate">{{info.arriveDate.slice(0,16)}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">预计入/离厂时间</view> |
| | | <view class="value">05/01 8:00 - 05/01 18:00</view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="item"> |
| | | <view class="label">访客信息</view> |
| | | <view class="value"> |
| | | <image class="avatar" src="@/static/logo@2x.png" mode="widthFix"></image> |
| | | <view class="info"> |
| | | <text class="name">孙志 18177665678</text> |
| | | <text>身份证号:3309****2910</text> |
| | | <text>入园车辆:皖A88789</text> |
| | | </view> |
| | | <view class="label">准运证/运单照片</view> |
| | | <view class="value"> |
| | | <image |
| | | v-if="info.transportImg" |
| | | class="avatar_wrap" |
| | | @click="priviewImage(info.prefixUrl + info.transportImg)" |
| | | :src="info.prefixUrl + info.transportImg" |
| | | ></image> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">公司名称</view> |
| | | <view class="value">中国移动</view> |
| | | <view class="label">作业类型</view> |
| | | <view class="value">{{info.inType == 0 ? '整托盘' : '件烟'}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">施工人员</view> |
| | | <view class="value">否</view> |
| | | <view class="label">总运数量</view> |
| | | <view class="value">{{info.totalNum}}万支</view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="item"> |
| | | <view class="label">司机姓名</view> |
| | | <view class="value">{{info.driverName}} |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">手机号</view> |
| | | <view class="value">{{info.driverPhone}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="label">来访事由</view> |
| | | <view class="value">业务洽谈</view> |
| | | <view class="label">车牌照</view> |
| | | <view class="value">前 {{info.carCodeFront}},后 {{info.carCodeBack}}</view> |
| | | </view> |
| | | </view> |
| | | <!-- 流程 --> |
| | | <view class="flow_wrap"> |
| | | <view class="flow_title">流程</view> |
| | | <view class="list"> |
| | | <view class="item"> |
| | | <view class="avatar"> |
| | | <image class="img" src="@/static/logo@2x.png" mode="widthFix" /> |
| | | <image class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" /> |
| | | <view class="separate"></view> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">某某提交的拜访申请</view> |
| | | <view class="time">time</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>李东(<text class="status">处理中</text>)</text> |
| | | </view> |
| | | <view class="remark">同意放行</view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="avatar"> |
| | | <image class="img" src="@/static/logo@2x.png" mode="widthFix" /> |
| | | <image class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" /> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">某某提交的拜访申请</view> |
| | | <view class="time">time</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>李东(<text class="status">处理中</text>)</text> |
| | | </view> |
| | | <view class="carbon"> |
| | | <view class="carbon_item" v-for="i in 12"> |
| | | <image src="@/static/logo@2x.png" mode="widthFix"></image> |
| | | <view class="text">name</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="main_footer"> |
| | | <view class="btn" @click="handleSub('0')">拒绝</view> |
| | | <view class="btn agree" @click="handleSub('1')">同意</view> |
| | | </view> |
| | | |
| | | <!-- --> |
| | | <u-popup :show="showApprModal" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="showApprModal = false"> |
| | | <view class="appr_modal"> |
| | | <view class="title">同意</view> |
| | | <textarea placeholder="同意说明,非必填" placeholder-class="placeholder9" /> |
| | | <view class="main_footer"> |
| | | <view class="btn" @click="showApprModal = false">取消</view> |
| | | <view class="btn agree">提交</view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | </view> |
| | | </view> |
| | | <!-- 流程 --> |
| | | <view class="flow_wrap"> |
| | | <view class="flow_title">流程</view> |
| | | <view class="list" v-if="info.approveDateVO != null && info.approveDateVO.approveList != null"> |
| | | <view class="item" v-for="item,index in info.approveDateVO.approveList"> |
| | | <view v-if="index != info.approveDateVO.approveList.length - 1" class="separate"></view> |
| | | <view class="avatar_wrap"> |
| | | <image |
| | | class="img" |
| | | :src=" |
| | | item.faceImg |
| | | ? item.faceImg |
| | | : require('@/static/meeting/common/default_user@2x.png') |
| | | " |
| | | /> |
| | | <image |
| | | v-if="item.status == 2" |
| | | class="status" |
| | | src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" |
| | | /> |
| | | <image |
| | | v-if="item.status == 3" |
| | | class="status" |
| | | src="@/static/staff/liucheng_fail@2x.png" |
| | | mode="widthFix" |
| | | /> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">{{ item.title }}</view> |
| | | <view class="time">{{item.createDate}}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>{{item.memberName}}<text v-if="item.statusInfo" class="status">({{item.statusInfo}})</text></text> |
| | | </view> |
| | | <view v-if="item.approveType == 1 || item.approveType == 0" class="carbon"> |
| | | <view class="carbon_item" v-for="child in item.approveList" |
| | | :key="child.id"> |
| | | <image :src=" |
| | | child.faceImg |
| | | ? child.faceImg |
| | | : require('@/static/meeting/common/default_user@2x.png') |
| | | "></image> |
| | | <view class="text">{{ child.memberName }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="emyty"></view> |
| | | <view class="main_footer"> |
| | | <view v-if="info.status == 0 || info.status == 1" class="btn" @click="handleCancel">撤回申请</view> |
| | | <view v-if="info.status == 0 || info.status == 1" class="btn agree" @click="handleEdit">修改</view> |
| | | <view v-if="info.status == 3" class="btn agree aga" @click="handleAga">再次申请</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { driverApplyDetail, driverCarRevoke } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | | showApprModal: false, |
| | | param: {} |
| | | } |
| | | data() { |
| | | return { |
| | | showApprModal: false, |
| | | info: {}, |
| | | statusMap: { |
| | | 0: '待审批', |
| | | 1: '审批中', |
| | | 2: '已通过', |
| | | 3: '已拒绝', |
| | | 4: '已取消', |
| | | }, |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.getDetail(option.id) |
| | | }, |
| | | methods: { |
| | | handleSub(flag) { |
| | | // this.param.flag = |
| | | if (flag === '1') { |
| | | methods: { |
| | | priviewImage(url) { |
| | | uni.previewImage({ |
| | | urls: [url] |
| | | }) |
| | | }, |
| | | handleCancel(){ |
| | | const { info } = this |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: '您确认要撤回当前申请吗?', |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | driverCarRevoke({ |
| | | id: info.id, info: '' |
| | | }).then(() => { |
| | | this.getDetail(info.id) |
| | | }) |
| | | } else if (res.cancel) { |
| | | console.log('用户点击取消'); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | handleEdit(){ |
| | | uni.navigateTo({ |
| | | url: '/pages/driver/reserved?id=' + this.info.id |
| | | }) |
| | | }, |
| | | handleAga(){ |
| | | const { info } = this |
| | | uni.navigateTo({ |
| | | url: `/pages/driver/reserved?id=${info.id}&type=reject` |
| | | }) |
| | | }, |
| | | getDetail(id) { |
| | | driverApplyDetail({id}).then(res => { |
| | | this.info = res.data |
| | | if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){ |
| | | this.info.approveDateVO.approveList.forEach(item => { |
| | | if(item.approveList && item.approveList.length == 1 && item.type !== 1){ |
| | | item.title = item.approveList[0].title |
| | | item.faceImg = item.approveList[0].faceImg |
| | | item.memberName = item.approveList[0].memberName |
| | | item.statusInfo = item.approveList[0].statusInfo |
| | | item.approveList = [] |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | handleSub(flag) { |
| | | if (flag === '1') { |
| | | |
| | | } else { |
| | | } else { |
| | | |
| | | } |
| | | this.showApprModal = true |
| | | } |
| | | }, |
| | | } |
| | | this.showApprModal = true |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | <style> |
| | | page { |
| | | background-color: #F7F7F7; |
| | | background-color: #f7f7f7; |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | | .main_app { |
| | | background-color: #fff; |
| | | padding-bottom: 0; |
| | | background-color: #fff; |
| | | padding-bottom: 0; |
| | | |
| | | .flow_wrap { |
| | | padding: 30rpx 0; |
| | | .flow_wrap { |
| | | padding: 30rpx 0; |
| | | |
| | | .flow_title { |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 24rpx; |
| | | } |
| | | .flow_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 24rpx; |
| | | } |
| | | |
| | | .list { |
| | | .item { |
| | | display: flex; |
| | | margin-bottom: 48rpx; |
| | | |
| | | .avatar { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | position: relative; |
| | | margin-right: 20rpx; |
| | | |
| | | .img { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | .status { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: 0; |
| | | bottom: 0; |
| | | } |
| | | |
| | | .separate { |
| | | position: absolute; |
| | | width: 4rpx; |
| | | height: 100%; |
| | | background-color: #EEEEEE; |
| | | left: 50%; |
| | | transform: translate(-50%, 0); |
| | | bottom: -80rpx; |
| | | } |
| | | .list { |
| | | .item { |
| | | display: flex; |
| | | margin-bottom: 48rpx; |
| | | position: relative; |
| | | .separate { |
| | | position: absolute; |
| | | width: 4rpx; |
| | | height: calc( 100% - 52rpx ); |
| | | background-color: #eeeeee; |
| | | left: 40rpx; |
| | | top: 90rpx; |
| | | } |
| | | .avatar_wrap { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | position: relative; |
| | | margin-right: 20rpx; |
| | | |
| | | .content { |
| | | flex: 1; |
| | | .img { |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 4rpx; |
| | | .status { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: 0; |
| | | bottom: 0; |
| | | } |
| | | |
| | | .event { |
| | | font-size: 30rpx; |
| | | } |
| | | } |
| | | |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | } |
| | | .content { |
| | | flex: 1; |
| | | |
| | | .name_wrap { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 4rpx; |
| | | |
| | | .status { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | .event { |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .remark { |
| | | margin-top: 12rpx; |
| | | background-color: #f7f7f7; |
| | | padding: 14rpx 20rpx; |
| | | border-radius: 8rpx; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | .carbon{ |
| | | display: flex; |
| | | width: 590rpx; |
| | | overflow-x: auto; |
| | | margin-top: 12rpx; |
| | | .carbon_item{ |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | | width: 100rpx; |
| | | image{ |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | margin: 0 auto; |
| | | } |
| | | view{ |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | } |
| | | |
| | | .module_list { |
| | | .item { |
| | | padding: 30rpx 0; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | .name_wrap { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | |
| | | .label { |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | .status { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | |
| | | .value { |
| | | font-size: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | .remark { |
| | | margin-top: 12rpx; |
| | | background-color: #f7f7f7; |
| | | padding: 14rpx 20rpx; |
| | | border-radius: 8rpx; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | .carbon { |
| | | display: flex; |
| | | width: 590rpx; |
| | | overflow-x: auto; |
| | | margin-top: 12rpx; |
| | | .carbon_item { |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | | width: 100rpx; |
| | | image { |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | margin: 0 auto; |
| | | border-radius: 50%; |
| | | } |
| | | view { |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .avatar { |
| | | margin-right: 20rpx; |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 8rpx; |
| | | border: 2rpx solid #E5E5E5; |
| | | } |
| | | .module_list { |
| | | .item { |
| | | padding: 30rpx 0; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | |
| | | .info { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | .label { |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .name { |
| | | font-size: 30rpx; |
| | | color: #333333; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .value { |
| | | font-size: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .status_wrap { |
| | | position: relative; |
| | | padding: 30rpx 0; |
| | | .avatar_wrap { |
| | | margin-right: 20rpx; |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 8rpx; |
| | | border: 2rpx solid #e5e5e5; |
| | | } |
| | | |
| | | .name { |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | margin-bottom: 20rpx; |
| | | color: #222222; |
| | | } |
| | | .info { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #ED4545; |
| | | } |
| | | .name { |
| | | font-size: 30rpx; |
| | | color: #333333; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .status { |
| | | .status_wrap { |
| | | position: relative; |
| | | padding: 30rpx 0; |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | margin-bottom: 20rpx; |
| | | color: #222222; |
| | | } |
| | | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | |
| | | .status { |
| | | position: absolute; |
| | | right: -30rpx; |
| | | top: 0; |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | padding: 0 32rpx; |
| | | border-radius: 0rpx 0rpx 0rpx 30rpx; |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | } |
| | | .icon{ |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | right: -30rpx; |
| | | top: 0; |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | padding: 0 32rpx; |
| | | border-radius: 0rpx 0rpx 0rpx 30rpx; |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | right: 0rpx; |
| | | top: 20rpx; |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .main_footer { |
| | | padding-bottom: 64rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | .main_footer { |
| | | padding-bottom: 64rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .btn { |
| | | width: 336rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: #ffffff; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #999999; |
| | | font-size: 32rpx; |
| | | text-align: center; |
| | | margin: 16rpx 0; |
| | | } |
| | | |
| | | .btn { |
| | | width: 336rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: #FFFFFF; |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #999999; |
| | | font-size: 32rpx; |
| | | text-align: center; |
| | | margin: 16rpx 0; |
| | | .agree { |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | .aga{ |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .agree { |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | } |
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | |
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 40rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .title { |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 40rpx; |
| | | text-align: center; |
| | | } |
| | | textarea { |
| | | box-sizing: border-box; |
| | | width: 690rpx; |
| | | background-color: #f7f7f7; |
| | | font-size: 28rpx; |
| | | color: #333333; |
| | | padding: 24rpx; |
| | | border-radius: 8rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | } |
| | | |
| | | textarea { |
| | | box-sizing: border-box; |
| | | width: 690rpx; |
| | | background-color: #f7f7f7; |
| | | font-size: 28rpx; |
| | | color: #333333; |
| | | padding: 24rpx; |
| | | border-radius: 8rpx; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | } |
| | | |
| | | .emyty { |
| | | width: 750rpx; |
| | | height: 20rpx; |
| | | background-color: #f7f7f7; |
| | | margin: 0 -30rpx; |
| | | } |
| | | .emyty { |
| | | width: 750rpx; |
| | | height: 20rpx; |
| | | background-color: #f7f7f7; |
| | | margin: 0 -30rpx; |
| | | } |
| | | } |
| | | </style> |