马宇豪
2025-03-04 1b9fea7d4af68d8f933b2dc42bf6084b9646f64c
src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/components/reportDialog.vue
@@ -1,42 +1,42 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog :title="title" v-model="isShowReportDialog" width="50%">
        <el-dialog :title="title" v-model="isShowReportDialog" width="50%" :close-on-click-modal="false">
            <el-form :model="reportForm" :rules="reportFormRules" ref="reportFormRef" size="default" label-width="120px">
                <el-tabs class="active" v-model="activeNameOne">
                    <el-tab-pane label="隐患信息" name="hiddenInfo">
                        <el-row :gutter="25">
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患描述" prop="dangerDesc">
                                    <el-input class="input-add" v-model.trim="reportForm.dangerDesc" placeholder="请输入隐患情况描述" clearable></el-input>
                                <el-form-item label="隐患名称" prop="dangerCode">
                                    <el-input class="input-add" :disabled="!disabled" v-model.trim="reportForm.dangerCode" placeholder="请输入隐患名称" clearable></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患名称" prop="dangerCode">
                                    <el-input class="input-add" v-model.trim="reportForm.dangerCode" placeholder="请输入隐患名称" clearable></el-input>
                                <el-form-item label="隐患描述" prop="dangerDesc">
                                    <el-input class="input-add" :disabled="!disabled" v-model.trim="reportForm.dangerDesc" placeholder="请输入隐患情况描述" clearable></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患所属部门" prop="depId">
                                    <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.depId"> </el-cascader>
                                    <el-cascader :disabled="!disabled" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.depId"> </el-cascader>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="生产装置" prop="produceDeviceId">
                                    <el-select class="input-add" v-model="reportForm.produceDeviceId" placeholder="请输入生产装置" clearable filterable @change="changeUnit">
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.produceDeviceId" placeholder="请输入生产装置" clearable filterable @change="changeUnit">
                                        <el-option v-for="item in allProduceDeviceData" :key="item.id" :label="item.produceDeviceName" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="风险分析单元" prop="riskUnitId">
                                    <el-select class="input-add" v-model.trim="reportForm.riskUnitId" placeholder="请输入风险分析单元" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model.trim="reportForm.riskUnitId" placeholder="请输入风险分析单元" clearable filterable>
                                        <el-option v-for="item in safetyRiskUnitData" :key="item.id" :label="item.riskUnitName" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患来源" prop="dangerSource">
                                    <el-select class="input-add" v-model="reportForm.dangerSource" placeholder="请选择隐患来源" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerSource" placeholder="请选择隐患来源" clearable filterable>
                                        <el-option v-for="item in dangerSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
@@ -44,28 +44,28 @@
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患等级" prop="dangerLevel">
                                    <el-select class="input-add" v-model="reportForm.dangerLevel" placeholder="请选择隐患等级" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerLevel" placeholder="请选择隐患等级" clearable filterable>
                                        <el-option v-for="item in dangerLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患类型" prop="dangerType">
                                    <el-select class="input-add" v-model="reportForm.dangerType" placeholder="请选择隐患类型" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerType" placeholder="请选择隐患类型" clearable filterable>
                                        <el-option v-for="item in dangerTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="隐患可能后果" prop="dangerResult">
                                    <el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择隐患可能后果" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerResult" placeholder="请选择隐患可能后果" clearable filterable>
                                        <el-option v-for="item in dangerResultList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
                                <el-form-item label="隐患产生原因" prop="dangerReason">
                                    <el-input class="input-add" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.dangerReason" placeholder="请输入隐患产生原因"></el-input>
                                    <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.dangerReason" placeholder="请输入隐患产生原因"></el-input>
                                </el-form-item>
                            </el-col>
                        </el-row>
@@ -79,24 +79,24 @@
                        <el-row>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="整改类型" prop="rectifyType">
                                    <el-select class="input-add" v-model="reportForm.rectifyType" placeholder="请选择整改类型" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.rectifyType" placeholder="请选择整改类型" clearable filterable>
                                        <el-option v-for="item in rectifyTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="整改期限" prop="rectifyTime">
                                    <el-date-picker type="datetime" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" v-model="reportForm.rectifyTime" placeholder="请选择整改期限" clearable> </el-date-picker>
                                    <el-date-picker type="datetime" :disabled="!disabled" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" v-model="reportForm.rectifyTime" placeholder="请选择整改期限" clearable> </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="整改部门" prop="rectifyDepId">
                                    <el-cascader @change="achieveUserList" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.rectifyDepId"> </el-cascader>
                                    <el-cascader :disabled="!disabled" @change="achieveUserList" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.rectifyDepId"> </el-cascader>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="整改责任人" prop="liablePersonId">
                                    <el-select class="input-add" v-model="reportForm.liablePersonId" placeholder="请选择整改责任人" clearable filterable>
                                    <el-select class="input-add" :disabled="!disabled" v-model="reportForm.liablePersonId" placeholder="请选择整改责任人" clearable filterable>
                                        <el-option v-for="item in userList" :key="item.uid" :label="item.username" :value="item.uid"></el-option>
                                    </el-select>
                                </el-form-item>
@@ -104,12 +104,12 @@
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
                                <el-form-item label="整改资金" prop="dangerResult">
                                    <el-input class="input-add" type="number" v-model="reportForm.cost" placeholder="请选择整改资金"> </el-input>
                                    <el-input class="input-add" :disabled="!disabled" type="number" @input="onVerifyNumberPercentageFloat($event)" v-model="reportForm.cost" placeholder="请选择整改资金"> </el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
                                <el-form-item label="整改措施" prop="rectifyDesc">
                                    <el-input class="input-add" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.rectifyDesc" placeholder="请输入整改措施"></el-input>
                                    <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.rectifyDesc" placeholder="请输入整改措施"></el-input>
                                </el-form-item>
                            </el-col>
                        </el-row>
@@ -119,7 +119,7 @@
            <template #footer>
                <span class="dialog-footer" v-show="disabled">
                    <el-button @click="isShowReportDialog = !isShowReportDialog" size="default">取 消</el-button>
                    <el-button type="primary" @click="submitReport" v-throttle size="default">确 实</el-button>
                    <el-button type="primary" @click="submitReport" v-throttle size="default">确 定</el-button>
                </span>
            </template>
        </el-dialog>
@@ -175,6 +175,7 @@
import { ElMessage } from 'element-plus';
import { hiddenReportApi } from '/@/api/doublePreventSystem/report';
import { getUserByDepartment } from '/@/assets/methods';
import { verifyNumberIntegerAndFloat, verifyNumberPercentageFloat } from '../../../../../../utils/toolsValidate';
export default {
    name: 'reportDialog',
    setup(props: any, context: any) {
@@ -366,13 +367,18 @@
            state.safetyRiskUnitData = state.allSafetyRiskUnitData.filter((item) => item.produceDeviceId === state.reportForm.produceDeviceId);
        };
        const onVerifyNumberPercentageFloat = (val: string) => {
            state.reportForm.cost = JSON.parse(verifyNumberIntegerAndFloat(val));
        };
        return {
            ...toRefs(state),
            changeUnit,
            reportFormRef,
            submitReport,
            achieveUserList,
            openReportDialog
            openReportDialog,
            onVerifyNumberPercentageFloat
        };
    }
};