173 lines
4.1 KiB
Vue
173 lines
4.1 KiB
Vue
|
|
<template>
|
||
|
|
<!-- 安全教育培训加入人员 -->
|
||
|
|
<view class="fullHeight bgWhite">
|
||
|
|
<headers :showBack="true">
|
||
|
|
<view class="headerName">
|
||
|
|
选择人员
|
||
|
|
</view>
|
||
|
|
</headers>
|
||
|
|
<view class="searchBox">
|
||
|
|
<input type="text" v-model="workerName" confirm-type="search" class="input" placeholder="按工人姓名查找" @confirm="personList=[];loadData()" />
|
||
|
|
</view>
|
||
|
|
<scroll-view scroll-y="true" class="pageContent">
|
||
|
|
<view class="personContent">
|
||
|
|
<view class="personItem" v-for="item in personList" :key="item.id">
|
||
|
|
<image v-if="item.fieldAcquisitionUrl" :src="url_config+'image/'+item.fieldAcquisitionUrl" class="profile_photo"></image>
|
||
|
|
<image v-else src="/static/profile_photo.png" class="profile_photo"></image>
|
||
|
|
<view class="personInfo">
|
||
|
|
<view class="name">
|
||
|
|
{{item.workerName}}
|
||
|
|
</view>
|
||
|
|
<view class="teamName">
|
||
|
|
{{item.teamName}}
|
||
|
|
</view>
|
||
|
|
<view class="small">
|
||
|
|
{{item.sex==2?'女':'男'}} {{item.age}}
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
<text v-if="item.status" class="statusBtn">已加入</text>
|
||
|
|
<text v-else class="addBtn" @click="addPersonFn(item)">加入</text>
|
||
|
|
</view>
|
||
|
|
<view class="placeholderBox" v-show="personList.length==0">
|
||
|
|
<image src="/static/noData.png" class="noDataImg"></image>
|
||
|
|
<view class="text">
|
||
|
|
暂无数据
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
</scroll-view>
|
||
|
|
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
import headers from "../../../components/headers/headers.vue"
|
||
|
|
export default {
|
||
|
|
components:{headers},
|
||
|
|
data() {
|
||
|
|
return {
|
||
|
|
personList:[],
|
||
|
|
selectArr:[],
|
||
|
|
projectDetail:{},
|
||
|
|
workerName:'',
|
||
|
|
pageTitle:'',
|
||
|
|
selectPerson:[]
|
||
|
|
};
|
||
|
|
},
|
||
|
|
mounted(){
|
||
|
|
this.projectDetail=JSON.parse(uni.getStorageSync('projectDetail'))
|
||
|
|
if(uni.getStorageSync('person')){
|
||
|
|
this.selectPerson = JSON.parse(uni.getStorageSync('person'))
|
||
|
|
}
|
||
|
|
this.loadData()
|
||
|
|
},
|
||
|
|
methods:{
|
||
|
|
addPersonFn(item){
|
||
|
|
|
||
|
|
this.selectPerson.push({workerId:item.id,sex: item.sex,teamName: item.teamName,workerName: item.workerName,fieldAcquisitionUrl: item.fieldAcquisitionUrl})
|
||
|
|
console.log('addPersonFn',this.selectPerson)
|
||
|
|
this.showStatus()
|
||
|
|
uni.setStorageSync('person',JSON.stringify(this.selectPerson))
|
||
|
|
},
|
||
|
|
showStatus(){
|
||
|
|
var Things=this.selectPerson
|
||
|
|
for (var i = 0; i < Things.length; i++) {
|
||
|
|
for (var j = 0; j < this.personList.length; j++) {
|
||
|
|
if(this.personList[j].id==Things[i].workerId){
|
||
|
|
var json = this.personList[j]
|
||
|
|
json.status = 1
|
||
|
|
this.$set(this.personList,j,json)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
loadData(){
|
||
|
|
var that = this
|
||
|
|
this.sendRequest({
|
||
|
|
url: "xmgl/workerInfo/selectWorkerInfoList",
|
||
|
|
// url: "xmgl/workerInfo/getLaborManagementInfoList",
|
||
|
|
data: {projectSn: this.projectDetail.projectSn,workerName:this.workerName},
|
||
|
|
method: "POST",
|
||
|
|
success(res){
|
||
|
|
that.personList = res.result.records
|
||
|
|
that.showStatus()
|
||
|
|
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="scss" scoped>
|
||
|
|
.pageContent{
|
||
|
|
height: calc(100% - 125px);
|
||
|
|
}
|
||
|
|
.personContent{
|
||
|
|
padding: 30rpx;
|
||
|
|
}
|
||
|
|
.personItem{
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
box-shadow: 0px 4px 26rpx 0px rgba(212, 220, 236, 0.53);
|
||
|
|
position: relative;
|
||
|
|
margin-bottom: 10rpx;
|
||
|
|
padding: 30rpx;
|
||
|
|
border-radius: 16rpx;
|
||
|
|
// padding: 0 30rpx;
|
||
|
|
font-size: 30rpx;
|
||
|
|
.teamName{
|
||
|
|
font-size: 26rpx;
|
||
|
|
}
|
||
|
|
.small{
|
||
|
|
font-size: 24rpx;
|
||
|
|
opacity: 0.8;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
.submitBtn{
|
||
|
|
position: fixed;
|
||
|
|
bottom: 30rpx;
|
||
|
|
left: 30rpx;
|
||
|
|
width: calc(100% - 60rpx);
|
||
|
|
}
|
||
|
|
.profile_photo{
|
||
|
|
width: 100rpx;
|
||
|
|
height: 120rpx;
|
||
|
|
margin-right: 20rpx;
|
||
|
|
}
|
||
|
|
.addBtn{
|
||
|
|
font-size: 28rpx;
|
||
|
|
border-radius: 4px;
|
||
|
|
border: 1px solid $uni-color-primary;
|
||
|
|
color: $uni-color-primary;
|
||
|
|
padding: 1px 6px;
|
||
|
|
position: absolute;
|
||
|
|
top: calc(50% - 24rpx);
|
||
|
|
right: 30rpx;
|
||
|
|
}
|
||
|
|
.statusBtn{
|
||
|
|
font-size: 28rpx;
|
||
|
|
color: $uni-color-success;
|
||
|
|
padding: 1px 6px;
|
||
|
|
position: absolute;
|
||
|
|
top: calc(50% - 24rpx);
|
||
|
|
right: 30rpx;
|
||
|
|
}
|
||
|
|
.searchBox{
|
||
|
|
// background-color: #2b8df3;
|
||
|
|
// padding: 0 30rpx 10rpx;
|
||
|
|
// position: fixed;
|
||
|
|
// left: 0;
|
||
|
|
// width: calc(100% - 60rpx);
|
||
|
|
// top: 0;
|
||
|
|
margin: 20rpx 30rpx;
|
||
|
|
.input{
|
||
|
|
border-radius: 36rpx;
|
||
|
|
height: 70rpx;
|
||
|
|
text-align: center;
|
||
|
|
background-color: #f7f7f7;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</style>
|