马宇豪
2024-01-26 c694cffc8541d921e5256d33e14e3237454de950
src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue
@@ -1,6 +1,6 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog v-model="ifShowInspectTaskDialog" :title="title">
        <el-dialog v-model="ifShowInspectTaskDialog" :title="title" :close-on-click-modal="false">
            <el-form :model="inspectTaskForm" label-width="120px" ref="inspectTaskFormRef" :rules="inspectTaskFormRules">
                <el-row>
                    <el-col :span="12" style="margin-bottom: 20px">
@@ -27,42 +27,48 @@
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12" style="margin-bottom: 20px">
                    <el-col :span="12" style="margin-bottom: 20px" v-if="inspectTaskForm.workType === 1">
                        <el-form-item label="巡检周期" prop="checkCycle">
                            <el-input v-model="inspectTaskForm.checkCycle" :disabled="!inspectPointConfirm" placeholder="请输入巡检周期" class="input-add">
                            <el-input v-model="inspectTaskForm.checkCycle" @input="onVerifiyNumberInteger($event, 'checkCycle')" :disabled="!inspectPointConfirm" placeholder="请输入巡检周期" class="input-add">
                                <template #append>
                                    <el-select v-model="inspectTaskForm.checkCycleUnit" :disabled="!inspectPointConfirm" placeholder="选择单位">
                                        <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                    </el-select>
                                    <el-form-item prop="checkCycleUnit">
                                        <el-select v-model="inspectTaskForm.checkCycleUnit" :disabled="!inspectPointConfirm" placeholder="选择单位">
                                            <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                        </el-select>
                                    </el-form-item>
                                </template>
                            </el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12" style="margin-bottom: 20px">
                        <el-form-item label="提前通知时间" prop="noticeTime">
                            <el-input v-model="inspectTaskForm.noticeTime" :disabled="!inspectPointConfirm" placeholder="请输入提前通知时间" class="input-add">
                            <el-input @input="onVerifiyNumberInteger($event, 'noticeTime')" v-model="inspectTaskForm.noticeTime" :disabled="!inspectPointConfirm" placeholder="请输入提前通知时间" class="input-add">
                                <template #append>
                                    <el-select v-model="inspectTaskForm.noticeTimeUnit" :disabled="!inspectPointConfirm" placeholder="选择单位">
                                        <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                    </el-select>
                                    <el-form-item prop="noticeTimeUnit">
                                        <el-select v-model="inspectTaskForm.noticeTimeUnit" :disabled="!inspectPointConfirm" placeholder="选择单位">
                                            <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                        </el-select>
                                    </el-form-item>
                                </template>
                            </el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12" style="margin-bottom: 20px">
                        <el-form-item label="有效时间" prop="validTime">
                            <el-input v-model="inspectTaskForm.validTime" :disabled="!inspectPointConfirm" placeholder="请输入有效时间" class="input-add">
                            <el-input v-model="inspectTaskForm.validTime" @input="onVerifiyNumberInteger($event, 'validTime')" :disabled="!inspectPointConfirm" placeholder="请输入有效时间" class="input-add">
                                <template #append>
                                    <el-select v-model="inspectTaskForm.validTimeUnit" :disabled="!inspectPointConfirm" placeholder="选择单位">
                                        <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                    </el-select>
                                    <el-form-item prop="noticeTimeUnit">
                                        <el-select v-model="inspectTaskForm.validTimeUnit" :disabled="!inspectPointConfirm" placeholder="选择单位">
                                            <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                        </el-select>
                                    </el-form-item>
                                </template>
                            </el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12" style="margin-bottom: 20px">
                        <el-form-item label="周期开始时间" prop="firstStartTime">
                            <el-date-picker v-model="inspectTaskForm.firstStartTime" :disabled="!inspectPointConfirm" placeholder="请选择周期开始时间" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" />
                        <el-form-item label="任务开始时间" prop="firstStartTime">
                            <el-date-picker v-model="inspectTaskForm.firstStartTime" :disabled="!inspectPointConfirm" placeholder="请选择任务开始时间" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" />
                        </el-form-item>
                    </el-col>
