zxz 1 gadu atpakaļ
vecāks
revīzija
f886427b26

+ 369 - 26
pages/task/audit/leave_approve.vue

@@ -65,6 +65,73 @@
 				<view @click='passSubmit()' class="confirm1">确定</view>
 			</view>
 		</view>
+		<view class="content3">
+			<view class="titlez rowz">
+				流程
+			</view>
+			<view v-for="(item,index) in auditList" :key='index' class="audit">
+				<view class="row" v-if='item.desc!="_PLACEHOLDER_"'>
+					<view class="left">
+						<view class="item1">
+							<view class="item-content">{{item.operatorTitle}}</view>
+							<view v-if="item.status=='success'" class='status success'>
+								<u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
+							</view>
+							<view v-if="item.status=='error'" class='status error'>
+								<u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
+							</view>
+							<view v-if="item.status=='question'" class='status question'>
+								<u-icon name="question" color="#f9ae3d" size="24"></u-icon>
+							</view>
+						</view>
+					</view>
+					<view class="right">
+						<view class="right-item">
+							<view class="item2">
+								<view class="name">{{item.desc}}
+								</view>
+								<!-- <view class='time'>{{item.updateDate}}</view> -->
+								<view v-if="item.status=='success'" class="status success">
+									{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
+										v-if='!item.commonStaffs1&&index!=0'>已审核</text></view>
+								<view v-if="item.status=='error'" class="status error">
+									{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
+										v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text>
+								</view>
+								<view v-if="item.status=='question'" class="status question">
+									{{item.commonStaffs1?item.staffscontent:''}}<text
+										v-if='!item.commonStaffs1'>未审核</text></view>
+								<!-- <view  class="status success">吕波(已审核)</view> -->
+
+							</view>
+							<view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0'
+								class='time'>
+								{{item.updateDate}}
+							</view>
+						</view>
+						<view v-if='item.auditMind' class="right-content">
+							{{item.auditMind}}
+						</view>
+					</view>
+					<view v-if='item.commonStaffs1' class="right">
+						<u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28">
+						</u-icon>
+					</view>
+				</view>
+				<view v-if='item.showflow' style='padding:10px 0 0 50px;'>
+					<view class='row2'>
+						<view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
+							<view class="item-content">
+								<u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
+								<u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
+							</view>
+							<view class="name">{{item1.staffName}}</view>
+						</view>
+					</view>
+				</view>
+				<view class="row-line" v-if="index!= auditList.length - 1&&item.desc!='_PLACEHOLDER_'"></view>
+			</view>
+		</view>
 		<u-toast ref="uToast" />
 		<view style='padding:10px;' class='flex bottom-btn'>
 			<u-button @click='reject' type="error" class="btn1" hover-class='none'>驳回</u-button>
@@ -97,11 +164,15 @@
 				leaveType: '',
 				approveStatus: '',
 				status: '',
+				auditList: [],
 				leaveInfo: {
-					id:'',
+					id: '',
 				},
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
 				updateDate: '',
-				dataList: {},
+				dataList: {
+					srcList:[]
+				},
 			}
 		},
 		onBackPress(e) {
@@ -127,17 +198,127 @@
 				}).then(res => {
 					if (res.data.code == 200) {
 						this.dataList = res.data.data
+						this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
+							businessCode: 'QINGJIA-APPROVE',
+							tmpCompId: uni.getStorageSync('pcUserInfo').compId
+						}).then(res1 => {
+							this.$api.doRequest('get', '/commonUser/getHis', {
+								workflowId: res1.data.data[0].id,
+								businessKey: this.id,
+								// branch:that.list.jointVentureParties?that.list.jointVentureParties:'zt'
+							}).then(response => {
+								uni.hideLoading()
+								for (let i = 0; i < response.data.data.length; i++) {
+									this.$set(response.data.data[i], 'status', 'question')
+									// console.log(response.data.data[i].workflowHistoricTasks,i)
+									if (response.data.data[i].commonStaffs) {
+										response.data.data[i].showflow = false
+										response.data.data[i].operatorTitle = response.data.data[i]
+											.desc.substring(0, 2)
+										response.data.data[i].operatorName = response.data.data[i]
+											.desc
+										response.data.data[i].staffscontent = '共' + response.data
+											.data[i].commonStaffs.length + '人,当前审核' + response.data
+											.data[i].workflowHistoricTasks.length + '人'
+										if (response.data.data[i].workflowHistoricTasks && response
+											.data.data[i].workflowHistoricTasks.length > 0) {
+											if (response.data.data[i].workflowHistoricTasks
+												.length != response.data.data[i].commonStaffs
+												.length) {
+												// response.data.data[i].status='question'
+												this.$set(response.data.data[i], 'status',
+													'question')
+											} else {
+												this.$set(response.data.data[i], 'status',
+													'success')
+												// response.data.data[i].status='success'
+											}
+											response.data.data[i].workflowlen = response.data.data[
+												i].workflowHistoricTasks.length
+											var workflowdata = response.data.data[i]
+												.workflowHistoricTasks
+											var staffsdata = response.data.data[i].commonStaffs
+											for (let q = 0; q < staffsdata.length; q++) {
+												staffsdata[q].status = false
+												staffsdata[q].staffTitle = staffsdata[q].staffName
+												for (let k = 0; k < workflowdata.length; k++) {
+													if (staffsdata[q].staffId == workflowdata[k]
+														.operatorId) {
+														staffsdata[q].status = true
+													}
+												}
+											}
+										}
+										response.data.data[i].commonStaffs1 = response.data.data[i]
+											.commonStaffs
+									} else {
+										if (response.data.data[i].workflowHistoricTasks && response
+											.data.data[i].workflowHistoricTasks.length > 0) {
+											var len = response.data.data[i].workflowHistoricTasks
+												.length - 1
+											if (response.data.data[i].workflowHistoricTasks[len]
+												.approved) {
+												this.$set(response.data.data[i], 'status',
+													'success')
+											} else {
+												this.$set(response.data.data[i], 'status', 'error')
+											}
+											response.data.data[i].operatorTitle = response.data
+												.data[i].workflowHistoricTasks[len].operatorName
+												.substring(response.data.data[i]
+													.workflowHistoricTasks[0].operatorName.length -
+													2)
+											response.data.data[i].operatorName = response.data
+												.data[i].workflowHistoricTasks[len].operatorName
+											var time = new Date(response.data.data[i]
+												.workflowHistoricTasks[len].claimTime)
+											.getTime()
+											response.data.data[i].updateDate = this.$u.timeFormat(
+												time, 'mm.dd hh:MM')
+											response.data.data[i].auditMind = response.data.data[i]
+												.workflowHistoricTasks[len].auditMind
+										} else {
+											this.$set(response.data.data[i], 'status', 'question')
+											// response.data.data[i].status='question'
+											if (response.data.data[i].desc == '总经理助理审核') {
+												response.data.data[i].operatorTitle = '总助'
+											} else if (response.data.data[i].desc == '杜大光审核') {
+												response.data.data[i].operatorTitle = '大光'
+											} else {
+												response.data.data[i].operatorTitle = response.data
+													.data[i].desc.substring(0, 2)
+											}
+											response.data.data[i].operatorName = response.data
+												.data[i].desc
+											var time1 = new Date(response.data.data[i].updateDate)
+												.getTime()
+											response.data.data[i].updateDate = this.$u.timeFormat(
+												time1, 'mm.dd hh:MM')
+											response.data.data[i].auditMind = ''
+										}
+									}
 
+								}
+								console.log(response.data.data)
+								this.auditList = response.data.data
+								var time2 = new Date(this.dataList.createDate).getTime()
+								var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
+								this.auditList.unshift({
+									operatorTitle: this.dataList.empName.substring(0, 2),
+									operatorName: this.dataList.empName,
+									updateDate: time3,
+									auditMind: '',
+									desc: '发起申请',
+									showflow: false,
+									commonStaffs1: null,
+									commonStaffs: null,
+									workflowHistoricTasks: [],
+									status: 'success'
+								})
+							})
+						})
 					}
 				})
