qa-regulatory-gwj-app/pages/key-project-management/AI-warning/detail.vue

582 lines
22 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="content">
<view class="card">
<view class="view-title">
<u--text text="报警信息" bold></u--text>
</view>
<u-cell-group :border="false">
<u-cell>
<view slot="title" class="title">视频名称</view>
<view slot="value">
{{form.VIDEONAME}}
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">报警类型</view>
<view slot="value">
{{form.TYPE}}
</view>
</u-cell>
<u-cell v-show="form.UNITS_NAME">
<view slot="title" class="title">报警时间:</view>
<view slot="value">
{{form.CREATTIME}}
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">报警图片:</view>
<view slot="value">
<u--image :showLoading="true" :src="form.IMG_PATH_SHOW"
width="80px" height="80px" @click="previewImage(form.IMG_PATH_SHOW)"></u--image>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title">处置状态:</view>
<view slot="value">
{{form.STATUS === "0" ? "待处理" : "已处理"}}
</view>
</u-cell>
</u-cell-group>
</view>
<view class="card">
<view class="view-title">
<u--text text="报警处置" bold></u--text>
</view>
<u-cell-group :border="false">
<u-cell>
<view slot="title" class="title required">是否真实报警:</view>
<view slot="value">
<u-radio-group v-model="form.ISTRUE" placement="row" :disabled="disabled">
<u-radio label="是" name="1"></u-radio>
<u-radio label="否" name="2" class="ml-10"></u-radio>
</u-radio-group>
</view>
</u-cell>
<u-cell v-if="form.ISTRUE == 1">
<view slot="title" class="title required">是否填报隐患:</view>
<view slot="value">
<u-radio-group v-model="form.HASHIDDEN" placement="row" :disabled="disabled">
<u-radio label="是" name="1"></u-radio>
<u-radio label="否" name="2" class="ml-10"></u-radio>
</u-radio-group>
</view>
</u-cell>
<u-cell v-if="form.ISTRUE == 1 && form.HASHIDDEN == 1">
<view slot="title" class="title">隐患填报:</view>
<view slot="value">
<u-button type="primary" text="添加" size="mini" class="bth-mini" @click="addHidden"
v-if="!disabled && (!form.hiddenList || form.hiddenList.length<1)"></u-button>
</view>
</u-cell>
<u-cell v-if="form.ISTRUE == 1 && form.HASHIDDEN == 1" class="title-none">
<view slot="value" style="flex: 1">
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th align="center">序号</uni-th>
<uni-th align="center">隐患部位</uni-th>
<uni-th align="center">隐患描述</uni-th>
<uni-th align="center">操作</uni-th>
</uni-tr>
<uni-tr v-for="(item,index) in form.hiddenList" :key="item.HIDDEN_ID || item.id">
<uni-td>{{ index + 1 }}</uni-td>
<uni-td>{{ item.HIDDENPART }}</uni-td>
<uni-td>{{ item.HIDDENDESCR }}</uni-td>
<uni-td>
<view class="flex-between">
<u-icon name="eye-fill" @tap="showHidden(item, index)"></u-icon>
<u-icon name="trash-fill" class="ml-10" @tap="removeHidden(item, index)"
v-if="!disabled"></u-icon>
</view>
</uni-td>
</uni-tr>
</uni-table>
</view>
</u-cell>
<u-cell class="flex-none" :border="false">
<view slot="value">
<u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000,true)" v-if="!disabled"></u-button>
</view>
</u-cell>
</u-cell-group>
</view>
<u-popup :show="popupShow" @close="popupShow = false" mode="right" :closeOnClickOverlay="false"
:customStyle="{width:'85vw',overflowY:'auto'}">
<view class="card">
<u-cell-group :border="false">
<u-cell class="flex-none">
<view slot="title" class="title required">隐患照片:</view>
<view slot="value" class="mt-10">
<u--image :showLoading="true" :src="form.IMG_PATH_SHOW"
width="80px" height="80px" @click="previewImage(form.IMG_PATH_SHOW)"></u--image>
</view>
</u-cell>
<u-cell class="flex-none">
<view slot="title" class="title required">隐患描述:</view>
<view slot="value" class="mt-10">
<u--textarea v-model="hiddenForm.HIDDENDESCR" placeholder="请输入隐患描述"
:disabled="popupDisabled"></u--textarea>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患部位:</view>
<view slot="value">
<u--input v-model="hiddenForm.HIDDENPART" border="none" placeholder="请输入隐患部位" inputAlign="right"
:disabled="popupDisabled"></u--input>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患级别:</view>
<view slot="value">
<text @click="showTree('tkitree3')">{{ hiddenForm.HIDDENLEVEL_NAME || '请选择' }}</text>
<tki-tree ref="tkitree3" :range="hiddenLevelTreeList" rangeKey="name" selectParent children-name="nodes"
@confirm="confirmTree($event,'hiddenLevelTreeList')"/>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患类型:</view>
<view slot="value">
<text @click="showTree('tkitree4')">{{ hiddenForm.HIDDENTYPE_NAME || '请选择' }}</text>
<tki-tree ref="tkitree4" :range="hiddenTypeTreeList" rangeKey="name" selectParent children-name="nodes"
@confirm="confirmTree($event,'hiddenTypeTreeList')"/>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">隐患处置:</view>
<view slot="value">
<u-radio-group v-model="hiddenForm.RECTIFICATIONTYPE" placement="row" :disabled="popupDisabled">
<!-- <u-radio label="立即整改" name="1"></u-radio>-->
<u-radio label="限期整改" name="2" class="ml-10"></u-radio>
</u-radio-group>
</view>
</u-cell>
<u-cell v-if="hiddenForm.RECTIFICATIONTYPE === '2'">
<view slot="title" class="title required">整改期限:</view>
<view slot="value">
<text @click="popupDisabled ? null : RECTIFICATIONDEADLINEShow = true">{{ hiddenForm.RECTIFICATIONDEADLINE || '请选择' }}</text>
<u-datetime-picker :show="RECTIFICATIONDEADLINEShow" :value="hiddenForm.RECTIFICATIONDEADLINE"
:minDate="Number(1970)"
@cancel="RECTIFICATIONDEADLINEShow = false"
@confirm="RECTIFICATIONDEADLINEConfirm"></u-datetime-picker>
</view>
</u-cell>
<u-cell class="flex-none" v-if="hiddenForm.RECTIFICATIONTYPE === '1'">
<view slot="title" class="title required">整改照片:</view>
<view slot="value" class="mt-10">
<u-upload
:disabled="popupDisabled"
:deletable="!popupDisabled"
uploadIcon="plus"
:fileList="hiddenForm.zgImgs"
@afterRead="afterRead2"
@delete="deletePic2"
multiple
:maxCount="4"
></u-upload>
</view>
</u-cell>
<u-cell class="flex-none" v-if="hiddenForm.RECTIFICATIONTYPE === '1'">
<view slot="title" class="title required">整改描述:</view>
<view slot="value" class="mt-10">
<u--textarea v-model="hiddenForm.RECTIFYDESCR" placeholder="请输入整改描述"
:disabled="popupDisabled"></u--textarea>
</view>
</u-cell>
<u-cell>
<view slot="title" class="title required">整改部门:</view>
<view slot="value">
<text @click="showTree('tkitree5')">{{ hiddenForm.RECTIFICATIONDEPT_NAME || '请选择' }}</text>
<tki-tree ref="tkitree5" :range="rectificationDepartmentTreeList" rangeKey="UNITS_NAME" selectParent
@confirm="confirmTree($event,'rectificationSiteuserColumns')"/>
</view>
</u-cell>
<u-cell v-show="hiddenForm.RECTIFICATIONDEPT_NAME">
<view slot="title" class="title required">整改人:</view>
<view slot="value">
<text @click="popupDisabled ? null : rectificationSiteuserShow = true">{{ hiddenForm.RECTIFICATIONOR_NAME || '请选择' }}</text>
<u-picker :show="rectificationSiteuserShow" :columns="rectificationSiteuserColumns" keyName="NAME"
@cancel="rectificationSiteuserShow = false"
@confirm="rectificationSiteuserConfirmPicker"></u-picker>
</view>
</u-cell>
<u-cell class="flex-none" :border="false">
<view slot="value" class="flex-between">
<u-button type="info" text="取消" class="bth" @click="popupClose"></u-button>
<u-button type="primary" text="保存" class="bth ml-10" @click="popupSave" v-if="!popupDisabled"></u-button>
</view>
</u-cell>
</u-cell-group>
</view>
</u-popup>
</view>
</template>
<script>
import {
getKeyProjectsListAllPersonnel,
getHiddenLevel,
getHiddenType,
getKeyProjectsListAllUnits,
getInspectionDepartment,
getInspectionType,
getInspectors,
setImgFilesAdd,
setKeyProjectsAIWarningAdd,
setVideoAdd,
getKeyProjectsAIWarningView
} from "../../../api";
export default {
data() {
return {
form: {},
AIWARNING_ID: '',
OUTSOURCED_ID: '',
disabled: false,
popupShow: false,
popupDisabled: false,
RECTIFICATIONDEADLINEShow: false,
hiddenForm: {
id: Math.random(),
hiddenImgs: [],
zgImgs: [],
hiddenVideos: [],
HIDDENDESCR: '',
HIDDENPART: '',
HIDDENLEVEL_NAME: '',
HIDDENLEVEL: '',
HIDDENTYPE_NAME: '',
HIDDENTYPE: '',
SOURCE: '4',
CORPINFO_ID: '',
HIDDENFINDDEPT: '',
RECTIFICATIONTYPE: '2',
RECTIFICATIONDEADLINE: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
RECTIFYDESCR:'',
RECTIFICATIONDEPT:'',
RECTIFICATIONDEPT_NAME:'',
RECTIFICATIONOR_NAME:'',
RECTIFICATIONOR:'',
},
hiddenFormRules: {
'hiddenImgs': {required: true, message: '请上传隐患照片'},
'HIDDENDESCR': {required: true, message: '请输入隐患描述'},
'HIDDENPART': {required: true, message: '请输入隐患部位'},
'HIDDENLEVEL_NAME': {required: true, message: '请选择隐患级别'},
'HIDDENTYPE_NAME': {required: true, message: '请选择隐患类型'},
// 'RECTIFICATIONDEADLINE': {required: true, message: '请选择整改期限'},
// 'RECTIFYDESCR': {required: true, message: '请输入整改描述'},
'RECTIFICATIONDEPT': {required: true, message: '请选择整改部门'},
'RECTIFICATIONOR': {required: true, message: '请选择整改人'},
},
hiddenLevelTreeList: [
{id: 'hiddenLevel1004', name: '轻微隐患'},
{id: 'hiddenLevel1002', name: '一般隐患'},
],
hiddenTypeTreeList: [],
creatorList: [],
delHiddens: [],
delHiddenFiles: [],
rectificationSiteuserColumns: [],
rectificationSiteuserShow: false,
creatorShow: false,
modalShow: false,
videoUrl: '',
}
},
async onLoad(event) {
this.AIWARNING_ID = event.AIWARNING_ID
this.OUTSOURCED_ID = event.OUTSOURCED_ID
this.disabled = event.type === 'view' ;
await this.fnGetKeyProjectsAiWarningView()
if(event.type === 'edit'){
await this.fnGetKeyProjectsListAllUnits()
await this.fnGetHiddenType()
}
},
computed: {
userInfo() {
return this.$store.getters.getUserInfo
}
},
methods: {
async fnGetKeyProjectsListAllUnits() {
let resData = await getKeyProjectsListAllUnits({OUTSOURCED_ID:this.OUTSOURCED_ID});
this.inspectedDepartmentTreeList = resData.varList;
this.rectificationDepartmentTreeList = resData.varList;
},
async fnGetInspectionDepartment() {
let resData = await getInspectionDepartment();
this.inspectionDepartmentTreeList = JSON.parse(resData.zTreeNodes);
},
async fnGetHiddenType() {
let resData = await getHiddenType();
this.hiddenTypeTreeList = JSON.parse(resData.zTreeNodes);
},
async fnGetInspectionType() {
let resData = await getInspectionType();
this.inspectionTypeTreeList = JSON.parse(resData.zTreeNodes);
},
async fnGetKeyProjectsListAllPersonnel(detpId) {
let resData = await getKeyProjectsListAllPersonnel({'UNITS_ID': detpId});
return resData.varList;
},
async fnGetInspectors(detpId) {
let resData = await getInspectors({'DEPARTMENT_ID': detpId});
return resData.userList;
},
async fnGetKeyProjectsAiWarningView() {
let resData = await getKeyProjectsAIWarningView({AIWARNING_ID: this.AIWARNING_ID})
for (let i = 0; i < resData.pd.hiddenList.length; i++) {
for (let j = 0; j < resData.pd.hiddenList[i].hiddenImgs.length; j++) {
resData.pd.hiddenList[i].hiddenImgs[j].url = this.$store.state.filePath + resData.pd.hiddenList[i].hiddenImgs[j].FILEPATH
}
}
this.form = resData.pd
this.form.IMG_PATH_SHOW = this.$store.state.filePath + this.form.IMG_PATH
},
previewImage(current) {
let urls = []
urls.push(current)
uni.previewImage({
urls,
current
});
},
showTree(ref, type) {
if (this.popupDisabled) return;
if (this.disabled) return;
if (type === 'arr') this.$refs[ref][0]._show();
else this.$refs[ref]._show()
},
confirmTree(e, list, index) {
if (list === 'inspectedSiteuserColumns') {
this.form.UNITS_ID = e[0].UNITS_ID
this.form.UNITS_NAME = e[0].UNITS_NAME
this.form.PERSON_NAME = ''
this.form.PERSONNELMANAGEMENT_ID = ''
this.fnGetKeyProjectsListAllPersonnel(e[0].UNITS_ID).then(res => {
this.$set(this.inspectedSiteuserColumns, 0, res)
})
}
if (list === 'inspectionTypeTreeList') {
this.form.INSPECTION_TYPE = e[0].id
this.form.INSPECTION_TYPE_NAME = e[0].name
}
if (list === 'hiddenLevelTreeList') {
this.hiddenForm.HIDDENLEVEL = e[0].id
this.hiddenForm.HIDDENLEVEL_NAME = e[0].name
}
if (list === 'hiddenTypeTreeList') {
this.hiddenForm.HIDDENTYPE = e[0].id
this.hiddenForm.HIDDENTYPE_NAME = e[0].name
}
if (list === 'rectificationSiteuserColumns') {
this.hiddenForm.RECTIFICATIONDEPT = e[0].UNITS_ID
this.hiddenForm.RECTIFICATIONDEPT_NAME = e[0].UNITS_NAME
this.hiddenForm.RECTIFICATIONOR_NAME = ''
this.hiddenForm.RECTIFICATIONOR = ''
this.fnGetKeyProjectsListAllPersonnel(e[0].UNITS_ID).then(res => {
this.$set(this.rectificationSiteuserColumns, 0, res)
})
}
},
inspectedSiteuserConfirmPicker(e) {
this.form.PERSON_NAME = e.value[0].NAME
this.form.PERSONNELMANAGEMENT_ID = e.value[0].PERSONNELMANAGEMENT_ID
this.inspectedSiteuserShow = false;
},
rectificationSiteuserConfirmPicker(e) {
this.hiddenForm.RECTIFICATIONOR_NAME = e.value[0].NAME
this.hiddenForm.RECTIFICATIONOR = e.value[0].PERSONNELMANAGEMENT_ID
this.rectificationSiteuserShow = false;
},
inspectionTimeStartConfirm(e) {
this.form.INSPECTION_TIME_START = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
this.inspectionTimeStartShow = false;
},
inspectionTimeEndConfirm(e) {
this.form.INSPECTION_TIME_END = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
this.inspectionTimeEndShow = false;
},
RECTIFICATIONDEADLINEConfirm(e) {
this.hiddenForm.RECTIFICATIONDEADLINE = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
this.RECTIFICATIONDEADLINEShow = false;
},
addSituation() {
this.form.situationList.push({id: Math.random(), INSPECTION_SITUATION_ID: '', SITUATION: ''})
},
removeSituation(item, index) {
uni.showModal({
title: '提示',
cancelText: '确认',
confirmText: '取消',
content: '确定删除检查情况吗?',
success: (res) => {
if (res.cancel) {
this.form.situationList.splice(index, 1)
if (item.INSPECTION_SITUATION_ID) {
this.delSituations.push(item.INSPECTION_SITUATION_ID)
}
}
}
});
},
async fnSubmit() {
uni.showLoading({
title: '加载中'
});
if(!this.form.ISTRUE){
uni.showToast({
title: "请选择是否真实报警",
icon: "none"
})
return;
}else if(this.form.ISTRUE == 1){
if(!this.form.HASHIDDEN){
uni.showToast({
title: "请选择是否填报隐患",
icon: "none"
})
return;
}else if(this.form.HASHIDDEN == 1){
if(!this.form.hiddenList || this.form.hiddenList.length<1){
uni.showToast({
title: "",
icon: "none"
})
return;
}
}else if(this.form.HASHIDDEN == 2){
this.form.hiddenList = []
}
}else if(this.form.ISTRUE == 2){
this.form.HASHIDDEN = 2
this.form.hiddenList = []
}
let resData = await setKeyProjectsAIWarningAdd({
...this.form,
HIDDENJSON: JSON.stringify(this.form.hiddenList),
OPERATOR: this.userInfo.USER_ID,
loading: false
})
uni.hideLoading()
uni.showToast({
title: '',
})
uni.$u.route({
type: 'navigateBack'
})
},
addHidden() {
this.clearHiddenForm()
this.creatorList = [[{NAME: this.userInfo.NAME, USER_ID: this.userInfo.USER_ID}]]
this.popupShow = true
this.popupDisabled = false
},
showHidden(item) {
this.clearHiddenForm()
this.creatorList = [[]]
this.hiddenForm = item
this.popupShow = true
this.popupDisabled = true
},
clearHiddenForm() {
this.hiddenForm = {
id: Math.random(),
hiddenImgs: [],
zgImgs: [],
hiddenVideos: [],
HIDDENDESCR: '',
HIDDENPART: '',
HIDDENLEVEL_NAME: '',
HIDDENLEVEL: '',
HIDDENTYPE_NAME: '',
HIDDENTYPE: '',
SOURCE: '4',
CORPINFO_ID: '',
HIDDENFINDDEPT: '',
RECTIFICATIONTYPE: '2',
RECTIFICATIONDEADLINE: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
RECTIFICATIONDEPT:'',
RECTIFYDESCR:'',
RECTIFICATIONDEPT_NAME:'',
RECTIFICATIONOR_NAME:'',
RECTIFICATIONOR:'',
}
},
removeHidden(item, index) {
uni.showModal({
title: '',
cancelText: '',
confirmText: '',
content: '',
success: (res) => {
if (res.cancel) {
this.form.hiddenList.splice(index, 1);
if (item.HIDDEN_ID) {
this.delHiddens.push(item.HIDDEN_ID)
}
}
}
});
},
afterRead(event) {
this.hiddenForm.hiddenImgs = [...this.hiddenForm.hiddenImgs, ...event.file]
},
deletePic(event) {
if (this.hiddenForm.hiddenImgs[event.index].IMGFILES_ID) {
this.delHiddenFiles.push(this.hiddenForm.hiddenImgs[event.index].FILEPATH)
}
this.hiddenForm.hiddenImgs = this.hiddenForm.hiddenImgs.filter(item => item.url !== event.file.url)
},
afterRead1(event) {
this.hiddenForm.hiddenVideos = [...this.hiddenForm.hiddenVideos, ...event.file]
},
deletePic1(event) {
this.hiddenForm.hiddenVideos = this.hiddenForm.hiddenVideos.filter(item => item.url !== event.file.url)
},
afterRead2(event) {
this.hiddenForm.zgImgs = [...this.hiddenForm.zgImgs, ...event.file]
},
deletePic2(event) {
this.hiddenForm.zgImgs = this.hiddenForm.zgImgs.filter(item => item.url !== event.file.url)
},
popupClose() {
this.popupShow = false
},
popupSave() {
for (const key in this.hiddenFormRules) {
if(!this.hiddenForm[key]){
uni.showToast({
title: this.hiddenFormRules[key].message,
icon: "none"
})
return;
}
}
if(this.hiddenForm.RECTIFICATIONTYPE === '2'){
if(!this.hiddenForm.RECTIFICATIONDEADLINE){
uni.showToast({
title: '请选择整改期限',
icon: "none"
})
return;
}
}
this.hiddenForm.SOURCE = 4
this.form.hiddenList.push(this.hiddenForm)
this.popupClose()
},
previewVideo(videoUrl){
this.modalShow = true;
this.videoUrl = videoUrl;
},
},
}
</script>
<style>
</style>