This commit is contained in:
shijing 2022-10-13 16:15:14 +08:00
parent d242a5e7c2
commit 07b8fdb6f9
5 changed files with 617 additions and 30 deletions

View File

@ -275,6 +275,14 @@
"enablePullDownRefresh": false
}
},
{
"path": "pages/workSpace/opls/clear",
"style": {
"navigationBarTitleText": "清库作业许可证",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
},
{
"path": "pages/workSpace/visit/vpeopleList",
"style": {

View File

@ -96,6 +96,7 @@
})
},
addCate(row,type) {
debugger;
let params=null,oplCateCode = null;
if(type==='edit'){
oplCateCode = row.cate_code;

View File

@ -3,6 +3,11 @@
<uni-nav-bar @clickLeft="goBack()" class="nav-bar" height="110rpx" leftWidth="400rpx" leftText="工作人员选择"
leftIcon="left" border backgroundColor="#2cade8" color="#fff" fixed statusBar shadow></uni-nav-bar>
<view class="apply-info">
<view class="list-title">
<view class="selectCount">已选{{workerList.length}}</view>
<button v-if="workerList.length>0" type="primary" class="select" @click="checkPeople">继续选择</button>
<button v-else type="primary" class="select" @click="checkPeople">选择人员</button>
</view>
<view class="row" v-for="(row,index) in workerList" :key="index" @tap="select(row)">
<view class="center" style="display: flex;">
<view class="name-tel" style="width: 80%;">
@ -13,14 +18,8 @@
<button type="warn" size="mini" @click="remove(row)" >X</button>
</view>
</view>
<!-- <view class="right">
<view class="icon bianji" @tap.stop="edit(row)">
</view>
</view> -->
</view>
<button type="primary" class="select" @click="checkPeople">选择人员</button>
</view>
<!-- <button type="primary" class="addNew" @click="add">新增人员</button> -->
<view class="dialogWrap" v-if="limitedPeople">
<view class="dialogCont">
<view class="dialogTitle">
@ -28,18 +27,23 @@
<view class="dialogCloseImg" @click="closeDialog"></view>
</view>
<form @submit="formSubmit">
<view class="uni-form-item uni-column">
<view class="title">作业人员</view>
<uni-data-select :localdata="workerRange" v-model="formData.worker" @change="selectWorker">
</uni-data-select>
<view class="uni-form-item uni-column" style="border-bottom: 1upx solid #eeeeee;">
<view class="title">作业人员:</view>
<view style="position: relative;">
<ba-tree-picker ref="workerPicker" :multiple='false' @select-change="selectChange" title="选择作业人员"
:localdata="vuex_userRange" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
<text type="text">{{worker_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showPicker" type="arrowright" color="#999999"/>
</view>
</view>
<view class="uni-form-item uni-column">
<view class="title">工作职责</view>
<view class="title">工作职责:</view>
<uni-data-select :localdata="dutyRange" v-model="formData.duty">
</uni-data-select>
</view>
<view class="uni-form-item uni-column">
<view class="title">证书</view>
<view class="title">证书:</view>
<checkbox-group @change="checkboxMeasuresChange">
<label v-for="(item,index) in certificateRange" :key="item.id"
style="margin-right: 20rpx;margin-bottom: 20rpx;">
@ -66,8 +70,13 @@
</template>
<script>
import baTreePicker from "../../comm/ba-tree-picker/ba-tree-picker.vue";
import nonNullCheck from '../../../utils/nonNullCheck.js';
export default {
name: "workerList",
components: {
baTreePicker
},
data() {
return {
oplId: null,
@ -105,6 +114,7 @@
},
],
certificateRange: [],
worker_name:'请选择工作人员'
}
},
onLoad(params) {
@ -120,6 +130,13 @@
// this.getVpeopleList();
},
methods: {
showPicker() {
this.$refs.workerPicker._show();
},
selectChange(ids, names) {
this.formData.worker = ids[0];
this.worker_name = names;
},
showNext(){
if(["fire", "space", "cooler"].indexOf(this.oplCateCode)!=-1){
this.showN = true
@ -131,7 +148,9 @@
that.$u.api.oplWorkerCreate(that.formData).then(res => {
if (res.err_msg) {} else {
that.getWorkerList();
this.limitedPeople = false;
that.limitedPeople = false;
that.formData.worker = '';
that.worker_name = '';
}
})
},
@ -199,6 +218,8 @@
this.limitedPeople = true;
},
closeDialog() {
this.formData.worker = '';
this.worker_name = '请选择工作人员';
this.limitedPeople = false;
},
select(row) {},
@ -272,7 +293,18 @@
box-sizing: border-box;
margin-top: 12px;
}
.list-title{
display: flex;
padding-bottom: 20rpx;
justify-content: start;
border-bottom: 1upx solid #eeeeee;
}
.selectCount{
height: 70rpx;
line-height:70rpx;
margin-right: 20rpx;
font-size: 36rpx;
}
.row {
padding: 10upx;
margin-bottom: 20upx;
@ -299,12 +331,12 @@
}
.select {
margin: auto;
margin: 0;
box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.4);
width: 400rpx;
height: 80rpx;
line-height: 80rpx;
height: 70rpx;
line-height: 70rpx;
font-size: 30rpx;
border-radius: 35rpx;
}
.save-btn {
@ -326,7 +358,7 @@
}
.dialogCont {
width: 80vw;
/* width: 80vw;
position: absolute;
top: 50%;
margin: auto;
@ -334,7 +366,13 @@
left: 10vw;
transform: translateY(-50%);
padding: 20rpx;
border-radius: 20rpx;
border-radius: 20rpx; */
width: 100vw;
position: absolute;
top: 61px;
height: 100vh;
padding: 30rpx;
background-color: #ffffff;
}
.dialogTitle {
@ -346,7 +384,8 @@
}
.uni-form-item {
height: 160rpx;
min-height: 160rpx;
}
.uni-form-item>.title {

View File

@ -0,0 +1,539 @@
<template>
<view class="list-body">
<uni-nav-bar @clickLeft="goBack()" class="nav-bar" height="110rpx" leftWidth="400rpx" leftText="添加作业许可证"
leftIcon="left" border backgroundColor="#2cade8" color="#fff" fixed statusBar shadow></uni-nav-bar>
<view class="form-info">
<view class="form-item border-bottom" style="height: 100rpx;">
<view class="">
<text class="form-left-text">关联作业</text>
</view>
<view class="form-right">
<view>{{operationName}}</view>
</view>
</view>
<view class="form-item" style="height: 100rpx;">
<view class="">
<text class="form-left-text">许可证类型</text>
</view>
<view class="form-right">
<view>清库</view>
</view>
</view>
</view>
<view class="form-info">
<view class="form-content ">
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">开始时间</text>
</view>
<view class="form-right form-date">
<picker mode="date" :value="formData.start_time" @change="bindStartDateChange">
<view class="uni-input">{{formData.start_time}}</view>
</picker>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">结束时间</text>
</view>
<view class="form-right form-date">
<picker mode="date" :value="formData.end_time" @change="bindEndDateChange">
<view class="uni-input">{{formData.end_time}}</view>
</picker>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">作业部门</text>
</view>
<view class="form-right" style="position: relative;">
<ba-tree-picker ref="deptDoPicker" :multiple='false' @select-change="deptDoChange" title="选择作业部门"
:localdata="depRange" valueKey="id" textKey="name" childrenKey="children"/>
<text type="text">{{dept_do_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showDeptDoPicker" type="arrowright" color="#999999"/>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">作业负责人</text>
</view>
<view class="form-right" style="position: relative;">
<ba-tree-picker ref="charger_Picker" :multiple='false' @select-change="select_charger_Change" title="选择作业负责人"
:localdata="vuex_userRange" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
<text type="text">{{charger_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showChargerPicker" type="arrowright" color="#999999"/>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">作业监护人</text>
</view>
<view class="form-right" style="position: relative;">
<ba-tree-picker ref="monitor_Picker" :multiple='false' @select-change="select_monitor_Change" title="选择作业监护人"
:localdata="vuex_userRange" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
<text type="text">{{monitor_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showMonitorPicker" type="arrowright" color="#999999"/>
</view>
</view>
<view class="form-item border-bottom" style="height: fit-content;">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">风险选择</text>
<!-- risks_checked -->
</view>
<view class="form-right">
<checkbox-group @change="checkboxRiskChange">
<label v-for="(item,index) in risklist" :key="item.value">
<checkbox :value="item.id" :checked="item.checked" />{{item.name}}
</label>
</checkbox-group>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">其他风险</text>
</view>
<view class="form-right">
<input type="text" v-model="formData.other_risk" maxlength="50" placeholder="请输入" />
</view>
</view>
<view class="form-item border-bottom" style="height: fit-content;">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">措施选择</text>
<!-- measures_checked -->
</view>
<view class="form-right">
<checkbox-group @change="checkboxMeasuresChange">
<label v-for="(item,index) in measurelist" :key="item.value"
style="margin-right: 20rpx;margin-bottom: 20rpx;">
<checkbox :value="item.id" :checked="item.checked" />{{item.name}}
</label>
</checkbox-group>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">其他应急处置</text>
</view>
<view class="form-right">
<input type="text" v-model="formData.other_emr" maxlength="50" placeholder="请输入" />
</view>
</view>
</view>
<view class="form-info">
<view class="form-item " style="height: fit-content;">
<view class="title">照片</view>
<view style="flex: 3;">
<u-upload :action="vuex_apifile" :header="header" ref="uUpload"
:file-list="fileList" max-count="9" @on-success="imgUpSuccess"></u-upload>
</view>
</view>
</view>
</view>
<view class="btn">
<button type="primary" class="save-btn" @click="saveSubmit">下一步</button>
</view>
</view>
</template>
<script>
import baTreePicker from "../../comm/ba-tree-picker/ba-tree-picker.vue";
import nonNullCheck from '../../../utils/nonNullCheck.js';
import resetData from '../../../utils/common.js';
export default {
name: "clear",
components: {
baTreePicker
},
data() {
return {
formData: {
id: "",
start_time: null,
end_time: null,
operation: "",
cate: "",
dept_do: '',
charger: '',
monitor: '',
other_emr: '',
other_risk: '',
risks_checked: [],
measures_checked: [],
},
header: {},
oplId: null,
oplCateCode: null,
operationName: '',
oplCateName: '',
fileList: [],
risklist: [],
measurelist: [],
range: [],
//
depRange: [],
dept_do_name:'',
charger_name:'',
monitor_name:'',
}
},
onLoad(params) {
this.operationId = params.operationId;
this.oplcateId = params.oplcateId;
this.type = params.type;
if (params.oplId) {
this.oplId = params.oplId;
this.formData.id = params.oplId;
this.getOplDetail()
}else{
console.log('s', this.vuex_user.belong_dept)
this.formData.dept_do = this.vuex_user.belong_dept
this.formData.cate = this.oplcateId;
this.formData.operation = this.operationId;
this.getOperation();
}
},
onShow() {
this.getdept();
this.getRange();
this.getHeader();
},
methods: {
showDeptDoPicker() {
this.$refs.deptDoPicker._show();
},
showChargerPicker() {
this.$refs.charger_Picker._show();
},
showMonitorPicker() {
this.$refs.monitor_Picker._show();
},
deptDoChange(ids, names) {
this.formData.dept_do = ids[0];
this.dept_do_name = names;
},
select_charger_Change(ids, names) {
this.formData.charger = ids[0];
this.charger_name = names;
},
select_monitor_Change(ids, names) {
this.formData.monitor = ids[0];
this.monitor_name = names;
},
getHeader() {
this.header = {
Authorization: "Bearer " + this.vuex_token
}
},
//operation
getOperation() {
let that = this;
that.$u.api.operationItem(that.operationId).then((res) => {
that.formData.start_time = res.start_time; //
that.formData.end_time = res.end_time; //
that.operationName = res.name; //
this.getOplcates()
});
},
getOplDetail(){
let that = this;
that.$u.api.oplItem(that.oplId).then((res) => {
that.formData = res; //
that.operationName = res.operation_.name;
that.dept_do_name = res.dept_do_.name;
that.charger_name = res.charger_.name;
that.monitor_name = res.monitor_.name;
this.getOplcates()
});
},
//ID===>
getOplcates() {
let that = this;
that.$u.api.oplCateItem(that.oplcateId).then((res) => {
console.log(res); //
that.risklist = [];
that.measurelist = [];
that.oplCateName = res.name;
that.oplCateCode = res.code;
let risklist = res.risk_options_;
let measurelist = res.measure_options_;
risklist.forEach(item => {
let obj = {};
obj = item;
obj.checked = false;
that.risklist.push(obj)
})
measurelist.forEach(item => {
let obj = {};
obj = item;
obj.checked = false;
that.measurelist.push(obj)
})
this.editCheckShow()
});
},
editCheckShow() {
// debugger;
let that = this;
that.risklist.forEach(item => {
if (this.formData.risks_checked.indexOf(item.id) > -1) {
item.checked = true;
} else {
item.checked = false;
}
})
that.measurelist.forEach(item => {
if (this.formData.measures_checked.indexOf(item.id) > -1) {
item.checked = true;
} else {
item.checked = false;
}
})
},
//
getRange() {
this.$u.api.areaLists({
page: 0
}).then(res => {
let range = [];
let obj = {};
res.forEach(item => {
obj = {
value: null,
text: ''
};
obj.value = item.id;
obj.text = item.name;
range.push(obj);
})
this.range = range
})
},
//dept
getdept() {
let that = this;
that.$u.api.deptList({
page: 0
}).then(res => {
that.depRange = that.redata(res);
console.log(that.depRange)
})
},
redata(postList) {
let posts = [];
postList.forEach((item) => {
let obj = new Object();
obj = {
...item
};
obj.value = item.id;
obj.text = item.name;
obj.parentId = item.parent;
posts.push(obj);
});
let obj = posts.reduce((res, v) => ((res[v.id] = v), res), {}); //Object
let arr = [];
for (let item of posts) {
if (item.parentId == null) {
arr.push(item);
continue;
}
let parent = obj[item.parentId];
parent.children = parent.children ? parent.children : [];
parent.children.push(item);
}
console.log(arr);
return arr;
},
checkboxRiskChange(e) {
let values = e.detail.value;
this.formData.risks_checked = values;
// debugger;
// console.log(this.formData.risks_checked);
},
checkboxMeasuresChange(e) {
let values = e.detail.value;
this.formData.measures_checked = values;
// debugger;
// console.log(this.formData.measures_checked);
},
select(row) {},
goBack() {
uni.navigateBack({
delta: 1
})
},
edit(row) {},
saveSubmit() {
debugger;
uni.showLoading({
title: '提交中'
});
let that = this;
let params = null;
console.log(this.formData);
if (that.oplId !== null) {
that.$u.api.oplUpdate(that.oplId, that.formData).then(res => {
uni.hideLoading();
params = `?oplId=${that.oplId}&oplCateCode=${that.oplCateCode}`;
uni.navigateTo({
url: '/pages/workSpace/operation/workerList' + params
})
})
} else {
that.$u.api.oplCreate(that.formData).then(res => {
uni.hideLoading();
params = `?oplId=${res.id}&oplCateCode=${that.oplCateCode}`;
uni.navigateTo({
url: '/pages/workSpace/operation/workerList' + params
})
})
}
},
}
}
</script>
<style>
>>>.uni-navbar__header,
>>>.uni-status-bar {
background-image: linear-gradient(90deg, #164cc3 0%, #2c6fd9 100%), linear-gradient(#e60012, #e60012) !important;
}
.list-body {
background-color: #f3fbff;
padding-bottom: 113px;
}
.form-info {
width: 720upx;
margin: 0 auto;
background-color: #FFFFFF;
border-radius: 5px;
padding: 12px 16px;
box-sizing: border-box;
margin-top: 12px;
}
.row {
padding: 10upx;
margin-bottom: 20upx;
border-bottom: 1upx solid #eeeeee;
}
.uni-list-cell {
display: flex;
padding: 10upx;
margin-bottom: 20upx;
border-bottom: 1upx solid #eeeeee;
}
.add {
position: fixed;
bottom: 0;
width: 100%;
height: 120upx;
justify-content: center;
align-items: center;
}
.btn {
margin: auto;
box-shadow: 0upx 5upx 10upx rgba(0, 0, 0, 0.4);
width: 70%;
}
.save-btn {
height: 80rpx;
color: #fff;
font-size: 30upx;
justify-content: center;
align-items: center;
}
.form-item {
font-family: PingFang-SC-Medium;
font-size: 30rpx;
height: 200rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
}
.form-left-text {
color: #212121;
margin-bottom: 33rpx;
}
.form-left {
width: 100%;
}
.form-right {
margin-left: 20rpx;
flex: 1;
color: #414141;
}
.form-right input {
font-size: 30rpx;
}
.form-date>>>.uni-date__x-input {
height: 97rpx;
font-size: 30rpx;
}
.form-date>>>.uni-icons {
display: none;
}
.form-right>>>.uni-label-pointer {
min-width: 50%;
display: inline-block;
margin-bottom: 20rpx;
}
.apply-reason-text {
width: 653rpx;
height: 179rpx;
background-color: #f6f8fc;
border: solid 1rpx #e5e5e5;
margin-top: 21rpx;
padding: 14rpx 24rpx;
font-size: 26rpx;
box-sizing: border-box;
}
.apply_require {
margin-top: 0rpx !important;
}
.form-right {
flex: 1;
color: #414141;
}
.border-bottom {
border-bottom: 1rpx solid #eeeeee;
}
</style>

View File

@ -54,38 +54,38 @@
</uni-data-select>
</view>
</view>
<view class="form-item border-bottom" style="position: relative;">
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">作业部门</text>
</view>
<view class="form-right">
<ba-tree-picker ref="deptDoPicker" :multiple='false' @select-change="deptDoChange" title="选择部门"
<view class="form-right" style="position: relative;">
<ba-tree-picker ref="deptDoPicker" :multiple='false' @select-change="deptDoChange" title="选择业部门"
:localdata="depRange" valueKey="id" textKey="name" childrenKey="children"/>
<text type="text">{{dept_do_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showDeptDoPicker" type="arrowright" color="#999999"/>
</view>
</view>
<view class="form-item border-bottom" style="position: relative;">
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">作业负责人</text>
</view>
<view class="form-right">
<ba-tree-picker ref="charger_Picker" :multiple='false' @select-change="select_charger_Change" title="选择部门协调员"
<view class="form-right" style="position: relative;">
<ba-tree-picker ref="charger_Picker" :multiple='false' @select-change="select_charger_Change" title="选择作业负责人"
:localdata="vuex_userRange" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
<text type="text">{{charger_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showChargerPicker" type="arrowright" color="#999999"/>
</view>
</view>
<view class="form-item border-bottom" style="position: relative;">
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">作业监护人</text>
</view>
<view class="form-right">
<ba-tree-picker ref="monitor_Picker" :multiple='false' @select-change="select_monitor_Change" title="选择部门协调员"
<view class="form-right" style="position: relative;">
<ba-tree-picker ref="monitor_Picker" :multiple='false' @select-change="select_monitor_Change" title="选择作业监护人"
:localdata="vuex_userRange" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
<text type="text">{{monitor_name}}</text>
<uni-icons style="position: absolute; right: 0;" @click="showMonitorPicker" type="arrowright" color="#999999"/>