-				// this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
-				// 	businessCode: 'QINGJIA-APPROVE',
-				// 	tmpCompId: uni.getStorageSync('pcUserInfo').compId
-				// }).then(res1 => {
-				// 	this.$api.doRequest('get', '/commonUser/getHis', {
-				// 		workflowId: res1.data.data[0].id,
-				// 		businessKey: this.id
-				// 	}).then(response => {})})
 			},
 			close() {
 				this.show = false
@@ -172,25 +353,34 @@
 								auditMind: that.auditMind,
 								needReapply: false
 							}).then(res => {
+								debugger
 								if (res.data.code == 200) {
-									uni.hideLoading()
-									that.$api.msg('审核成功!')
-									that.leaveInfo.id = that.id 
-									that.$api.doRequest('post', '/leaveInfo/api/generateClock', that.leaveInfo
-									).then(res => {
-											if (res.data.code == 200) {
-												that.$api.msg('审核成功!')
-												uni.navigateTo({
-													url: "/pages/task/my_task"
-												})
-											} else {
+									//最后一级审核通过后,添加打卡记录
+									if (that.dataList.approveStatus == '待杜大光审批') {
+										that.leaveInfo.id = that.id
+										that.$api.doRequest('post', '/leaveInfo/api/generateClock',
+											that.leaveInfo
+										).then(res => {
+											if (res.data.code != 200) {
 												that.$api.msg('提交失败')
+												return
 											}
 										})
+										uni.hideLoading()
+										that.$api.msg('审核成功!')
+										setTimeout(function() {
+											uni.navigateBack();
+										}, 2000);
+									}else{
+										uni.hideLoading()
+										that.$api.msg('审核成功!')
+										setTimeout(function() {
+											uni.navigateBack();
+										}, 2000);
+									}
 								} else {
 									that.$api.msg('审核失败!')
 								}
-
 							}).catch(res => {
 								uni.hideLoading()
 								if (res.message) {
@@ -251,9 +441,13 @@
 </script>
 
 <style scoped lang="scss">
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 240rpx 20rpx;
+	}
+
 	.content1 {
 		margin: 10rpx;
-		padding-bottom: 224rpx;
 
 		.title {
 			height: 70rpx;
@@ -325,7 +519,6 @@
 			color: #333333;
 		}
 	}
-
 	//弹出框
 	// .popup {
 	// 	padding: 30rpx;
@@ -344,8 +537,9 @@
 	.uForm_item {
 		padding: 20rpx;
 		background-color: #FFFFFF;
-		margin: 20rpx;
+		margin: 20rpx 0rpx 0rpx 0rpx;
 		border-radius: 20rpx;
+		width: 100%;
 	}
 
 	.rejectText {
@@ -497,7 +691,156 @@
 		}
 	}
 
+	.content3 {
+		background: white;
+		margin: 20rpx 0;
+		border-radius: 20rpx;
+		padding: 20rpx;
+
+		.row {
+			display: flex;
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.item1 {
+					position: relative;
+
+					.item-content {
+						background: #617AE0;
+						width: 44px;
+						height: 44px;
+						border-radius: 22px;
+						line-height: 44px;
+						text-align: center;
+						font-size: 15px;
+						color: #fff;
+					}
+
+					.status {
+						position: absolute;
+						border-radius: 50%;
+						padding: 0px 2px;
+						right: -3px;
+						bottom: -3px;
+						background: #fff;
+					}
+
+					.status.success {
+						border: 1px solid rgb(60, 156, 255);
+					}
+
+					.status.error {
+						border: 1px solid rgb(245, 108, 108);
+					}
+
+					.status.question {
+						border: 1px solid #f9ae3d;
+					}
+				}
+
+			}
+
+			.right {
+				width: 80%;
+				// color: #B0B1B5;
+				margin-top: 10px;
+
+				.right-content {
+					background: #F2F3F7;
+					margin-left: 10px;
+					margin-top: 10px;
+					padding: 10px;
+					border-radius: 5px;
+					color: #B0B1B5;
+				}
+
+				.right-item {
+					display: flex;
+					justify-content: space-between;
+
+					.time {
+						color: #999;
+					}
+
+					.item2 {
+						margin-left: 20rpx;
+						margin-top: -7px;
+
+						.name {
+							font-size: 28rpx;
+							font-weight: 800;
+						}
+
+						.status.success {
+							color: #6CC48C;
+						}
+
+						.status.error {
+							color: rgb(245, 108, 108);
+						}
+
+						.status.question {
+							color: #f9ae3d;
+						}
+					}
+				}
+			}
+		}
+
+		.row2 {
+			display: flex;
+
+			.item-content {
+				background: #22C572;
+				width: 30px;
+				height: 30px;
+				border-radius: 50%;
+				line-height: 30px;
+				text-align: center;
+				font-size: 12px;
+				color: #fff;
+				padding: 0 2px;
+				margin: 0 auto;
+			}
+
+			.status {
+				position: absolute;
+				top: 0;
+				right: 0;
+			}
+		}
+
+		.row-line {
+			width: 1px;
+			height: 40rpx;
+			background: #F2F2F2;
+			margin: 10rpx 50rpx;
+
+		}
+
+		.audit {
+			margin-top: 20rpx;
+		}
+	}
+	.titlez {
+		font-size: 17px;
+		font-weight: 700;
+		height: 35px;
+		border-bottom: 1px solid #EEEEEE;
+	}
+	.rowz{
+		display: flex;
+		justify-content: space-between;
+
+		.right,
+		input {
+			font-size: 28rpx;
+			color: #333333;
+		}
+	}
 	/deep/.u-input__textarea {
-		height: 300rpx !important;
+		height: 200rpx !important;
 	}
 </style>

+ 341 - 4
pages/task/audit/leave_details.vue

@@ -46,6 +46,69 @@
 					</view>
 			</u-form>
 		</view>
+		<view class="content3">
+			<view class="titlez rowz">
+				流程
+			</view>
+			<view v-for="(item,index) in auditList" :key='index' class="audit">
+				<view class="row">
+					<view class="left">
+						<view class="item1">
+							<view class="item-content">{{item.operatorTitle}}</view> 
+							<view v-if="item.status=='success'" class='status success'>
+								<u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
+							</view>
+							<view v-if="item.status=='error'" class='status error'>
+								<u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
+							</view>
+							<view  v-if="item.status=='question'" class='status question'>
+								<u-icon name="question" color="#f9ae3d" size="24"></u-icon>
+							</view>
+						</view>
+					</view>
+					<view class="right">
+						<view class="right-item">
+							<view class="item2">
+								<view class="name">{{item.desc}}
+								</view>
+								<!-- <view class='time'>{{item.updateDate}}</view> -->
+								<view  v-if="item.status=='success'" class="status success">{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text v-if='!item.commonStaffs1&&index!=0'>已审核</text></view>
+								<view  v-if="item.status=='error'" class="status error">{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text></view>
+								<view  v-if="item.status=='question'" class="status question">{{item.commonStaffs1?item.staffscontent:''}}<text v-if='!item.commonStaffs1'>未审核</text></view>
+								<!-- <view  class="status success">吕波(已审核)</view> -->
+								
+							</view>
+							<view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0' class='time'>
+							{{item.updateDate}}
+							</view>
+						</view>
+						<view v-if='item.auditMind' class="right-content">
+							{{item.auditMind}}
+						</view>
+						<view class="flex audit_img">
+							<view v-for="(items,indexs) in item.fileUrl" class="url_css">
+								<image :src="items" mode='aspectFill' class="url_img" @click="auditFile(items)"></image>
+							</view>
+						</view>
+					</view>
+					<view v-if='item.commonStaffs1' class="right">
+						<u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'"  size="28"></u-icon>
+					</view>
+				</view>
+				<view v-if='item.showflow' style='padding:10px 0 0 50px;'>
+					<view class='row2'>
+						<view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
+							<view class="item-content">
+								<u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
+								<u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
+							</view> 
+							<view class="name">{{item1.staffName}}</view> 
+						</view>
+					</view>
+				</view>
+				<view class="row-line" v-if="index!= auditList.length - 1"></view>
+			</view>
+		</view>
 		<view style='padding:10px;' class='flex bottom-btn'>
 			<u-button @click='fanHui' type="success" class="btn1" hover-class='none'>返回</u-button>
 		</view>
@@ -72,9 +135,14 @@
 				leaveDuration:'',
 				leaveType:'',
 				approveStatus:'',
+				auditList: [],
 				status:'',
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
 				updateDate:'',
-				dataList:{},
+				auditMind: '',
+				dataList:{
+					srcList: []
+				},
 			}
 		},
 		// onReady() {
@@ -94,7 +162,124 @@
 				}).then(res => {
 					if (res.data.code == 200) {
 						this.dataList = res.data.data
+					this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
+						businessCode: 'QINGJIA-APPROVE',
+						tmpCompId: uni.getStorageSync('pcUserInfo').compId
+					}).then(res1 => {
+						this.$api.doRequest('get', '/commonUser/getHis', {
+							workflowId: res1.data.data[0].id,
+							businessKey: this.id,
+							// branch:that.list.jointVentureParties?that.list.jointVentureParties:'zt'
+						}).then(response => {
+							uni.hideLoading()
+							for (let i = 0; i < response.data.data.length; i++) {
+								this.$set(response.data.data[i], 'status', 'question')
+								// console.log(response.data.data[i].workflowHistoricTasks,i)
+								if (response.data.data[i].commonStaffs) {
+									response.data.data[i].showflow = false
+									response.data.data[i].operatorTitle = response.data.data[i]
+										.desc.substring(0, 2)
+									response.data.data[i].operatorName = response.data.data[i]
+										.desc
+									response.data.data[i].staffscontent = '共' + response.data
+										.data[i].commonStaffs.length + '人,当前审核' + response.data
+										.data[i].workflowHistoricTasks.length + '人'
+									if (response.data.data[i].workflowHistoricTasks && response
+										.data.data[i].workflowHistoricTasks.length > 0) {
+										if (response.data.data[i].workflowHistoricTasks
+											.length != response.data.data[i].commonStaffs
+											.length) {
+											// response.data.data[i].status='question'
+											this.$set(response.data.data[i], 'status',
+												'question')
+										} else {
+											this.$set(response.data.data[i], 'status',
+												'success')
+											// response.data.data[i].status='success'
+										}
+										response.data.data[i].workflowlen = response.data.data[
+											i].workflowHistoricTasks.length
+										var workflowdata = response.data.data[i]
+											.workflowHistoricTasks
+										var staffsdata = response.data.data[i].commonStaffs
+										for (let q = 0; q < staffsdata.length; q++) {
+											staffsdata[q].status = false
+											staffsdata[q].staffTitle = staffsdata[q].staffName
+											for (let k = 0; k < workflowdata.length; k++) {
+												if (staffsdata[q].staffId == workflowdata[k]
+													.operatorId) {
+													staffsdata[q].status = true
+												}
+											}
+										}
+									}
+									response.data.data[i].commonStaffs1 = response.data.data[i]
+										.commonStaffs
+								} else {
+									if (response.data.data[i].workflowHistoricTasks && response
+										.data.data[i].workflowHistoricTasks.length > 0) {
+										var len = response.data.data[i].workflowHistoricTasks
+											.length - 1
+										if (response.data.data[i].workflowHistoricTasks[len]
+											.approved) {
+											this.$set(response.data.data[i], 'status',
+												'success')
+										} else {
+											this.$set(response.data.data[i], 'status', 'error')
+										}
+										response.data.data[i].operatorTitle = response.data
+											.data[i].workflowHistoricTasks[len].operatorName
+											.substring(response.data.data[i]
+												.workflowHistoricTasks[0].operatorName.length -
+												2)
+										response.data.data[i].operatorName = response.data
+											.data[i].workflowHistoricTasks[len].operatorName
+										var time = new Date(response.data.data[i]
+											.workflowHistoricTasks[len].claimTime)
+										.getTime()
+										response.data.data[i].updateDate = this.$u.timeFormat(
+											time, 'mm.dd hh:MM')
+										response.data.data[i].auditMind = response.data.data[i]
+											.workflowHistoricTasks[len].auditMind
+									} else {
+										this.$set(response.data.data[i], 'status', 'question')
+										// response.data.data[i].status='question'
+										if (response.data.data[i].desc == '总经理助理审核') {
+											response.data.data[i].operatorTitle = '总助'
+										} else if (response.data.data[i].desc == '杜大光审核') {
+											response.data.data[i].operatorTitle = '大光'
+										} else {
+											response.data.data[i].operatorTitle = response.data
+												.data[i].desc.substring(0, 2)
+										}
+										response.data.data[i].operatorName = response.data
+											.data[i].desc
+										var time1 = new Date(response.data.data[i].updateDate)
+											.getTime()
+										response.data.data[i].updateDate = this.$u.timeFormat(
+											time1, 'mm.dd hh:MM')
+										response.data.data[i].auditMind = ''
+									}
+								}
 					
+							}
+							this.auditList = response.data.data
+							var time2 = new Date(this.dataList.createDate).getTime()
+							var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
+							this.auditList.unshift({
+								operatorTitle: this.dataList.empName.substring(0, 2),
+								operatorName: this.dataList.empName,
+								updateDate: time3,
+								auditMind: '',
+								desc: '发起申请',
+								showflow: false,
+								commonStaffs1: null,
+								commonStaffs: null,
+								workflowHistoricTasks: [],
+								status: 'success'
+							})
+						})
+					})
 					}
 				})
 			},
