348 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			348 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | ||
| 	<view class="bodyContainer">
 | ||
| 		<uni-nav-bar @clickLeft="goBack()" class="nav-bar" height="110rpx" leftWidth="250rpx" leftText="入厂项目详情"
 | ||
| 			leftIcon="left" border backgroundColor="#2cade8" color="#fff" fixed statusBar shadow></uni-nav-bar>
 | ||
| 		<view class="wrap-view wrap-top">
 | ||
| 			<view class="item title"> <text class="blueLine"></text>基本信息:</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">名称</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{formData.name}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">项目状态</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{stateOptions[formData.state]}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">项目类型</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{rpj_states[formData.type]}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">合同编号</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{formData.contract_number}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">进厂时间</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{formData.come_time}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">离厂时间</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{formData.leave_time}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">所属部门</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{formData.belong_dept_name}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view class="item">
 | ||
| 				<view class="title">相关方</view>
 | ||
| 				<view class="content">
 | ||
| 					<text>{{formData.rparty_name}}</text>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 		</view>
 | ||
| 		<view class="wrap-view wrap-top">
 | ||
| 			<view class="item title"> <text class="blueLine"></text>资料:</view>
 | ||
| 			<view class="filesWrap" v-if="fileList.length>0">
 | ||
| 				<view class="filesItem itemTitle">
 | ||
| 					<text class="fileCell leftFileCell">资质内容</text>
 | ||
| 					<text class="fileCell">文献资料</text>
 | ||
| 				</view>
 | ||
| 				<view class="filesItem" v-for="item1 in fileList" :key="item1.id">
 | ||
| 					<view  class="fileCell leftFileCell" style="text-align: left;">
 | ||
| 						<text v-if="item1.file_cate_"> {{item1.file_cate_.name}}</text>
 | ||
| 					</view>
 | ||
| 					<view class="fileCell">
 | ||
| 						<view v-if="item1.files.length>0">
 | ||
| 						<view v-for="file in item1.files_">{{file.name}}</view>
 | ||
| 						</view>
 | ||
| 						
 | ||
| 						<text v-else>暂无</text>
 | ||
| 					</view>
 | ||
| 					
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 			<view v-else style="text-align: center;">暂无相关资料</view>
 | ||
| 		</view>
 | ||
| 		<view class="wrap-view wrap-top">
 | ||
| 			<view class="item title"> <text class="blueLine"></text>项目人员:</view>
 | ||
| 			<view class="visitorsWrap">
 | ||
| 				<view class="visitorsItem itemTitle">
 | ||
| 					<text class="visitorCell">姓名</text>
 | ||
| 					<text class="visitorCell">工作职责</text>
 | ||
| 					<text class="visitorCell">证书</text>
 | ||
| 					<text class="visitorCell">操作</text>
 | ||
| 				</view>
 | ||
| 				<view class="visitorsItem" v-for="item in workerList" :key="item.id">
 | ||
| 					<text class="visitorCell" style="color:blue" @click="viewMember(item)">{{item.remployee_.name}}</text>
 | ||
| 					<text class="visitorCell">{{item.duty}}</text>
 | ||
| 					<text class="visitorCell">{{item.rcertificates.length}}张</text>
 | ||
| 					<view class="visitorCell">
 | ||
| 						<view v-if="formData.state == 40">
 | ||
| 						<text class="bindBtn" @click="bindBtl(item,10)" v-if="item.remployee_.blt_===null||item.worker_.blt_===undefined">绑卡</text>
 | ||
| 						<text class="bindBtn" @click="bindBtl(item,20)" v-else>解绑</text>
 | ||
| 						</view>
 | ||
| 					</view>
 | ||
| 				</view>
 | ||
| 			</view>
 | ||
| 		</view>
 | ||
| 		
 | ||
