forked from integrated_whb/integrated_whb_vue
init
parent
a46297da57
commit
fef033926e
|
|
@ -427,6 +427,114 @@ export default [
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government",
|
||||||
|
redirect: "/hidden_danger_government/rectification",
|
||||||
|
meta: { title: "隐患治理", model: MODEL["1"] },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/rectification",
|
||||||
|
meta: { title: "隐患整改", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "",
|
||||||
|
component: "hidden_danger_government/rectification/index",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/rectification/view",
|
||||||
|
meta: {
|
||||||
|
title: "查看",
|
||||||
|
activeMenu: "/hidden_danger_government/rectification",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/rectification/view",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/rectification/rectification",
|
||||||
|
meta: {
|
||||||
|
title: "整改",
|
||||||
|
activeMenu: "/hidden_danger_government/rectification",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/rectification/rectification",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/acceptance",
|
||||||
|
meta: { title: "隐患验收", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "",
|
||||||
|
component: "hidden_danger_government/acceptance/index",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/acceptance/view",
|
||||||
|
meta: {
|
||||||
|
title: "查看",
|
||||||
|
activeMenu: "/hidden_danger_government/acceptance",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/acceptance/view",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/acceptance/acceptance",
|
||||||
|
meta: {
|
||||||
|
title: "验收",
|
||||||
|
activeMenu: "/hidden_danger_government/acceptance",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/acceptance/acceptance",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/major",
|
||||||
|
meta: { title: "重大隐患", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "",
|
||||||
|
component: "hidden_danger_government/major/index",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/major/view",
|
||||||
|
meta: {
|
||||||
|
title: "查看",
|
||||||
|
activeMenu: "/hidden_danger_government/major",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/major/view",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/ledger",
|
||||||
|
meta: { title: "隐患台账", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "",
|
||||||
|
component: "hidden_danger_government/ledger/index",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/ledger/add",
|
||||||
|
meta: {
|
||||||
|
title: "新增",
|
||||||
|
activeMenu: "/hidden_danger_government/ledger",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/ledger/add",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hidden_danger_government/ledger/view",
|
||||||
|
meta: {
|
||||||
|
title: "查看",
|
||||||
|
activeMenu: "/hidden_danger_government/ledger",
|
||||||
|
},
|
||||||
|
component: "hidden_danger_government/ledger/view",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/platform_resource_library",
|
path: "/platform_resource_library",
|
||||||
redirect: "/platform_resource_library/courseware",
|
redirect: "/platform_resource_library/courseware",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { post, upload } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getHiddenDangerList = (params) => post("/hidden/list", params); // 隐患列表
|
||||||
|
export const getHiddenDangerRectificationWhy = (params) =>
|
||||||
|
post("/app/corpinfo/goqyzzh", params); // 隐患整改不知道在获取什么
|
||||||
|
export const setHiddenDangerRectificationNormalSubmit = (params) =>
|
||||||
|
upload("/hidden/rectify", params); // 隐患整改正常整改提交
|
||||||
|
export const setHiddenDangerRectificationAbnormalSubmit = (params) =>
|
||||||
|
post("/hidden/editRec", params); // 隐患整改不正常整改提交
|
||||||
|
export const setHiddenDangerAcceptSubmit = (params) =>
|
||||||
|
post("/hidden/check", params); // 隐患验证提交
|
||||||
|
export const setHiddenDangerCancelMajorHazards = (params) =>
|
||||||
|
post("/hidden/editHIDDENLEVEL", params); // 重大隐患管理取消重大隐患
|
||||||
|
export const setHiddenDangerConfirmMajorHazards = (params) =>
|
||||||
|
post("/hidden/editISCONFIRM", params); // 重大隐患管理确认重大隐患
|
||||||
|
|
@ -27,6 +27,9 @@
|
||||||
<el-descriptions-item label="隐患级别">
|
<el-descriptions-item label="隐患级别">
|
||||||
{{ data.info.HIDDENLEVELNAME }}
|
{{ data.info.HIDDENLEVELNAME }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="隐患类型">
|
||||||
|
{{ data.info.HIDDENTYPE_NAME }}
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="隐患状态">
|
<el-descriptions-item label="隐患状态">
|
||||||
<span v-if="data.info.STATE === '1'"> 未整改 </span>
|
<span v-if="data.info.STATE === '1'"> 未整改 </span>
|
||||||
<span v-else-if="data.info.STATE === '3'"> 已整改 </span>
|
<span v-else-if="data.info.STATE === '3'"> 已整改 </span>
|
||||||
|
|
@ -73,17 +76,22 @@
|
||||||
class="ml-10"
|
class="ml-10"
|
||||||
/>
|
/>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="隐患视频" v-if="data.videoSrc">
|
<el-descriptions-item
|
||||||
|
label="隐患视频"
|
||||||
|
v-if="data.videoDialog.src"
|
||||||
|
class-name="print_no_use"
|
||||||
|
label-class-name="print_no_use"
|
||||||
|
>
|
||||||
<el-icon
|
<el-icon
|
||||||
size="30px"
|
size="30px"
|
||||||
@click="data.videoVisible = true"
|
@click="data.videoDialog.visible = true"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
>
|
>
|
||||||
<video-play />
|
<video-play />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoVisible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
:src="data.videoSrc"
|
:src="data.videoDialog.src"
|
||||||
/>
|
/>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
@ -239,6 +247,7 @@ const props = defineProps({
|
||||||
default: "",
|
default: "",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
const emits = defineEmits(["throw-data"]);
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
hs: {},
|
hs: {},
|
||||||
|
|
@ -247,8 +256,10 @@ const data = reactive({
|
||||||
sImgs: [],
|
sImgs: [],
|
||||||
pImgs: [],
|
pImgs: [],
|
||||||
checkList: [],
|
checkList: [],
|
||||||
videoSrc: "",
|
videoDialog: {
|
||||||
videoVisible: false,
|
src: "",
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
const fnGetData = async () => {
|
const fnGetData = async () => {
|
||||||
const resData = await getHiddenDangerView({
|
const resData = await getHiddenDangerView({
|
||||||
|
|
@ -259,7 +270,7 @@ const fnGetData = async () => {
|
||||||
data.checkList = resData.checkList;
|
data.checkList = resData.checkList;
|
||||||
for (let i = 0; i < resData.hImgs.length; i++) {
|
for (let i = 0; i < resData.hImgs.length; i++) {
|
||||||
if (getFileSuffix(resData.hImgs[i].FILEPATH) === "mp4") {
|
if (getFileSuffix(resData.hImgs[i].FILEPATH) === "mp4") {
|
||||||
data.videoSrc = VITE_FILE_URL + resData.hImgs[i].FILEPATH;
|
data.videoDialog.src = VITE_FILE_URL + resData.hImgs[i].FILEPATH;
|
||||||
} else {
|
} else {
|
||||||
data.hImgs.push(resData.hImgs[i]);
|
data.hImgs.push(resData.hImgs[i]);
|
||||||
}
|
}
|
||||||
|
|
@ -267,6 +278,7 @@ const fnGetData = async () => {
|
||||||
data.rImgs = resData.rImgs;
|
data.rImgs = resData.rImgs;
|
||||||
data.sImgs = resData.sImgs;
|
data.sImgs = resData.sImgs;
|
||||||
data.pImgs = resData.pImgs;
|
data.pImgs = resData.pImgs;
|
||||||
|
emits("throw-data", data.info);
|
||||||
};
|
};
|
||||||
fnGetData();
|
fnGetData();
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-card>
|
<layout-card>
|
||||||
<hidden-view :hidden-id="HIDDEN_ID" />
|
<div id="printContent">
|
||||||
|
<hidden-view :hidden-id="HIDDEN_ID" />
|
||||||
|
</div>
|
||||||
|
<div class="tc mt-10" v-if="print">
|
||||||
|
<el-button type="primary" v-print="'#printContent'">打印</el-button>
|
||||||
|
</div>
|
||||||
</layout-card>
|
</layout-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -10,6 +15,12 @@ import { useRoute } from "vue-router";
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { HIDDEN_ID } = route.query;
|
const { HIDDEN_ID } = route.query;
|
||||||
|
defineProps({
|
||||||
|
print: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,348 @@
|
||||||
|
<template>
|
||||||
|
<el-row :gutter="24">
|
||||||
|
<el-col
|
||||||
|
:span="
|
||||||
|
hiddenType === 'unqualified' || hiddenType === 'otherHidden' ? 12 : 24
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" v-if="hiddenType === 'unqualified'">
|
||||||
|
<el-form-item label="检查内容" prop="CHECK_CONTENT">
|
||||||
|
<el-input
|
||||||
|
:model-value="info.CHECK_CONTENT"
|
||||||
|
disabled
|
||||||
|
type="textarea"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患部位" prop="HIDDENPART">
|
||||||
|
<el-input
|
||||||
|
v-model="form.HIDDENPART"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
@blur="fnGetHiddenDangerDatabaseList"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患描述" prop="HIDDENDESCR">
|
||||||
|
<el-input
|
||||||
|
v-model="form.HIDDENDESCR"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 3 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患级别" prop="HIDDENLEVEL">
|
||||||
|
<el-select
|
||||||
|
v-model="form.HIDDENLEVEL"
|
||||||
|
@change="
|
||||||
|
form.HIDDENLEVEL === 'hiddenLevel0002'
|
||||||
|
? (form.RECTIFICATIONTYPE = '2')
|
||||||
|
: null
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in hazardLevelList"
|
||||||
|
:key="item.BIANMA"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.BIANMA"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24" v-if="info.BAO_BAO_TYPE === '1'">
|
||||||
|
<el-form-item label="隐患类别" prop="HIDDEN_CATEGORY">
|
||||||
|
<el-select v-model="form.HIDDEN_CATEGORY">
|
||||||
|
<el-option
|
||||||
|
v-for="item in hazardCategoriesList"
|
||||||
|
:key="item.DICTIONARIES_ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.DICTIONARIES_ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患类型" prop="HIDDENTYPE">
|
||||||
|
<layout-hidden-danger-type
|
||||||
|
v-model="form.HIDDENTYPE"
|
||||||
|
ref="hiddenDangerTypeRef"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患图片" prop="hiddenImgs">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="form.hiddenImgs"
|
||||||
|
list-type="picture-card"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
:limit="99"
|
||||||
|
delete-to-server
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患视频" prop="videoFiles">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="form.videoFiles"
|
||||||
|
accept=".mp4"
|
||||||
|
:size="50"
|
||||||
|
@preview="fnVideoPreview"
|
||||||
|
>
|
||||||
|
<template #tip>只能上传mp4文件,且不超过50M</template>
|
||||||
|
</layout-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="隐患处置" prop="RECTIFICATIONTYPE">
|
||||||
|
<el-radio-group v-model="form.RECTIFICATIONTYPE">
|
||||||
|
<el-radio
|
||||||
|
:disabled="form.HIDDENLEVEL === 'hiddenLevel0002'"
|
||||||
|
label="1"
|
||||||
|
>
|
||||||
|
立即整改
|
||||||
|
</el-radio>
|
||||||
|
<el-radio label="2">限期整改</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<template v-if="form.RECTIFICATIONTYPE === '1'">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="RECTIFYDESCR" label="整改描述">
|
||||||
|
<el-input
|
||||||
|
v-model="form.RECTIFYDESCR"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 3 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="整改后图片" prop="rectifyImgs">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="form.rectifyImgs"
|
||||||
|
list-type="picture-card"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
:limit="99"
|
||||||
|
delete-to-server
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template v-if="form.RECTIFICATIONTYPE === '2'">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="RECTIFICATIONDEADLINE" label="整改期限">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="form.RECTIFICATIONDEADLINE"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
type="date"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="整改部门" prop="RECTIFICATIONDEPT">
|
||||||
|
<layout-department
|
||||||
|
v-model="form.RECTIFICATIONDEPT"
|
||||||
|
@update:model-value="form.RECTIFICATIONOR = ''"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="整改人" prop="RECTIFICATIONOR">
|
||||||
|
<el-select v-model="form.RECTIFICATIONOR">
|
||||||
|
<el-option
|
||||||
|
v-for="item in data.rectifyUserList"
|
||||||
|
:key="item.USER_ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.USER_ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-col>
|
||||||
|
<el-col
|
||||||
|
:span="12"
|
||||||
|
v-if="hiddenType === 'unqualified' || hiddenType === 'otherHidden'"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-for="item in data.list"
|
||||||
|
:key="item.HIDDEN_LIBRARY_ID"
|
||||||
|
class="item"
|
||||||
|
@click="fnChoice(item)"
|
||||||
|
>
|
||||||
|
<el-descriptions :column="1" border>
|
||||||
|
<el-descriptions-item label="风险单元名称">
|
||||||
|
{{ item.RISK_UNIT_NAME }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="隐患部位">
|
||||||
|
{{ item.HIDDEN_PART }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="隐患描述">
|
||||||
|
{{ item.INSPECTION_BASIS }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<layout-video
|
||||||
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
:src="data.videoDialog.src"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import LayoutDepartment from "@/components/department/index.vue";
|
||||||
|
import LayoutHiddenDangerType from "@/components/hazard_type/index.vue";
|
||||||
|
import LayoutUpload from "@/components/upload/index.vue";
|
||||||
|
import LayoutVideo from "@/components/video/index.vue";
|
||||||
|
import { reactive, ref, watchEffect } from "vue";
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
import { getHiddenDangerDatabaseList } from "@/request/hazard_investigation.js";
|
||||||
|
import {
|
||||||
|
layoutFnGetHazardCategories,
|
||||||
|
layoutFnGetHazardLevel,
|
||||||
|
} from "@/assets/js/data_dictionary.js";
|
||||||
|
import { getUserListAll } from "@/request/data_dictionary.js";
|
||||||
|
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
form: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
// unqualified 清单检查不合格隐患
|
||||||
|
// otherHidden 清单检查其他隐患
|
||||||
|
// ledger 隐患台账
|
||||||
|
hiddenType: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:form"]);
|
||||||
|
const form = useVModel(props, "form", emits);
|
||||||
|
const rules = {
|
||||||
|
HIDDENPART: [{ required: true, message: "请输入隐患部位", trigger: "blur" }],
|
||||||
|
HIDDENDESCR: [{ required: true, message: "请输入隐患描述", trigger: "blur" }],
|
||||||
|
HIDDENLEVEL: [
|
||||||
|
{ required: true, message: "请选择隐患级别", trigger: "change" },
|
||||||
|
],
|
||||||
|
HIDDEN_CATEGORY: [
|
||||||
|
{ required: true, message: "请选择隐患类别", trigger: "change" },
|
||||||
|
],
|
||||||
|
HIDDENTYPE: [
|
||||||
|
{ required: true, message: "请选择隐患类型", trigger: "change" },
|
||||||
|
],
|
||||||
|
hiddenImgs: [
|
||||||
|
{ required: true, message: "请上传隐患图片", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONTYPE: [
|
||||||
|
{ required: true, message: "请选择隐患处置", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFYDESCR: [
|
||||||
|
{ required: true, message: "请输入整改描述", trigger: "blur" },
|
||||||
|
],
|
||||||
|
rectifyImgs: [
|
||||||
|
{ required: true, message: "请上传整改后图片", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONDEADLINE: [
|
||||||
|
{ required: true, message: "请选择整改期限", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONDEPT: [
|
||||||
|
{ required: true, message: "请选择整改部门", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONOR: [
|
||||||
|
{ required: true, message: "请选择整改人", trigger: "change" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const formRef = ref(null);
|
||||||
|
const hiddenDangerTypeRef = ref(null);
|
||||||
|
const data = reactive({
|
||||||
|
list: [],
|
||||||
|
rectifyUserList: [],
|
||||||
|
videoDialog: {
|
||||||
|
visible: false,
|
||||||
|
src: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnVideoPreview = (event) => {
|
||||||
|
if (event.url) {
|
||||||
|
data.videoDialog.visible = true;
|
||||||
|
data.videoDialog.src = event.url;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const fnGetHiddenDangerDatabaseList = async () => {
|
||||||
|
if (props.hiddenType !== "unqualified" || props.hiddenType !== "otherHidden")
|
||||||
|
return;
|
||||||
|
if (!form.value.HIDDENPART) return;
|
||||||
|
const resData = await getHiddenDangerDatabaseList({
|
||||||
|
RISK_UNIT_NAME: props.info.RISKUNITNAME,
|
||||||
|
HIDDEN_PART: form.value.HIDDENPART,
|
||||||
|
});
|
||||||
|
data.list = resData.varList;
|
||||||
|
};
|
||||||
|
const fnChoice = (item) => {
|
||||||
|
form.value.HIDDENPART = item.HIDDEN_PART;
|
||||||
|
form.value.HIDDENDESCR = item.INSPECTION_BASIS;
|
||||||
|
form.value.HIDDENLEVEL = "hiddenLevel0001";
|
||||||
|
form.value.HIDDENTYPE = [
|
||||||
|
item.HIDDEN_TYPE_ONE,
|
||||||
|
item.HIDDEN_TYPE_TWO,
|
||||||
|
item.HIDDEN_TYPE_THREE,
|
||||||
|
];
|
||||||
|
};
|
||||||
|
const fnRectificationDepartmentChange = async (event) => {
|
||||||
|
const resData = await getUserListAll({
|
||||||
|
DEPARTMENT_ID: event,
|
||||||
|
});
|
||||||
|
data.rectifyUserList = resData.userList;
|
||||||
|
};
|
||||||
|
const fnReset = () => {
|
||||||
|
formRef.value.resetFields();
|
||||||
|
data.list = [];
|
||||||
|
data.rectifyUserList = [];
|
||||||
|
};
|
||||||
|
const fnFormValidate = async () => {
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
};
|
||||||
|
const fnHiddenDangerTypeLabel = () => {
|
||||||
|
return hiddenDangerTypeRef.value.getCheckedNodes();
|
||||||
|
};
|
||||||
|
defineExpose({
|
||||||
|
reset: fnReset,
|
||||||
|
formValidate: fnFormValidate,
|
||||||
|
hiddenDangerTypeLabel: fnHiddenDangerTypeLabel,
|
||||||
|
});
|
||||||
|
const hazardLevelList = await layoutFnGetHazardLevel();
|
||||||
|
const hazardCategoriesList = await layoutFnGetHazardCategories();
|
||||||
|
watchEffect(() => {
|
||||||
|
if (form.value.RECTIFICATIONDEPT)
|
||||||
|
fnRectificationDepartmentChange(form.value.RECTIFICATIONDEPT);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.item {
|
||||||
|
cursor: pointer;
|
||||||
|
border-bottom: 1px dashed #ccc;
|
||||||
|
padding: 10px 0;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -5,219 +5,31 @@
|
||||||
:on-close="fnClose"
|
:on-close="fnClose"
|
||||||
width="1200"
|
width="1200"
|
||||||
>
|
>
|
||||||
<el-row :gutter="24">
|
<hidden-add
|
||||||
<el-col :span="12">
|
:hidden-type="hiddenType"
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
:info="info"
|
||||||
<el-row>
|
v-model:form="form"
|
||||||
<el-col :span="24" v-if="hiddenType === 'unqualified'">
|
ref="hiddenAddRef"
|
||||||
<el-form-item label="检查内容" prop="CHECK_CONTENT">
|
/>
|
||||||
<el-input
|
|
||||||
:model-value="info.CHECK_CONTENT"
|
|
||||||
disabled
|
|
||||||
type="textarea"
|
|
||||||
autosize
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患部位" prop="HIDDENPART">
|
|
||||||
<el-input
|
|
||||||
v-model="form.HIDDENPART"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
@blur="fnGetHiddenDangerDatabaseList"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患描述" prop="HIDDENDESCR">
|
|
||||||
<el-input v-model="form.HIDDENDESCR" placeholder="请输入内容" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患级别" prop="HIDDENLEVEL">
|
|
||||||
<el-select
|
|
||||||
v-model="form.HIDDENLEVEL"
|
|
||||||
@change="
|
|
||||||
form.HIDDENLEVEL === 'hiddenLevel0002'
|
|
||||||
? (form.RECTIFICATIONTYPE = '2')
|
|
||||||
: null
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in hazardLevelList"
|
|
||||||
:key="item.BIANMA"
|
|
||||||
:label="item.NAME"
|
|
||||||
:value="item.BIANMA"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24" v-if="info.BAO_BAO_TYPE === '1'">
|
|
||||||
<el-form-item label="隐患类别" prop="HIDDEN_CATEGORY">
|
|
||||||
<el-select v-model="form.HIDDEN_CATEGORY">
|
|
||||||
<el-option
|
|
||||||
v-for="item in hazardCategoriesList"
|
|
||||||
:key="item.DICTIONARIES_ID"
|
|
||||||
:label="item.NAME"
|
|
||||||
:value="item.DICTIONARIES_ID"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患类型" prop="HIDDENTYPE">
|
|
||||||
<layout-hidden-danger-type
|
|
||||||
v-model="form.HIDDENTYPE"
|
|
||||||
ref="hiddenDangerTypeRef"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患图片" prop="hiddenImgs">
|
|
||||||
<layout-upload
|
|
||||||
v-model:file-list="form.hiddenImgs"
|
|
||||||
list-type="picture-card"
|
|
||||||
accept=".jpg,.jpeg,.png"
|
|
||||||
:limit="99"
|
|
||||||
delete-to-server
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患视频" prop="videoFiles">
|
|
||||||
<layout-upload
|
|
||||||
v-model:file-list="form.videoFiles"
|
|
||||||
accept=".mp4"
|
|
||||||
:size="50"
|
|
||||||
@preview="fnVideoPreview"
|
|
||||||
>
|
|
||||||
<template #tip>只能上传mp4文件,且不超过50M</template>
|
|
||||||
</layout-upload>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="隐患处置" prop="RECTIFICATIONTYPE">
|
|
||||||
<el-radio-group v-model="form.RECTIFICATIONTYPE">
|
|
||||||
<el-radio
|
|
||||||
:disabled="form.HIDDENLEVEL === 'hiddenLevel0002'"
|
|
||||||
label="1"
|
|
||||||
>
|
|
||||||
立即整改
|
|
||||||
</el-radio>
|
|
||||||
<el-radio label="2">限期整改</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<template v-if="form.RECTIFICATIONTYPE === '1'">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item prop="RECTIFYDESCR" label="整改描述">
|
|
||||||
<el-input
|
|
||||||
v-model="form.RECTIFYDESCR"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="整改后图片" prop="rectifyImgs">
|
|
||||||
<layout-upload
|
|
||||||
v-model:file-list="form.rectifyImgs"
|
|
||||||
list-type="picture-card"
|
|
||||||
accept=".jpg,.jpeg,.png"
|
|
||||||
:limit="99"
|
|
||||||
delete-to-server
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</template>
|
|
||||||
<template v-if="form.RECTIFICATIONTYPE === '2'">
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item prop="RECTIFICATIONDEADLINE" label="整改期限">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="form.RECTIFICATIONDEADLINE"
|
|
||||||
format="YYYY-MM-DD"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
type="date"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="整改部门" prop="RECTIFICATIONDEPT">
|
|
||||||
<layout-department
|
|
||||||
v-model="form.RECTIFICATIONDEPT"
|
|
||||||
@update:model-value="form.RECTIFICATIONOR = ''"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="整改人" prop="RECTIFICATIONOR">
|
|
||||||
<el-select v-model="form.RECTIFICATIONOR">
|
|
||||||
<el-option
|
|
||||||
v-for="item in data.rectifyUserList"
|
|
||||||
:key="item.USER_ID"
|
|
||||||
:label="item.NAME"
|
|
||||||
:value="item.USER_ID"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</template>
|
|
||||||
</el-row>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<div
|
|
||||||
v-for="item in data.list"
|
|
||||||
:key="item.HIDDEN_LIBRARY_ID"
|
|
||||||
class="item"
|
|
||||||
@click="fnChoice(item)"
|
|
||||||
>
|
|
||||||
<el-descriptions :column="1" border>
|
|
||||||
<el-descriptions-item label="风险单元名称">
|
|
||||||
{{ item.RISK_UNIT_NAME }}
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="隐患部位">
|
|
||||||
{{ item.HIDDEN_PART }}
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="隐患描述">
|
|
||||||
{{ item.INSPECTION_BASIS }}
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="fnClose">取消</el-button>
|
<el-button @click="fnClose">取消</el-button>
|
||||||
<el-button type="primary" @click="fnSubmit">确定</el-button>
|
<el-button type="primary" @click="fnSubmit">确定</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<layout-video
|
|
||||||
v-model:visible="data.videoDialog.visible"
|
|
||||||
:src="data.videoDialog.src"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { reactive, ref, watchEffect } from "vue";
|
|
||||||
import LayoutUpload from "@/components/upload/index.vue";
|
|
||||||
import { useVModels } from "@vueuse/core";
|
import { useVModels } from "@vueuse/core";
|
||||||
import { debounce } from "throttle-debounce";
|
import { debounce } from "throttle-debounce";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import {
|
import {
|
||||||
getHiddenDangerDatabaseList,
|
|
||||||
setHiddenDangerAdd,
|
setHiddenDangerAdd,
|
||||||
setHiddenDangerEdit,
|
setHiddenDangerEdit,
|
||||||
setHiddenDangerListAdd,
|
setHiddenDangerListAdd,
|
||||||
} from "@/request/hazard_investigation.js";
|
} from "@/request/hazard_investigation.js";
|
||||||
import {
|
|
||||||
layoutFnGetHazardCategories,
|
|
||||||
layoutFnGetHazardLevel,
|
|
||||||
} from "@/assets/js/data_dictionary.js";
|
|
||||||
import LayoutHiddenDangerType from "@/components/hazard_type/index.vue";
|
|
||||||
import LayoutVideo from "@/components/video/index.vue";
|
|
||||||
import LayoutDepartment from "@/components/department/index.vue";
|
|
||||||
import { getUserListAll } from "@/request/data_dictionary.js";
|
|
||||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
|
||||||
import { setUploadImg } from "@/request/api.js";
|
import { setUploadImg } from "@/request/api.js";
|
||||||
|
import HiddenAdd from "./hidden_add.vue";
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
|
|
@ -263,96 +75,15 @@ const props = defineProps({
|
||||||
});
|
});
|
||||||
const emits = defineEmits(["update:visible", "update:form", "submit"]);
|
const emits = defineEmits(["update:visible", "update:form", "submit"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
const rules = {
|
const hiddenAddRef = ref(null);
|
||||||
HIDDENPART: [{ required: true, message: "请输入隐患部位", trigger: "blur" }],
|
|
||||||
HIDDENDESCR: [{ required: true, message: "请输入隐患描述", trigger: "blur" }],
|
|
||||||
HIDDENLEVEL: [
|
|
||||||
{ required: true, message: "请选择隐患级别", trigger: "change" },
|
|
||||||
],
|
|
||||||
HIDDEN_CATEGORY: [
|
|
||||||
{ required: true, message: "请选择隐患类别", trigger: "change" },
|
|
||||||
],
|
|
||||||
HIDDENTYPE: [
|
|
||||||
{ required: true, message: "请选择隐患类型", trigger: "change" },
|
|
||||||
],
|
|
||||||
hiddenImgs: [
|
|
||||||
{ required: true, message: "请上传隐患图片", trigger: "change" },
|
|
||||||
],
|
|
||||||
RECTIFICATIONTYPE: [
|
|
||||||
{ required: true, message: "请选择隐患处置", trigger: "change" },
|
|
||||||
],
|
|
||||||
RECTIFYDESCR: [
|
|
||||||
{ required: true, message: "请输入整改描述", trigger: "blur" },
|
|
||||||
],
|
|
||||||
rectifyImgs: [
|
|
||||||
{ required: true, message: "请上传整改后图片", trigger: "change" },
|
|
||||||
],
|
|
||||||
RECTIFICATIONDEADLINE: [
|
|
||||||
{ required: true, message: "请选择整改期限", trigger: "change" },
|
|
||||||
],
|
|
||||||
RECTIFICATIONDEPT: [
|
|
||||||
{ required: true, message: "请选择整改部门", trigger: "change" },
|
|
||||||
],
|
|
||||||
RECTIFICATIONOR: [
|
|
||||||
{ required: true, message: "请选择整改人", trigger: "change" },
|
|
||||||
],
|
|
||||||
};
|
|
||||||
const formRef = ref(null);
|
|
||||||
const hiddenDangerTypeRef = ref(null);
|
|
||||||
const data = reactive({
|
|
||||||
list: [],
|
|
||||||
rectifyUserList: [],
|
|
||||||
videoDialog: {
|
|
||||||
visible: false,
|
|
||||||
src: "",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const hazardLevelList = await layoutFnGetHazardLevel();
|
|
||||||
const hazardCategoriesList = await layoutFnGetHazardCategories();
|
|
||||||
const fnGetHiddenDangerDatabaseList = async () => {
|
|
||||||
if (!form.value.HIDDENPART) return;
|
|
||||||
const resData = await getHiddenDangerDatabaseList({
|
|
||||||
RISK_UNIT_NAME: props.info.RISKUNITNAME,
|
|
||||||
HIDDEN_PART: form.value.HIDDENPART,
|
|
||||||
});
|
|
||||||
data.list = resData.varList;
|
|
||||||
};
|
|
||||||
const fnChoice = (item) => {
|
|
||||||
form.value.HIDDENPART = item.HIDDEN_PART;
|
|
||||||
form.value.HIDDENDESCR = item.INSPECTION_BASIS;
|
|
||||||
form.value.HIDDENLEVEL = "hiddenLevel0001";
|
|
||||||
form.value.HIDDENTYPE = [
|
|
||||||
item.HIDDEN_TYPE_ONE,
|
|
||||||
item.HIDDEN_TYPE_TWO,
|
|
||||||
item.HIDDEN_TYPE_THREE,
|
|
||||||
];
|
|
||||||
};
|
|
||||||
const fnVideoPreview = (event) => {
|
|
||||||
if (event.url) {
|
|
||||||
data.videoDialog.visible = true;
|
|
||||||
data.videoDialog.src = event.url;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const fnRectificationDepartmentChange = async (event) => {
|
|
||||||
const resData = await getUserListAll({
|
|
||||||
DEPARTMENT_ID: event,
|
|
||||||
});
|
|
||||||
data.rectifyUserList = resData.userList;
|
|
||||||
};
|
|
||||||
watchEffect(() => {
|
|
||||||
if (form.value.RECTIFICATIONDEPT)
|
|
||||||
fnRectificationDepartmentChange(form.value.RECTIFICATIONDEPT);
|
|
||||||
});
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
formRef.value.resetFields();
|
hiddenAddRef.value.reset();
|
||||||
data.list = [];
|
|
||||||
data.rectifyUserList = [];
|
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
};
|
};
|
||||||
const fnSubmit = debounce(
|
const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
await useFormValidate(formRef);
|
await hiddenAddRef.value.formValidate();
|
||||||
let currentHiddenId = "";
|
let currentHiddenId = "";
|
||||||
let params = {
|
let params = {
|
||||||
...form.value,
|
...form.value,
|
||||||
|
|
@ -360,7 +91,7 @@ const fnSubmit = debounce(
|
||||||
HIDDENTYPE1: form.value.HIDDENTYPE[0],
|
HIDDENTYPE1: form.value.HIDDENTYPE[0],
|
||||||
HIDDENTYPE2: form.value.HIDDENTYPE[1],
|
HIDDENTYPE2: form.value.HIDDENTYPE[1],
|
||||||
HIDDENTYPE3: form.value.HIDDENTYPE[2],
|
HIDDENTYPE3: form.value.HIDDENTYPE[2],
|
||||||
HIDDENTYPE_NAME: hiddenDangerTypeRef.value.getCheckedNodes(),
|
HIDDENTYPE_NAME: hiddenAddRef.value.hiddenDangerTypeLabel(),
|
||||||
LISTMANAGER_ID: props.listManagerId,
|
LISTMANAGER_ID: props.listManagerId,
|
||||||
};
|
};
|
||||||
if (props.hiddenType === "unqualified") {
|
if (props.hiddenType === "unqualified") {
|
||||||
|
|
@ -428,14 +159,4 @@ const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss"></style>
|
||||||
.item {
|
|
||||||
cursor: pointer;
|
|
||||||
border-bottom: 1px dashed #ccc;
|
|
||||||
padding: 10px 0;
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
<template>
|
||||||
|
<layout-card>
|
||||||
|
<HiddenView :hidden-id="HIDDEN_ID" />
|
||||||
|
<el-divider content-position="left">隐患验收</el-divider>
|
||||||
|
<el-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="data.form"
|
||||||
|
:rules="rules"
|
||||||
|
label-width="100px"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="是否合格" prop="ISQUALIFIED">
|
||||||
|
<el-radio-group :model-value="data.form.ISQUALIFIED">
|
||||||
|
<el-radio label="1">是</el-radio>
|
||||||
|
<el-radio label="2">否</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<template v-if="data.form.ISQUALIFIED === '1'">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="CHECKDESCR" label="验收描述">
|
||||||
|
<el-input
|
||||||
|
v-model="data.form.CHECKDESCR"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 3 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="CHECK_TIME" label="验收时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="data.form.CHECK_TIME"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
placeholder="选择日期"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="验收图片" prop="acceptFile">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="data.form.acceptFile"
|
||||||
|
:limit="4"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
list-type="picture-card"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div class="tc mt">
|
||||||
|
<el-button type="primary" @click="fnSubmit">提交</el-button>
|
||||||
|
</div>
|
||||||
|
</layout-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenView from "@/views/hazard_investigation/checklist_inspection_status/components/hidden_view.vue";
|
||||||
|
import { useRoute, useRouter } from "vue-router";
|
||||||
|
import { reactive, ref } from "vue";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import LayoutUpload from "@/components/upload/index.vue";
|
||||||
|
import { setHiddenDangerAcceptSubmit } from "@/request/hidden_danger_government.js";
|
||||||
|
import { setUploadImg } from "@/request/api.js";
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const router = useRouter();
|
||||||
|
const { HIDDEN_ID } = route.query;
|
||||||
|
const formRef = ref(null);
|
||||||
|
const rules = {
|
||||||
|
ISQUALIFIED: [
|
||||||
|
{ required: true, message: "请选择是否合格", trigger: "change" },
|
||||||
|
],
|
||||||
|
CHECKDESCR: [{ required: true, message: "请输入验收描述", trigger: "blur" }],
|
||||||
|
CHECK_TIME: [
|
||||||
|
{ required: true, message: "请选择验收时间", trigger: "change" },
|
||||||
|
],
|
||||||
|
acceptFile: [
|
||||||
|
{ required: true, message: "请上传验收图片", trigger: "change" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const data = reactive({
|
||||||
|
form: {
|
||||||
|
ISQUALIFIED: "1",
|
||||||
|
CHECKDESCR: "",
|
||||||
|
CHECK_TIME: "",
|
||||||
|
acceptFile: [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnSubmit = debounce(
|
||||||
|
1000,
|
||||||
|
async () => {
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const resData = await setHiddenDangerAcceptSubmit({
|
||||||
|
HIDDEN_ID,
|
||||||
|
...data.form,
|
||||||
|
});
|
||||||
|
for (let i = 0; i < data.form.acceptFile.length; i++) {
|
||||||
|
if (data.form.acceptFile[i].raw)
|
||||||
|
await fnUploadImage(
|
||||||
|
resData.check.HIDDENCHECK_ID,
|
||||||
|
data.form.acceptFile[i].raw,
|
||||||
|
5
|
||||||
|
);
|
||||||
|
}
|
||||||
|
ElMessage.success("保存成功");
|
||||||
|
router.back();
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
const fnUploadImage = async (HIDDENCHECK_ID, FFILE, TYPE) => {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append("FOREIGN_KEY", HIDDENCHECK_ID);
|
||||||
|
formData.append("TYPE", TYPE);
|
||||||
|
formData.append("FFILE", FFILE);
|
||||||
|
await setUploadImg(formData);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="100px"
|
||||||
|
@submit.prevent="fnResetPaginationTransfer"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患描述" prop="KEYWORDS">
|
||||||
|
<el-input v-model="searchForm.KEYWORDS" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发现日期" prop="dates">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="searchForm.dates"
|
||||||
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
@get-data="fnGetDataTransfer"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="HIDDENDESCR"
|
||||||
|
label="隐患描述"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column label="隐患处置" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.RECTIFICATIONTYPE === '1'">立即整改</span>
|
||||||
|
<span v-else-if="row.RECTIFICATIONTYPE === '2'">限期整改</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="HIDDENLEVELNAME" label="隐患级别" width="120" />
|
||||||
|
<el-table-column label="隐患状态" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{ translationStatus(row.STATE, stateList) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONTIME"
|
||||||
|
label="整改时间"
|
||||||
|
width="160"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONORNAME"
|
||||||
|
label="整改人"
|
||||||
|
width="100"
|
||||||
|
/>
|
||||||
|
<el-table-column prop="CHECKNAME" label="验收人" width="150" />
|
||||||
|
<el-table-column label="操作" width="100">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/hidden_danger_government/acceptance/view',
|
||||||
|
query: { HIDDEN_ID: row.HIDDEN_ID },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="row.isUserself && buttonJurisdiction.del"
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/hidden_danger_government/acceptance/acceptance',
|
||||||
|
query: { HIDDEN_ID: row.HIDDEN_ID },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
验收
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import { serialNumber, translationStatus } from "@/assets/js/utils";
|
||||||
|
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { getHiddenDangerList } from "@/request/hidden_danger_government.js";
|
||||||
|
import { useUserStore } from "@/pinia/user.js";
|
||||||
|
|
||||||
|
const stateList = [
|
||||||
|
{ NAME: "未整改", ID: "1" },
|
||||||
|
{ NAME: "已整改", ID: "3" },
|
||||||
|
{ NAME: "已验收", ID: "4" },
|
||||||
|
{ NAME: "已过期", ID: "-1" },
|
||||||
|
];
|
||||||
|
const router = useRouter();
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const USER_ID = userStore.getUserInfo.USER_ID;
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getHiddenDangerList, {
|
||||||
|
otherParams: {
|
||||||
|
HIDDENLEVEL: "hiddenLevel0001",
|
||||||
|
DISPOSESTATE: "3",
|
||||||
|
},
|
||||||
|
callbackFn: (list) => {
|
||||||
|
for (let i = 0; i < list.length; i++) {
|
||||||
|
list[i].isUserself = list[i].UNCHECKUSERS.indexOf(USER_ID) !== -1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnGetDataTransfer = () => {
|
||||||
|
fnGetData({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnResetPaginationTransfer = () => {
|
||||||
|
fnResetPagination({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const buttonJurisdiction = await useButtonJurisdiction("hidden");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<hidden-view print />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenView from "@/views/hazard_investigation/checklist_inspection_status/hidden_danger_view.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
<template>
|
||||||
|
<layout-card>
|
||||||
|
<hidden-add hidden-type="ledger" v-model:form="form" ref="hiddenAddRef" />
|
||||||
|
<div class="tc mt-10">
|
||||||
|
<el-button type="primary" @click="fnSubmit">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</layout-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenAdd from "@/views/hazard_investigation/inventory_troubleshooting/components/hidden_add.vue";
|
||||||
|
import { ref } from "vue";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import { setHiddenDangerAdd } from "@/request/hazard_investigation.js";
|
||||||
|
import { setUploadImg } from "@/request/api.js";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const hiddenAddRef = ref(null);
|
||||||
|
const form = ref({
|
||||||
|
HIDDENPART: "",
|
||||||
|
HIDDENDESCR: "",
|
||||||
|
HIDDENLEVEL: "",
|
||||||
|
HIDDENTYPE: [],
|
||||||
|
hiddenImgs: [],
|
||||||
|
videoFiles: [],
|
||||||
|
RECTIFICATIONTYPE: "2",
|
||||||
|
RECTIFYDESCR: "",
|
||||||
|
rectifyImgs: [],
|
||||||
|
RECTIFICATIONDEADLINE: "",
|
||||||
|
RECTIFICATIONDEPT: "",
|
||||||
|
RECTIFICATIONOR: "",
|
||||||
|
});
|
||||||
|
const fnSubmit = debounce(
|
||||||
|
1000,
|
||||||
|
async () => {
|
||||||
|
await hiddenAddRef.value.formValidate();
|
||||||
|
const resData = await setHiddenDangerAdd({
|
||||||
|
...form.value,
|
||||||
|
SOURCE: "1",
|
||||||
|
HAVESCHEME: 0,
|
||||||
|
HIDDENTYPE1: form.value.HIDDENTYPE[0],
|
||||||
|
HIDDENTYPE2: form.value.HIDDENTYPE[1],
|
||||||
|
HIDDENTYPE3: form.value.HIDDENTYPE[2],
|
||||||
|
HIDDENTYPE_NAME: hiddenAddRef.value.hiddenDangerTypeLabel(),
|
||||||
|
});
|
||||||
|
const currentHiddenId = resData.pd.HIDDEN_ID;
|
||||||
|
for (let i = 0; i < form.value.hiddenImgs.length; i++) {
|
||||||
|
if (form.value.hiddenImgs[i].raw)
|
||||||
|
await fnUploadImage(currentHiddenId, form.value.hiddenImgs[i].raw, 3);
|
||||||
|
}
|
||||||
|
for (let i = 0; i < form.value.videoFiles.length; i++) {
|
||||||
|
if (form.value.videoFiles[i].raw)
|
||||||
|
await fnUploadImage(currentHiddenId, form.value.videoFiles[i].raw, 3);
|
||||||
|
}
|
||||||
|
for (let i = 0; i < form.value.rectifyImgs.length; i++) {
|
||||||
|
if (form.value.rectifyImgs[i].raw)
|
||||||
|
await fnUploadImage(currentHiddenId, form.value.rectifyImgs[i].raw, 4);
|
||||||
|
}
|
||||||
|
ElMessage.success("保存成功");
|
||||||
|
router.back();
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append("FOREIGN_KEY", HIDDEN_ID);
|
||||||
|
formData.append("TYPE", TYPE);
|
||||||
|
formData.append("FFILE", FFILE);
|
||||||
|
await setUploadImg(formData);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
@ -0,0 +1,216 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="100px"
|
||||||
|
@submit.prevent="fnResetPaginationTransfer"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患描述" prop="KEYWORDS">
|
||||||
|
<el-input v-model="searchForm.KEYWORDS" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发现日期" prop="dates">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="searchForm.dates"
|
||||||
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患发现人" prop="CREATORNAME">
|
||||||
|
<el-input v-model="searchForm.CREATORNAME" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="部门" prop="DEPTIDS">
|
||||||
|
<layout-department
|
||||||
|
v-model="searchForm.DEPTIDS"
|
||||||
|
multiple
|
||||||
|
show-checkbox
|
||||||
|
collapse-tags
|
||||||
|
root-disabled="Y"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患状态" prop="STATE">
|
||||||
|
<el-select v-model="searchForm.STATE">
|
||||||
|
<el-option
|
||||||
|
v-for="item in stateList"
|
||||||
|
:key="item.ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label-width="10px" class="end">
|
||||||
|
<el-button>打印</el-button>
|
||||||
|
<el-button> 导出 </el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
@get-data="fnGetDataTransfer"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
ref="tableRef"
|
||||||
|
row-key="HIDDEN_ID"
|
||||||
|
>
|
||||||
|
<el-table-column reserve-selection type="selection" width="55" />
|
||||||
|
<el-table-column label="序号" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="HIDDENDESCR"
|
||||||
|
label="隐患描述"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column label="隐患处置" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.RECTIFICATIONTYPE === '1'">立即整改</span>
|
||||||
|
<span v-else-if="row.RECTIFICATIONTYPE === '2'">限期整改</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="HIDDENLEVELNAME" label="隐患级别" width="120" />
|
||||||
|
<el-table-column label="隐患状态" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{ translationStatus(row.STATE, stateList) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="CREATTIME" label="发现时间" width="160" />
|
||||||
|
<el-table-column prop="CREATORNAME" label="发现人" width="100" />
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONTIME"
|
||||||
|
label="整改时间"
|
||||||
|
width="160"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONORNAME"
|
||||||
|
label="整改人"
|
||||||
|
width="100"
|
||||||
|
/>
|
||||||
|
<el-table-column label="验收人" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.RECTIFICATIONTYPE === '2'">
|
||||||
|
{{ row.CHECKNAME }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="100">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/hidden_danger_government/ledger/view',
|
||||||
|
query: { HIDDEN_ID: row.HIDDEN_ID },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="buttonJurisdiction.del"
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnDelete(row.HIDDEN_ID)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<template #button>
|
||||||
|
<el-button
|
||||||
|
v-if="buttonJurisdiction.add"
|
||||||
|
type="primary"
|
||||||
|
@click="
|
||||||
|
router.push({ path: '/hidden_danger_government/ledger/add' })
|
||||||
|
"
|
||||||
|
>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import { serialNumber, translationStatus } from "@/assets/js/utils";
|
||||||
|
import { setHiddenDangerDelete } from "@/request/hazard_investigation.js";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import LayoutDepartment from "@/components/department/index.vue";
|
||||||
|
import { getHiddenDangerList } from "@/request/hidden_danger_government.js";
|
||||||
|
|
||||||
|
const stateList = [
|
||||||
|
{ NAME: "未整改", ID: "1" },
|
||||||
|
{ NAME: "已整改", ID: "3" },
|
||||||
|
{ NAME: "已验收", ID: "4" },
|
||||||
|
{ NAME: "已过期", ID: "-1" },
|
||||||
|
];
|
||||||
|
const router = useRouter();
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||||
|
useListData(getHiddenDangerList, {
|
||||||
|
otherParams: {
|
||||||
|
HIDDENLEVEL: "hiddenLevel0001",
|
||||||
|
DISPOSESTATE: "-1",
|
||||||
|
IS_SELF: "0",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnGetDataTransfer = () => {
|
||||||
|
fnGetData({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnResetPaginationTransfer = () => {
|
||||||
|
fnResetPagination({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const buttonJurisdiction = await useButtonJurisdiction("hidden");
|
||||||
|
const fnDelete = debounce(
|
||||||
|
1000,
|
||||||
|
async (HIDDEN_ID) => {
|
||||||
|
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
|
||||||
|
await setHiddenDangerDelete({ HIDDEN_ID });
|
||||||
|
ElMessage.success("删除成功");
|
||||||
|
fnResetPaginationTransfer();
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<hidden-view print />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenView from "@/views/hazard_investigation/checklist_inspection_status/hidden_danger_view.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
@ -0,0 +1,179 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="100px"
|
||||||
|
@submit.prevent="fnResetPaginationTransfer"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患描述" prop="KEYWORDS">
|
||||||
|
<el-input v-model="searchForm.KEYWORDS" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发现日期" prop="dates">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="searchForm.dates"
|
||||||
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
@get-data="fnGetDataTransfer"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="隐患来源" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.SOURCE === '1'">隐患快报</span>
|
||||||
|
<span v-else-if="row.SOURCE === '2'">隐患排查</span>
|
||||||
|
<span v-else-if="row.SOURCE === '3'">隐患排查</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="HIDDENDESCR"
|
||||||
|
label="隐患描述"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column label="隐患处置" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.RECTIFICATIONTYPE === '1'">立即整改</span>
|
||||||
|
<span v-else-if="row.RECTIFICATIONTYPE === '2'">限期整改</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="HIDDENLEVELNAME" label="隐患级别" width="120" />
|
||||||
|
<el-table-column label="隐患状态" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{ translationStatus(row.STATE, stateList) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="CREATTIME" label="发现时间" width="160" />
|
||||||
|
<el-table-column prop="CREATORNAME" label="发现人" width="100" />
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONTIME"
|
||||||
|
label="整改时间"
|
||||||
|
width="160"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONORNAME"
|
||||||
|
label="整改人"
|
||||||
|
width="100"
|
||||||
|
/>
|
||||||
|
<el-table-column label="操作" width="100">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/hidden_danger_government/major/view',
|
||||||
|
query: { HIDDEN_ID: row.HIDDEN_ID },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="ISMAIN === '1' && row.ISCONFIRM === '0'"
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnConfirm(row.HIDDEN_ID)"
|
||||||
|
>
|
||||||
|
确定
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import { serialNumber, translationStatus } from "@/assets/js/utils";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import {
|
||||||
|
getHiddenDangerList,
|
||||||
|
setHiddenDangerCancelMajorHazards,
|
||||||
|
} from "@/request/hidden_danger_government.js";
|
||||||
|
import { useUserStore } from "@/pinia/user.js";
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
|
||||||
|
const stateList = [
|
||||||
|
{ NAME: "未整改", ID: "1" },
|
||||||
|
{ NAME: "已整改", ID: "3" },
|
||||||
|
{ NAME: "已验收", ID: "4" },
|
||||||
|
{ NAME: "已过期", ID: "-1" },
|
||||||
|
];
|
||||||
|
const router = useRouter();
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const ISMAIN = userStore.getUserInfo.ISMAIN;
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getHiddenDangerList, {
|
||||||
|
otherParams: {
|
||||||
|
HIDDENLEVEL: "hiddenLevel0002",
|
||||||
|
DISPOSESTATE: "1",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnGetDataTransfer = () => {
|
||||||
|
fnGetData({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnResetPaginationTransfer = () => {
|
||||||
|
fnResetPagination({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnConfirm = async (HIDDEN_ID) => {
|
||||||
|
try {
|
||||||
|
await ElMessageBox.confirm("请确认该隐患是否为重大隐患?", {
|
||||||
|
type: "warning",
|
||||||
|
confirmButtonText: "确定为重大隐患",
|
||||||
|
cancelButtonText: "取消重大隐患",
|
||||||
|
distinguishCancelAndClose: true,
|
||||||
|
});
|
||||||
|
await router.push({
|
||||||
|
path: "/hidden_danger_government/major/view",
|
||||||
|
query: { HIDDEN_ID, type: "confirm" },
|
||||||
|
});
|
||||||
|
} catch (event) {
|
||||||
|
if (event === "cancel") {
|
||||||
|
await setHiddenDangerCancelMajorHazards({
|
||||||
|
HIDDEN_ID,
|
||||||
|
HIDDENLEVEL: "hiddenLevel0001",
|
||||||
|
});
|
||||||
|
ElMessage.success("取消成功");
|
||||||
|
fnResetPaginationTransfer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
<template>
|
||||||
|
<layout-card>
|
||||||
|
<div id="printContent">
|
||||||
|
<hidden-view :hidden-id="HIDDEN_ID" />
|
||||||
|
</div>
|
||||||
|
<div class="tc mt-10">
|
||||||
|
<el-button type="primary" @click="fnConfirm" v-if="type === 'confirm'">
|
||||||
|
确认为重大隐患
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" v-print="'#printContent'" v-else>
|
||||||
|
打印
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</layout-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenView from "@/views/hazard_investigation/checklist_inspection_status/components/hidden_view.vue";
|
||||||
|
import { useRoute, useRouter } from "vue-router";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import { setHiddenDangerConfirmMajorHazards } from "@/request/hidden_danger_government.js";
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const router = useRouter();
|
||||||
|
const { HIDDEN_ID, type } = route.query;
|
||||||
|
const fnConfirm = debounce(
|
||||||
|
1000,
|
||||||
|
async () => {
|
||||||
|
await setHiddenDangerConfirmMajorHazards({
|
||||||
|
ISCONFIRM: "1",
|
||||||
|
HIDDEN_ID,
|
||||||
|
});
|
||||||
|
ElMessage.success("确认成功");
|
||||||
|
router.back();
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
@ -0,0 +1,162 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="100px"
|
||||||
|
@submit.prevent="fnResetPaginationTransfer"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患描述" prop="KEYWORDS">
|
||||||
|
<el-input v-model="searchForm.KEYWORDS" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="发现日期" prop="dates">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="searchForm.dates"
|
||||||
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
@get-data="fnGetDataTransfer"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="隐患来源" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.SOURCE === '1'">隐患快报</span>
|
||||||
|
<span v-else-if="row.SOURCE === '2'">隐患排查</span>
|
||||||
|
<span v-else-if="row.SOURCE === '3'">隐患排查</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="HIDDENDESCR"
|
||||||
|
label="隐患描述"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column label="隐患处置" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<span v-if="row.RECTIFICATIONTYPE === '1'">立即整改</span>
|
||||||
|
<span v-else-if="row.RECTIFICATIONTYPE === '2'">限期整改</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="HIDDENLEVELNAME" label="隐患级别" width="120" />
|
||||||
|
<el-table-column label="隐患状态" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{ translationStatus(row.STATE, stateList) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="CREATTIME" label="发现时间" width="160" />
|
||||||
|
<el-table-column prop="CREATORNAME" label="发现人" width="100" />
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONDEADLINE"
|
||||||
|
label="整改期限"
|
||||||
|
width="160"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="RECTIFICATIONORNAME"
|
||||||
|
label="整改人"
|
||||||
|
width="100"
|
||||||
|
/>
|
||||||
|
<el-table-column label="操作" width="100">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/hidden_danger_government/rectification/view',
|
||||||
|
query: { HIDDEN_ID: row.HIDDEN_ID },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="buttonJurisdiction.del"
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnRectification(row)"
|
||||||
|
>
|
||||||
|
整改
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import { serialNumber, translationStatus } from "@/assets/js/utils";
|
||||||
|
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { getHiddenDangerList } from "@/request/hidden_danger_government.js";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
|
||||||
|
const stateList = [
|
||||||
|
{ NAME: "未整改", ID: "1" },
|
||||||
|
{ NAME: "已整改", ID: "3" },
|
||||||
|
{ NAME: "已验收", ID: "4" },
|
||||||
|
{ NAME: "已过期", ID: "-1" },
|
||||||
|
];
|
||||||
|
const router = useRouter();
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getHiddenDangerList, {
|
||||||
|
otherParams: {
|
||||||
|
HIDDENLEVEL: "hiddenLevel0001",
|
||||||
|
DISPOSESTATE: "2",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnGetDataTransfer = () => {
|
||||||
|
fnGetData({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnResetPaginationTransfer = () => {
|
||||||
|
fnResetPagination({
|
||||||
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const buttonJurisdiction = await useButtonJurisdiction("hidden");
|
||||||
|
const fnRectification = (row) => {
|
||||||
|
if (row.HIDDENLEVEL === "hiddenLevel0002" && row.ISCONFIRM === "0") {
|
||||||
|
ElMessage.warning("管理人员未确认该隐患");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
router.push({
|
||||||
|
path: "/hidden_danger_government/rectification/rectification",
|
||||||
|
query: { HIDDEN_ID: row.HIDDEN_ID },
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
|
@ -0,0 +1,538 @@
|
||||||
|
<template>
|
||||||
|
<layout-card>
|
||||||
|
<HiddenView :hidden-id="HIDDEN_ID" @throw-data="data.info = $event" />
|
||||||
|
<el-divider content-position="left">隐患整改</el-divider>
|
||||||
|
<el-row :gutter="24">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="data.form"
|
||||||
|
:rules="rules"
|
||||||
|
label-width="100px"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="正常整改" prop="IS_NORMAL">
|
||||||
|
<el-radio-group
|
||||||
|
:model-value="data.form.IS_NORMAL"
|
||||||
|
@change="fnIsNormalChange"
|
||||||
|
>
|
||||||
|
<el-radio label="1">是</el-radio>
|
||||||
|
<el-radio label="2">否</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<template v-if="data.form.IS_NORMAL === '2'">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="整改部门" prop="RECTIFICATIONDEPT">
|
||||||
|
<layout-department
|
||||||
|
v-model="data.form.RECTIFICATIONDEPT"
|
||||||
|
@update:model-value="fnRectificationDepartmentChange"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="整改人" prop="RECTIFICATIONOR">
|
||||||
|
<el-select v-model="data.form.RECTIFICATIONOR">
|
||||||
|
<el-option
|
||||||
|
v-for="item in data.rectifierUserList"
|
||||||
|
:disabled="item.USER_ID === USER_ID"
|
||||||
|
:key="item.USER_ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.USER_ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template v-if="data.form.IS_NORMAL === '1'">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="RECTIFYDESCR" label="整改描述">
|
||||||
|
<el-input
|
||||||
|
v-model="data.form.RECTIFYDESCR"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 3 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="整改时间" prop="RECTIFICATIONTIME">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="data.form.RECTIFICATIONTIME"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
type="date"
|
||||||
|
placeholder="选择日期"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="整改后图片" prop="afterRectificationFile">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="data.form.afterRectificationFile"
|
||||||
|
:limit="4"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
list-type="picture-card"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<template v-if="data.info.ISCONFIRM === '0'">
|
||||||
|
<template
|
||||||
|
v-for="(item, index) in data.form.acceptanceList"
|
||||||
|
:key="item.id"
|
||||||
|
>
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-form-item
|
||||||
|
label="验收部门"
|
||||||
|
:prop="'acceptanceList.' + index + '.DEPARTMENT_ID'"
|
||||||
|
:rules="{
|
||||||
|
required: true,
|
||||||
|
message: '请选择验收部门',
|
||||||
|
trigger: 'change',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<layout-department
|
||||||
|
v-model="item.DEPARTMENT_ID"
|
||||||
|
@update:model-value="
|
||||||
|
fnInspectDepartmentChange($event, index)
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-form-item
|
||||||
|
label="验收人"
|
||||||
|
:prop="'acceptanceList.' + index + '.USER_ID'"
|
||||||
|
:rules="{
|
||||||
|
required: true,
|
||||||
|
message: '请选择验收人',
|
||||||
|
trigger: 'change',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
:model-value="item.USER_ID"
|
||||||
|
@change="
|
||||||
|
verifyDuplicateSelection(
|
||||||
|
data.form.acceptanceList,
|
||||||
|
index,
|
||||||
|
'USER_ID',
|
||||||
|
$event
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in item.userList"
|
||||||
|
:key="item.USER_ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.USER_ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="2">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
v-if="index === 0"
|
||||||
|
@click="fnAddInspectedList"
|
||||||
|
>
|
||||||
|
添加
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
v-if="index !== 0"
|
||||||
|
@click="data.form.acceptanceList.splice(index, 1)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
<template v-if="data.info.ISCONFIRM === '1'">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="验收部门">
|
||||||
|
<el-input disabled v-model="data.form.DEPARTMENT_NAME" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="验收人">
|
||||||
|
<el-input disabled v-model="data.form.USER_NAME" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="整改方案" prop="HAVESCHEME">
|
||||||
|
<el-radio-group v-model="data.form.HAVESCHEME">
|
||||||
|
<el-radio label="1" value="1">有</el-radio>
|
||||||
|
<el-radio :disabled="data.info.ISCONFIRM === '1'" label="0">
|
||||||
|
无
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<template v-if="data.form.HAVESCHEME === '1'">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="SCREENINGDATE" label="排查日期">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="data.form.SCREENINGDATE"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
type="date"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item prop="LIST_NAME" label="隐患清单">
|
||||||
|
<el-input v-model="data.form.LIST_NAME" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="治理标准" prop="GOVERNSTANDARDS">
|
||||||
|
<el-input v-model="data.form.GOVERNSTANDARDS" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="治理方法" prop="GOVERNMETHOD">
|
||||||
|
<el-input v-model="data.form.GOVERNMETHOD" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="经费落实" prop="EXPENDITURE">
|
||||||
|
<el-input v-model="data.form.EXPENDITURE" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="负责人员" prop="PRINCIPAL">
|
||||||
|
<el-input v-model="data.form.PRINCIPAL" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="工时安排" prop="PROGRAMMING">
|
||||||
|
<el-input v-model="data.form.PROGRAMMING" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="时限要求" prop="TIMELIMITFOR">
|
||||||
|
<el-input v-model="data.form.TIMELIMITFOR" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="工作要求" prop="JOBREQUIREMENT">
|
||||||
|
<el-input v-model="data.form.JOBREQUIREMENT" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="其他事项" prop="OTHERBUSINESS">
|
||||||
|
<el-input v-model="data.form.OTHERBUSINESS" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="方案图片" prop="programmeFile">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="data.form.programmeFile"
|
||||||
|
:limit="99"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
list-type="picture-card"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="整改计划" prop="HAVEPLAN">
|
||||||
|
<el-radio-group v-model="data.form.HAVEPLAN">
|
||||||
|
<el-radio label="1" value="1">有</el-radio>
|
||||||
|
<el-radio :disabled="data.info.ISCONFIRM === '1'" label="0">
|
||||||
|
无
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24" v-if="data.form.HAVEPLAN === '1'">
|
||||||
|
<el-form-item label="计划图片" prop="planFile">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="data.form.planFile"
|
||||||
|
:limit="99"
|
||||||
|
accept=".jpg,.jpeg,.png"
|
||||||
|
list-type="picture-card"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div
|
||||||
|
v-for="item in data.recordLibraryList"
|
||||||
|
:key="item.HIDDEN_LIBRARY_ID"
|
||||||
|
class="item"
|
||||||
|
@click="fnChoice(item)"
|
||||||
|
>
|
||||||
|
<el-descriptions :column="1" border>
|
||||||
|
<el-descriptions-item label="风险单元名称">
|
||||||
|
{{ item.RISK_UNIT_NAME }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="隐患部位">
|
||||||
|
{{ item.HIDDEN_PART }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="隐患描述">
|
||||||
|
{{ item.INSPECTION_BASIS }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="整改意见">
|
||||||
|
{{ item.RECTIFYDESCR }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<div class="tc mt">
|
||||||
|
<el-button type="primary" @click="fnSubmit">提交</el-button>
|
||||||
|
</div>
|
||||||
|
</layout-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenView from "@/views/hazard_investigation/checklist_inspection_status/components/hidden_view.vue";
|
||||||
|
import { useRoute, useRouter } from "vue-router";
|
||||||
|
import { reactive, ref, watch } from "vue";
|
||||||
|
import LayoutDepartment from "@/components/department/index.vue";
|
||||||
|
import LayoutUpload from "@/components/upload/index.vue";
|
||||||
|
import { useUserStore } from "@/pinia/user.js";
|
||||||
|
import {
|
||||||
|
getHiddenDangerRectificationWhy,
|
||||||
|
setHiddenDangerRectificationAbnormalSubmit,
|
||||||
|
setHiddenDangerRectificationNormalSubmit,
|
||||||
|
} from "@/request/hidden_danger_government.js";
|
||||||
|
import { verifyDuplicateSelection } from "@/assets/js/utils.js";
|
||||||
|
import { getUserListAll } from "@/request/data_dictionary.js";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||||
|
import { cloneDeep } from "lodash-es";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import { getHiddenDangerDatabaseList } from "@/request/hazard_investigation.js";
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const router = useRouter();
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const USER_ID = userStore.getUserInfo.USER_ID;
|
||||||
|
const CORPINFO_ID = userStore.getUserInfo.CORPINFO_ID;
|
||||||
|
const { HIDDEN_ID } = route.query;
|
||||||
|
const formRef = ref(null);
|
||||||
|
const rules = {
|
||||||
|
IS_NORMAL: [
|
||||||
|
{ required: true, message: "正常整改不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONDEPT: [
|
||||||
|
{ required: true, message: "整改部门不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONOR: [
|
||||||
|
{ required: true, message: "整改人不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
RECTIFYDESCR: [
|
||||||
|
{ required: true, message: "整改描述不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
RECTIFICATIONTIME: [
|
||||||
|
{ required: true, message: "整改时间不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
afterRectificationFile: [
|
||||||
|
{ required: true, message: "整改后图片不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
HAVESCHEME: [
|
||||||
|
{ required: true, message: "整改方案不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
SCREENINGDATE: [
|
||||||
|
{ required: true, message: "排查日期不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
LIST_NAME: [{ required: true, message: "隐患清单不能为空", trigger: "blur" }],
|
||||||
|
GOVERNSTANDARDS: [
|
||||||
|
{ required: true, message: "治理标准不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
GOVERNMETHOD: [
|
||||||
|
{ required: true, message: "治理方法不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
EXPENDITURE: [
|
||||||
|
{ required: true, message: "经费落实不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
PRINCIPAL: [{ required: true, message: "负责人员不能为空", trigger: "blur" }],
|
||||||
|
PROGRAMMING: [
|
||||||
|
{ required: true, message: "工时安排不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
TIMELIMITFOR: [
|
||||||
|
{ required: true, message: "时限要求不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
JOBREQUIREMENT: [
|
||||||
|
{ required: true, message: "工作要求不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
OTHERBUSINESS: [
|
||||||
|
{ required: true, message: "其他事项不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
programmeFile: [
|
||||||
|
{ required: true, message: "方案图片不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
HAVEPLAN: [
|
||||||
|
{ required: true, message: "整改计划不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
planFile: [
|
||||||
|
{ required: true, message: "计划图片不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const data = reactive({
|
||||||
|
info: {},
|
||||||
|
form: {
|
||||||
|
IS_NORMAL: "1",
|
||||||
|
RECTIFICATIONDEPT: "",
|
||||||
|
RECTIFICATIONOR: "",
|
||||||
|
RECTIFYDESCR: "",
|
||||||
|
RECTIFICATIONTIME: "",
|
||||||
|
afterRectificationFile: [],
|
||||||
|
HAVESCHEME: "0",
|
||||||
|
SCREENINGDATE: "",
|
||||||
|
LIST_NAME: "",
|
||||||
|
GOVERNSTANDARDS: "",
|
||||||
|
GOVERNMETHOD: "",
|
||||||
|
EXPENDITURE: "",
|
||||||
|
PRINCIPAL: "",
|
||||||
|
PROGRAMMING: "",
|
||||||
|
TIMELIMITFOR: "",
|
||||||
|
JOBREQUIREMENT: "",
|
||||||
|
OTHERBUSINESS: "",
|
||||||
|
programmeFile: [],
|
||||||
|
HAVEPLAN: "0",
|
||||||
|
planFile: [],
|
||||||
|
acceptanceList: [
|
||||||
|
{
|
||||||
|
id: Math.random(),
|
||||||
|
DEPARTMENT_ID: "",
|
||||||
|
USER_ID: "",
|
||||||
|
userList: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
rectifierUserList: [],
|
||||||
|
recordLibraryList: [],
|
||||||
|
defaultDepartmentId: "",
|
||||||
|
defaultUserId: "",
|
||||||
|
});
|
||||||
|
const fnGetData = async () => {
|
||||||
|
const resData = await getHiddenDangerRectificationWhy({
|
||||||
|
CORPINFO_ID,
|
||||||
|
});
|
||||||
|
data.defaultDepartmentId = resData.deppd.DEPARTMENT_ID;
|
||||||
|
data.defaultUserId = resData.userpd.USER_ID;
|
||||||
|
data.form.DEPARTMENT_NAME = resData.deppd.NAME;
|
||||||
|
data.form.USER_NAME = resData.userpd.USERNAME;
|
||||||
|
await fnInspectDepartmentChange(data.defaultDepartmentId, 0);
|
||||||
|
data.form.acceptanceList[0].DEPARTMENT_ID = data.defaultDepartmentId;
|
||||||
|
data.form.acceptanceList[0].USER_ID = data.defaultUserId;
|
||||||
|
};
|
||||||
|
fnGetData();
|
||||||
|
const fnAddInspectedList = () => {
|
||||||
|
data.form.acceptanceList.push({
|
||||||
|
id: Math.random(),
|
||||||
|
DEPARTMENT_ID: "",
|
||||||
|
USER_ID: "",
|
||||||
|
userList: [],
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnInspectDepartmentChange = async (event, index) => {
|
||||||
|
data.form.acceptanceList[index].USER_ID = "";
|
||||||
|
const resData = await getUserListAll({
|
||||||
|
DEPARTMENT_ID: event,
|
||||||
|
});
|
||||||
|
data.form.acceptanceList[index].userList = resData.userList;
|
||||||
|
};
|
||||||
|
const fnRectificationDepartmentChange = async (event) => {
|
||||||
|
data.form.RECTIFICATIONOR = "";
|
||||||
|
const resData = await getUserListAll({
|
||||||
|
DEPARTMENT_ID: event,
|
||||||
|
});
|
||||||
|
data.rectifierUserList = resData.userList;
|
||||||
|
};
|
||||||
|
const fnIsNormalChange = async (event) => {
|
||||||
|
formRef.value.resetFields();
|
||||||
|
data.form.acceptanceList = [];
|
||||||
|
fnAddInspectedList();
|
||||||
|
await fnInspectDepartmentChange(data.defaultDepartmentId, 0);
|
||||||
|
data.form.acceptanceList[0].DEPARTMENT_ID = data.defaultDepartmentId;
|
||||||
|
data.form.acceptanceList[0].USER_ID = data.defaultUserId;
|
||||||
|
data.rectifierUserList = [];
|
||||||
|
data.form.IS_NORMAL = event;
|
||||||
|
};
|
||||||
|
const fnGetHiddenDangerDatabaseList = async () => {
|
||||||
|
const resData = await getHiddenDangerDatabaseList({
|
||||||
|
RISK_UNIT_NAME: data.info.RISK_UNIT,
|
||||||
|
HIDDEN_PART: data.info.HIDDENPART,
|
||||||
|
});
|
||||||
|
data.recordLibraryList = resData.varList;
|
||||||
|
};
|
||||||
|
watch(
|
||||||
|
() => data.info,
|
||||||
|
() => {
|
||||||
|
fnGetHiddenDangerDatabaseList();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const fnChoice = (item) => {
|
||||||
|
data.RECTIFYDESCR = item.RECTIFYDESCR;
|
||||||
|
};
|
||||||
|
const fnSubmit = debounce(
|
||||||
|
1000,
|
||||||
|
async () => {
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
if (data.form.IS_NORMAL === "1") {
|
||||||
|
const formData = new FormData();
|
||||||
|
Object.keys(data.form).forEach((key) => {
|
||||||
|
formData.append(key, data.form[key]);
|
||||||
|
});
|
||||||
|
formData.append("HIDDEN_ID", HIDDEN_ID);
|
||||||
|
formData.append(
|
||||||
|
"LISTNAME",
|
||||||
|
data.form.LIST_NAME ? data.form.LIST_NAME : ""
|
||||||
|
);
|
||||||
|
for (let i = 0; i < data.form.programmeFile.length; i++) {
|
||||||
|
formData.append("scheme_files", data.form.programmeFile[i].raw);
|
||||||
|
}
|
||||||
|
for (let i = 0; i < data.form.afterRectificationFile.length; i++) {
|
||||||
|
formData.append(
|
||||||
|
"rectify_files",
|
||||||
|
data.form.afterRectificationFile[i].raw
|
||||||
|
);
|
||||||
|
}
|
||||||
|
for (let i = 0; i < data.form.planFile.length; i++) {
|
||||||
|
formData.append("plan_files", data.form.planFile[i].raw);
|
||||||
|
}
|
||||||
|
formData.append("CHECKDEPT", data.form.acceptanceList[0].DEPARTMENT_ID);
|
||||||
|
formData.append("CHECKOR", data.form.acceptanceList[0].USER_ID);
|
||||||
|
const acceptanceList = cloneDeep(data.form.acceptanceList);
|
||||||
|
if (acceptanceList.length > 0) acceptanceList.splice(0, 1);
|
||||||
|
formData.append("OTHER", JSON.stringify(acceptanceList));
|
||||||
|
formData.delete("afterRectificationFile");
|
||||||
|
formData.delete("programmeFile");
|
||||||
|
formData.delete("planFile");
|
||||||
|
formData.delete("acceptanceList");
|
||||||
|
await setHiddenDangerRectificationNormalSubmit(formData);
|
||||||
|
} else {
|
||||||
|
await setHiddenDangerRectificationAbnormalSubmit({
|
||||||
|
HIDDEN_ID,
|
||||||
|
RECTIFICATIONOR: data.form.RECTIFICATIONOR,
|
||||||
|
RECTIFICATIONDEPT: data.form.RECTIFICATIONDEPT,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
ElMessage.success("保存成功");
|
||||||
|
router.back();
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.item {
|
||||||
|
cursor: pointer;
|
||||||
|
border-bottom: 1px dashed #ccc;
|
||||||
|
padding: 10px 0;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<hidden-view print />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import HiddenView from "@/views/hazard_investigation/checklist_inspection_status/hidden_danger_view.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
Loading…
Reference in New Issue