@@ -106,9 +291,12 @@
 </script>
 
 <style scoped lang="scss">
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 240rpx 20rpx;
+	}
 	.content1 {
 		margin: 10rpx;
-		padding-bottom: 120rpx;
 
 		.title {
 			height: 70rpx;
@@ -122,8 +310,8 @@
 
 	.uForm {
 		padding: 0 40rpx;
+		
 	}
-
 	.u-form-item {
 		padding: 0;
 	}
@@ -197,8 +385,9 @@
 	.uForm_item {
 		padding: 20rpx;
 		background-color: #FFFFFF;
-		margin: 20rpx;
+		margin: 20rpx 0rpx 0rpx 0rpx;
 		border-radius: 20rpx;
+		width: 100%;
 	}
 
 	.rejectText {
@@ -236,7 +425,155 @@
 		}
 
 	}
+	.content3 {
+		background: white;
+		margin: 20rpx 0;
+		border-radius: 20rpx;
+		padding: 20rpx;
+
+		.row {
+			display: flex;
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.item1 {
+					position: relative;
+
+					.item-content {
+						background: #617AE0;
+						width: 44px;
+						height: 44px;
+						border-radius: 22px;
+						line-height: 44px;
+						text-align: center;
+						font-size: 15px;
+						color: #fff;
+					}
+
+					.status {
+						position: absolute;
+						border-radius: 50%;
+						padding: 0px 2px;
+						right: -3px;
+						bottom: -3px;
+						background: #fff;
+					}
+
+					.status.success {
+						border: 1px solid rgb(60, 156, 255);
+					}
+
+					.status.error {
+						border: 1px solid rgb(245, 108, 108);
+					}
+
+					.status.question {
+						border: 1px solid #f9ae3d;
+					}
+				}
+
+			}
 
+			.right {
+				width: 80%;
+				// color: #B0B1B5;
+				margin-top: 10px;
+
+				.right-content {
+					background: #F2F3F7;
+					margin-left: 10px;
+					margin-top: 10px;
+					padding: 10px;
+					border-radius: 5px;
+					color: #B0B1B5;
+				}
+
+				.right-item {
+					display: flex;
+					justify-content: space-between;
+
+					.time {
+						color: #999;
+					}
+
+					.item2 {
+						margin-left: 20rpx;
+						margin-top: -7px;
+
+						.name {
+							font-size: 28rpx;
+							font-weight: 800;
+						}
+
+						.status.success {
+							color: #6CC48C;
+						}
+
+						.status.error {
+							color: rgb(245, 108, 108);
+						}
+
+						.status.question {
+							color: #f9ae3d;
+						}
+					}
+				}
+			}
+		}
+
+		.row2 {
+			display: flex;
+
+			.item-content {
+				background: #22C572;
+				width: 30px;
+				height: 30px;
+				border-radius: 50%;
+				line-height: 30px;
+				text-align: center;
+				font-size: 12px;
+				color: #fff;
+				padding: 0 2px;
+				margin: 0 auto;
+			}
+
+			.status {
+				position: absolute;
+				top: 0;
+				right: 0;
+			}
+		}
+
+		.row-line {
+			width: 1px;
+			height: 40rpx;
+			background: #F2F2F2;
+			margin: 10rpx 50rpx;
+
+		}
+
+		.audit {
+			margin-top: 20rpx;
+		}
+	}
+	.titlez {
+		font-size: 17px;
+		font-weight: 700;
+		height: 35px;
+		border-bottom: 1px solid #EEEEEE;
+	}
+	.rowz{
+		display: flex;
+		justify-content: space-between;
+
+		.right,
+		input {
+			font-size: 28rpx;
+			color: #333333;
+		}
+	}
 	.deleteText {
 		text-align: center;
 		color: #AFB3BF;

+ 352 - 10
pages/task/audit/supp_clock_approve.vue

@@ -60,6 +60,73 @@
 			<view @click='passSubmit()' class="confirm1">确定</view>
 		</view>
 	</view>
+	<view class="content3">
+		<view class="titlez rowz">
+			流程
+		</view>
+		<view v-for="(item,index) in auditList" :key='index' class="audit">
+			<view class="row" v-if='item.desc!="_PLACEHOLDER_"'>
+				<view class="left">
+					<view class="item1">
+						<view class="item-content">{{item.operatorTitle}}</view>
+						<view v-if="item.status=='success'" class='status success'>
+							<u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
+						</view>
+						<view v-if="item.status=='error'" class='status error'>
+							<u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
+						</view>
+						<view v-if="item.status=='question'" class='status question'>
+							<u-icon name="question" color="#f9ae3d" size="24"></u-icon>
+						</view>
+					</view>
+				</view>
+				<view class="right">
+					<view class="right-item">
+						<view class="item2">
+							<view class="name">{{item.desc}}
+							</view>
+							<!-- <view class='time'>{{item.updateDate}}</view> -->
+							<view v-if="item.status=='success'" class="status success">
+								{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
+									v-if='!item.commonStaffs1&&index!=0'>已审核</text></view>
+							<view v-if="item.status=='error'" class="status error">
+								{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
+									v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text>
+							</view>
+							<view v-if="item.status=='question'" class="status question">
+								{{item.commonStaffs1?item.staffscontent:''}}<text
+									v-if='!item.commonStaffs1'>未审核</text></view>
+							<!-- <view  class="status success">吕波(已审核)</view> -->
+	
+						</view>
+						<view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0'
+							class='time'>
+							{{item.updateDate}}
+						</view>
+					</view>
+					<view v-if='item.auditMind' class="right-content">
+						{{item.auditMind}}
+					</view>
+				</view>
+				<view v-if='item.commonStaffs1' class="right">
+					<u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28">
+					</u-icon>
+				</view>
+			</view>
+			<view v-if='item.showflow' style='padding:10px 0 0 50px;'>
+				<view class='row2'>
+					<view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
+						<view class="item-content">
+							<u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
+							<u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
+						</view>
+						<view class="name">{{item1.staffName}}</view>
+					</view>
+				</view>
+			</view>
+			<view class="row-line" v-if="index!= auditList.length - 1&&item.desc!='_PLACEHOLDER_'"></view>
+		</view>
+	</view>
 	<u-toast ref="uToast" />
 	<view style='padding:10px;' class='flex bottom-btn'>
 		<u-button @click='reject' type="error" class="btn1" hover-class='none'>驳回</u-button>
@@ -83,13 +150,18 @@
 				border: false,
 				id: "",
 				show: false,
+				auditList: [],
 				auditMind: '',
 				reasonForApplication:'',
 				supplementClockType:'',
 				approveStatus:'',
 				status:'',
 				updateDate:'',
-				dataList:{},
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
+				auditMind: '',
+				dataList:{
+					srcList:[]
+				},
 			}
 		},
 		onBackPress(e) {
@@ -115,7 +187,125 @@
 				}).then(res => {
 					if (res.data.code == 200) {
 						this.dataList = res.data.data
+					this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
+						businessCode: 'BUKA-APPROVE',
+						tmpCompId: uni.getStorageSync('pcUserInfo').compId
+					}).then(res1 => {
+						this.$api.doRequest('get', '/commonUser/getHis', {
+							workflowId: res1.data.data[0].id,
+							businessKey: this.id,
+							// branch:that.list.jointVentureParties?that.list.jointVentureParties:'zt'
+						}).then(response => {
+							uni.hideLoading()
+							for (let i = 0; i < response.data.data.length; i++) {
+								this.$set(response.data.data[i], 'status', 'question')
+								// console.log(response.data.data[i].workflowHistoricTasks,i)
+								if (response.data.data[i].commonStaffs) {
+									response.data.data[i].showflow = false
+									response.data.data[i].operatorTitle = response.data.data[i]
+										.desc.substring(0, 2)
+									response.data.data[i].operatorName = response.data.data[i]
+										.desc
+									response.data.data[i].staffscontent = '共' + response.data
+										.data[i].commonStaffs.length + '人,当前审核' + response.data
+										.data[i].workflowHistoricTasks.length + '人'
+									if (response.data.data[i].workflowHistoricTasks && response
+										.data.data[i].workflowHistoricTasks.length > 0) {
+										if (response.data.data[i].workflowHistoricTasks
+											.length != response.data.data[i].commonStaffs
+											.length) {
+											// response.data.data[i].status='question'
+											this.$set(response.data.data[i], 'status',
+												'question')
+										} else {
+											this.$set(response.data.data[i], 'status',
+												'success')
+											// response.data.data[i].status='success'
+										}
+										response.data.data[i].workflowlen = response.data.data[
+											i].workflowHistoricTasks.length
+										var workflowdata = response.data.data[i]
+											.workflowHistoricTasks
+										var staffsdata = response.data.data[i].commonStaffs
+										for (let q = 0; q < staffsdata.length; q++) {
+											staffsdata[q].status = false
+											staffsdata[q].staffTitle = staffsdata[q].staffName
+											for (let k = 0; k < workflowdata.length; k++) {
+												if (staffsdata[q].staffId == workflowdata[k]
+													.operatorId) {
+													staffsdata[q].status = true
+												}
+											}
+										}
+									}
+									response.data.data[i].commonStaffs1 = response.data.data[i]
+										.commonStaffs
+								} else {
+									if (response.data.data[i].workflowHistoricTasks && response
+										.data.data[i].workflowHistoricTasks.length > 0) {
+										var len = response.data.data[i].workflowHistoricTasks
+											.length - 1
+										if (response.data.data[i].workflowHistoricTasks[len]
+											.approved) {
+											this.$set(response.data.data[i], 'status',
+												'success')
+										} else {
+											this.$set(response.data.data[i], 'status', 'error')
+										}
+										response.data.data[i].operatorTitle = response.data
+											.data[i].workflowHistoricTasks[len].operatorName
+											.substring(response.data.data[i]
+												.workflowHistoricTasks[0].operatorName.length -
+												2)
+										response.data.data[i].operatorName = response.data
+											.data[i].workflowHistoricTasks[len].operatorName
+										var time = new Date(response.data.data[i]
+											.workflowHistoricTasks[len].claimTime)
+										.getTime()
+										response.data.data[i].updateDate = this.$u.timeFormat(
+											time, 'mm.dd hh:MM')
+										response.data.data[i].auditMind = response.data.data[i]
+											.workflowHistoricTasks[len].auditMind
+									} else {
+										this.$set(response.data.data[i], 'status', 'question')
+										// response.data.data[i].status='question'
+										if (response.data.data[i].desc == '总经理助理审核') {
+											response.data.data[i].operatorTitle = '总助'
+										} else if (response.data.data[i].desc == '杜大光审核') {
+											response.data.data[i].operatorTitle = '大光'
+										} else {
+											response.data.data[i].operatorTitle = response.data
+												.data[i].desc.substring(0, 2)
+										}
+										response.data.data[i].operatorName = response.data
+											.data[i].desc
+										var time1 = new Date(response.data.data[i].updateDate)
+											.getTime()
+										response.data.data[i].updateDate = this.$u.timeFormat(
+											time1, 'mm.dd hh:MM')
+										response.data.data[i].auditMind = ''
+									}
+								}
 					
+							}
+							console.log(response.data.data)
+							this.auditList = response.data.data
+							var time2 = new Date(this.dataList.createDate).getTime()
+							var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
+							this.auditList.unshift({
+								operatorTitle: this.dataList.empName.substring(0, 2),
+								operatorName: this.dataList.empName,
+								updateDate: time3,
+								auditMind: '',
+								desc: '发起申请',
+								showflow: false,
+								commonStaffs1: null,
+								commonStaffs: null,
+								workflowHistoricTasks: [],
+								status: 'success'
+							})
+						})
+					})
 					}
 				})
 			},