| 	</view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| 	export default {
 | ||
| 		name: "rpjDetail",
 | ||
| 		data() {
 | ||
| 			return {
 | ||
| 				formData:{
 | ||
| 					name:'',
 | ||
| 					type:'',
 | ||
| 					contract_number:'',
 | ||
| 					come_time:'',
 | ||
| 					leave_time:'',
 | ||
| 					belong_dept_name:'',
 | ||
| 					rparty_name:'',
 | ||
| 				},
 | ||
| 				workerList:[],
 | ||
| 				fileList:[],
 | ||
| 				stateOptions: {
 | ||
| 					10: "创建中",
 | ||
| 					20: "审批中",
 | ||
| 					30: "待入厂",
 | ||
| 					40: "进行中",
 | ||
| 					50: "已完成",
 | ||
| 					60: "已关闭",
 | ||
| 				},
 | ||
| 				act_states: {
 | ||
| 					0: "草稿中",
 | ||
| 					1: "进行中",
 | ||
| 					2: "被退回",
 | ||
| 					3: "被撤回",
 | ||
| 					4: "已完成",
 | ||
| 					5: "已关闭",
 | ||
| 				},
 | ||
| 				rpj_states: {
 | ||
| 						10: "建筑施工",
 | ||
| 						20: "设备设施检维修",
 | ||
| 						30: "保安保洁服务",
 | ||
| 						40: "其他",
 | ||
| 					},
 | ||
| 			}
 | ||
| 		},
 | ||
| 		onLoad(params) {
 | ||
| 			this.rpjId = params.rpjId;
 | ||
| 			this.getRpjDetail();
 | ||
| 		},
 | ||
| 		onShow() {
 | ||
| 			this.getworkerList();//工作人员
 | ||
| 			this.getFileList();//证书
 | ||
| 		},
 | ||
| 		methods: {
 | ||
| 			//获取工作operation
 | ||
| 			getRpjDetail() {
 | ||
| 				let that = this;
 | ||
| 				that.$u.api.rpjItem(that.rpjId).then((res) => {
 | ||
| 					that.formData = {...res}; 
 | ||
| 				});
 | ||
| 			},
 | ||
| 			
 | ||
| 			//获取工作人员
 | ||
| 			getworkerList() {
 | ||
| 				let that = this;
 | ||
| 				that.$u.api.rpjMembers({rpj: that.rpjId, page: 0}).then(res => {
 | ||
| 					that.workerList =res;
 | ||
| 				})
 | ||
| 			},
 | ||
| 			
 | ||
| 			//获取入厂资料
 | ||
| 			getFileList(){
 | ||
| 				let that = this;
 | ||
| 				that.$u.api.rpjFileList({rpj: that.rpjId, page: 0}).then(res => {
 | ||
| 					that.fileList =res.filter(item=>{
 | ||
| 						return item.files.length>0
 | ||
| 					});
 | ||
| 				})
 | ||
| 			},
 | ||
| 			
 | ||
| 			//解绑卡
 | ||
| 			bindBtl(row,type){
 | ||
| 				let that = this;
 | ||
| 				let form = {};
 | ||
| 				form.type = type;
 | ||
| 				form.employee = row.remployee;
 | ||
| 				if(type==10){
 | ||
| 					uni.scanCode({
 | ||
| 						 success: function (res) {
 | ||
| 							 form.code = res.result;
 | ||
| 							 that.$u.api.thirdBltBind(form).then(res=>{
 | ||
| 								 debugger;
 | ||
| 								 uni.showToast({
 | ||
| 									title: res,
 | ||
| 									icon: "none"
 | ||
| 								 })
 | ||
| 							 })
 | ||
| 						 }
 | ||
| 					});
 | ||
| 				}else{
 | ||
| 					that.$u.api.thirdBltBind(form).then(res=>{
 | ||
| 						form.code = res.result;
 | ||
| 						 uni.showToast({
 | ||
| 							title: res,
 | ||
| 							icon: "none"
 | ||
| 						 })
 | ||
| 					})
 | ||
| 				} 
 | ||
| 			},
 | ||
| 			goBack() {
 | ||
| 				uni.navigateBack({
 | ||
| 					delta: 1
 | ||
| 				})
 | ||
| 			},
 | ||
| 			viewMember(item) {
 | ||
| 				uni.showToast({
 | ||
| 					title: item.id,
 | ||
| 					icon: 'none'
 | ||
| 				})
 | ||
| 			}
 | ||
| 
 | ||
| 		}
 | ||
| 	}
 | ||
| </script>
 | ||
| 
 | ||
| <style scoped>
 | ||
| 	uni-page-body {
 | ||
| 	    color: #303133;
 | ||
| 	    font-size: 15px;
 | ||
| 	    height: 100%;
 | ||
| 	    background: #f3fbff;
 | ||
| 	}
 | ||
| 	.bodyContainer {
 | ||
| 	    background-color: #f3fbff;
 | ||
| 	}
 | ||
| 	>>>.uni-navbar__header,
 | ||
