qa-prevention-gwj-first-app/pages/application/limit-space/limit-space-detail.vue

661 lines
19 KiB
Vue
Raw Normal View History

2023-11-07 09:43:46 +08:00
<template>
<view :class="isUps == true ? 'prevent' : ''">
<cu-custom bgColor="bg-gradual-blueness" :isBack="true" :isRingt="true">
<block slot="backText">返回</block>
<block slot="content">有限空间信息</block>
<!-- <block slot="right" v-if="loginUserId==pd.INFORMANT && msg =='edit'">&lt;!&ndash; &ndash;&gt;-->
<!-- <view @click="$noMultipleClicks(goToEdit)"></view>-->
<!-- </block>-->
</cu-custom>
<scroll-view scroll-y="false" >
<view class="form">
<!-- <view class="cu-form-textarea">
<view class="cu-form-title text-hui">检查内容</view>
<view class="f24 text-black">
{{pd.CHECK_CONTENT}}
</view>
</view> -->
<view class="de-card-list de-list">
<!-- <view class="de-title">
<text class="text-semi">隐患验收</text>
</view> -->
<view class="cu-form-textarea bb-default" style="border-top: 1upx solid #eee;" >
<view class="cu-form-title">有限空间编号</view>
<textarea maxlength="-1" :disabled="forbidEdit" v-model="pd.NUMBER" placeholder="按照冀安监管2016217文件规定进行编制"></textarea>
</view>
<view class="cu-form-group ">
<view class="title">有限空间名称</view>
<input name="input" :disabled="forbidEdit" v-model="pd.NAME" placeholder="请输入有限空间名称"></input>
</view>
<view class="cu-form-group ">
<view class="title">有限空间类型</view>
<picker @change="finiteSpaceChange" :disabled="forbidEdit" :value="findex" :range="finiteSpaceList" range-key="NAME">
<view class="picker">
{{pd.LIMITSPACETYPENAME?pd.LIMITSPACETYPENAME:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-group ">
<view class="title">位置及范围</view>
<input name="input" :disabled="forbidEdit" v-model="pd.POSITIONSCOPE" placeholder="请输入位置及范围"></input>
</view>
<view class="cu-form-group ">
<view class="title">主要危险及有害因素</view>
<input name="input" :disabled="forbidEdit" v-model="pd.PRIMARYHAZARD" placeholder="请输入主要危险及有害因素"></input>
</view>
<view class="cu-form-group ">
<view class="title">风险等级</view>
<picker @change="riskGradeChange" :disabled="forbidEdit" :value="rindex" :range="riskGradeList" range-key="NAME">
<view class="picker">
{{pd.RISKGRADENAME?pd.RISKGRADENAME:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-group ">
<view class="title">本有限空间最多作业人数</view>
<input name="input" :disabled="forbidEdit" type="number" @blur="isPosInt()" v-model="pd.MAXPERSON" placeholder="请输入本有限空间最多作业人数"></input>
</view>
<view class="cu-form-group ">
<view class="title text-hui">是否有应急指导书</view>
<radio-group class="selected" @change="radioType" :disabled="forbidEdit">
<view class="group mr20">
<radio class='radio' :disabled="forbidEdit" value="1" :checked="HASINSTRUCTOR==1"></radio>
<text></text>
</view>
<view class="group">
<radio class='radio' :disabled="forbidEdit" value="0" :checked="HASINSTRUCTOR==0"></radio>
<text></text>
</view>
<!--<button class="cu-btn bg-blue" style="width: 60px" @click="downloadAppendix(pd.INSTRUCTION_FILE)">
下载
</button>-->
</radio-group>
</view>
<view v-if="HASINSTRUCTOR==1 && !forbidEdit" class="cu-bar bg-white margin-top">
<view class="action asterisk">
应急指导照片
</view>
<!-- <view class="action">-->
<!-- {{imgList.length}}/4-->
<!-- </view>-->
</view>
<view v-if="HASINSTRUCTOR==1 && !forbidEdit" class="cu-form-group">
<view class="grid col-4 grid-square flex-sub">
<view class="bg-img" v-for="(item,index) in imgList" :key="index" @tap="ViewImage" data-type="0"
:data-url="imgList[index].filePath">
<image :src="imgList[index].filePath" mode="aspectFill"></image>
<view class="cu-tag bg-red" @tap.stop="DelImg" data-type="0" :data-index="index">
<text class='cuIcon-close'></text>
</view>
</view>
<view class="solids" @tap="ChooseImage(0)" v-if="imgList.length<1">
<text class='cuIcon-cameraadd'></text>
</view>
</view>
</view>
<!-- <view v-if="INSTRUCTION_FILE.length !== 0 && HASINSTRUCTOR==1" class="de-sub-content">-->
<!-- <scroll-view scroll-x class="bg-white nav" scroll-with-animation>-->
<!-- <view class="cu-item" v-bind:key="index">-->
<!-- <view class="imgs">-->
<!-- <image :src="'https://qgqy.qhdsafety.com/file/'+INSTRUCTION_FILE" :data-index="index" @click="ViewShowImage" mode=""></image>-->
<!-- </view>-->
<!-- </view>-->
<!-- </scroll-view>-->
<!-- </view>-->
<view class="cu-form-textarea bb-default" style="border-top: 1upx solid #eee;" >
<view class="cu-form-title">备注</view>
<textarea maxlength="-1" :disabled="forbidEdit" v-model="pd.DESCR" placeholder="请输入备注"></textarea>
</view>
<view class="cu-form-group ">
<view class="title">填报人</view>
<picker @change="informantChange" :disabled="forbidEdit" :value="uindex" :range="userList" range-key="USERNAME">
<view class="picker">
{{pd.INFORMANTNAME?pd.INFORMANTNAME:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-group ">
<view class="title">主要负责人</view>
<picker @change="principalChange" :disabled="forbidEdit" :value="pindex" :range="userList" range-key="USERNAME">
<view class="picker">
{{pd.PRINCIPALNAME?pd.PRINCIPALNAME:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-group ">
<view class="title">填报时间</view>
<picker mode="date" :disabled="forbidEdit" :value="pd.COMPILETIME" @change="changeDate">
<view class="picker">
{{pd.COMPILETIME?pd.COMPILETIME:'请选择'}}
</view>
</picker>
</view>
</view>
</view>
<view class="padding flex flex-direction">
<button v-if="!forbidEdit" class="cu-btn bg-blue margin-tb-sm lg" @click="$noMultipleClicks(goSubmit)"></button>
</view>
</scroll-view>
</view>
</template>
<script>
import {
basePath,corpinfoId,deptId,loginUser,formatDate,loginSession,baseImgPath
} from '@/common/tool.js';
import tkiTree from "@/components/select-tree/select-tree.vue"
import gcoord from '@/common/gcoord.js'
export default {
components: {
tkiTree
},
data() {
return {
isUps:false,
msg:'add',
riskId:'',
itemId:'',
index:'',
noClick:true,
pd:[],// 数据
finiteSpaceList:[], //有限空间类型
riskGradeList:[], // 风险等级
findex:-1,
rindex:-1,
HASINSTRUCTOR:1, // 是否有应急指导书
userList:[],//用户列表
imgList: [],
INSTRUCTION_FILE: [],
uindex:-1,
pindex:-1,
todayDate:'',
forbidEdit:true,// 禁止修改
baseImgPath:baseImgPath,
loginUserId:''
}
},
onLoad(event){
this.todayDate = formatDate(new Date(), 'yyyy-MM-dd');
this.pd.LIMITSPACE_ID = event.LIMITSPACE_ID;
if(this.pd.LIMITSPACE_ID){
this.msg="edit";
this.getData();
this.forbidEdit = Boolean(event.forbidEdit)
}else {
// 初始化填报时间
this.pd.COMPILETIME = this.todayDate;
// 初始化填报人
this.pd.INFORMANT = loginUser.USER_ID;
this.pd.INFORMANTNAME = loginUser.NAME;
this.forbidEdit = false;
}
this.loginUserId = loginUser.USER_ID;
this.getDict();
this.getUserList();
loginSession();
},
methods: {
getData() {
var _this = this;
uni.showLoading({
title: '请稍候'
})
uni.request({
url: basePath + '/app/limitspace/goEdit',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
LIMITSPACE_ID: _this.pd.LIMITSPACE_ID,
},
success: (res) => {
if ("success" == res.data.result) {
uni.hideLoading();
_this.pd = res.data.pd; //参数map
_this.HASINSTRUCTOR=_this.pd.HASINSTRUCTOR;
_this.imgList.push({filePath:baseImgPath +res.data.pd.INSTRUCTION_FILE})
// _this.INSTRUCTION_FILE = res.data.pd.INSTRUCTION_FILE
} else if ("exception" == data.result) {
uni.showToast({
title: '错误',
duration: 2000
});
}
}
});
},
//获取数据字典数据
getDict: function () {
var _this = this;
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
url: basePath + '/dictionaries/getLevels?tm=' + new Date().getTime(),
data: {DICTIONARIES_ID: 'dad23a464729485ba364994942db83cc'},
dataType: 'json',
success: function (res) {
_this.finiteSpaceList = res.data.list;
}
});
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
url: basePath + '/dictionaries/getLevels?tm=' + new Date().getTime(),
data: {DICTIONARIES_ID: 'a178357ce6ce4d6a9ac95def6aca3a14'},
dataType: 'json',
success: function (res) {
_this.riskGradeList = res.data.list;
}
});
},
// 获取用户列表
getUserList(){
var _this = this;
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
url: basePath + '/app/user/listUserByCorp?tm=' + new Date().getTime(),
data: {CORPINFO_ID: corpinfoId},
dataType: 'json',
success: function (res) {
_this.userList = res.data.userList;
}
});
},
//图片上传
ChooseImage(e) {
var _this = this;
var ss = 4 - this.imgList.length;
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera', 'album'], //从相册选择
success: (res) => {
for(let i=0; i<res.tempFilePaths.length; i++){
if (e == 0) {
let img = {};
img.id = '';
img.filePath = res.tempFilePaths[i];
this.imgList.push(img)
console.log(this.imgList)
} else {
let img = {};
img.id = '';
img.filePath = res.tempFilePaths[i];
this.imgList1.push(img)
}
}
}
});
},
downloadAppendix(DISPOSAL_FILE) {
plus.runtime.openURL(this.baseImgPath + DISPOSAL_FILE, function (res) {
console.log(res);
});
},
ViewImage(e) {
if(e.currentTarget.dataset.type==0) {
let files =[];
for(var i=0;i<this.imgList.length;i++){
files.push(this.imgList[i].filePath)
}
uni.previewImage({
urls: files,
current: e.currentTarget.dataset.url
});
}
},
DelImg(e) {
var _this = this;
let i = e.currentTarget.dataset.index
uni.showModal({
title: '图片',
content: '确定要删除这张图片吗?',
cancelColor: "#000000",
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
if (e.currentTarget.dataset.type == 0) {
if (_this.imgList[i].id) {
uni.showLoading({
title: '处理中'
})
uni.request({
url: basePath + '/app/imgfiles/delete',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
IMGFILES_ID: _this.imgList[i].id,
},
success: (res) => {
uni.hideLoading();
uni.showToast({
icon: 'none',
title: '删除成功',
duration: 1500
});
_this.imgList.splice(i, 1)
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
} else {
this.imgList.splice(e.currentTarget.dataset.index, 1)
}
} else {
if (_this.imgList1[i].id) {
uni.showLoading({
title: '处理中'
})
uni.request({
url: basePath + '/app/limitspace/delete',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
LIMITSPACE_ID: _this.imgList[i].id,
},
success: (res) => {
uni.hideLoading();
uni.showToast({
icon: 'none',
title: '删除成功',
duration: 1500
});
_this.imgList1.splice(i, 1)
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
} else {
this.imgList1.splice(e.currentTarget.dataset.index, 1)
}
}
}
}
})
},
finiteSpaceChange(e) {
this.findex = e.detail.value;
this.pd.LIMITSPACETYPE=this.finiteSpaceList[this.findex].BIANMA;
this.pd.LIMITSPACETYPENAME=this.finiteSpaceList[this.findex].NAME;
this.$forceUpdate();//强制刷新
},
riskGradeChange(e) {
this.rindex = e.detail.value;
this.pd.RISKGRADE=this.riskGradeList[this.rindex].BIANMA;
this.pd.RISKGRADENAME=this.riskGradeList[this.rindex].NAME;
this.$forceUpdate();//强制刷新
},
informantChange(e){
this.uindex = e.detail.value;
this.pd.INFORMANT=this.userList[this.uindex].USER_ID;
this.pd.INFORMANTNAME=this.userList[this.uindex].USERNAME;
this.$forceUpdate();//强制刷新
},
principalChange(e){
this.pindex = e.detail.value;
this.pd.PRINCIPAL=this.userList[this.pindex].USER_ID;
this.pd.PRINCIPALNAME=this.userList[this.pindex].USERNAME;
this.$forceUpdate();//强制刷新
},
isPosInt(){
if(!/^[1-9]\d*$/.test(this.pd.MAXPERSON)){
uni.showToast({
icon: 'none',
title: '请输入正整数',
duration: 1500
});
}
},
changeDate(e) {
this.pd.COMPILETIME = e.detail.value
this.$forceUpdate();//强制刷新
},
goSubmit() {
var _this = this;
uni.showLoading({
title: '请稍候'
})
if (!_this.pd.NUMBER) {
uni.showToast({
icon: 'none',
title: '请填有限空间编号',
duration: 1500
});
return;
}
if (!_this.pd.NAME) {
uni.showToast({
icon: 'none',
title: '请填有限空间名称',
duration: 1500
});
return;
}
if (!_this.pd.LIMITSPACETYPE) {
uni.showToast({
icon: 'none',
title: '请选择有限空间类型',
duration: 1500
});
return;
}
if (!_this.pd.POSITIONSCOPE) {
uni.showToast({
icon: 'none',
title: '请填位置及范围',
duration: 1500
});
return;
}
if (!_this.pd.PRIMARYHAZARD) {
uni.showToast({
icon: 'none',
title: '请填主要危险及有害因素',
duration: 1500
});
return;
}
if (!_this.pd.RISKGRADE) {
uni.showToast({
icon: 'none',
title: '请选择风险等级',
duration: 1500
});
return;
}
if (!_this.pd.MAXPERSON) {
uni.showToast({
icon: 'none',
title: '请填本有限空间最多作业人数',
duration: 1500
});
return;
} else if(!/^[1-9]\d*$/.test(this.pd.MAXPERSON)){
uni.showToast({
icon: 'none',
title: '请输入正整数',
duration: 1500
});
}
if (!_this.HASINSTRUCTOR) {
uni.showToast({
icon: 'none',
title: '请选择是否有应急指导书',
duration: 1500
});
return;
}
if (!_this.pd.DESCR) {
uni.showToast({
icon: 'none',
title: '请填备注',
duration: 1500
});
return;
}
if (!_this.pd.INFORMANT) {
uni.showToast({
icon: 'none',
title: '请选择填报人',
duration: 1500
});
return;
}
if (!_this.pd.PRINCIPAL) {
uni.showToast({
icon: 'none',
title: '请选择主要负责人',
duration: 1500
});
return;
}
if (!_this.pd.COMPILETIME) {
uni.showToast({
icon: 'none',
title: '请选择填报时间',
duration: 1500
});
return;
}
console.log(_this.imgList[0].filePath)
uni.uploadFile({
url: basePath+'/app/limitspace/'+_this.msg,
// method: 'POST',
// dataType: 'json',
// header: {
// 'Content-type':'application/x-www-form-urlencoded'
// },
filePath: _this.imgList[0].filePath,
name: 'FFILE',
formData: {
LIMITSPACE_ID:this.pd.LIMITSPACE_ID,
NUMBER:this.pd.NUMBER,
NAME:this.pd.NAME,
LIMITSPACETYPE:this.pd.LIMITSPACETYPE,
POSITIONSCOPE:this.pd.POSITIONSCOPE,
PRIMARYHAZARD:this.pd.PRIMARYHAZARD,
RISKGRADE:this.pd.RISKGRADE,
MAXPERSON:this.pd.MAXPERSON,
HASINSTRUCTOR:this.HASINSTRUCTOR,
DESCR:this.pd.DESCR,
INFORMANT:this.pd.INFORMANT,
PRINCIPAL:this.pd.PRINCIPAL,
COMPILETIME:this.pd.COMPILETIME,
CORPINFO_ID:corpinfoId,
USER:loginUser.USER_ID,
},
success: (res) => {
uni.hideLoading();
if ("success" == JSON.parse(res.data).result) {
console.log("成功")
uni.showToast({
icon: 'none',
title: '提交成功',
duration: 1500
});
setTimeout(function(){
var pages = getCurrentPages(); // 获取当前页面栈
var prePage = pages[pages.length - 2]; // 上二级页面
prePage.$vm.initflag = true; // A 页面 init方法 为true
uni.navigateBack({delta: 1});
uni.hideLoading();
},1500);
}else{
uni.showToast({
icon:'none',
title: '系统错误',
duration: 2000
});
}
}
});
},
radioType(e){
this.HASINSTRUCTOR = e.detail.value
},
goToEdit(){
this.forbidEdit = false;
}
}
}
</script>
<style>
.prevent {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
overflow: hidden;
}
.cu-form-title{
padding: 20upx 0;
}
.cu-form-textarea{
background-color: #ffffff;
padding: 1upx 30upx 20upx;
min-height: 100upx;
}
.cu-form-textarea textarea {
height: 4.6em;
width: 100%;
line-height: 1.2em;
flex: 1;
font-size: 28upx;
padding: 0;
}
.selected{
display: flex;
align-items: center;
height: 100upx;
}
.selected .radio{
transform:scale(0.8);
margin-right: 10upx;
}
.group{
display: flex;
align-items: center;
}
.cu-form-group .title{
font-size: 28upx;
color: #666;
}
.cu-bar .action:first-child {
font-size: 28upx;
}
</style>