cqf
2022-05-26 a90cf43e7a1f41dcde401ed1fd118b0f90d7c3f5
src/views/hiddenDangerReview/recheckCancellationNumber.vue
@@ -1,13 +1,666 @@
<template>
    <div class="app-container">
        <el-form ref="form" :inline="true" class="inquire" :model="form" label-width="80px">
            <el-form-item label="编号">
                <el-input v-model="listQuery.form.number" style="width:202px" placeholder="请输入内容"></el-input>
            </el-form-item>
            <el-form-item label="检查单位">
                <el-select v-model="listQuery.form.check_main_branch" placeholder="请选择" @change="changeJCDW">
                    <el-option
                        v-for="item in JCDWList"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                    >
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="检查部门">
                <el-select v-model="listQuery.form.check_branch" placeholder="请选择">
                    <el-option
                        v-for="item in JCBMList"
                        :key="item.value"
                        :label="item.value"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="检查人">
                <el-input v-model="listQuery.form.check_man" style="width:202px" placeholder="请输入内容"></el-input>
            </el-form-item>
            <el-form-item label="隐患单位">
                <el-input v-model="listQuery.form.ht_community" style="width:202px" :disabled="true"></el-input>
                <!--<el-select v-model="listQuery.form.ht_community" placeholder="请选择" @change="changeYHDW">
             <el-option
               v-for="item in JCDWList"
               :key="item.value"
               :label="item.label"
               :value="item.value">
             </el-option>
           </el-select>-->
            </el-form-item>
            <el-form-item label="隐患部门">
                <el-select v-model="listQuery.form.ht_branch" placeholder="请选择">
                    <el-option
                        v-for="item in YHBMList"
                        :key="item.branch_id"
                        :label="item.branch_name"
                        :value="item.branch_name">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="隐患类别">
                <el-select v-model="listQuery.form.ht_typesub" placeholder="请选择">
                    <el-option
                        v-for="item in YHLXList"
                        :key="item.value"
                        :label="item.value"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="隐患级别">
                <el-select v-model="listQuery.form.ht_level" placeholder="请选择">
                    <el-option
                        v-for="item in YHJBList"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="检查类别">
                <el-select v-model="listQuery.form.checktype" placeholder="请选择">
                    <el-option
                        v-for="item in JCLBList"
                        :key="item.value"
                        :label="item.value"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="隐患地点">
                <el-input v-model="listQuery.form.address" style="width:202px" placeholder="请输入内容"></el-input>
            </el-form-item>
            <el-form-item label="隐患内容">
                <el-input v-model="listQuery.form.ht_content" style="width:202px" placeholder="请输入内容"></el-input>
            </el-form-item>
            <el-form-item label="班次">
                <el-select v-model="listQuery.form.check_class" placeholder="请选择">
                    <el-option
                        v-for="item in BCList"
                        :key="item.value"
                        :label="item.value"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="是否关联">
                <el-select v-model="listQuery.form.DTRisk_bankId" placeholder="请选择">
                    <el-option
                        v-for="item in reList"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="录入人">
                <el-select v-model="listQuery.form.createBy" placeholder="请选择">
                    <el-option
                        v-for="item in llrList"
                        :key="item.id"
                        :label="item.realName"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="检查时间">
                <el-col :span="11">
                    <el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.check_dateStart"
                                    style="width: 100%;" value-format="yyyy-MM-dd"></el-date-picker>
                </el-col>
                <el-col style="text-align:center" :span="2">-</el-col>
                <el-col :span="11">
                    <el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.check_dateEnd"
                                    style="width: 100%;" value-format="yyyy-MM-dd"></el-date-picker>
                </el-col>
            </el-form-item>
            <el-form-item label="限改时间">
                <el-col :span="11">
                    <el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.alter_timeStart"
                                    value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker>
                </el-col>
                <el-col style="text-align:center" :span="2">-</el-col>
                <el-col :span="11">
                    <el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.alter_timeEnd"
                                    value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker>
                </el-col>
            </el-form-item>
            <el-form-item style="text-align:center;padding:0 50px">
                <el-button type="primary" class="btns" size="small" icon="el-icon-search" @click="getPageList()">查询
                </el-button>
                <el-button type="primary" class="btns" size="small" @click="reset()">重置</el-button>
                <el-button type="primary" class="btns" size="small" icon="el-icon-upload2" @click="exportData">导出excel
                </el-button>
            </el-form-item>
        </el-form>
        <el-row class="title-center">
            <el-col :span="24" style="text-align:right;">
                <el-button class="btns" type="primary" size="small" @click="showEdit">批量复查</el-button>
                <el-button class="btns" type="primary" size="small">批量发送</el-button>
            </el-col>
        </el-row>
        <el-table :data="tableData" ref="dangerRectificationTable" style="width: 100%" v-loading="loading">
            <el-table-column type="selection" width="55" align="center"></el-table-column>
            <el-table-column prop="number" label="编号" align="center" width="120">
                <template slot-scope="scope">
                    <div class="blue-font-color" @click="showDetails(scope.row)">{{ scope.row.number }}</div>
                </template>
            </el-table-column>
            <el-table-column prop="check_branch" label="检查部门" align="center" width="120"></el-table-column>
            <el-table-column prop="check_man" label="检查人" align="center" width="120"></el-table-column>
            <el-table-column prop="checktype" label="检查类别" align="center"></el-table-column>
            <el-table-column label="隐患项目" align="center">
                <el-table-column prop="check_date" label="检查时间" width="120" align="center">
                    <template slot-scope="scope">
                        <label>{{ formatDate(scope.row.check_date)}}</label><br/>
                        <label>{{ scope.row.check_class}}</label>
                    </template>
                </el-table-column>
                <el-table-column prop="address" label="地点" align="center">
                    <template slot-scope="scope">
                        <el-popover trigger="hover" placement="top">
                            <p>{{ scope.row.address }}</p>
                            <div slot="reference" class="name-wrapper">{{
                                    scope.row.address
                                }}
                            </div>
                        </el-popover>
                    </template>
                </el-table-column>
                <el-table-column prop="ht_content" label="内容" width="150" align="center">
                    <template slot-scope="scope">
                        <el-popover trigger="hover" placement="top">
                            <p>{{ scope.row.ht_content }}</p>
                            <div slot="reference" class="name-wrapper">{{
                                    scope.row.ht_content != null && scope.row.ht_content.length > 10 ? scope.row.ht_content.substring(0, 8) + "...." : scope.row.ht_content
                                }}
                            </div>
                        </el-popover>
                    </template>
                </el-table-column>
                <el-table-column prop="ht_typesub" label="类别" align="center"></el-table-column>
                <el-table-column prop="ht_level" label="级别" align="center"></el-table-column>
            </el-table-column>
            <el-table-column label="整改计划" align="center">
                <el-table-column prop="measure" label="整改措施" width="150" align="center">
                    <template slot-scope="scope">
                        <el-popover trigger="hover" placement="top">
                            <p>{{ scope.row.measure }}</p>
                            <div slot="reference" class="name-wrapper">{{
                                    scope.row.measure != null && scope.row.measure.length > 10 ? scope.row.measure.substring(0, 8) + "...." : scope.row.measure
                                }}
                            </div>
                        </el-popover>
                    </template>
                </el-table-column>
                <el-table-column prop="ht_branch" label="隐患部门" align="center"></el-table-column>
                <el-table-column prop="duty_officer" label="责任人" align="center"></el-table-column>
                <el-table-column prop="alter_time" label="限改时间" :formatter="formatColumnDate"  width="120" align="center"></el-table-column>
            </el-table-column>
            <el-table-column label="整改情况" align="center">
                <el-table-column prop="ACCOMPLISHTIME" label="完成时间" :formatter="formatColumnDate" width="120"  align="center"></el-table-column>
                <el-table-column prop="CALLBACKRESULT" label="复查结果" align="center"></el-table-column>
                <el-table-column prop="CALLBACKPERSON" label="复查人" align="center"></el-table-column>
                <el-table-column prop="CALLBACKTIME" label="复查时间" :formatter="formatColumnDate"  width="120" align="center"></el-table-column>
            </el-table-column>
            <el-table-column label="隐患处理状态" align="center">
                <template slot-scope="scope">
                    <span v-if="scope.row.step =='1'">初始状态</span>
                    <span v-if="scope.row.step =='2'">整改中</span>
                    <span v-if="scope.row.step =='3'">复查中</span>
                    <span v-if="scope.row.step =='end'">处理结束</span>
                </template>
            </el-table-column>
            <el-table-column prop="DTRisk_bankId" label="是否关联" align="center">
                <template slot-scope="scope">
                    <span style="color: red"
                        v-if="scope.row.DTRisk_bankId==0 || scope.row.DTRisk_bankId=='' || scope.row.DTRisk_bankId==null">未关联</span>
                    <span v-else>已关联</span>
                </template>
            </el-table-column>
            <el-table-column prop="DTRisk_level" label="风险等级" align="center"></el-table-column>
            <el-table-column prop="warningLevel" label="初始警情" align="center"></el-table-column>
            <el-table-column prop="curWarningLevel" label="当前警情" align="center"></el-table-column>
            <el-table-column prop="date" label="流程操作" align="center">
                <template slot-scope="scope">
                    <el-button @click="handleClick(scope.row)" type="text" size="small">点击发送</el-button>
                </template>
            </el-table-column>
        </el-table>
        <!--批量复查弹窗-->
        <el-dialog
            title="提示"
            :visible.sync="dialogVisible"
            :close-on-click-modal="false"
            width="30%"
        >
            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="110px" class="demo-ruleForm">
                <el-row>
                    <el-col :span="16" :offset="3">
                        <el-form-item label="发送流程" prop="ispass">
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="16" :offset="3">
                        <el-form-item label="下一步" prop="ispass">
                            <span>流程结束,不通过则返回部门</span>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="15" :offset="3">
                        <el-form-item label="是否发送" prop="ispass">
                            <el-radio-group v-model="ruleForm.ispass">
                                <el-radio label="通过">通过</el-radio>
                                <el-radio label="不通过">不通过</el-radio>
                            </el-radio-group>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="15" :offset="3">
                        <el-form-item label="复查时间" prop="CALLBACKTIME">
                            <el-date-picker
                                v-model="ruleForm.CALLBACKTIME"
                                type="date"
                                placeholder="选择日期"
                                value-format="yyyy-MM-dd"
                                style="width: 100%">
                            </el-date-picker>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="15" :offset="3">
                        <el-form-item label="复查人" prop="CALLBACKPERSON">
                            <el-input v-model="ruleForm.CALLBACKPERSON" clearable></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="20" :offset="3">
                        <el-form-item label="复查结果" prop="CALLBACKRESULT">
                            <el-input class="textarea2" type="textarea" clearable
                                      v-model="ruleForm.CALLBACKRESULT"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="20" :offset="3">
                        <el-form-item label="备注" prop="dealContent">
                            <el-input class="textarea" type="textarea"
                                      v-model="ruleForm.dealContent"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="22">
                        <el-form-item style="text-align: center;">
                            <el-button class="btn" size="small" type="primary" @click="submitForm('ruleForm')">
                                保存
                            </el-button>
                            <el-button size="small" @click="close()">关闭</el-button>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
        </el-dialog>
        <div style="text-align: right">
            <el-pagination
                v-show="recordTotal > 0"
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
                :current-page="currentPage"
                :page-sizes="[10, 20, 30, 50]"
                :page-size="pageSize"
                layout="total, sizes, prev, pager, next, jumper"
                :total="recordTotal"
            >
            </el-pagination>
        </div>
    </div>