| 	>>>.uni-status-bar {
 | ||
| 		background-image: linear-gradient(254deg,
 | ||
| 				#0ca7ee 0%,
 | ||
| 				#005aff 100%,
 | ||
| 				#2a8cff 100%,
 | ||
| 				#54bdff 100%),
 | ||
| 			linear-gradient(#e60012,
 | ||
| 				#e60012);
 | ||
| 	}
 | ||
| >>>uni-image{
 | ||
| 	height: 200upx;
 | ||
| 	width: 200upx;
 | ||
| }
 | ||
| 	.my-data {
 | ||
| 		background-color: #f3fbff;
 | ||
| 		padding-bottom: 227rpx;
 | ||
| 	}
 | ||
| 
 | ||
| 	.nav-bar>>>.uni-navbar-btn-text text {
 | ||
| 		font-size: 32rpx !important;
 | ||
| 	}
 | ||
| 
 | ||
| 	.wrap-view {
 | ||
| 		width: 720rpx;
 | ||
| 		margin: 0 auto;
 | ||
| 		background-color: #ffffff;
 | ||
| 		border-radius: 10rpx;
 | ||
| 		line-height: 94rpx;
 | ||
| 		font-family: PingFang-SC-Medium;
 | ||
| 		font-size: 30rpx;
 | ||
| 		padding-bottom: 30upx;
 | ||
| 	}
 | ||
| 	.wrap-top{
 | ||
| 		line-height: 60upx;
 | ||
| 		margin-top: 20upx;
 | ||
| 	}
 | ||
| 	.item {
 | ||
| 		margin: 0rpx 32rpx;
 | ||
| 		display: flex;
 | ||
| 		margin-top: 10rpx;
 | ||
| 	}
 | ||
| 	.item.title{
 | ||
| 		    height: 100upx;
 | ||
| 		    line-height: 100upx;
 | ||
| 		    /* border-bottom: 1upx solid #dddddd; */
 | ||
| 	}
 | ||
| 	.item_bottom_border{
 | ||
| 		border-bottom: 1rpx solid #eeeeee;
 | ||
| 	}
 | ||
| 	
 | ||
| 	.title {
 | ||
| 		color: #212121;
 | ||
| 		flex: 1;
 | ||
| 	}
 | ||
| 
 | ||
| 	.content {
 | ||
| 		flex: 3;
 | ||
| 		color: #666666;
 | ||
| 
 | ||
| 	}
 | ||
| 	.visitorsWrap,.filesWrap{
 | ||
| 		padding: 0 10px;
 | ||
| 		
 | ||
| 	}
 | ||
| 	
 | ||
| 	.visitorsItem,.filesItem{
 | ||
| 		display: flex;
 | ||
| 		font-size: 28upx;
 | ||
| 		align-items:center;
 | ||
| 				border-bottom: 1upx solid #eeeeee;
 | ||
| 	}
 | ||
| 	.filesItem{
 | ||
| 		border-bottom: 1upx solid #eeeeee;
 | ||
| 	}
 | ||
| 	.itemTitle{
 | ||
| 		height: 80upx;
 | ||
| 		font-size: 32upx;
 | ||
| 		line-height: 40upx;
 | ||
| 	}
 | ||
| 	.itemTitle>.visitorCell,.itemTitle>.fileCell{
 | ||
| 		color: #212121;
 | ||
| 	}
 | ||
| 	.visitorCell,.fileCell{
 | ||
| 		flex: 1;
 | ||
| 		color: #666666;
 | ||
| 		text-align: center;
 | ||
| 	}
 | ||
| 	.leftFileCell{
 | ||
| 		flex: 2;
 | ||
| 		text-align: left;
 | ||
| 		line-height: 16px;
 | ||
| 		align-items: center;
 | ||
| 		padding: 10upx 0;
 | ||
| 	}
 | ||
| 	.blueLine{
 | ||
| 		height: 24upx;
 | ||
| 		width: 10upx;
 | ||
| 		background: #2a8cff;
 | ||
| 		margin-top: 39upx;
 | ||
| 		margin-right: 12upx;
 | ||
| 	}
 | ||
| 	.bindBtn{
 | ||
| 		    width: 80upx;
 | ||
| 		    height: 50upx;
 | ||
| 		    line-height: 50upx;
 | ||
| 		    background: #2a8cff;
 | ||
| 		    display: inline-block;
 | ||
| 		    border-radius: 16upx;
 | ||
| 		    color: #ffffff;
 | ||
| 		    font-size: 25upx;
 | ||
| 	}
 | ||
| </style>
 |