@@ -155,9 +345,9 @@
 								uni.hideLoading()
 								if (res.data.code == 200) {
 									that.$api.msg('审核成功!')
-									uni.navigateTo({
-										url: "/pages/task/my_task"
-									})
+									setTimeout(function() {
+										uni.navigateBack();
+									}, 2000);
 								} else {
 									that.$api.msg('审核失败!')
 								}
@@ -205,9 +395,9 @@
 							}).then(res => {
 								if (res.data.code == 200) {
 									this.$api.msg('驳回成功!')
-									uni.navigateTo({
-										url: "/pages/task/my_task"
-									})
+									setTimeout(function() {
+										uni.navigateBack();
+									}, 2000);
 									uni.hideLoading()
 								} else {
 									this.$api.msg('驳回失败!')
@@ -223,9 +413,12 @@
 </script>
 
 <style scoped lang="scss">
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 240rpx 20rpx;
+	}
 	.content1 {
 		margin: 10rpx;
-		padding-bottom: 224rpx;
 
 		.title {
 			height: 70rpx;
@@ -316,8 +509,9 @@
 	.uForm_item {
 		padding: 20rpx;
 		background-color: #FFFFFF;
-		margin: 20rpx;
+		margin: 20rpx 0rpx 0rpx 0rpx;
 		border-radius: 20rpx;
+		width: 100%;
 	}
 
 	.rejectText {
@@ -468,8 +662,156 @@
 				}
 			}
 	}
+	.content3 {
+		background: white;
+		margin: 20rpx 0;
+		border-radius: 20rpx;
+		padding: 20rpx;
+
+		.row {
+			display: flex;
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.item1 {
+					position: relative;
+
+					.item-content {
+						background: #617AE0;
+						width: 44px;
+						height: 44px;
+						border-radius: 22px;
+						line-height: 44px;
+						text-align: center;
+						font-size: 15px;
+						color: #fff;
+					}
 
+					.status {
+						position: absolute;
+						border-radius: 50%;
+						padding: 0px 2px;
+						right: -3px;
+						bottom: -3px;
+						background: #fff;
+					}
+
+					.status.success {
+						border: 1px solid rgb(60, 156, 255);
+					}
+
+					.status.error {
+						border: 1px solid rgb(245, 108, 108);
+					}
+
+					.status.question {
+						border: 1px solid #f9ae3d;
+					}
+				}
+
+			}
+
+			.right {
+				width: 80%;
+				// color: #B0B1B5;
+				margin-top: 10px;
+
+				.right-content {
+					background: #F2F3F7;
+					margin-left: 10px;
+					margin-top: 10px;
+					padding: 10px;
+					border-radius: 5px;
+					color: #B0B1B5;
+				}
+
+				.right-item {
+					display: flex;
+					justify-content: space-between;
+
+					.time {
+						color: #999;
+					}
+
+					.item2 {
+						margin-left: 20rpx;
+						margin-top: -7px;
+
+						.name {
+							font-size: 28rpx;
+							font-weight: 800;
+						}
+
+						.status.success {
+							color: #6CC48C;
+						}
+
+						.status.error {
+							color: rgb(245, 108, 108);
+						}
+
+						.status.question {
+							color: #f9ae3d;
+						}
+					}
+				}
+			}
+		}
+
+		.row2 {
+			display: flex;
+
+			.item-content {
+				background: #22C572;
+				width: 30px;
+				height: 30px;
+				border-radius: 50%;
+				line-height: 30px;
+				text-align: center;
+				font-size: 12px;
+				color: #fff;
+				padding: 0 2px;
+				margin: 0 auto;
+			}
+
+			.status {
+				position: absolute;
+				top: 0;
+				right: 0;
+			}
+		}
+
+		.row-line {
+			width: 1px;
+			height: 40rpx;
+			background: #F2F2F2;
+			margin: 10rpx 50rpx;
+
+		}
+
+		.audit {
+			margin-top: 20rpx;
+		}
+	}
+	.titlez {
+		font-size: 17px;
+		font-weight: 700;
+		height: 35px;
+		border-bottom: 1px solid #EEEEEE;
+	}
+	.rowz{
+		display: flex;
+		justify-content: space-between;
+
+		.right,
+		input {
+			font-size: 28rpx;
+			color: #333333;
+		}
+	}
 	/deep/.u-input__textarea {
-		height: 300rpx !important;
+		height: 200rpx !important;
 	}
 </style>

+ 347 - 3
pages/task/audit/supp_clock_details.vue

@@ -35,6 +35,73 @@
 					</view>
 			</u-form>
 		</view>
+		<view class="content3">
+			<view class="titlez rowz">
+				流程
+			</view>
+			<view v-for="(item,index) in auditList" :key='index' class="audit">
+				<view class="row" v-if='item.desc!="_PLACEHOLDER_"'>
+					<view class="left">
+						<view class="item1">
+							<view class="item-content">{{item.operatorTitle}}</view>
+							<view v-if="item.status=='success'" class='status success'>
+								<u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
+							</view>
+							<view v-if="item.status=='error'" class='status error'>
+								<u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
+							</view>
+							<view v-if="item.status=='question'" class='status question'>
+								<u-icon name="question" color="#f9ae3d" size="24"></u-icon>
+							</view>
+						</view>
+					</view>
+					<view class="right">
+						<view class="right-item">
+							<view class="item2">
+								<view class="name">{{item.desc}}
+								</view>
+								<!-- <view class='time'>{{item.updateDate}}</view> -->
+								<view v-if="item.status=='success'" class="status success">
+									{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
+										v-if='!item.commonStaffs1&&index!=0'>已审核</text></view>
+								<view v-if="item.status=='error'" class="status error">
+									{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
+										v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text>
+								</view>
+								<view v-if="item.status=='question'" class="status question">
+									{{item.commonStaffs1?item.staffscontent:''}}<text
+										v-if='!item.commonStaffs1'>未审核</text></view>
+								<!-- <view  class="status success">吕波(已审核)</view> -->
+		
+							</view>
+							<view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0'
+								class='time'>
+								{{item.updateDate}}
+							</view>
+						</view>
+						<view v-if='item.auditMind' class="right-content">
+							{{item.auditMind}}
+						</view>
+					</view>
+					<view v-if='item.commonStaffs1' class="right">
+						<u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28">
+						</u-icon>
+					</view>
+				</view>
+				<view v-if='item.showflow' style='padding:10px 0 0 50px;'>
+					<view class='row2'>
+						<view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
+							<view class="item-content">
+								<u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
+								<u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
+							</view>
+							<view class="name">{{item1.staffName}}</view>
+						</view>
+					</view>
+				</view>
+				<view class="row-line" v-if="index!= auditList.length - 1&&item.desc!='_PLACEHOLDER_'"></view>
+			</view>
+		</view>
 		<view style='padding:10px;' class='flex bottom-btn'>
 			<u-button @click='fanHui' type="success" class="btn1" hover-class='none'>返回</u-button>
 		</view>
@@ -59,7 +126,13 @@
 				approveStatus:'',
 				status:'',
 				updateDate:'',
-				dataList:{},
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
+				auditMind: '',
+				dataList:{
+					srcList:[]
+				},
+				auditList: [],
+				auditMind: '',
 			}
 		},
 		// onReady() {
@@ -79,7 +152,125 @@
 				}).then(res => {
 					if (res.data.code == 200) {
 						this.dataList = res.data.data
+					this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
+						businessCode: 'BUKA-APPROVE',
+						tmpCompId: uni.getStorageSync('pcUserInfo').compId
+					}).then(res1 => {
+						this.$api.doRequest('get', '/commonUser/getHis', {
+							workflowId: res1.data.data[0].id,
+							businessKey: this.id,
+							// branch:that.list.jointVentureParties?that.list.jointVentureParties:'zt'
+						}).then(response => {
+							uni.hideLoading()
+							for (let i = 0; i < response.data.data.length; i++) {
+								this.$set(response.data.data[i], 'status', 'question')
+								// console.log(response.data.data[i].workflowHistoricTasks,i)
+								if (response.data.data[i].commonStaffs) {
+									response.data.data[i].showflow = false
+									response.data.data[i].operatorTitle = response.data.data[i]
+										.desc.substring(0, 2)
+									response.data.data[i].operatorName = response.data.data[i]
+										.desc
+									response.data.data[i].staffscontent = '共' + response.data
+										.data[i].commonStaffs.length + '人,当前审核' + response.data
+										.data[i].workflowHistoricTasks.length + '人'
+									if (response.data.data[i].workflowHistoricTasks && response
+										.data.data[i].workflowHistoricTasks.length > 0) {
+										if (response.data.data[i].workflowHistoricTasks
+											.length != response.data.data[i].commonStaffs
+											.length) {
+											// response.data.data[i].status='question'
+											this.$set(response.data.data[i], 'status',
+												'question')
+										} else {
+											this.$set(response.data.data[i], 'status',
+												'success')
+											// response.data.data[i].status='success'
+										}
+										response.data.data[i].workflowlen = response.data.data[
+											i].workflowHistoricTasks.length
+										var workflowdata = response.data.data[i]
+											.workflowHistoricTasks
+										var staffsdata = response.data.data[i].commonStaffs
+										for (let q = 0; q < staffsdata.length; q++) {
+											staffsdata[q].status = false
+											staffsdata[q].staffTitle = staffsdata[q].staffName
+											for (let k = 0; k < workflowdata.length; k++) {
+												if (staffsdata[q].staffId == workflowdata[k]
+													.operatorId) {
+													staffsdata[q].status = true
+												}
+											}
+										}
+									}
+									response.data.data[i].commonStaffs1 = response.data.data[i]
+										.commonStaffs
+								} else {
+									if (response.data.data[i].workflowHistoricTasks && response
+										.data.data[i].workflowHistoricTasks.length > 0) {
+										var len = response.data.data[i].workflowHistoricTasks
+											.length - 1
+										if (response.data.data[i].workflowHistoricTasks[len]
+											.approved) {
+											this.$set(response.data.data[i], 'status',
+												'success')
+										} else {
+											this.$set(response.data.data[i], 'status', 'error')
+										}
+										response.data.data[i].operatorTitle = response.data
+											.data[i].workflowHistoricTasks[len].operatorName
+											.substring(response.data.data[i]
+												.workflowHistoricTasks[0].operatorName.length -
+												2)
+										response.data.data[i].operatorName = response.data
+											.data[i].workflowHistoricTasks[len].operatorName
+										var time = new Date(response.data.data[i]
+											.workflowHistoricTasks[len].claimTime)
+										.getTime()
+										response.data.data[i].updateDate = this.$u.timeFormat(
+											time, 'mm.dd hh:MM')
+										response.data.data[i].auditMind = response.data.data[i]
+											.workflowHistoricTasks[len].auditMind
+									} else {
+										this.$set(response.data.data[i], 'status', 'question')
+										// response.data.data[i].status='question'
+										if (response.data.data[i].desc == '总经理助理审核') {
+											response.data.data[i].operatorTitle = '总助'
+										} else if (response.data.data[i].desc == '杜大光审核') {
+											response.data.data[i].operatorTitle = '大光'
+										} else {
+											response.data.data[i].operatorTitle = response.data
+												.data[i].desc.substring(0, 2)
+										}
+										response.data.data[i].operatorName = response.data
+											.data[i].desc
+										var time1 = new Date(response.data.data[i].updateDate)
+											.getTime()
+										response.data.data[i].updateDate = this.$u.timeFormat(
+											time1, 'mm.dd hh:MM')
+										response.data.data[i].auditMind = ''
+									}
+								}
 					
+							}
+							console.log(response.data.data)
+							this.auditList = response.data.data
+							var time2 = new Date(this.dataList.createDate).getTime()
+							var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
+							this.auditList.unshift({
+								operatorTitle: this.dataList.empName.substring(0, 2),
+								operatorName: this.dataList.empName,
+								updateDate: time3,
+								auditMind: '',
+								desc: '发起申请',
+								showflow: false,
+								commonStaffs1: null,
+								commonStaffs: null,
+								workflowHistoricTasks: [],
+								status: 'success'
+							})
+						})
+					})
 					}
 				})
 			},
