lct
Your Name
2022-07-07 fd285d6245ddd54c2eef8237eb878f573d665f94
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue
@@ -2,30 +2,19 @@
    <div class="system-role-container">
        <el-card shadow="hover">
            <div class="system-user-search mb15">
                <div class="basic-search">
                    <span>风险等级:</span>
                    <el-select v-model="riskControlMeasureData.params.riskLevel" clearable filterable class="ml10" placeholder="请选择风险等级">
                        <el-option
                        v-for="item in levelList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id"
                        ></el-option>
                <div class="basic-line">
                    <span>管控方式:</span>
                    <el-select class="input-box" v-model="riskControlMeasureData.params.controlType" placeholder="管控方式" clearable>
                        <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div class="basic-search">
                    <span>部门:</span>
                    <el-cascader
                            :options="departmentList"
                            :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
                            placeholder="请选择部门"
                            clearable
                            filterable
                            v-model="riskControlMeasureData.params.depId"
                    >
                    </el-cascader>
                <div class="basic-line">
                    <span>安全风险事件:</span>
                    <el-select class="input-box" v-model="riskControlMeasureData.params.riskEventId" placeholder="安全风险事件" clearable>
                        <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></el-option>
                    </el-select>
                </div>
                <el-button size="default" type="primary" class="ml10" @click="handleSearch">
                <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch">
                    <el-icon>
                        <ele-Search />
                    </el-icon>
@@ -35,20 +24,27 @@
                    <el-icon>
                        <ele-FolderAdd />
                    </el-icon>
                    新增单元
                    新增措施
                </el-button>
            </div>
            <el-table :data="riskControlMeasureData.data" style="width: 100%">
                <el-table-column type="index" label="序号" width="60" />
                <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column>
                <el-table-column prop="riskUnitName" label="安全风险分析单元名称" width="180" show-overflow-tooltip></el-table-column>
                <el-table-column prop="riskCode" label="安全风险分析对象编码" width="180" show-overflow-tooltip></el-table-column>
                <el-table-column prop="location" label="责任部门" show-overflow-tooltip></el-table-column>
                <el-table-column prop="status" label="责任人" show-overflow-tooltip></el-table-column>
                <el-table-column prop="riskEventName" label="安全风险事件名称" show-overflow-tooltip></el-table-column>
                <el-table-column prop="controlMeasureCode" label="风控措施编码" show-overflow-tooltip></el-table-column>
                <el-table-column prop="controlType" label="管控方式" show-overflow-tooltip></el-table-column>
                <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip></el-table-column>
                <el-table-column prop="classify1" label="管控措施分类1" show-overflow-tooltip></el-table-column>
                <el-table-column prop="classify2" label="管控措施分类2" show-overflow-tooltip></el-table-column>
                <el-table-column prop="classify3" label="管控措施分类3" show-overflow-tooltip></el-table-column>
                <el-table-column prop="measureDesc" label="措施说明" show-overflow-tooltip></el-table-column>
                <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
                <el-table-column prop="gtmCreate" label="创建时间" show-overflow-tooltip></el-table-column>
                <el-table-column prop="lastEditByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
                <el-table-column prop="gtmCreate" label="最后修改时间" show-overflow-tooltip></el-table-column>
                <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip>
                    <template #default="scope">
                        <span>{{ dateFormat('YYYY-mm-dd HH:MM:SS', '2022-07-07T08:00:00') }}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
                <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column>
                <el-table-column label="操作" width="150">
                    <template #default="scope">
                        <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button>
@@ -79,7 +75,7 @@
    import { ElMessageBox, ElMessage } from 'element-plus';
    import riskControlMeasureDialog from './components/riskControlMeasureDialog.vue';
    import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts';
    import { departmentApi } from '/@/api/department';
