安全风险辨识表

This commit is contained in:
yunkexin 2026-06-17 11:43:01 +08:00
parent 394ae82ffd
commit 9cbdd7ca30
2 changed files with 125 additions and 67 deletions

View File

@ -30,13 +30,13 @@
<!-- <u-icon style="margin-left: 4px;" disabled slot="right" name="arrow-down" size="12">
</u-icon> -->
</u-form-item>
<u-form-item label="辨识要求" @click="handleChangeStep('','demand')">
<u--input v-model="(dataModel.Nav_Require||{}).NAME" placeholder="请选择辨识要求" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input>
<u-icon style="margin-left: 4px;" slot="right" name="arrow-down" size="12">
</u-icon>
<u-form-item label="辨识要求">
<!-- <u--input v-model="(dataModel.Nav_Require||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input> -->
<!-- <u-icon style="margin-left: 4px;" slot="right" name="arrow-down" size="12">
</u-icon> -->
</u-form-item>
<u--textarea v-model="dataModel.RequireName" disabled autoHeight></u--textarea>
<u--textarea v-model="dataModel.Nav_RequiresName" disabled autoHeight></u--textarea>
<view class="upload-title">附件</view>
<full-upload v-model="dataModel.Nav_Files" :isShowBtn='true' :listProp='listPropUpload' :listPropVal='listPropValUpload'></full-upload>
@ -55,15 +55,15 @@
</view>
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;margin-top: 20px;">辨识内容</view>
<view v-for="(item,index) in dataModel.Nav_Details" :key="index" style="border-bottom: #ceccca 1px solid;margin-bottom: 10px;padding-bottom: 10px;">
<view v-for="(item,index) in dataModel.Nav_Details.filter(i => !i.IS_DELETED)" :key="index" style="border-bottom: #ceccca 1px solid;margin-bottom: 10px;padding-bottom: 10px;">
<u-form-item prop="Nav_Contents">
<view style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;flex: 1;">
<view @click="handleChangeStep(index,'Area')" style="flex: 1;">
{{index+1+'.辨识区域:'+item.Nav_Area.NAME}}
{{index+1+'.辨识区域:'+item.Nav_Area?item.Nav_Area.NAME:''}}
</view>
<view class="action" style="display: flex;flex-direction: row;align-items: center;justify-content: space-around;">
<u-icon @click="handleDelRowBefore(index)" name="trash" color="#ff4d4f" size="21" style="margin-right: 20px;"></u-icon>
<u-icon @click="handleDelRowBefore(item)" name="trash" color="#ff4d4f" size="21" style="margin-right: 20px;"></u-icon>
<u-icon name="arrow-up" size="12" v-if="item.showPack" @click="handlePack(index)"></u-icon>
<u-icon name="arrow-down" size="12" v-if="!item.showPack" @click="handlePack(index)"></u-icon>
</view>
@ -90,14 +90,31 @@
</u--input>
</u-form-item>
<u-form-item label="风险类别" prop="HIDDEN_LEVEL" @click="handleChangeStep(index,'Category')" border-bottom>
<u--input v-model="(item.Nav_Type||{}).NAME" disabled placeholder="请选择风险类别" suffixIcon="arrow-down" suffixIconStyle="font-size: 12px" disabledColor="#ffffff" inputAlign="right" fontSize="14px"
border="none">
<u--input v-model="(item.Nav_Type||{}).NAME" disabled placeholder="请选择风险类别" suffixIcon="arrow-down" suffixIconStyle="font-size: 12px" disabledColor="#ffffff" inputAlign="right"
fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="管控措施" prop="HIDDEN_PLACE" border-bottom>
<u--input v-model="item.MEASURE" placeholder="请填写管控措施" disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input>
<u-icon style="margin-left: 4px;" slot="right" :name="item.arrow?'minus-circle':'plus-circle'" size="16" @click="changeArrow(item)">
</u-icon>
</u-form-item>
<u-button type="primary" @click="handleNewMeasures(item)" color="#3d4b70" v-if="item.arrow">新增管控措施</u-button>
<view v-if="item.arrow&&item.Nav_DetailMeasures&&item.Nav_DetailMeasures.length>0">
<view v-for="item1 in item.Nav_DetailMeasures.filter(i => !i.IS_DELETED)" style="padding: 10px;">
<u-form-item label="序号" prop="HIDDEN_DESCRIPTION" border-bottom>
<view slot="right" style="display: flex;flex-direction: row;align-items: center;">
<u-number-box v-model="item1.NUM" integer></u-number-box>
<u-icon @click="handleDelRowMeasures(item,item1)" name="trash" color="#ff4d4f" size="21" style="margin-right: 20px;margin-left: 20px;"></u-icon>
</view>
</u-form-item>
<u-form-item label="措施" prop="HIDDEN_DESCRIPTION">
</u-form-item>
<u--textarea v-model="item1.MEASURE" placeholder="请填写管控措施" autoHeight></u--textarea>
</view>
</view>
<u-form-item label="应急处置" prop="HIDDEN_PLACE" border-bottom>
</u-form-item>
<u--textarea v-model="item.EMERGENCY" placeholder="请填写应急处置" autoHeight maxlength="-1"></u--textarea>
@ -304,17 +321,27 @@
this.stepsPage = res.STATUS == 0 ? 0 : res.STATUS == 20 ? 1 : 2
this.dataModel.START_DATE = uni.$u.timeFormat(res.START_DATE, 'yyyy-mm-dd')
this.dataModel.END_DATE = uni.$u.timeFormat(res.END_DATE, 'yyyy-mm-dd')
this.dataModel.Nav_Require = res.Nav_Require ? res.Nav_Require : {
NAME: ''
},
this.dataModel.RequireName = res.Nav_Require ? res.Nav_Require.NAME : {
NAME: ''
},
this.dataModel.Nav_Details.map(item => {
item['showPack'] = false
item.ENABLE_STATUS_NAME = item.ENABLE_STATUS !== undefined ? this.enumsData['SKEnableStatusEnum'].find(item1 => item1.code === item.ENABLE_STATUS).name : '';
item.MARK_NAME = item.MARK !== undefined ? this.enumsData['SKMarkEnum'].find(item1 => item1.code === item.MARK).name : '';
// this.dataModel.Nav_Require = res.Nav_Require ? res.Nav_Require : {
// NAME: ''
// },
// this.dataModel.RequireName = res.Nav_Require ? res.Nav_Require.NAME : {
// NAME: ''
// },
let Nav_RequiresName = ''
if (this.dataModel.Nav_Requires && this.dataModel.Nav_Requires.length > 0) {
this.dataModel.Nav_Requires.map(item => {
if (item.Nav_Require.NAME !== null) {
Nav_RequiresName += item.Nav_Require.NAME + ' ';
}
})
}
this.dataModel.Nav_RequiresName = Nav_RequiresName
this.dataModel.Nav_Details.map(item => {
item['showPack'] = false
item['arrow'] = false
item.ENABLE_STATUS_NAME = item.ENABLE_STATUS !== undefined ? this.enumsData['SKEnableStatusEnum'].find(item1 => item1.code === item.ENABLE_STATUS).name : '';
item.MARK_NAME = item.MARK !== undefined ? this.enumsData['SKMarkEnum'].find(item1 => item1.code === item.MARK).name : '';
})
this.stepLoad = false
})
@ -356,9 +383,24 @@
stepReduce() {
this.stepsPageList = this.stepsPageList - 1
},
handleNewMeasures(item) {
item.Nav_DetailMeasures.unshift({
NUM: '',
ID: guid(),
RISK_IDENTIFY_DETAIL_ID: item.ID,
MEASURE: '',
IS_DELETED: false,
})
},
changeArrow(item) {
item.arrow = !item.arrow
this.$forceUpdate()
console.log(this.dataModel.Nav_Details)
},
handleNewCheckContent() {
this.dataModel.Nav_Details.push({
showPack: false,
arrow: false,
Nav_ProductionUnit: {
NAME: ''
},
@ -508,11 +550,15 @@
handleDelRowBefore(index) {
this.showDelModalIndex = index
this.nowIndex = index
handleDelRowBefore(item) {
item.IS_DELETED = true
this.$forceUpdate()
},
handleDelRowMeasures(item, item1) {
item1.IS_DELETED = true
this.$forceUpdate()
},
confirmDel() {
this.dataModel.Nav_Details.splice(this.nowIndex, 1)
@ -611,7 +657,7 @@
})
return
}
if (!item.Nav_Area.NAME) {
if (!item.Nav_Area ||!item.Nav_Area.NAME) {
uni.showToast({
title: '顺序' + i + '辨识区域不能为空',
icon: 'none'
@ -639,7 +685,7 @@
})
return
}
if (!item.Nav_Type.NAME) {
if (!item.Nav_Type ||!item.Nav_Type.NAME) {
uni.showToast({
title: '顺序' + i + '风险类别不能为空',
icon: 'none'
@ -649,40 +695,19 @@
i++
}
// this.model = this.dataModel
this.model = this.dataModel
this.model.ORG_ID = this.ORG_ID
let arr = []
this.dataModel.Nav_Details.map(item => {
arr.push({
PRODUCTION_UNIT_ID: item.PRODUCTION_UNIT_ID,
AREA_ID: item.AREA_ID,
RISK_NAME: item.RISK_NAME,
RISK_NAME_ID: item.RISK_NAME_ID,
RISK_DESCRIPTION: item.RISK_DESCRIPTION,
TYPE_ID: item.TYPE_ID,
MEASURE: item.MEASURE,
EMERGENCY: item.EMERGENCY,
ENABLE_STATUS: item.ENABLE_STATUS,
MARK: item.MARK,
})
})
this.model = {
ORG_ID: this.ORG_ID,
YEAR: this.dataModel.YEAR,
START_DATE: this.dataModel.START_DATE,
END_DATE: this.dataModel.END_DATE,
CONTENTS: this.dataModel.CONTENTS,
REQUIRE_ID: this.dataModel.REQUIRE_ID,
RequireName: this.dataModel.RequireName,
IDENTIFY_EVALUATION_PLAN_ID: this.dataModel.IDENTIFY_EVALUATION_PLAN_ID,
Nav_Files: this.dataModel.Nav_Files,
Nav_Details: arr
}
this.model.ID = this.ID
this.model.TaskID = this.TaskID
this.model.PUBLISH = "SaveAndNotify";
delete this.model.Nav_ApplyDepartment
delete this.model.Nav_ApplyUser
this.model.Nav_Details.map(item=>{
delete item.Nav_ProductionUnit
delete item.Nav_Type
})
SKRiskIdentifyFullUpdate(this.model).then(res => {
if (res) {
uni.$showMsgFunc('操作成功!', () => {

View File

@ -15,12 +15,12 @@
</u-form-item>
<u-form-item label="发起部门:" prop="Product_Unit">
<u--input v-model="dataModel.Nav_ApplyDepartment.NAME" disabled disabledColor="#ffffff" border="none" inputAlign="right" fontSize="14px">
<u--input v-model="(dataModel.Nav_ApplyDepartment||{}).NAME" disabled disabledColor="#ffffff" border="none" inputAlign="right" fontSize="14px">
</u--input>
</u-form-item>
<u-form-item label="发起人员:" prop="Product_Unit">
<u--input v-model="dataModel.Nav_ApplyUser.NAME" disabled disabledColor="#ffffff" border="none" inputAlign="right" fontSize="14px">
<u--input v-model="(dataModel.Nav_ApplyUser||{}).NAME" disabled disabledColor="#ffffff" border="none" inputAlign="right" fontSize="14px">
</u--input>
</u-form-item>
@ -41,7 +41,7 @@
</u-form-item>
<u-form-item label="辨识要求">
</u-form-item>
<u--textarea v-model="dataModel.Nav_Require.NAME" disabled autoHeight></u--textarea>
<u--textarea v-model="dataModel.Nav_RequiresName" disabled autoHeight></u--textarea>
<view class="upload-title">附件</view>
<full-upload v-model="dataModel.Nav_Files" :isShowBtn='false' :listProp='listPropUpload' :listPropVal='listPropValUpload'></full-upload>
<view style="margin-top: 20px;">
@ -56,7 +56,7 @@
<view style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;flex: 1;">
<view style="flex: 1;">
{{index+1+'.辨识区域:'+item.Nav_Area.NAME}}
{{index+1+'.辨识区域:'+item.Nav_Area?item.Nav_Area.NAME:''}}
</view>
<view class="action" style="display: flex;flex-direction: row;align-items: center;justify-content: space-around;">
<u-icon name="arrow-up" size="12" v-if="item.showPack" @click="handlePack(index)"></u-icon>
@ -78,7 +78,7 @@
</u--input>
</u-form-item>
<u-form-item label="风险类别" prop="HIDDEN_LEVEL" border-bottom>
<u--input v-model="item.Nav_Type.NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
<u--input v-model="(item.Nav_Type||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="管控措施" prop="HIDDEN_PLACE" border-bottom>
@ -89,8 +89,12 @@
<u--input v-model="item.EMERGENCY" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="状态" prop="HIDDEN_PLACE">
<u--input v-model="item.ENABLE_STATUS" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
<u-form-item label="新增标识" prop="HIDDEN_PLACE" border-bottom>
<u--input v-model="item.MARK_NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="是否有效" prop="HIDDEN_PLACE">
<u--input v-model="item.ENABLE_STATUS_NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
</view>
@ -119,7 +123,8 @@
guid,
initFilter,
initFilterGroup,
handleOriginalArray
handleOriginalArray,
transformData
} from '../../../../utils/common'
import {
FMProductionUnit,
@ -137,6 +142,10 @@
GetRiskAreaInfo,
GetRiskTypeInfo
} from '../../../../services/apply/subPages/SK/SKServices.js'
import {
getEnum,
GetEnumAnyOrder
} from '../../../../services/common';
import {
getRequest,
} from '../../../../services/apply/FOServices/FOServices';
@ -222,7 +231,9 @@
stepsPageList: 0,
TaskID: '',
nowName: '',
nowIndex: 0
nowIndex: 0,
enumsData: {}, //
enumsText: {} //
}
},
onLoad(option) {
@ -238,9 +249,21 @@
...this.$store.state.auditModel,
TaskID: option.taskID ? option.taskID : ''
}
this.loadData()
this.fetchEnums(['SKMarkEnum', 'SKEnableStatusEnum']);
},
methods: {
fetchEnums(enumNames) {
var dataParm = {
'name': enumNames.join('|')
}
GetEnumAnyOrder(dataParm).then(res => {
let newd = transformData(res, enumNames)
this.enumsData = newd[0];
//
this.enumsText = newd[1]
this.loadData();
})
},
loadData() {
// const json = {}
const orgId = uni.getStorageSync('orgId')
@ -269,9 +292,19 @@
this.dataModel.START_DATE = uni.$u.timeFormat(res.START_DATE, 'yyyy-mm-dd')
this.dataModel.END_DATE = uni.$u.timeFormat(res.END_DATE, 'yyyy-mm-dd')
this.dataModel.RequireName = res.Nav_Require.NAME
let Nav_RequiresName = ''
if (this.dataModel.Nav_Requires && this.dataModel.Nav_Requires.length > 0) {
this.dataModel.Nav_Requires.map(item => {
if (item.Nav_Require.NAME !== null) {
Nav_RequiresName += item.Nav_Require.NAME + ' ';
}
})
}
this.dataModel.Nav_RequiresName = Nav_RequiresName
this.dataModel.Nav_Details.map(item => {
item['showPack'] = false
item.ENABLE_STATUS = item.ENABLE_STATUS == 0 ? '有效' : '无效'
item.ENABLE_STATUS_NAME = item.ENABLE_STATUS !== undefined ? this.enumsData['SKEnableStatusEnum'].find(item1 => item1.code === item.ENABLE_STATUS).name : '';
item.MARK_NAME = item.MARK !== undefined ? this.enumsData['SKMarkEnum'].find(item1 => item1.code === item.MARK).name : '';
})
this.stepLoad = false