sx_yjb_app/pages/application/limit-space/limit-space-detail.vue

565 lines
17 KiB
Vue
Raw Normal View History

2025-09-09 09:32:47 +08:00
<template>
<view>
<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'"><!-- -->
<view @click="$noMultipleClicks(goToEdit)"></view>
</block>
</cu-custom>
<scroll-view scroll-y="false">
<view class="form">
<view class="de-card-list de-list">
<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.DEVICENAME" placeholder="请输入位置及范围"></input>
</view>
<view class="cu-form-group ">
<view class="title">警示标志附件</view>
<image :src="baseImgPath + pd.WARNINGSIGNS_PATH" :data-index="index"
@click="ViewShowImage(baseImgPath + pd.WARNINGSIGNS_PATH)"
mode="" style="width: 50upx;height: 50upx;"></image>
</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>
<input name="input" :disabled="forbidEdit" v-model="pd.ACCIDENTTYPE"
placeholder="请输入主要事故类型"></input>
</view>
<view class="cu-form-group ">
<view class="title">最多作业人数</view>
<input name="input" :disabled="forbidEdit" v-model="pd.MAXPERSON"
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>
<view v-show="pd.HASINSTRUCTOR_PATH" @click="ylZds(pd.HASINSTRUCTOR_PATH)"></view>
<!-- <radio-group class="selected" @change="radioType" :disabled="forbidEdit">-->
<!-- <view class="group mr20">-->
<!-- <radio class='radio' :disabled="forbidEdit" value="1" :checked="pd.HASINSTRUCTOR_PATH"></radio>-->
<!-- <text></text>-->
<!-- </view>-->
<!-- <view class="group">-->
<!-- <radio class='radio' :disabled="forbidEdit" value="0" :checked="pd.HASINSTRUCTOR_PATH"></radio>-->
<!-- <text></text>-->
<!-- </view>-->
<!-- </radio-group>-->
</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, loginUser, formatDate, loginSession, baseImgPath
} from '@/common/tool.js';
import tkiTree from "@/components/select-tree/select-tree.vue"
export default {
components: {
tkiTree
},
data() {
return {
isUps: false,
baseImgPath: baseImgPath,
msg: 'add',
riskId: '',
itemId: '',
index: '',
noClick: true,
pd: {},// 数据
finiteSpaceList: [], //受限空间类型
riskGradeList: [], // 风险等级
findex: -1,
rindex: -1,
HASINSTRUCTOR: 1, // 是否有应急指导书
userList: [],//用户列表
uindex: -1,
pindex: -1,
todayDate: '',
forbidEdit: true,// 禁止修改
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();
} 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: {
ViewShowImage(url) {
let files = [];
files.push(url)
uni.previewImage({
urls: files,
current: 0
});
},
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,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
if ("success" == res.data.result) {
uni.hideLoading();
_this.pd = res.data.pd; //参数map
_this.HASINSTRUCTOR = _this.pd.HASINSTRUCTOR;
} 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',
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
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',
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
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: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: function (res) {
_this.userList = res.data.userList;
}
});
},
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();//强制刷新
},
ylZds(HASINSTRUCTOR_PATH) {
if (this.validStr(HASINSTRUCTOR_PATH)) {
uni.showLoading({
title: "加载中..."
}); //加载中动画
uni.downloadFile({
url: baseImgPath + HASINSTRUCTOR_PATH,
success: (res) => {
uni.hideLoading(); //结束加载中动画
uni.openDocument({
filePath: res.tempFilePath,
success: function (res) {
// console.log(res)
}
})
}
})
} else {
uni.showToast({
icon: 'none',
title: '无应急指导书附件',
duration: 2000
});
}
},
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;
}
uni.request({
url: basePath + '/app/limitspace/' + _this.msg,
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
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,
USER: loginUser.USER_ID,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
uni.hideLoading();
if ("success" == res.data.result) {
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.75);
margin-right: 10upx;
}
.group {
display: flex;
align-items: center;
}
.cu-form-group input {
font-size: 28upx;
}
.cu-form-group .title {
font-size: 28upx;
color: #000;
font-weight: bold;
}
.cu-bar .action:first-child {
font-size: 28upx;
}
</style>