@@ -77,22 +83,44 @@
                                    <div class="stepCard">
                                        <el-card class="box-card">
                                            <template #header>
                                                <div class="card-header">
                                                    <div>{{ item.pointId }}</div>
                                                <div class="card-header" v-for="i in inspectPointAllList">
                                                    <div v-if="i.id == item.pointId">
                                                        <span>{{ i.code }}</span>
                                                    </div>
                                                </div>
                                            </template>
                                            <div class="text item">
                                                所属设备区域:<span>{{ item.regionId }}</span>
                                            <div class="text item" v-for="i in regionNameList">
                                                <div v-if="i.id == item.regionId">
                                                    所属设备区域:<span>{{ i.region }}</span>
                                                </div>
                                            </div>
                                            <div class="text item">
                                                关联RFID:<span>{{ item.rfidId }}</span>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                所属设备区域:<span>{{ item.regionId }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item" v-for="i in RFIDList">
                                                <div v-if="i.id == item.rfidId">
                                                    关联RFID:<span>{{ i.rfid }}</span>
                                                </div>
                                            </div>
                                            <div class="text item">
                                                巡检指标:<span>{{ item.quotaId }}</span>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                关联RFID:<span>{{ item.rfidId }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item" v-for="i in quotaList">
                                                <div v-if="i.id == item.quotaId">
                                                    巡检指标:<span>{{ i.quota }}</span>
                                                </div>
                                            </div>
                                            <div class="text item">
                                                数据填报类型:<span>{{ item.dataReportType }}</span>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                巡检指标:<span>{{ item.quotaId }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item" v-for="i in dataReportTypeList">
                                                <div v-if="i.id == item.dataReportType">
                                                    数据填报类型:<span>{{ i.name }}</span>
                                                </div>
                                            </div>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                数据填报类型:<span>{{ item.dataReportType }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item">
                                                数据参考值:<span>{{ item.firstReferenceValue ? item.firstReferenceValue : item.secondReferenceValue ? item.secondReferenceValue : item.thirdReferenceValue }}</span>
                                            </div>
@@ -108,28 +136,30 @@
                        </el-form-item>
                    </el-col>
                </el-row>
                <div align="right" v-show="inspectPointConfirm">
                    <el-button type="warning" @click="inspectPointDialog = false" size="default" plain>取消</el-button>
            </el-form>
            <template #footer>
                <div v-if="inspectPointConfirm" class="dialog-footer">
                    <el-button type="warning" @click="ifShowInspectTaskDialog = false" size="default" plain>取消</el-button>
                    <el-button type="primary" @click="submitInspectTask()" size="default">确认</el-button>
                </div>
            </el-form>
            </template>
        </el-dialog>
        <el-dialog v-model="inspectPointDialog" :title="pointTitle">
        <el-dialog v-model="inspectPointDialog" :title="pointTitle" :close-on-click-modal="false">
            <el-form :model="inspectPointForm" label-width="150px" ref="inspectPointFormRef" :rules="inspectPointFormRules">
                <el-form-item label="选择巡检点" prop="pointId">
                    <el-select v-model="inspectPointForm.pointId" @change="giveRegionAndRFID" class="input-add">
                        <el-option v-for="item in inspectPointAllList" :key="item.id" :value="item.id" :label="item.code"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="所属设备区域" prop="regionId">
                    <el-input v-model="inspectPointForm.regionId" class="input-add" readonly />
                <el-form-item label="所属设备区域" prop="region">
                    <el-input v-model="inspectPointForm.region" class="input-add" readonly />
                </el-form-item>
                <el-form-item label="关联RFID" prop="rfidId">
                    <el-input v-model="inspectPointForm.rfidId" class="input-add" readonly />
                <el-form-item label="关联RFID" prop="rfid">
                    <el-input v-model="inspectPointForm.rfid" class="input-add" readonly />
                </el-form-item>
                <el-form-item label="选择巡检指标" prop="quotaId">
                    <el-select v-model="inspectPointForm.quotaId" @change="giveQuotaUnit" placeholder="请选择巡检指标" class="input-add">
                        <el-option v-for="item in quotaList" :key="item.id" :value="item.id" :label="item.type"> </el-option>
                        <el-option v-for="item in quotaList" :key="item.id" :value="item.id" :label="item.quota"> </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="选择巡检指标单位" prop="quotaUnit">
@@ -174,10 +204,10 @@
<script lang="ts">
import { reactive, toRefs, ref } from 'vue';
import { RFIDApi } from '/@/api/intellectInspectSystem/RFID';
import { ElMessage } from 'element-plus/es';
import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask';
import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage';
import { verifiyNumberInteger } from '/@/utils/toolsValidate';
interface dataState {
    title: string;
    pointTitle: string;
@@ -215,12 +245,16 @@
    classGroup: Array<classGroup>;
    quotaList: Array<quota>;
    inspectPointAllList: Array<inspectPointAllState>;
    regionNameList: Array<inspectPointAllState>;
    RFIDList: Array<inspectPointAllState>;
}
interface inspectPointAllState {
    id: number;
    code: string;
    regionId: number;
    rfidId: number;
    rfid: string;
    region: string;
}
interface classGroup {
    depId: number;
@@ -241,8 +275,10 @@
    pointId: number | null;
    pointUuid: string | null;
    regionId: number | null;
    region: string
    regionUuid: string | null;
    rfidId: number | null;
    rfid: string
    quotaId: number | null;
    quotaUnit: string | null;
    execSequence: number | null;
@@ -257,6 +293,7 @@
    name: 'inspectTaskDialog',
    setup(props: any, context: any) {
        const inspectTaskFormRef = ref();
        const inspectPointFormRef = ref();
        const data = reactive<dataState>({
            title: '',
            pointTitle: '',
@@ -270,8 +307,10 @@
                pointId: null,
                pointUuid: null,
                regionId: null,
                region: '',
                regionUuid: null,
                rfidId: null,
                rfid: '',
                quotaId: null,
                quotaUnit: null,
                execSequence: null,
@@ -305,11 +344,21 @@
                execClassgroupId: [{ required: true, message: '请选择巡检班组', trigger: 'change' }],
                execDepId: [{ required: true, message: '请选择巡检部门', trigger: 'blur' }],
                checkCycle: [{ required: true, message: '请填写巡检周期', trigger: 'blur' }],
                checkCycleUnit: [{ required: true, message: '请选择巡检周期单位', trigger: 'change' }],
                noticeTime: [{ required: true, message: '请填写提前通知时间', trigger: 'blur' }],
                noticeTimeUnit: [{ required: true, message: '请选择提前通知时间单位', trigger: 'change' }],
                validTime: [{ required: true, message: '请填写有效时间', trigger: 'blur' }],
                validTimeUnit: [{ required: true, message: '请选择有效时间单位', trigger: 'change' }],
                firstStartTime: [{ required: true, message: '请选择周期开始时间', trigger: 'change' }]
            },
            inspectPointFormRules: {},
            inspectPointFormRules: {
                pointId: [{ required: true, message: '请选择巡检点', trigger: 'change' }],
                regionId: [{ required: true, message: '', trigger: 'change' }],
                rfidId: [{ required: true, message: '', trigger: 'change' }],
                quotaId: [{ required: true, message: '请选择巡检指标', trigger: 'change' }],
                quotaUnit: [{ required: true, message: '请填写巡检指标单位', trigger: 'blur' }],
                dataReportType: [{ required: true, message: '请选择巡检指标单位', trigger: 'change' }]
            },
            workTypeList: [],
            departmentList: [],
            timeList: [],
@@ -317,6 +366,8 @@
            classGroup: [],
            quotaList: [],
            inspectPointAllList: [],
            regionNameList: [],
            RFIDList: [],
            dataReportTypeList: [
                { id: 1, name: '选择' },
                { id: 2, name: '填空' },
@@ -324,7 +375,8 @@
            ],
            firstReferenceValueList: [
                { id: 0, name: '正常' },
                { id: 1, name: '异常' }
                { id: 1, name: '异常' },
                { id: 2, name: '备' }
            ],
            secondReferenceSignList: [
                { id: 1, name: '>' },
@@ -347,8 +399,10 @@
                    pointId: null,
                    pointUuid: null,
                    regionId: null,
                    region: '',
                    regionUuid: null,
                    rfidId: null,
                    rfid: '',
                    quotaId: null,
                    quotaUnit: null,
                    execSequence: null,
@@ -365,7 +419,9 @@
            }
        };
        const showInspectTaskDialog = (type: string, value: { id: number; uuid: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: []) => {
        const showInspectTaskDialog = (type: string, value: { id: number; uuid: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: [], regionNameList: [], RFIDList: []) => {
            data.regionNameList = regionNameList;
            data.RFIDList = RFIDList;
            data.quotaList = JSON.parse(JSON.stringify(quotaList));
            data.timeList = JSON.parse(JSON.stringify(timeType));
            data.inspectPointAllList = JSON.parse(JSON.stringify(inspectPointAllList));
@@ -404,6 +460,10 @@
                            giveClassGroup();
                            data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    })
                    .catch((error) => {});
@@ -416,66 +476,79 @@
                        if (res.data.code === '200') {
                            data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    })
                    .catch((error) => {});
            }
        };
        const submitInspectPoint = async () => {
            if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') {
                if (data.inspectTaskForm.points.length === 0) {
                    data.inspectPointForm.execSequence = 1;
                } else {
                    data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;
                }
                data.inspectTaskForm.points.push(data.inspectPointForm);
                data.inspectPointDialog = false;
            } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') {
                let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id);
                data.inspectTaskForm.points[result] = data.inspectPointForm;
                data.inspectPointDialog = false;
            } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') {
                data.inspectPointForm.unitId = data.inspectTaskForm.id;
                if (data.inspectTaskForm.points.length === 0) {
                    data.inspectPointForm.execSequence = 1;
                } else {
                    data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;
                }
                let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm);
                if (res.data.code === '200') {
                    ElMessage({
                        type: 'success',
                        message: '巡检点新增成功',
                        duration: 2000
                    });
                    data.inspectPointDialog = false;
                    data.inspectTaskForm.points.push(data.inspectPointForm);
        const submitInspectPoint = () => {
            inspectPointFormRef.value.validate(async (valid: Boolean) => {
                if (valid) {
                    if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') {
                        if (data.inspectTaskForm.points.length === 0) {
                            data.inspectPointForm.execSequence = 1;
                        } else {
                            data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;
                        }
                        data.inspectTaskForm.points.push(data.inspectPointForm);
                        data.inspectPointDialog = false;
                    } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') {
                        let result = data.inspectTaskForm.points.findIndex((item) => item.execSequence === data.inspectPointForm.execSequence);
                        data.inspectTaskForm.points[result] = data.inspectPointForm;
                        data.inspectPointDialog = false;
                    } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') {
                        data.inspectPointForm.unitId = data.inspectTaskForm.id;
                        if (data.inspectTaskForm.points.length === 0) {
                            data.inspectPointForm.execSequence = 1;
                        } else {
                            data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;
                        }
                        let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm);
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '巡检点新增成功',
                                duration: 2000
                            });
                            data.inspectPointDialog = false;
                            data.inspectTaskForm.points.push(data.inspectPointForm);
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        data.inspectPointForm.unitId = data.inspectTaskForm.id;
                        let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm);
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '巡检点修改成功',
                                duration: 2000
                            });
                            let result = data.inspectTaskForm.points.findIndex((item) => item.execSequence === data.inspectPointForm.execSequence);
                            data.inspectTaskForm.points[result] = data.inspectPointForm;
                            data.inspectPointDialog = false;
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    }
                } else {
                    ElMessage({
                        type: 'warning',
                        message: res.data.msg
                        message: '请完善基本信息'
                    });
                }
            } else {
                data.inspectPointForm.unitId = data.inspectTaskForm.id;
                let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm);
                if (res.data.code === '200') {
                    ElMessage({
                        type: 'success',
                        message: '巡检点修改成功',
                        duration: 2000
                    });
                    let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id);
                    data.inspectTaskForm.points[result] = data.inspectPointForm;
                    data.inspectPointDialog = false;
                } else {
                    ElMessage({
                        type: 'warning',
                        message: res.data.msg
                    });
                }
            }
            });
        };
        const deleteFlow = async (index: number, item: { id: number }) => {
            if (data.pointTitle === '新增巡检点') {
@@ -499,7 +572,9 @@
        const giveRegionAndRFID = () => {
            data.inspectPointForm.regionId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.regionId as number;
            data.inspectPointForm.region = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.region as string;
            data.inspectPointForm.rfidId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfidId as number;
          data.inspectPointForm.rfid = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfid as string;
        };
        const giveClassGroup = () => {
@@ -508,7 +583,7 @@
        };
        const giveQuotaUnit = () => {
            data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.unit as string;
            data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.quotaUnit as string;
        };
        const submitInspectTask = () => {
@@ -556,12 +631,24 @@
            });
        };
        const onVerifiyNumberInteger = (val: number, title: string) => {
            if (title === 'noticeTime') {
                data.inspectTaskForm.noticeTime = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));
            } else if (title === 'checkCycle') {
                data.inspectTaskForm.checkCycle = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));
            } else {
                data.inspectTaskForm.validTime = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));
            }
        };
        return {
            ...toRefs(data),
            inspectTaskFormRef,
            deleteFlow,
            giveQuotaUnit,
            giveClassGroup,
            inspectPointFormRef,
            onVerifiyNumberInteger,
            submitInspectTask,
            submitInspectPoint,
            giveRegionAndRFID,
@@ -575,7 +662,7 @@
<style scoped lang="scss">
$homeNavLengh: 8;
.home-container {
    height: calc(100vh - 114px);
    height: calc(100vh - 144px);
    box-sizing: border-box;
    overflow: hidden;
    .homeCard {