import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent';
    // 定义接口来定义对象的类型
    interface TableData {
@@ -98,22 +94,21 @@
            params: {
                pageIndex: number;
                pageSize: number;
                riskUnitName: string | null;
                liableDep: number | null;
                liablePerson: number | null;
            controlType: number | null;
            riskEventId: number | null;
            };
        };
        departmentList:Array<DepartmentState>;
        levelList:Array<levelListState>;
    controlTypeList: Array<controlTypeType>;
    classifyOneList: Array<classifyOneType>;
    classifyTwoList: Array<classifyTwoType>;
    allSafetyRiskEventData: Array<SafetyRiskEventDataState>;
    }
    interface levelListState {
interface controlTypeType {}
interface classifyOneType {}
interface classifyTwoType {}
interface SafetyRiskEventDataState {}
    }
    interface DepartmentState {
    }
    export default ({
export default {
        name: 'riskControlMeasure',
        components: { riskControlMeasureDialog },
        setup() {
@@ -126,18 +121,22 @@
                    params: {
                        pageIndex: 1,
                        pageSize: 10,
                        riskUnitName: null,
                        liableDep: null,
                        liablePerson: null,
                    controlType: null,
                    riskEventId: null
                }
                    },
                },
                departmentList:[],
                levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},]
            controlTypeList: [
                { id: 1, name: '自动化监控' },
                { id: 2, name: '隐患排查' }
            ],
            classifyOneList: [],
            classifyTwoList: [],
            allSafetyRiskEventData: []
            });
            // 初始化表格数据
            const initRiskControlMeasureData = async () => {
                let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params)
            let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params);
                if(res.data.code === '200'){
                    state.riskControlMeasureData.data = res.data.data;
                    state.riskControlMeasureData.total = res.data.count;
@@ -145,75 +144,116 @@
                    ElMessage({
                        type:'warning',
                        message:res.data.msg
                    })
                });
                }
            };
            //获取部门列表
            const getDepartmentData = async () => {
                let res = await departmentApi().getDepartmentList()
        const dateFormat = (fmt: any, date: any) => {
            date = new Date(date);
            fmt =
                date.getFullYear() +
                '-' +
                (date.getMonth() + 1) +
                '-' +
                date.getDate() +
                ' ' +
                date.getHours().toString() +
                ':' +
                (date.getMinutes().toString() === '0' ? '00' : date.getMinutes().toString()) +
                ':' +
                (date.getSeconds().toString() === '0' ? '00' : date.getMinutes().toString());
            return fmt;
        };
        //获取安全风险事件
        const getAllSafetyRiskEvent = async () => {
            let res = await safetyRiskEventApi().getAllSafetyRiskEventList();
                if(res.data.code === '200'){
                    state.departmentList = res.data.data
                state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data));
                }else{
                    ElMessage({
                        type:'warning',
                        message:res.data.msg
                    })
                });
                }
        };
        //获取管控措施分类
        const getClassify = async () => {
            let res = await riskControlMeasureApi().getClassifyData();
            if (res.data.code === '200') {
                state.classifyOneList = res.data.data.filter((item: any) => item.parentId === null);
                state.classifyTwoList = res.data.data.filter((item: any) => item.parentId !== null);
            } else {
                ElMessage({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        };
            // 打开生产装置弹窗
            const onOpenDialogRef = (type: string, value: any) => {
                riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(type, value, state.departmentList);
            riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(
                type,
                value,
                state.allSafetyRiskEventData,
                state.classifyOneList,
                state.classifyTwoList
            );
            };
            
            // 删除角色
            const onDelRiskControlMeasure = (row: any) => {
                ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.produceDeviceName}”,是否继续?`, '提示', {
            ElMessageBox.confirm(`此操作将永久删除该条风险管控措施:“${row.produceDeviceName}”,是否继续?`, '提示', {
                    confirmButtonText: '确认',
                    cancelButtonText: '取消',
                    type: 'warning',
                }).then(async () => {
                    let res = await riskControlMeasureApi().deleteRiskControlMeasure({id:row.id})
                type: 'warning'
            })
                .then(async () => {
                    let res = await riskControlMeasureApi().deleteRiskControlMeasure({ id: row.id });
               if(res.data.code ==='200'){
                  ElMessage({
                     type:'success',
                     duration:2000,
                     message:'删除成功'
                  })
                    await initRiskControlMeasureData()
                        });
                        await initRiskControlMeasureData();
               }else{
                  ElMessage({
                     type:'warning',
                     message:res.data.msg
                  })
                        });
               }
                }).catch(() => {});
                })
                .catch(() => {});
            };
            const handleSearch = () => {
                initRiskControlMeasureData()
            }
            initRiskControlMeasureData();
        };
            // 分页改变
            const onHandleSizeChange = (val: number) => {
                state.riskControlMeasureData.params.pageSize = val;
                initRiskControlMeasureData()
            initRiskControlMeasureData();
            };
            // 分页改变
            const onHandleCurrentChange = (val: number) => {
                state.riskControlMeasureData.params.pageIndex = val;
                initRiskControlMeasureData()
            initRiskControlMeasureData();
            };
            // 页面加载时
            onMounted(() => {
                initRiskControlMeasureData();
                getDepartmentData();
            getAllSafetyRiskEvent();
            getClassify();
            });
            return {
            dateFormat,
                handleSearch,
                onOpenDialogRef,
                onHandleSizeChange,
@@ -222,15 +262,10 @@
                riskControlMeasureDialog,
                riskControlMeasureDialogRef,
                initRiskControlMeasureData,
                ...toRefs(state),
            ...toRefs(state)
            };
        },
    });
    }
};
</script>
<style scoped>
.basic-search{
    display:inline-block;
    padding-left: 10px;
}
</style>
<style scoped></style>