644 lines
16 KiB
Vue
644 lines
16 KiB
Vue
<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">
|
||
<uni-datetime-picker
|
||
v-model="formData.start_time"
|
||
type="datetime"
|
||
:hide-second="true"
|
||
/>
|
||
</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">
|
||
<uni-datetime-picker
|
||
v-model="formData.end_time"
|
||
type="datetime"
|
||
:hide-second="true"
|
||
/>
|
||
</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">
|
||
<uni-data-select v-model="formData.level" :localdata="leveloptions">
|
||
</uni-data-select>
|
||
</view>
|
||
</view>
|
||
<view class="form-item border-bottom" style="position: relative;">
|
||
<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="选择业务部门"
|
||
:localdata="depRange" valueKey="id" textKey="name" childrenKey="children"/>
|
||
<view @click="showDeptDoPicker" style="position: relative;display: flex;">
|
||
<text type="text" @click="showDeptDoPicker">{{dept_do_name}}</text>
|
||
<uni-icons style="position: absolute; right: 0;" @click="showDeptDoPicker" type="arrowright" color="#999999"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="form-item border-bottom" style="position: relative;">
|
||
<view class="form-left">
|
||
<text class="star">*</text>
|
||
<text class="form-left-text">作业负责人</text>
|
||
</view>
|
||
<view class="form-right">
|
||
<view @click="showChargerPicker" style="position: relative;display: flex;">
|
||
<text type="text" >{{charger_name}}</text>
|
||
<uni-icons style="position: absolute; right: 0;" type="arrowright" color="#999999"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="form-item border-bottom" style="position: relative;">
|
||
<view class="form-left">
|
||
<text class="star">*</text>
|
||
<text class="form-left-text">作业监护人</text>
|
||
</view>
|
||
<view class="form-right">
|
||
<view @click="showMonitorPicker" style="position: relative;display: flex;">
|
||
<text type="text" >{{monitor_name}}</text>
|
||
<uni-icons style="position: absolute; right: 0;" type="arrowright" color="#999999"/>
|
||
</view>
|
||
</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="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="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="form-left">
|
||
<text class="star">*</text>
|
||
<text class="form-left-text">照片</text>
|
||
</view>
|
||
<view style="flex: 3;">
|
||
<u-upload :action="vuex_apifile" :header="header" ref="uUpload"
|
||
:file-list="fileList" max-count="9"></u-upload>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
<view class="btn">
|
||
<!-- <button v-if="formData.ticket_&&formData.ticket_.act_state===2" type="primary" class="save-btn" @click="saveChange">提交</button> -->
|
||
<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: "fire",
|
||
components: {
|
||
baTreePicker
|
||
},
|
||
data() {
|
||
return {
|
||
formData: {
|
||
id: "",
|
||
start_time: null,
|
||
end_time: null,
|
||
operation: "",
|
||
cate: "",
|
||
level: '',
|
||
dept_do: '',
|
||
charger: '',
|
||
monitor: '',
|
||
other_emr: '',
|
||
other_risk: '',
|
||
risks_checked: [],
|
||
measures_checked: [],
|
||
},
|
||
header: {},
|
||
oplId: null,
|
||
oplCateCode: null,
|
||
operationName: '',
|
||
oplCateName: '',
|
||
fileList: [],
|
||
risklist: [],
|
||
measurelist: [],
|
||
range: [],
|
||
|
||
//部门
|
||
depRange: [],
|
||
leveloptions: [{
|
||
value: "一级吊装",
|
||
text: "一级吊装"
|
||
},
|
||
{
|
||
value: "二级吊装",
|
||
text: "二级吊装"
|
||
},
|
||
{
|
||
value: "三级吊装",
|
||
text: "三级吊装"
|
||
},
|
||
],
|
||
dept_do_name:'',
|
||
charger_name:'',
|
||
monitor_name:'',
|
||
transition:'',//流转
|
||
}
|
||
},
|
||
onLoad(params) {
|
||
// debugger;
|
||
console.log(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();
|
||
}
|
||
if(params.transition){
|
||
this.transition = params.transition;
|
||
}
|
||
},
|
||
onShow() {
|
||
this.getdept();
|
||
this.getRange();
|
||
this.getHeader();
|
||
},
|
||
methods: {
|
||
showDeptDoPicker() {
|
||
this.$refs.deptDoPicker._show();
|
||
},
|
||
showChargerPicker() {
|
||
let params='?type=charger&typeName=charger_name'
|
||
uni.navigateTo({
|
||
url:"../../comm/userSelect/index"+params
|
||
})
|
||
},
|
||
showMonitorPicker() {
|
||
let params='?type=monitor&typeName=monitor_name'
|
||
uni.navigateTo({
|
||
url:"../../comm/userSelect/index"+params
|
||
})
|
||
},
|
||
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
|
||
}
|
||
},
|
||
imgUpSuccess(data,index,lists){
|
||
this.fileList=lists;
|
||
},
|
||
//获取工作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;
|
||
res.create_imgs_.forEach(item=>{
|
||
that.fileList.push({
|
||
url: that.vuex_host+item.path,
|
||
id:item.id,
|
||
})
|
||
})
|
||
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;
|
||
let that = this;
|
||
let params = null;
|
||
that.formData.create_imgs = [];
|
||
let files = [];
|
||
// 通过filter,筛选出上传进度为100的文件(因为某些上传失败的文件,进度值不为100,这个是可选的操作)
|
||
files = this.$refs.uUpload.lists.filter(val => {
|
||
return val.progress == 100;
|
||
})
|
||
|
||
files.forEach(item=>{
|
||
if(item.response){
|
||
that.formData.create_imgs.push(item.response.id)
|
||
}else{
|
||
that.formData.create_imgs.push(item.id)
|
||
}
|
||
})
|
||
if(that.formData.create_imgs.length === 0){
|
||
uni.showToast({
|
||
title: '请上传作业准备照片',
|
||
icon: 'none'
|
||
})
|
||
return
|
||
}
|
||
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
|
||
})
|
||
})
|
||
}
|
||
|
||
},
|
||
saveChange(){
|
||
uni.showLoading({
|
||
mask: true,
|
||
title: '正在提交...'
|
||
})
|
||
let that = this;
|
||
let params = new Object();
|
||
params.ticket_data = {};
|
||
params.transition = that.transition;
|
||
that.formData.create_imgs = [];
|
||
that.fileList.forEach(item=>{
|
||
debugger;
|
||
if(item.id){
|
||
console.log(item.id);
|
||
that.formData.create_imgs.push(item.id)
|
||
}else{
|
||
console.log(item.response.id)
|
||
that.formData.create_imgs.push(item.response.id)
|
||
}
|
||
})
|
||
that.$u.api.oplUpdate(that.oplId, that.formData).then(res => {
|
||
debugger;
|
||
console.log(this.formData.ticket)
|
||
console.log(params)
|
||
this.$u.api.ticketHandle(this.formData.ticket, params).then(res => {
|
||
debugger;
|
||
console.log('已处理')
|
||
uni.switchTab({
|
||
url: '/pages/home/home_'
|
||
});
|
||
uni.hideLoading()
|
||
}).catch(e => {
|
||
uni.hideLoading()
|
||
})
|
||
})
|
||
},
|
||
}
|
||
}
|
||
</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>
|