</template>
<script>
    export default {
        name: "recheckCancellationNumber"
import {getPageList, sendDangerNext} from "@/api/sgyhpczl/recheckCancellationNumber";
import {danger_export_do} from "@/api/sgyhpczl/hiddenDangerRectification";
import {initJCBM, initYHLX, initBC, initJCLB, initYHBM, initYHJB, initLlr} from "@/api/sgyhpczl/initSelect";
export default {
    data() {
        return {
            reList: [{label: "未关联", value: 0}],
            options: [],
            dialogVisible: false,
            form: {},
            value1: "",
            llrList: [],
            JCDWList: [{label: "众泰煤焦化", value: 0}, {label: "上级单位", value: 1}],
            JCBMList: [],
            YHLXList: [],
            BCList: [],
            JCLBList: [],
            YHBMList: [],
            YHJBList: [],
            tableData: [],
            loading:false,
            ruleForm: {
                id: "",
                step: "3",
                ispass: "通过",
                CALLBACKTIME: "",
                CALLBACKPERSON: "",
                CALLBACKRESULT: "",
                dealContent: "",
            },
            rules: {
                CALLBACKTIME: {required: true, message: '请填写复查时间', trigger: 'blur'},
                CALLBACKPERSON: {required: true, message: '请填写复查人', trigger: 'blur'},
                CALLBACKRESULT: {required: true, message: '请填写复查结果', trigger: 'blur'},
            },
            listQuery: {
                page: 1,
                limit: 10,
                form: {
                    ht_community: "众泰煤焦化"
                },
            },
            currentPage: 1,
            pageSize: 10,
            recordTotal: 0,
        };
    },
    watch: {
        dialogVisible: function (newval, oldval) {
            if (!newval) {
                this.ruleForm = {
                    id: "",
                    step: "3",
                    ispass: "通过",
                    CALLBACKTIME: "",
                    CALLBACKPERSON: "",
                    CALLBACKRESULT: "",
                    dealContent: "",
                }
            }
        }
    },
    mounted() {
        this.getPageList()
        this.initYHLX()
        this.initYHJB()
        this.initBC()
        this.initJCLB()
        this.initLlr()
        this.initYHBM()
    },
    methods: {
        initLlr() {
            initLlr().then(res => {
                if (res.data.ok == 1) {
                    this.llrList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        initYHBM(val) {
            initYHBM().then(res => {
                if (res.data.ok == 1) {
                    this.YHBMList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        changeJCDW(val) {
            initJCBM(val).then(res => {
                if (res.data.ok == 1) {
                    this.JCBMList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        checkTime() {
            if (this.listQuery.form.check_dateStart != null && this.listQuery.form.check_dateStart != '') {
                if (this.listQuery.form.check_dateEnd != null && this.listQuery.form.check_dateEnd != '') {
                } else {
                    this.$message({type: 'error', message: "请选择检查结束时间", duration: 3000})
                    return
                }
            }
            if (this.listQuery.form.check_dateEnd != null && this.listQuery.form.check_dateEnd != '') {
                if (this.listQuery.form.check_dateStart != null && this.listQuery.form.check_dateStart != '') {
                } else {
                    this.$message({type: 'error', message: "请选择检查开始时间", duration: 3000})
                    return
                }
            }
            if (this.listQuery.form.alter_timeStart != null && this.listQuery.form.alter_timeStart != '') {
                if (this.listQuery.form.alter_timeEnd != null && this.listQuery.form.alter_timeEnd != '') {
                } else {
                    this.$message({type: 'error', message: "请选择限改结束时间", duration: 3000})
                    return
                }
            }
            if (this.listQuery.form.alter_timeEnd != null && this.listQuery.form.alter_timeEnd != '') {
                if (this.listQuery.form.alter_timeStart != null && this.listQuery.form.alter_timeStart != '') {
                } else {
                    this.$message({type: 'error', message: "请选择改开始时间", duration: 3000})
                    return
                }
            }
        },
        getPageList() {
            this.listQuery.page = 1
            this.checkTime()
            this.loading = true
            getPageList(this.listQuery).then(res => {
                this.loading =false
                if (res.data.ok == 1) {
                    this.tableData = res.data.data.items
                    this.recordTotal = res.data.data.total
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        reset() {
            this.listQuery.form = {ht_community: "众泰煤焦化"}
            this.getPageList()
        },
        handleSizeChange(val) {
            this.listQuery.limit = val
            this.getPageListForPagination();
        },
        handleCurrentChange(val) {
            this.listQuery.page = val
            this.getPageListForPagination();
        },
        getPageListForPagination() {
            this.checkTime()
            getPageList(this.listQuery).then(res => {
                if (res.data.ok == 1) {
                    this.tableData = res.data.data.items
                    this.recordTotal = res.data.data.total
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        initYHLX() {
            initYHLX().then(res => {
                if (res.data.ok == 1) {
                    this.YHLXList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        initYHJB() {
            initYHJB().then(res => {
                if (res.data.ok == 1) {
                    this.YHJBList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        initBC() {
            initBC().then(res => {
                if (res.data.ok == 1) {
                    this.BCList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        initJCLB() {
            initJCLB().then(res => {
                if (res.data.ok == 1) {
                    this.JCLBList = res.data.data
                } else {
                    this.$message({type: 'error', message: res.data.msg, duration: 3000})
                }
            })
        },
        // 发送隐患单跳转
        handleClick(row) {
            this.$router.push({
                path: "/recheckHiddenDangerList",
                query: {"id": row.id}
            })
        },
        showEdit() {
            var selectDataList = this.$refs.dangerRectificationTable.selection;
            if (selectDataList.length < 1) {
                this.$message({
                    type: 'warning',
                    message: '请选择数据!'
                });
                return false;
            } else {
                this.dialogVisible = true;
                var checkId = "";
                selectDataList.forEach(n => {
                    checkId += n.id + ",";
                });
                this.ruleForm.id = checkId.substring(0, checkId.length - 1);
            }
        },
        exportData() {
            this.listLoading = true
            var requestData = JSON.parse(JSON.stringify(this.listQuery));
            requestData.export_type = 3;
            //删除分页参数
            this.$delete(requestData, 'page')
            this.$delete(requestData, 'limit')
            danger_export_do(requestData).then(res => {
                this.listLoading = false
                var blob = new Blob([res.data])
                var downloadElement = document.createElement('a')
                var href = window.URL.createObjectURL(blob) //创建下载的链接
                downloadElement.href = href
                downloadElement.download = '隐患复查销号.xlsx' //下载后文件名
                document.body.appendChild(downloadElement)
                downloadElement.click() //点击下载
                document.body.removeChild(downloadElement) //下载完成移除元素
                window.URL.revokeObjectURL(href) //释放掉blob对象
            }).catch(err => {
                console.log(err)
            })
        },
        submitForm(formName) {
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    sendDangerNext(this.ruleForm).then(res => {
                        var msg = res.data.msg;
                        if (res.data.ok) {
                            this.dialogVisible = false
                            this.$message({type: 'success', message: msg, duration: 3000})
                        } else {
                            this.$message({type: 'error', message: msg, duration: 3000})
                        }
                    })
                    // alert('submit!');
                } else {
                    console.log('error submit!!');
                    return false;
                }
            });
        },
        close() {
            this.dialogVisible = false;
        },
        //方法区
        formatDate(data) {
            // 获取单元格数据
            if(data == null) {
                return null
            }
            let dt = new Date(data)
            return dt.getFullYear() + '-' + (dt.getMonth() + 1) + '-' + dt.getDate()
        },
        showDetails(row){
            this.$router.push({
                path: "/dangerDetails",
                query:{"id":row.id}
            })
        },
        //方法区
        formatColumnDate(row, column) {
            // 获取单元格数据
            let data = row[column.property]
            if(data == null) {
                return null
            }
            let dt = new Date(data)
            return dt.getFullYear() + '-' + (dt.getMonth() + 1) + '-' + dt.getDate() + ' '
        },
    }
};
</script>
<style>
.inquire {
    display: flex;
    justify-content: left;
    flex-wrap: wrap;
}
<style scoped>
.inquire .el-form-item {
    padding: 0 46px;
}
.title-center {
    padding: 20px 0;
}
.btns {
    background-color: #034ea2;
    border: 1px solid #034ea2;
}
.blue-font-color:hover{
    cursor: pointer;
    color: blue;
}
</style>