@@ -91,9 +282,12 @@
 </script>
 
 <style scoped lang="scss">
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 240rpx 20rpx;
+	}
 	.content1 {
 		margin: 10rpx;
-		padding-bottom: 120rpx;
 
 		.title {
 			height: 70rpx;
@@ -182,10 +376,12 @@
 	.uForm_item {
 		padding: 20rpx;
 		background-color: #FFFFFF;
-		margin: 20rpx;
+		margin: 20rpx 0rpx 0rpx 0rpx;
 		border-radius: 20rpx;
+		width: 100%;
 	}
 
+
 	.rejectText {
 		text-align: center;
 	}
@@ -221,7 +417,155 @@
 		}
 
 	}
+.content3 {
+		background: white;
+		margin: 20rpx 0;
+		border-radius: 20rpx;
+		padding: 20rpx;
+
+		.row {
+			display: flex;
+
+			.left {
+				display: flex;
+				align-items: center;
+
+				.item1 {
+					position: relative;
+
+					.item-content {
+						background: #617AE0;
+						width: 44px;
+						height: 44px;
+						border-radius: 22px;
+						line-height: 44px;
+						text-align: center;
+						font-size: 15px;
+						color: #fff;
+					}
+
+					.status {
+						position: absolute;
+						border-radius: 50%;
+						padding: 0px 2px;
+						right: -3px;
+						bottom: -3px;
+						background: #fff;
+					}
+
+					.status.success {
+						border: 1px solid rgb(60, 156, 255);
+					}
+
+					.status.error {
+						border: 1px solid rgb(245, 108, 108);
+					}
+
+					.status.question {
+						border: 1px solid #f9ae3d;
+					}
+				}
+
+			}
+
+			.right {
+				width: 80%;
+				// color: #B0B1B5;
+				margin-top: 10px;
+
+				.right-content {
+					background: #F2F3F7;
+					margin-left: 10px;
+					margin-top: 10px;
+					padding: 10px;
+					border-radius: 5px;
+					color: #B0B1B5;
+				}
+
+				.right-item {
+					display: flex;
+					justify-content: space-between;
+
+					.time {
+						color: #999;
+					}
+
+					.item2 {
+						margin-left: 20rpx;
+						margin-top: -7px;
+
+						.name {
+							font-size: 28rpx;
+							font-weight: 800;
+						}
+
+						.status.success {
+							color: #6CC48C;
+						}
+
+						.status.error {
+							color: rgb(245, 108, 108);
+						}
+
+						.status.question {
+							color: #f9ae3d;
+						}
+					}
+				}
+			}
+		}
+
+		.row2 {
+			display: flex;
+
+			.item-content {
+				background: #22C572;
+				width: 30px;
+				height: 30px;
+				border-radius: 50%;
+				line-height: 30px;
+				text-align: center;
+				font-size: 12px;
+				color: #fff;
+				padding: 0 2px;
+				margin: 0 auto;
+			}
+
+			.status {
+				position: absolute;
+				top: 0;
+				right: 0;
+			}
+		}
+
+		.row-line {
+			width: 1px;
+			height: 40rpx;
+			background: #F2F2F2;
+			margin: 10rpx 50rpx;
+
+		}
+
+		.audit {
+			margin-top: 20rpx;
+		}
+	}
+	.titlez {
+		font-size: 17px;
+		font-weight: 700;
+		height: 35px;
+		border-bottom: 1px solid #EEEEEE;
+	}
+	.rowz{
+		display: flex;
+		justify-content: space-between;
 
+		.right,
+		input {
+			font-size: 28rpx;
+			color: #333333;
+		}
+	}
 	.deleteText {
 		text-align: center;
 		color: #AFB3BF;