Преглед изворни кода

Signed-off-by: zhaobao <528046418@qq.com>
自动化处理清单
有未通过的跳转隐患登记

zhaobao пре 10 месеци
родитељ
комит
b145673ae2

+ 1 - 1
pages.json

@@ -3,7 +3,7 @@
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "六院联创促进医院高质量发展",
+				"navigationBarTitleText": "扫码处理业务",
 				"navigationStyle": "custom"
 			}
 		},

+ 41 - 25
pages/app_views/checkList/form/form.vue

@@ -18,7 +18,8 @@
 				 @delete="deleteFile"></uni-file-picker>	
 			</uni-forms>
 		</uni-section>
-		<button type="primary" @click="onSubmit" class="submit-BT">提交</button>		
+		<view class="tip">还剩<text class="word">{{handles.length+1}}</text>条</view>
+		<button type="primary" @click="onSubmit" class="submit-BT">下一步</button>		
 	</view>
 </template>
 
@@ -39,6 +40,7 @@
 				},
 				rules:{},
 				point:{},
+				handles:[],
 				itemList:[]
 			}
 		},
@@ -63,7 +65,7 @@
 						if(itemList[i].children){
 							itemList[i].children.map(child=>{
 								child.recordList.map(pointitem=>{
-									points.push(point)
+									points.push(pointitem)
 								})
 							})
 						}else{
@@ -142,36 +144,40 @@
 			// 批量处理未处理的
 			batchHandle(){
 				let point=uni.getStorageSync('point')
+				const rid=point.recordId;
+				const cid=point.checklistId;
 				if(this.handles.length<1){
 					const key=this.itemList.find(item=>item.checkResult===-1)
-					if(!key){
-						console.log('全部通过')
-						console.log({
-							itemList:JSON.parse(JSON.stringify(this.itemList))
-						})
-						checklistComplete(point.recordId,point.checklistId).then(()=>{
-							uni.$emit('type',1)						
+					checklistComplete(point.recordId,point.checklistId).then(()=>{
+						if(!key){
+							uni.$emit('type',1)
 							uni.switchTab({
 								url:'/pages/history/history'
 							})
-						}).catch(()=>{
-							uni.showToast({
-								icon:"none",
-								title:"操作失败"
-							})
-						})
-					}else{
+						}else{
+							uni.showModal({
+								title: '提示',
+								content: '本次检查有未通过项,是否需要登记隐患?',
+								success: function (res) {
+									if (res.confirm) {
+										uni.reLaunch({
+											url:`/pages/app_views/danger/submit/submit?rid=${rid}&cid=${cid}&type=point`
+										})	
+									} else if (res.cancel) {
+										uni.$emit('type',1)
+										uni.switchTab({
+											url:'/pages/history/history'
+										})
+									}
+								}
+							});		
+						}
+					}).catch(()=>{
 						uni.showToast({
-							icon:'none',
-							title:"处理完毕请核实!",
-							duration:1000,
-							complete() {
-								uni.redirectTo({
-									url:`/pages/app_views/checkList/index/index?type=form&id=${point.checklistId}&recordId=${point.recordId}`
-								})
-							}
+							icon:"none",
+							title:"操作失败"
 						})
-					}				
+					})				
 				}
 				let nextPoint=this.handles[0]
 				this.formData={
@@ -232,6 +238,16 @@
 <style lang="scss" scoped>
 .wrap{
 	padding: 20rpx;
+	.tip{
+		padding: 20rpx 10rpx 10rpx;
+		text-align: right;
+		color: #666;
+		.word{
+			font-weight: bold;
+			color: #222;
+			padding: 0 10rpx;
+		}
+	}
 	.submit-BT {
 		width: 750rpx;
 		color: #4D73FF;

+ 19 - 9
pages/app_views/checkList/index/index.vue

@@ -12,6 +12,7 @@
 									<view class="pointContent">{{point.pointContent}}</view>
 									<view class="status" v-if="point.checkResult===1">【通过】</view>
 									<view class="status" v-if="point.checkResult===-1">【不通过】</view>
+									<view class="status" v-if="!(point.checkResult===-1||point.checkResult===1)">【未检查】</view>
 								</view>
 							</view>
 						</view>				
@@ -23,6 +24,7 @@
 									<view class="pointContent">{{checklistItem.pointContent}}</view>
 									<view class="status" v-if="checklistItem.checkResult===1">【通过】</view>
 									<view class="status" v-if="checklistItem.checkResult===-1">【不通过】</view>
+									<view class="status" v-if="!(checklistItem.checkResult===-1||checklistItem.checkResult===1)">【未检查】</view>
 								</view>
 							</view>
 						</view>				
@@ -31,8 +33,8 @@
 				<view class="handle-container" v-if="handleVisiable">
 					<view class="handle" @click="handleSubmit(3)">全部通过</view>
 					<view class="handle" @click="handleSubmit(4)">全不通过</view>				
-					<view class="handle" @click="handleSubmit(1)">提交</view>
-					<view class="handle" @click="handleSubmit(2)">撤销</view>				
+					<view class="handle submit" @click="handleSubmit(1)">提交</view>
+	<!-- 				<view class="handle" @click="handleSubmit(2)">撤销</view>	 -->			
 				</view>
 			</template>
 			<template v-else>没有可处理的清单^-_-^</template>
@@ -102,7 +104,7 @@
 					this.handleVisiable=(res.data.status===0||res.data.status===1)&&(res.data.accountId===userId)
 				})
 			},
-			check(point){		
+			check(point){	
 				uni.setStorageSync('point',point)	
 				if(this.type==='history'){	
 					if(this.status===2){
@@ -125,7 +127,7 @@
 			handleSubmit(type){
 				let recordId=this.recordId;
 				let checklistId=this.checklistId;
-				if(type===1){//完成
+				if(type===1){//完成			
 					checklistComplete(recordId,checklistId).then(()=>{
 						uni.$emit('type',1)						
 						uni.switchTab({
@@ -229,16 +231,24 @@
 			justify-content: center;
 			align-items: center;
 			border-top: 1rpx solid #eaeaea;
+			padding: 10rpx 0;
 			.handle{
 				display: inline-block;
-				background-color: #3384FF;
-				color: #fff;
+
+				color: #222;
 				padding: 15rpx 20rpx;
-				width: 25%;
+				max-width: 25%;
 				box-sizing: border-box;
-				border-right: 1rpx solid #eaeaea;
-				font-size: 30rpx;
+				border: 1rpx solid #eaeaea;
+				font-size: 28rpx;
 				text-align: center;
+				border-radius: 40rpx;
+				margin-right: 20rpx;
+				&.submit{
+					background-color: #3384FF;
+					color: #fff;
+					padding: 15rpx 40rpx;
+				}
 				&:nth-child(4){
 					border: 0;
 				}

+ 51 - 0
pages/app_views/danger/submit/submit.vue

@@ -61,6 +61,8 @@
 	import { startWorkflow, handleWorkflow } from '@/api/system/wfApi'
 	import { handleDanger } from '@/api/system/dangerApi.js'
 	import {upload} from '@/api/system/upload.js'
+	import {getchecklistRecord} from '@/api/aqpt/checklistPoint.js'
+	import { getChecklistHazardRecordView } from '@/api/aqpt/checklistRecordHazardApi'
 	export default {
 		data() {
 			return {
@@ -110,6 +112,9 @@
 		created() {
 			this.init()
 		},
+		onLoad(data) {
+		   this.getchecklist(data)			
+		},
 		methods: {
 			init(){
 				this.getDangerCat()
@@ -138,6 +143,52 @@
 				this.formData.dangerLocation=app.riskPointTitle
 				this.formData.riskPointId=app.riskPointId
 			},
+			getchecklist({cid,rid,type}){
+				if(type==='hazard'){
+					getChecklistHazardRecordView(rid).then((res)=>{
+						let itemList=res.data.hazardList
+						let measures=[]	
+						for(let i=0;i<itemList.length;i++){
+							if(itemList[i].riskList){
+								itemList[i].riskList.map(child=>{
+									child.recordList.map(measure=>{
+										measures.push(measure)
+									})
+								})
+							}						
+						}
+						let noPassPoints=measures.filter(item=>item.checkResult===-1)
+						let dangerDesc=noPassPoints.reduce((acc, cur) => `${cur.measureContent}【未通过】;\n` + acc, "")
+						this.formData.dangerDesc=dangerDesc
+						this.formData.dangerTitle=`${res.data.targetTitle}【${res.data.hazardList[0].hazardTitle}】`
+			
+					})					
+				}
+				if(type==='point'){
+					getchecklistRecord(cid,rid).then((res)=>{
+						let itemList=res.data.itemList
+						let points=[]
+						for(let i=0;i<itemList.length;i++){
+							if(itemList[i].children){
+								itemList[i].children.map(child=>{
+									child.recordList.map(pointitem=>{
+										points.push(pointitem)
+									})
+								})
+							}else{
+								itemList[i].recordList.map(pointitem=>{
+										points.push(pointitem)
+								})
+								
+							}						
+						}
+						let noPassPoints=points.filter(item=>item.checkResult===-1)
+						let dangerDesc=noPassPoints.reduce((acc, cur) => `${cur.pointContent}【未通过】;\n` + acc, "")
+						this.formData.dangerDesc=dangerDesc
+						this.formData.dangerTitle=res.data.targetTitle
+					})					
+				}
+			},
 			getGroupRange(){
 				getGroupByList().then((res)=>{
 					this.groupList=res.data.map(item=>{

+ 117 - 10
pages/app_views/hazard/form/form.vue

@@ -18,13 +18,15 @@
 				 @delete="deleteFile"></uni-file-picker>	
 			</uni-forms>
 		</uni-section>
-		<button type="primary" @click="onSubmit" class="submit-BT">提交</button>		
+		<view v-if="handles.length>0" class="tip">还剩<text class="word">{{handles.length}}</text>条</view>		
+		<button type="primary" @click="onSubmit" class="submit-BT"> {{handles.length>0?'下一步':'提交'}}</button>		
 	</view>
 </template>
 
 <script>
 	import {upload} from '@/api/system/upload.js'	
-	import {updateChecklistHazardRecordDoing} from '@/api/aqpt/checklistHazardRecordApi.js'
+	import {updateChecklistHazardRecordDoing,completeChecklistDoing} from '@/api/aqpt/checklistHazardRecordApi.js'
+	import { getChecklistHazardRecordView } from '@/api/aqpt/checklistRecordHazardApi'
 	export default {
 		data() {
 			return {
@@ -38,7 +40,9 @@
 					attachList:[]
 				},
 				rules:{},
-				hazard:{}
+				hazard:{},
+				itemList:[],
+				handles:[]
 			}
 		},
 		onLoad() {
@@ -48,6 +52,7 @@
 			init(){
 				let hazard=uni.getStorageSync('hazard');
 				this.hazard=hazard;
+				this.getchecklist()
 			},
 			async onSubmit() {
 				let hazard=uni.getStorageSync('hazard')
@@ -73,16 +78,108 @@
 						title:"提交失败!"
 					})				
 				})
-				uni.showToast({
-					icon:'none',
-					title:"提交成功!",
-					complete() {
-						uni.redirectTo({
-							url:`/pages/app_views/hazard/index/index?type=form&id=${hazard.checklistId}&recordId=${hazard.recordId}`
-						})
+				// uni.showToast({
+				// 	icon:'none',
+				// 	title:"提交成功!",
+				// 	complete() {
+				// 		uni.redirectTo({
+				// 			url:`/pages/app_views/hazard/index/index?type=form&id=${hazard.checklistId}&recordId=${hazard.recordId}`
+				// 		})
+				// 	}
+				// })
+				let idx=this.itemList.findIndex(item=>item.hazardId===hazard.hazardId)
+				this.itemList[idx].checkResult=this.formData.checkResult
+				this.batchHandle()
+			},
+			getchecklist(){
+				getChecklistHazardRecordView(this.hazard.recordId).then((res)=>{
+					let itemList=res.data.hazardList
+					let measures=[]	
+					let measureId=this.hazard.measureId
+					for(let i=0;i<itemList.length;i++){
+						if(itemList[i].riskList){
+							itemList[i].riskList.map(child=>{
+								child.recordList.map(measure=>{
+									measures.push(measure)
+								})
+							})
+						}						
 					}
+					let index=measures.findIndex(item=>item.measureId===measureId)
+					if(index>0){
+						let temp=measures[0];
+						measures[0]=JSON.parse(JSON.stringify(this.hazard))
+						measures[index]=temp
+					}	
+					this.itemList=measures									
+					this.handles=measures					
 				})
 			},
+			// 批量处理未处理的
+			batchHandle(){
+				let measure=uni.getStorageSync('hazard')
+				let handles=JSON.parse(JSON.stringify(this.handles))
+				handles.shift()	
+				this.handles=handles
+				if(handles.length<1){
+					const key=this.itemList.find(item=>item.checkResult===-1);
+					if(!key){
+						completeChecklistDoing(measure.recordId,measure.checklistId).then(()=>{	
+							uni.showToast({
+								icon:'none',
+								title:"处理完毕",
+								duration:1000,
+								complete() {
+									uni.$emit('type',4)
+									uni.switchTab({
+										url:'/pages/history/history'
+									})
+								}
+							})	
+						}).catch(()=>{
+							uni.showToast({
+								icon:"none",
+								title:"操作失败"
+							})
+						})						
+					}else{
+						let cid=measure.checklistId;
+						let rid=measure.recordId;
+						completeChecklistDoing(measure.recordId,measure.checklistId).then(()=>{
+							uni.showModal({
+								title: '提示',
+								content: '本次检查有未通过项,是否需要登记隐患?',
+								success: function (res) {
+									if (res.confirm) {
+										uni.reLaunch({
+											url:`/pages/app_views/danger/submit/submit?rid=${rid}&cid=${cid}&type=hazard`
+										})	
+									} else if (res.cancel) {
+										uni.$emit('type',4)
+										uni.switchTab({
+											url:'/pages/history/history'
+										})
+									}
+								}
+							});		
+						}).catch(()=>{
+							uni.showToast({
+								icon:"none",
+								title:"操作失败"
+							})
+						})	
+						
+					}
+					return					
+				}
+				this.formData={
+					checkResult:1,	
+					remark:"",
+					attachList:[]
+				}
+				uni.setStorageSync('hazard',handles[0]);
+				this.hazard=handles[0];								
+			},
 			uploadSuccess(e){
 				let attachList=JSON.parse(JSON.stringify(this.formData.attachList))
 				attachList.push(e.tempFiles[0])
@@ -103,6 +200,16 @@
 <style lang="scss" scoped>
 .wrap{
 	padding: 20rpx;
+	.tip{
+		padding: 20rpx 10rpx 10rpx;
+		text-align: right;
+		color: #666;
+		.word{
+			font-weight: bold;
+			color: #222;
+			padding: 0 10rpx;
+		}
+	}
 	.submit-BT {
 		height: 72rpx;
 		line-height: 72rpx;	

+ 213 - 48
pages/app_views/hazard/index/index.vue

@@ -1,29 +1,40 @@
 <template>
-	<view class="wrap">
-		<template v-if="itemList.length>0">
-			<view class="checklist" v-for="(hazard,idx) in itemList" :key="idx">
-				<view class="title">{{hazard.hazardTitle}}</view>
-				<view class="item-cont" v-if="hazard.riskList&&hazard.riskList.length>0">
-					<view class="checklistItem" v-for="(risk,itemIdx) in hazard.riskList" :key="itemIdx">
-						<view class="itemTitle">{{risk.riskTitle}}</view>
-						<view  class="point-cont" v-if="risk.recordList&&risk.recordList.length>0">
-							<view class="point" v-for="(measure,measureIdx) in risk.recordList" :key="measureIdx" @click="check(measure)">
-								<view class="pointContent">{{measure.measureContent}}</view>
-								<view class="status" v-if="measure.checkResult===1">通过</view>
-								<view class="status" v-if="measure.checkResult===-1">不通过</view>
+	<view class="page">
+		<view class="wrap">
+			<template v-if="itemList.length>0">
+				<view class="checklist" v-for="(hazardlist,idx) in itemList" :key="idx">
+					<view class="title more">{{hazardlist.hazardTitle}}</view>
+					<view class="item-cont" v-if="hazardlist.riskList&&hazardlist.riskList.length>0">
+						<view class="checklistItem" v-for="(riskItem,itemIdx) in hazardlist.riskList" :key="itemIdx">
+							<view class="itemTitle more"> {{riskItem.riskTitle}}</view>
+							<view  class="point-cont" v-if="riskItem.recordList&&riskItem.recordList.length>0">
+								<view class="point" v-for="(measure,measureIdx) in riskItem.recordList" :key="measureIdx" @click="check(measure)">
+									<view class="pointContent">
+											<text style="padding-right: 5px;">{{measureIdx+1}})</text>
+											<text>{{measure.measureContent}}</text>
+									</view>
+									<view class="status">【<span class="text">{{measure.checkResult|checkResultFilter}}</span>】</view>
+								</view>
 							</view>
-						</view>
+						</view>				
 					</view>				
 				</view>
-			</view>
-			<view class="handle-container" v-if="handleVisiable">
-				<view class="handle" @click="handleSubmit(3)">全部通过</view>
-				<view class="handle" @click="handleSubmit(4)">全不通过</view>				
-				<view class="handle" @click="handleSubmit(1)">提交</view>
-				<view class="handle" @click="handleSubmit(2)">撤销</view>				
-			</view>
-		</template>
-		<template v-else>没有可处理的清单^-_-^</template>
+				<view class="handle-container" v-if="handleVisiable">	
+					<view class="handle" @click="handleSubmit(3)">全部通过</view>
+					<view class="handle" @click="handleSubmit(4)">全不通过</view>
+					<view class="handle submit" @click="handleSubmit(1)">提交</view>
+<!-- 					<view class="more" @mouseenter="hover(1)" @mouseleave="hover">
+						<text class="text">更多</text>
+						<view class="list" v-if="showMore">
+							<view class="hand-item-box">
+								<view class="handle-item" @click="handleSubmit(2)">撤销</view>															
+							</view>						
+						</view>						
+					</view> -->
+				</view>
+			</template>
+			<template v-else>没有可处理的清单^-_-^</template>
+		</view>		
 	</view>
 </template>
 <script>
@@ -47,9 +58,28 @@
 				itemList:[],
 				recordId:undefined,
 				checklistId:undefined,
-				handleVisiable:false
+				handleVisiable:false,
+				showMore:false,
+				submit_bt_state:false
 			}
 		},
+		filters: {
+		  checkResultFilter(i) {
+					  if (i >= 0) {
+					    const strs = [
+					      '未检查',
+					      '通过'
+					    ]
+					    return strs[i]
+					  } else {
+					    if (i === -1) {
+					      return '未通过'
+					    } else if (i === -2) {
+					      return '发现隐患'
+					    }
+					  }
+		  }
+		},
 		onLoad({id,recordId,type}) {
 			this.checklistId=id	
 			this.recordId=recordId	
@@ -74,7 +104,7 @@
 				})
 				this.itemList=data.hazardList
 				this.recordId=data.recordId
-			},
+			},		
 			getChecklistHazardRecordViewById(checklistId,recordId){
 				/* status 0-未初始化;1-初始化完成 2-完成 -1-巡检完成【异常】*/
 				getChecklistHazardRecordViewById(recordId,checklistId).then((res)=>{
@@ -98,11 +128,30 @@
 				let recordId=this.recordId;
 				let checklistId=this.checklistId;
 				if(type===1){//完成
-					completeChecklistDoing(recordId,checklistId).then(()=>{
-						uni.$emit('type',4)						
-						uni.switchTab({
-							url:'/pages/history/history'
-						})
+					completeChecklistDoing(recordId,checklistId).then(()=>{					
+						if(this.isAllPass()){
+							uni.$emit('type',4)
+							uni.switchTab({
+								url:'/pages/history/history'
+							})
+							return
+						}						
+						uni.showModal({
+							title: '提示',
+							content: '本次检查有未通过项,是否需要登记隐患?',
+							success: function (res) {
+								if (res.confirm) {
+									uni.reLaunch({
+										url:`/pages/app_views/danger/submit/submit?tid=${recordId}`
+									})	
+								} else if (res.cancel) {
+									uni.$emit('type',4)
+									uni.switchTab({
+										url:'/pages/history/history'
+									})
+								}
+							}
+						});										
 					}).catch(()=>{
 						uni.showToast({
 							icon:"none",
@@ -132,30 +181,82 @@
 						this.getChecklistHazardRecordViewById(checklistId,recordId)
 					})
 				}			
+			},
+			isAllPass(){
+				let items=[]
+				for(let i=0;i<this.itemList.length;i++){
+					if(this.itemList[i].riskList){
+						this.itemList[i].riskList.map(child=>{
+							child.recordList.map(measure=>{
+								items.push(measure)
+							})
+						})
+					}						
+				}
+				let index=items.findIndex(item=>item.checkResult===-1)
+				return index<0
+			},	
+			hover(state){
+				this.showMore=state===1
 			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
+	.page{
+		background-color: #F5F6F8;
+		padding: 20rpx;
+		min-height: 100vh;
+		box-sizing: border-box;
+		padding-bottom: 120rpx;
+		.page-head{
+			text-align: right;
+			padding-bottom: 10rpx;
+			.handle{
+				display: inline-block;
+				background-color: #3384FF;
+				color: #fff;
+				padding: 10rpx 15rpx;
+				box-sizing: border-box;
+				border-right: 1rpx solid #eaeaea;
+				font-size: 30rpx;
+				text-align: center;
+				&:nth-child(4){
+					border: 0;
+				}
+			}
+		}
+	}	
 	.wrap{
 		padding: 20rpx;
-		margin-bottom: 100rpx;
+		background-color: #fff;
 		.checklist{
 			.title{
-				color: #333;
-				font-size: 36rpx;
-				height: 60rpx;
-				line-height: 60rpx;
+				color: #222222;
+				font-size: 32rpx;
+				height: 98rpx;
+				line-height: 98rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				border-bottom: 1px dashed #E8E8E8;				
+			}
+			.more{
+				background-image: url('/static/tree_more.png');
+				background-size: 30rpx 30rpx;
+				padding-left: 40rpx;
+				background-position: center left;
+				background-repeat: no-repeat;
 			}
 			.item-cont{
 				padding-left: 20rpx;
+				border-bottom: 1px dashed #E8E8E8;	
 				.checklistItem{
 					.itemTitle{
-						color: #424242;
+						color: #222222;
 						font-size: 32rpx;	
-						line-height: 1;	
-						padding: 10rpx 0;
+						height: 98rpx;
+						line-height: 98rpx;
 					}
 				}
 				.point-cont{
@@ -164,15 +265,22 @@
 						display: flex;						
 						color: #666;
 						font-size: 28rpx;	
-						line-height: 1;	
-						padding: 10rpx 0;	
+						// height: 98rpx;
+						// line-height: 98rpx;
 						.pointContent{
 							flex: 1;
 						}
+						.status{
+							.text{
+								color: #3384FF;
+								font-weight: 800;
+							}
+						}
 					}
 				}
 			}
 		}
+			
 		.handle-container{
 			position: fixed;
 			width: 100%;
@@ -183,18 +291,75 @@
 			justify-content: center;
 			align-items: center;
 			border-top: 1rpx solid #eaeaea;
+			padding: 15rpx 0;
 			.handle{
-				display: inline-block;
-				background-color: #3384FF;
-				color: #fff;
+				display:inline-block;
+				color: #222;
 				padding: 15rpx 20rpx;
-				width: 25%;
 				box-sizing: border-box;
-				border-right: 1rpx solid #eaeaea;
-				font-size: 30rpx;
-				text-align: center;				
-				&:nth-child(4){
-					border: 0;
+				border: 1rpx solid #eaeaea;
+				font-size: 26rpx;
+				text-align: center;
+				border-radius: 50rpx;
+				margin: 0 10rpx;
+				&.danger{
+					background-color: #FA5B41;	
+					color: #fff;						
+				}
+				&.submit{
+					background-color: #3384FF;	
+					color: #fff;
+				   padding: 18rpx 38rpx;
+				}
+			}
+			.more{
+				position: relative;
+				padding: 15rpx 20rpx;
+				// .text:hover{
+				// 	&+.list>.hand-item-box{
+				// 		display: block;
+				// 	}
+				// }
+				.list{
+					position: absolute;
+					bottom: 100rpx;
+					right: 0;
+					box-shadow: 0px 2px 12px 0px #0000001F;
+					padding:0 20rpx;
+					background-color: #fff;
+					.hand-item-box{
+						position: relative;
+						// display: none;
+						&.show{
+							display: block;
+						}
+						&::after{
+							width: 0;
+							height: 0;
+							content: "";
+							display: block;
+							border-width: 26rpx 26rpx 0 0;
+							border-color: #fff transparent;
+							border-style: solid;
+							position: absolute;
+							bottom: -20rpx;
+							right: -20rpx;
+						}
+						.handle-item{
+							width: 180rpx;
+							height: 50rpx;
+							font-size: 26rpx;
+							line-height: 50rpx;
+							background-color: #fff;
+							text-align: center;
+							border-bottom: 1px solid #ccc;
+							padding:10rpx 0;
+							&:last-child{
+								border: 0;
+							}
+						}						
+					}
+
 				}
 			}
 		}