Your Name
2022-08-31 9f0eeddb0d3977dd39f3e317fedc50faf389c375
特殊作业
已修改5个文件
已添加18个文件
2718 ■■■■■ 文件已修改
src/api/approveBasic.js 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/approveRule.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/safetyAction.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/index.css 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/accept/index.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/rectify/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/report/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/roleManage/menu/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/foundationSet/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/foundationSet/safetyAction/components/safetyActionDialog.vue 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/foundationSet/safetyAction/index.vue 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveBasic/components/approveBasicDialog.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveBasic/index.vue 365 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/components/approveItemDialog.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/components/approveLevelDialog.vue 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/components/approveRuleDialog.vue 484 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/approveRule/index.vue 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workFlow/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myApproval/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/myJobApply/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/specialWorkManage/workTicket/workApply/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/approveBasic.js
对比新文件
@@ -0,0 +1,63 @@
import request from '@/utils/request'
import { getToken } from '@/utils/auth'
export function approveBasicApi() {
    return {
        // v1
        getApproveBasicList: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/work/ruleItemStand/page/list`,
                method: 'post',
                data: data
            });
        },
        // v1
        addApproveBasic: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/work/ruleItemStand/save`,
                method: 'post',
                data: data
            });
        },
        // v1
        modApproveBasic: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/work/ruleItemStand/update`,
                method: 'post',
                data: data
            });
        },
        // v1
        deleteApproveBasic: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/work/ruleItemStand/delete`,
                method: 'post',
                data: data
            });
        },
        // v1
        getAllApproveBasicList: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/work/ruleItemStand/list`,
                method: 'post',
                data
            });
        }
    };
}
src/api/approveRule.js
对比新文件
@@ -0,0 +1,62 @@
import request from '@/utils/request'
import { getToken } from '@/utils/auth'
export function approveRuleApi() {
    return {
        // v1
        getApproveRuleList: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API +  `/rule/listByPage`,
                method: 'post',
                data: data
            });
        },
        // v1
        addApproveRule: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API +  `/rule/save`,
                method: 'post',
                data: data
            });
        },
        // v1
        modApproveRule: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API +  `/rule/update`,
                method: 'post',
                data: data
            });
        },
        // v1
        deleteApproveRule: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API +  `/rule/del`,
                method: 'post',
                data: data
            });
        },
        // v1
        getAllApproveRuleList: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API +  `/prevent/device/select/listDevices`,
                method: 'post',
                data
            });
        }
    };
}
src/api/safetyAction.js
对比新文件
@@ -0,0 +1,62 @@
import request from '@/utils/request'
import { getToken } from '@/utils/auth'
export function safetyActionApi() {
    return {
        // v1
        getSafetyActionList: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/rule/measure/page/list`,
                method: 'post',
                data: data
            });
        },
        // v1
        addSafetyAction: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/rule/measure/save`,
                method: 'post',
                data: data
            });
        },
        // v1
        modSafetyAction: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/rule/measure/mod`,
                method: 'post',
                data: data
            });
        },
        // v1
        deleteSafetyAction: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/rule/measure/delete`,
                method: 'post',
                data: data
            });
        },
        // v1
        getAllSafetyActionList: (data) => {
            return request({
                headers:{
                    'Authorization':getToken()
                },
                url: process.env.BASE_API + `/rule/measure/list`,
                method: 'post',
                data: data
            });
        }
    };
}
src/assets/style/index.css
对比新文件
@@ -0,0 +1,15 @@
.input-box{
    width: 200px !important;
    padding-right: 10px;
    padding-bottom: 10px;
}
.input-add{
    width: 90% !important;
}
.basic-line{
    display: inline-block;
    padding-left: 10px;
}
.page-position{
    float: right;
}
src/main.js
@@ -1,7 +1,7 @@
import Vue from 'vue'
import Cookies from 'js-cookie'
import './assets/style/index.css'
import 'normalize.css/normalize.css' // A modern alternative to CSS resets
import 'default-passive-events'
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/accept/index.vue
@@ -12,7 +12,16 @@
                    ></el-option>
                </el-select>
            </div>
            <div class="basic_search">
                <span>验收部门:</span>
                <el-select v-model="filter.depId"  clearable filterable class="analyseUnit_box">
                    <el-option
                        v-for="item in departmentList"
                        :key="item.id"
                        :label="item.department"
                        :value="item.id"
                    ></el-option>
                </el-select>            </div>
            <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
                       @click="queryHandle">搜索</el-button>
        </div>
@@ -92,6 +101,8 @@
import {deleteHiddenDangerReport, hiddenDangerAcceptList} from "../../../../../api/hiddenDanger";
import {safetyInspectionItemName} from "../../../../../api/safetySelfInspection";
import AcceptDialog from "./components/acceptDialog";
import {getAllProductionDeviceList} from "../../../../../api/riskSource";
import {getDepartmentList} from "../../../../../api/departmentManage";
export default {
    name: "rectify",
@@ -123,12 +134,14 @@
                pageIndex:1,
                pageSize:10,
                checkAcceptPersonid: null,
                depId: null,
            }
        }
    },
    created() {
        this.hiddenDangerList();
        this.getUser()
        this.getDepartmentData()
    },
    methods: {
        queryHandle: function () {
@@ -175,6 +188,22 @@
            }
        },
        async getDepartmentData(){
            let res = await getDepartmentList({pageSize:1000,pageIndex:1})
            if(res.data.code === '200'){
                this.departmentList = res.data.result.result
            }else{
                this.$message({
                    message:res.data.message,
                    type:'warning'
                })
                if(res.data.code === '50001'){
                    this.riskSourceData = []
                }
            }
        },
        hiddenDangerList(){
            this.listLoading = true
            hiddenDangerAcceptList(this.filter)
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/rectify/index.vue
@@ -95,6 +95,7 @@
    import reportView from "../components/reportView";
    import rectifyDialog from "./components/rectifyDialog";
    import {deleteHiddenDangerReport} from "../../../../../api/hiddenDanger";
    import {getDepartmentList} from "../../../../../api/departmentManage";
    export default {
        name: "rectify",
@@ -130,7 +131,7 @@
        },
        created() {
            this.hiddenDangerList();
            this.getDepartmentData()
        },
        methods: {
            queryHandle: function () {
@@ -162,7 +163,20 @@
                window.open(fileurl, '_blank');
            },
            async getDepartmentData(){
                let res = await getDepartmentList({pageSize:1000,pageIndex:1})
                if(res.data.code === '200'){
                    this.departmentList = res.data.result.result
                }else{
                    this.$message({
                        message:res.data.message,
                        type:'warning'
                    })
                    if(res.data.code === '50001'){
                        this.riskSourceData = []
                    }
                }
            },
            hiddenDangerList(){
                this.listLoading = true
src/views/doublePreventAction/hiddenDanger/hiddenDangerReform/report/index.vue
@@ -25,13 +25,23 @@
                    <el-option v-for="item in dangerTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                </el-select>
            </div>
            <div class="basic_search">
                <span>上报部门:</span>
                <el-select v-model="filter.depId"  clearable filterable class="analyseUnit_box">
                    <el-option
                        v-for="item in departmentList"
                        :key="item.id"
                        :label="item.department"
                        :value="item.id"
                    ></el-option>
                </el-select>            </div>
            <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
                       @click="queryHandle"/>
            <el-button class="filter-item" style="margin-left: 10px;" type="primary"
                       icon="el-icon-plus" @click="showCreateHandle('新增', '')">新增
            </el-button>
            <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
                       @click="queryHandle"/>
        </div>
        <div class="table_content">
            <el-table
@@ -173,7 +183,8 @@
                    rectifier:'',
                    rectifierid:'',
                    note: '',
                    level:''
                    level:'',
                },
                isSupervision: '',
                filter:{
@@ -182,6 +193,7 @@
                    dangerLevel: null,
                    dangerSource: null,
                    dangerStatus: null,
                    depId:null,
                    dangerType: null
                },
src/views/roleManage/menu/index.vue
@@ -379,7 +379,7 @@
            handleNodeClick(data) {
                console.log('12313')
                // console.log(this.$route.meta, 'this.$router.meta')
                this.form = merge({}, data)
                this.form =  data
                const cascaderValue = []
                let exitFlag = false
                for (const node of this.cascaderTree) {
src/views/specialWorkManage/foundationSet/index.vue
对比新文件
@@ -0,0 +1,13 @@
<template>
    <router-view></router-view>
</template>
<script>
    export default {
        name: "index"
    }
</script>
<style scoped>
</style>
src/views/specialWorkManage/foundationSet/safetyAction/components/safetyActionDialog.vue
对比新文件
@@ -0,0 +1,166 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog :title="title" :visible.sync="isShowSafetyActionDialog" width="600px" :close-on-click-modal="false">
            <el-form :model="safetyActionForm" :rules="safetyActionFormRules" ref="safetyActionFormRef" size="default" label-width="120px">
                <el-row :gutter="35">
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="作业类型" prop="workType">
                            <el-select class="input-add" :disabled="!disabled" v-model="safetyActionForm.workType" placeholder="请选择作业类型" filterable clearable>
                                <el-option v-for="item in workTypeList" :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="24" class="mb20">
                        <el-form-item label="措施类型" prop="type">
                            <el-select class="input-add" :disabled="!disabled" v-model="safetyActionForm.type" placeholder="请选择措施类型" clearable filterable>
                                <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col v-if="safetyActionForm.type === 1" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="正确值" prop="correctVal">
                            <el-select class="input-add" :disabled="!disabled" v-model="safetyActionForm.correctVal" placeholder="请选择正确值" clearable filterable>
                                <el-option v-for="item in typeTwoList" :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="24" class="mb20">
                        <el-form-item label="措施内容" prop="context">
                            <el-input class="input-add" :disabled="!disabled" :rows="3" v-model.trim="safetyActionForm.context" type="textarea" placeholder="请输入描述"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <div class="dialog-footer" v-show="disabled" align="right">
                    <el-button @click="isShowSafetyActionDialog = !isShowSafetyActionDialog" size="default">取 消</el-button>
                    <el-button type="primary" @click="submitSafetyAction" size="default">确 定</el-button>
                </div>
            </template>
        </el-dialog>
    </div>
</template>
<script>
import {safetyActionApi} from "../../../../../api/safetyAction";
export default {
    name: 'SafetyActionDialog',
    data(){
        return{
            title: '',
            disabled: false,
            personTime: false,
            departmentList: [],
            isShowSafetyActionDialog: false,
            workTypeList: [
                { id: 1, name: '动火作业' },
                { id: 2, name: '受限空间作业' },
                { id: 3, name: '吊装作业' },
                { id: 4, name: '动土作业' },
                { id: 5, name: '断路作业' },
                { id: 6, name: '高处作业' },
                { id: 7, name: '临时用电作业' },
                { id: 8, name: '盲板抽堵作业' }
            ],
            typeList: [
                { id: 1, name: '选择' },
                { id: 2, name: '填空' }
            ],
            typeTwoList: [
                { id: 1, name: '是' },
                { id: 2, name: '否' }
            ],
            safetyActionForm: {
                workType: null,
                type: null,
                correctVal: null,
                context: null
            },
            safetyActionFormRules: {
                workType: [{ required: true, message: '请选择作业类型', trigger: 'change' }],
                type: [{ required: true, message: '请选择措施类型', trigger: 'change' }],
                correctVal: [{ required: true, message: '请选择正确值', trigger: 'change' }],
                context: [{ required: true, message: '请填写措施内容', trigger: 'blur' }]
            }
        }
    },
    methods:{
        showSafetyActionDialog(type, value, department) {
            this.isShowSafetyActionDialog = true;
            this.departmentList = department;
            this.$nextTick(() =>{
                this.$refs["safetyActionFormRef"].clearValidate()
            })
            if (type === '新增') {
                this.disabled = true;
                this.personTime = false;
                this.title = '新增安全措施';
                this.safetyActionForm = {
                    workType: null,
                    type: null,
                    correctVal: null,
                    context: null
                };
            } else if (type === '查看') {
                this.disabled = false;
                this.personTime = true;
                this.title = '查看安全措施';
                this.safetyActionForm = JSON.parse(JSON.stringify(value));
            } else {
                this.disabled = true;
                this.personTime = false;
                this.title = '修改安全措施';
                this.safetyActionForm = JSON.parse(JSON.stringify(value));
            }
        },
        submitSafetyAction() {
            this.$refs["safetyActionFormRef"].validate(async (valid) => {
                if (valid) {
                    if (this.title === '新增安全措施') {
                        let res = await safetyActionApi().addSafetyAction(this.safetyActionForm);
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '安全措施新增成功',
                                duration: 2000
                            });
                            this.isShowSafetyActionDialog = false;
                            context.emit('refreshSafetyAction');
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        let res = await safetyActionApi().modSafetyAction(this.safetyActionForm);
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '安全措施改成功',
                                duration: 2000
                            });
                            this.isShowSafetyActionDialog = false;
                            context.emit('refreshSafetyAction');
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    }
                } else {
                    this.$message({
                        type: 'warning',
                        message: '请完善基本信息'
                    });
                }
            });
        },
    },
};
</script>
<style scoped></style>
src/views/specialWorkManage/foundationSet/safetyAction/index.vue
对比新文件
@@ -0,0 +1,367 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
            <el-row class="homeCard">
                <div class="basic-line">
                    <span>作业类型:</span>
                    <el-select v-model="params.searchParams.workType" clearable filterable class="input-box" placeholder="作业类型">
                        <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div class="basic-line">
                    <span>措施类型:</span>
                    <el-select v-model="params.searchParams.type" clearable filterable class="input-box" placeholder="措施类型">
                        <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div class="basic-line">
                    <span>措施内容:</span>
                    <el-input v-model.trim="params.searchParams.context" class="input-box" placeholder="措施内容"> </el-input>
                </div>
                <div style="padding-bottom: 10px">
                    <el-button type="primary" @click="initSafetyAction">查询</el-button>
                    <el-button plain @click="reset">重置</el-button>
                </div>
            </el-row>
            <div class="homeCard">
                <div class="main-card">
                    <el-row class="cardTop">
                        <el-col :span="24" class="mainCardBtn">
                            <el-button type="primary" size="default" @click="openSafetyActionDialog('新增', {})">新建</el-button>
                            <el-button type="danger"  size="default" @click="deleteMoreSafetyAction" plain>批量删除</el-button>
                        </el-col>
                    </el-row>
                    <el-table ref="multipleTableRef" :data="safetyActionData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
                        <el-table-column type="selection" width="55" />
                        <el-table-column property="workType" label="作业类型">
                            <template slot-scope="scope">
                                <div v-for="item in workTypeList">
                                    <div v-if="scope.row.workType === item.id">
                                        <span>{{item.name}}</span>
                                    </div>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column property="type" label="措施类型">
                            <template slot-scope="scope">
                                <div v-for="item in typeList">
                                    <div v-if="scope.row.type === item.id">
                                        <span>{{item.name}}</span>
                                    </div>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column property="context" label="措施内容"></el-table-column>
                        <el-table-column prop="correctVal" label="正确值" show-overflow-tooltip>
                            <template slot-scope="scope">
                                <div v-for="item in typeTwoList">
                                    <div v-if="scope.row.correctVal === item.id">
                                        <span>{{item.name}}</span>
                                    </div>
                                </div>
                            </template>
                        </el-table-column>
                        <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="modifiedUname" label="最后修改人" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="gmtModified" label="最后修改时间" show-overflow-tooltip></el-table-column>
                        <el-table-column fixed="right" label="操作" align="center" width="300">
                            <template slot-scope="scope">
                                <el-button  type="text" @click="openSafetyActionDialog('查看', scope.row)">查看</el-button>
                                <el-button  type="text" @click="openSafetyActionDialog('修改', scope.row)">修改</el-button>
                                <el-button  style="color:red" type="text" @click="deleteSafetyAction(scope.row)">删除</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <br />
                    <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="params.pageIndex" background v-model:page-size="params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" class="page-position"> </el-pagination>
                </div>
            </div>
        </div>
        <safety-action-dialog ref="safetyActionDialogRef" @refreshSafetyAction="initSafetyAction"></safety-action-dialog>
    </div>
</template>
<script>
import safetyActionDialog from "./components/safetyActionDialog";
import {safetyActionApi} from "../../../../api/safetyAction";
export default {
    name: 'index',
    components: { safetyActionDialog },
    data(){
        return{
            safetyActionData: [],
            total: 0,
            loading: false,
            params: {
                pageIndex: 1,
                pageSize: 10,
                searchParams: {
                    workType: null,
                    type: null,
                    context: null
                }
            },
            workTypeList: [
                { id: 1, name: '动火作业' },
                { id: 2, name: '受限空间作业' },
                { id: 3, name: '吊装作业' },
                { id: 4, name: '动土作业' },
                { id: 5, name: '断路作业' },
                { id: 6, name: '高处作业' },
                { id: 7, name: '临时用电作业' },
                { id: 8, name: '盲板抽堵作业' }
            ],
            typeList: [
                { id: 1, name: '选择' },
                { id: 2, name: '填空' }
            ],
            typeTwoList: [
                { id: 1, name: '是' },
                { id: 2, name: '否' }
            ],
            deleteList: {
                ids: []
            }
        }
    },
    created() {
        this.initSafetyAction()
    },
    methods:{
        async initSafetyAction() {
            let res = await safetyActionApi().getSafetyActionList(this.params);
            if (res.data.code === '200') {
                this.safetyActionData = res.data.data;
                this.total = res.data.total;
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
        openSafetyActionDialog(type, value) {
            this.$refs.safetyActionDialogRef.showSafetyActionDialog(type, value);
        },
        deleteMoreSafetyAction() {
            this.$confirm(`此操作将永久删除该措施,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await safetyActionApi().deleteSafetyAction(this.deleteList);
                    if (res.data.code === '200') {
                        this.$message({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await this.initSafetyAction();
                    } else {
                        this.$message({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        },
        deleteSafetyAction(row) {
            this.$confirm(`此操作将永久删除该措施,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await safetyActionApi().deleteSafetyAction({ ids: [row.id] });
                    if (res.data.code === '200') {
                        this.deleteList.ids = [];
                        this.$message({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await this.initSafetyAction();
                    } else {
                        this.$message({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        },
        handleSelectionChange(val) {
            this.deleteList.ids = val.map((item) => {
                return item.id;
            });
        },
        parseNumber(value, type) {
            if (type === '作业类型') {
                return this.workTypeList.find((item) => item.id === value).name;
            } else {
                return this.typeList.find((item) => item.id == value).name;
            }
        },
        onHandleSizeChange(val) {
            this.params.pageSize = val;
            this.initSafetyAction()
        },
        onHandleCurrentChange(val) {
            this.params.pageIndex = val;
            this.initSafetyAction()
        },
        reset() {
            this.params = {
                pageIndex: 1,
                pageSize: 10,
                searchParams: {
                    workType: null,
                    type: null,
                    context: null
                }
            };
        },
    },
};
</script>
<style scoped lang="scss">
$homeNavLengh: 8;
.home-container {
    height: calc(100vh - 100px);
    box-sizing: border-box;
    overflow: hidden;
    .homeCard {
        width: 100%;
        padding: 20px;
        box-sizing: border-box;
        background: #fff;
        border-radius: 4px;
        .main-card {
            width: 100%;
            height: 100%;
            .cardTop {
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 20px;
                .mainCardBtn {
                    margin: 0;
                }
            }
            .pageBtn {
                height: 60px;
                display: flex;
                align-items: center;
                justify-content: right;
                .demo-pagination-block + .demo-pagination-block {
                    margin-top: 10px;
                }
                .demo-pagination-block .demonstration {
                    margin-bottom: 16px;
                }
            }
        }
        &:last-of-type {
            height: calc(100% - 100px);
        }
    }
    .el-row {
        display: flex;
        align-items: center;
        margin-bottom: 20px;
        &:last-child {
            margin-bottom: 0;
        }
        .grid-content {
            align-items: center;
            min-height: 36px;
        }
        .topInfo {
            display: flex;
            align-items: center;
            font-size: 16px;
            font-weight: bold;
            & > div {
                white-space: nowrap;
                margin-right: 20px;
            }
        }
    }
}
.stepItem {
    width: 100%;
    display: flex;
    align-items: flex-start;
    margin-bottom: 30px;
    margin-left: 30px;
    padding-bottom: 30px;
    border-left: 2px solid #ccc;
    &:first-of-type {
        margin-top: 30px;
    }
    &:last-of-type {
        margin-bottom: 0;
        border-left: none;
    }
    .stepNum {
        width: 30px;
        height: 30px;
        border-radius: 15px;
        box-sizing: border-box;
        color: #333;
        border: 1px solid #999;
        line-height: 28px;
        text-align: center;
        margin-right: 10px;
        margin-left: -16px;
        margin-top: -30px;
    }
    .stepCard {
        width: 100%;
        margin-top: -30px;
        .box-card {
            width: 100%;
            >>>.el-card__header {
                padding: 10px 15px;
            }
            .card-header {
                width: 100%;
                display: flex;
                justify-content: space-between;
                align-items: center;
                & > div:first-of-type {
                    margin-right: 80px;
                    font-size: 18px;
                    font-weight: bold;
                }
            }
        }
    }
    &:hover .card-header {
        color: #0098f5;
    }
    &:hover .stepNum {
        border: 2px solid #0098f5;
        color: #0098f5;
    }
}
.page-position{
    float: right;
    padding-top: 10px;
}
</style>
src/views/specialWorkManage/workFlow/approveBasic/components/approveBasicDialog.vue
对比新文件
@@ -0,0 +1,187 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog :title="title" :visible.sync="isShowApproveBasicDialog" width="600px" :close-on-click-modal="false">
            <el-form :model="approveBasicForm" :rules="approveBasicFormRules" ref="approveBasicFormRef" size="default" label-width="120px">
                <el-row :gutter="35">
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="标题" prop="title">
                            <el-input class="input-add" :disabled="!disabled" v-model.trim="approveBasicForm.title" placeholder="请输入标题名称" clearable></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="标准类型" prop="ruleStandType">
                            <el-select class="input-add" :disabled="!disabled" v-model="approveBasicForm.ruleStandType" placeholder="请选择标准类型" clearable filterable>
                                <el-option v-for="item in ruleStandTypeList" :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="24" class="mb20">
                        <el-form-item label="最大值" prop="maxVal">
                            <el-input :disabled="!disabled" v-model="approveBasicForm.maxVal" type="number" class="input-add" placeholder="请根据需求选择">
                                <template slot="prepend">
                                    <el-select :disabled="!disabled" v-model="approveBasicForm.maxValMatchPattern" placeholder="请根据需求选择" style="width: 115px">
                                        <el-option v-for="item in typeTwoList" :key="item.id" :value="item.id" :label="item.name"> </el-option>
                                    </el-select>
                                </template>
                            </el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="最小值" prop="minVal">
                            <el-input :disabled="!disabled" v-model="approveBasicForm.minVal" type="number" class="input-add" placeholder="请根据需求选择">
                                <template slot="prepend">
                                    <el-select :disabled="!disabled" v-model="approveBasicForm.minValMatchPattern" placeholder="请根据需求选择" style="width: 115px">
                                        <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"> </el-option>
                                    </el-select>
                                </template>
                            </el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="描述" prop="info">
                            <el-input class="input-add" :rows="3" :disabled="!disabled" v-model.trim="approveBasicForm.info" type="textarea" placeholder="请输入描述"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <div class="dialog-footer" v-show="disabled" align="right">
                    <el-button @click="isShowApproveBasicDialog = !isShowApproveBasicDialog" size="default">取 消</el-button>
                    <el-button type="primary" @click="submitApproveBasic" size="default">确 定</el-button>
                </div>
            </template>
        </el-dialog>
    </div>
</template>
<script>
import {approveBasicApi} from "../../../../../api/approveBasic";
export default {
    name: 'approveBasicDialog',
    data(){
        return{
            title: '',
            disabled: false,
            personTime: false,
            departmentList: [],
            isShowApproveBasicDialog: false,
            ruleStandTypeList: [
                { id: 1, name: '可燃气浓度' },
                { id: 2, name: '氧气浓度' },
                { id: 3, name: '一氧化碳浓度' },
                { id: 4, name: '硫化氢浓度' },
                { id: 5, name: '温度' },
                { id: 6, name: '压力' },
                { id: 7, name: '震动' }
            ],
            typeList: [
                { id: 1, name: '大于' },
                { id: 2, name: '等于' },
                { id: 4, name: '大于等于' }
            ],
            typeTwoList: [
                { id: 3, name: '小于' },
                { id: 2, name: '等于' },
                { id: 5, name: '小于等于' }
            ],
            approveBasicForm: {
                ruleStandType: null,
                minVal: null,
                minValMatchPattern: null,
                maxVal: null,
                maxValMatchPattern: null,
                title: null,
                info: null
            },
            approveBasicFormRules: {
                ruleStandType: [{ required: true, message: '请选择标准类型', trigger: 'change' }],
                minVal: [{ required: true, message: '请填写标最低值', trigger: 'blur' }],
                maxVal: [{ required: true, message: '请填写标最高值', trigger: 'blur' }],
                title: [{ required: true, message: '请选择风险等级', trigger: 'blur' }],
                info: [{ required: true, message: '请填写描述信息', trigger: 'blur' }]
            }
        }
    },
    methods:{
        showApproveBasicDialog(type, value) {
            this.isShowApproveBasicDialog = true;
            this.$nextTick(() =>{
                this.$refs["approveBasicFormRef"].clearValidate()
            })
            if (type === '新增') {
                this.disabled = true;
                this.personTime = false;
                this.title = '新增审批标准';
                this.approveBasicForm = {
                    ruleStandType: null,
                    minVal: null,
                    minValMatchPattern: null,
                    maxVal: null,
                    maxValMatchPattern: null,
                    title: null,
                    info: null
                };
            } else if (type === '查看') {
                this.disabled = false;
                this.personTime = true;
                this.title = '查看审批标准';
                this.approveBasicForm = JSON.parse(JSON.stringify(value));
            } else {
                this.disabled = true;
                this.personTime = false;
                this.title = '修改审批标准';
                this.approveBasicForm = JSON.parse(JSON.stringify(value));
            }
        },
        submitApproveBasic() {
            this.$refs["approveBasicFormRef"].validate(async (valid) => {
                if (valid) {
                    if (this.title === '新增审批标准') {
                        let res = await approveBasicApi().addApproveBasic(this.approveBasicForm);
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '审批标准新增成功',
                                duration: 2000
                            });
                            this.isShowApproveBasicDialog = false;
                            this.$emit('refreshApproveBasic');
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        let res = await approveBasicApi().modApproveBasic(this.approveBasicForm);
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '审批标准修改成功',
                                duration: 2000
                            });
                            this.isShowApproveBasicDialog = false;
                            this.$emit('refreshApproveBasic');
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    }
                } else {
                    this.$message({
                        type: 'warning',
                        message: '请完善基本信息'
                    });
                }
            });
        },
    },
};
</script>
<style scoped>
</style>
src/views/specialWorkManage/workFlow/approveBasic/index.vue
对比新文件
@@ -0,0 +1,365 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
            <el-row class="homeCard">
                <div class="basic-line">
                    <span>标准类型:</span>
                    <el-select v-model="tableData.params.searchParams.ruleStandType" clearable filterable class="input-box" placeholder="标准类型">
                        <el-option v-for="item in ruleStandTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div class="basic-line">
                    <span>标题:</span>
                    <el-input v-model.trim="tableData.params.searchParams.title" clearable filterable class="input-box" placeholder="标题"> </el-input>
                </div>
                <div style="padding-bottom: 10px">
                    <el-button type="primary" @click="getInspectionTask">查询</el-button>
                    <el-button plain @click="reset">重置</el-button>
                </div>
            </el-row>
            <div class="homeCard">
                <div class="main-card">
                    <el-row class="cardTop">
                        <el-col :span="24" class="mainCardBtn">
                            <el-button type="primary" size="default" @click="openApproveBasicDialog('新增', {})">新建</el-button>
                            <el-button type="danger" size="default" @click="deleteMoreApproveBasic" plain>批量删除</el-button>
                        </el-col>
                    </el-row>
                    <el-table ref="multipleTableRef" :data="tableData.approveBasicData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
                        <el-table-column type="selection" width="55" />
                        <el-table-column property="title" label="标题" />
                        <el-table-column property="ruleStandType" label="标准类型">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.ruleStandType, '标准类型') }}
                                </span>
                            </template>
                        </el-table-column>
                        <el-table-column property="minVal" label="最低值">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.minValMatchPattern, '最低值') }}
                                </span>
                                <span>
                                    {{ scope.row.minVal }}
                                </span>
                            </template>
                        </el-table-column>
                        <el-table-column property="maxVal" label="最高值">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.maxValMatchPattern, '最高值') }}
                                </span>
                                <span>
                                    {{ scope.row.maxVal }}
                                </span>
                            </template>
                        </el-table-column>
                        <el-table-column property="info" label="描述" />
                        <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="modifiedUname" label="最后修改人" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="gmtModified" label="最后修改时间" show-overflow-tooltip></el-table-column>
                        <el-table-column fixed="right" label="操作" align="center" width="300">
                            <template slot-scope="scope">
                                <el-button link type="primary" size="small" @click="openApproveBasicDialog('查看', scope.row)">查看</el-button>
                                <el-button link type="primary" size="small" @click="openApproveBasicDialog('修改', scope.row)">修改</el-button>
                                <el-button link type="danger" size="small" @click="deleteApproveBasic(scope.row)">删除</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination>
                </div>
            </div>
        </div>
        <approve-basic-dialog ref="approveBasicDialogRef" @refreshApproveBasic="getInspectionTask"></approve-basic-dialog>
    </div>
</template>
<script>
import approveBasicDialog from "./components/approveBasicDialog";
import {approveBasicApi} from "../../../../api/approveBasic";
export default {
    name: 'index',
    components: { approveBasicDialog },
    data(){
        return{
            tableData: {
                approveBasicData: [],
                total: 0,
                loading: false,
                params: {
                    pageIndex: 1,
                    pageSize: 10,
                    searchParams: {
                        ruleStandType: null,
                        title: null
                    }
                }
            },
            ruleStandTypeList: [
                { id: 1, name: '可燃气浓度' },
                { id: 2, name: '氧气浓度' },
                { id: 3, name: '一氧化碳浓度' },
                { id: 4, name: '硫化氢浓度' },
                { id: 5, name: '温度' },
                { id: 6, name: '压力' },
                { id: 7, name: '震动' }
            ],
            typeList: [
                { id: 1, name: '大于' },
                { id: 2, name: '等于' },
                { id: 4, name: '大于等于' }
            ],
            typeTwoList: [
                { id: 3, name: '小于' },
                { id: 2, name: '等于' },
                { id: 5, name: '小于等于' }
            ],
            deleteList: {
                ids: []
            }
        }
    },
    created() {
        this.getInspectionTask()
    },
    methods:{
        async getInspectionTask() {
            let res = await approveBasicApi().getApproveBasicList(this.tableData.params);
            if (res.data.code === '200') {
                this.tableData.approveBasicData = res.data.data;
                this.tableData.total = res.data.total;
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
        parseNumber(value,type) {
            if (type === '标准类型') {
                return this.ruleStandTypeList.find((item) => item.id === value).name;
            } else if (type === '最高值') {
                return this.typeTwoList.find((item) => item.id == value).name;
            } else {
                return this.typeList.find((item) => item.id == value).name;
            }
        },
        handleSelectionChange(val) {
            this.deleteList.ids = val.map((item) => {
                return item.ruleStandId;
            });
        },
        openApproveBasicDialog(type, value) {
            this.$refs.approveBasicDialogRef.showApproveBasicDialog(type, value);
        },
        deleteApproveBasic(row) {
            this.$confirm(`此操作将永久删除该任务:“${row.title}”,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await approveBasicApi().deleteApproveBasic({ ids: [row.ruleStandId] });
                    if (res.data.code === '200') {
                        this.deleteList.ids = [];
                        this.$message({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await getInspectionTask();
                    } else {
                        this.$message({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        },
        deleteMoreApproveBasic() {
            this.$confirm(`此操作将永久删除这些标准项,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await approveBasicApi().deleteApproveBasic(this.deleteList);
                    if (res.data.code === '200') {
                        this.$message({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await this.getInspectionTask();
                    } else {
                        this.$message({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        },
        onHandleSizeChange(val) {
            this.tableData.params.pageSize = val;
            this.getInspectionTask();
        },
        // 分页改变
        onHandleCurrentChange(val) {
            this.tableData.params.pageIndex = val;
            this.getInspectionTask();
        },
        reset() {
            this.tableData.params = {
                pageIndex: 1,
                pageSize: 10,
                searchParams: {
                    ruleStandType: null,
                    title: null
                }
            };
        },
    },
};
</script>
<style scoped lang="scss">
$homeNavLengh: 8;
.home-container {
    height: calc(100vh - 100px);
    box-sizing: border-box;
    overflow: hidden;
    .homeCard {
        width: 100%;
        padding: 20px;
        box-sizing: border-box;
        background: #fff;
        border-radius: 4px;
        .main-card {
            width: 100%;
            height: 100%;
            .cardTop {
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 20px;
                .mainCardBtn {
                    margin: 0;
                }
            }
            .pageBtn {
                height: 60px;
                display: flex;
                align-items: center;
                justify-content: right;
                .demo-pagination-block + .demo-pagination-block {
                    margin-top: 10px;
                }
                .demo-pagination-block .demonstration {
                    margin-bottom: 16px;
                }
            }
        }
        &:last-of-type {
            height: calc(100% - 100px);
        }
    }
    .el-row {
        display: flex;
        align-items: center;
        margin-bottom: 20px;
        &:last-child {
            margin-bottom: 0;
        }
        .grid-content {
            align-items: center;
            min-height: 36px;
        }
        .topInfo {
            display: flex;
            align-items: center;
            font-size: 16px;
            font-weight: bold;
            & > div {
                white-space: nowrap;
                margin-right: 20px;
            }
        }
    }
}
.stepItem {
    width: 100%;
    display: flex;
    align-items: flex-start;
    margin-bottom: 30px;
    margin-left: 30px;
    padding-bottom: 30px;
    border-left: 2px solid #ccc;
    &:first-of-type {
        margin-top: 30px;
    }
    &:last-of-type {
        margin-bottom: 0;
        border-left: none;
    }
    .stepNum {
        width: 30px;
        height: 30px;
        border-radius: 15px;
        box-sizing: border-box;
        color: #333;
        border: 1px solid #999;
        line-height: 28px;
        text-align: center;
        margin-right: 10px;
        margin-left: -16px;
        margin-top: -30px;
    }
    .stepCard {
        width: 100%;
        margin-top: -30px;
        .box-card {
            width: 100%;
            >>>.el-card__header {
                padding: 10px 15px;
            }
            .card-header {
                width: 100%;
                display: flex;
                justify-content: space-between;
                align-items: center;
                & > div:first-of-type {
                    margin-right: 80px;
                    font-size: 18px;
                    font-weight: bold;
                }
            }
        }
    }
    &:hover .card-header {
        color: #0098f5;
    }
    &:hover .stepNum {
        border: 2px solid #0098f5;
        color: #0098f5;
    }
}
.page-position{
    float: right;
    padding-top: 10px;
}
</style>
src/views/specialWorkManage/workFlow/approveRule/components/approveItemDialog.vue
对比新文件
@@ -0,0 +1,143 @@
<template>
    <el-dialog :visible.sync="approveItemDialog" :title="title" :close-on-click-modal="false">
        <el-form :model="approveItemForm" label-width="150px" ref="approveItemFormRef" :rules="approveItemFormRule">
            <el-col :span="24" >
                <el-form-item label="审批项名称" prop="itemName">
                    <el-input v-model="approveItemForm.itemName" class="input-add" placeholder="请填写审批项名称"> </el-input>
                </el-form-item>
            </el-col>
            <el-col :span="24" >
                <el-form-item label="审批项类型" prop="type">
                    <el-select v-model="approveItemForm.type" @change="clearValue" placeholder="请选择审批项类型" class="input-add" clearable filterable>
                        <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                    </el-select>
                </el-form-item>
            </el-col>
            <!--            <el-col :span="24" style="margin-bottom: 24px">-->
            <!--                <el-form-item label="措施或标准" prop="smType">-->
            <!--                    <el-select v-model="approveItemForm.smType" @change="clearValue" placeholder="请选择措施或标准" class="input-add" clearable filterable>-->
            <!--                        <el-option v-for="item in smTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option>-->
            <!--                    </el-select>-->
            <!--                </el-form-item>-->
            <!--            </el-col>-->
            <el-col v-if="(approveItemForm.type === 2 || approveItemForm.type === 3) && personType !== 3" :span="24">
                <el-form-item label="措施名称" prop="measureId">
                    <el-select v-model="approveItemForm.measureId" placeholder="请选择措施" class="input-add" clearable filterable>
                        <el-option v-for="item in actionList" :key="item.id" :value="item.id" :label="item.context"></el-option>
                    </el-select>
                </el-form-item>
            </el-col>
            <el-col v-if="approveItemForm.type === 1" :span="24" >
                <el-form-item label="标准名称" prop="standId">
                    <el-select v-model="approveItemForm.standId" class="input-add" placeholder="选择标准" clearable filterable>
                        <el-option v-for="item in standardList" :key="item.ruleStandId" :value="item.ruleStandId" :label="item.title"></el-option>
                    </el-select>
                </el-form-item>
            </el-col>
            <div align="right">
                <el-button type="warning" @click="approveItemDialog = false" size="default" plain>取消</el-button>
                <el-button type="primary" @click="submitApproveItem()" size="default">确认</el-button>
            </div>
        </el-form>
    </el-dialog>
</template>
<script>
export default {
    name: 'approveItemDialog',
    data(){
        return{
            title: '',
            activeName: 'ApproveAction',
            approveItemDialog: false,
            approveItemForm: {
                itemName: null,
                type: null,
                measureId: null,
                smType: 1,
                standId: null
            },
            approveItemFormRule: {
                itemName: [{ required: true, message: '请填写审批项名称', trigger: 'blur' }],
                type: [{ required: true, message: '请选择审批项类型', trigger: 'change' }],
                measureId: [{ required: true, message: '请选择措施', trigger: 'change' }],
                smType: [{ required: true, message: '请选择措施或标准', trigger: 'change' }],
                standId: [{ required: true, message: '请选择标准', trigger: 'change' }]
            },
            actionList: [],
            typeList: [],
            smTypeList: [
                { id: 1, name: '标准' },
                { id: 2, name: '措施' }
            ],
            standardList: [],
            order: null,
            personType: null,
        }
    },
    methods:{
        showApproveItemDialog(type, value, index, approveLevelForm, standardList, actionList) {
            this.approveItemDialog = true;
            this.standardList = standardList;
            this.actionList = actionList;
            this.order = index;
            if (approveLevelForm.type === 3) {
                this.personType = 3
                this.typeList = [
                    { id: 1, name: '数值' },
                    { id: 3, name: '填空' }
                ];
            } else {
                this.typeList = [
                    { id: 2, name: '选项' },
                    { id: 3, name: '填空' }
                ];
            }
            this.$nextTick(() => {
                this.$refs["approveItemFormRef"].clearValidate();
            });
            if (type === '新增') {
                this.title = '新增审批项';
                this.approveItemForm = {
                    itemName: null,
                    type: null,
                    measureId: null,
                    standId: null,
                    smType: 1
                };
            } else {
                this.title = '修改审批项';
                this.approveItemForm = JSON.parse(JSON.stringify(value));
            }
        },
        submitApproveItem() {
            this.$refs["approveItemFormRef"].validate((valid) => {
                if (valid) {
                    this.approveItemForm.smType = 1;
                    this.$emit('addApprovalItem', this.approveItemForm, this.title, this.order);
                    this.approveItemDialog = false;
                } else {
                    this.$message({
                        type: 'warning',
                        message: '请完善审批项基本信息'
                    });
                }
            });
        },
        clearValue () {
            if (this.approveItemForm.type === 1) {
                this.approveItemForm.measureId = null;
            } else {
                this.approveItemForm.standId = null;
            }
        },
    },
};
</script>
<style scoped></style>
src/views/specialWorkManage/workFlow/approveRule/components/approveLevelDialog.vue
对比新文件
@@ -0,0 +1,246 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog :title="title" :visible.sync="approveLevelDialog" :close-on-click-modal="false">
            <el-form :model="approveLevelForm" label-width="150px" ref="approveLevelFormRef" :rules="approveLevelFormRule">
                <el-col :span="24">
                    <el-form-item label="层级名称" prop="stepName">
                        <el-input v-model="approveLevelForm.stepName" class="input-add" placeholder="请填写层级名称"> </el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="审批层级" prop="type">
                        <el-select v-model="approveLevelForm.type" placeholder="请选择审批层级" class="input-add">
                            <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="审批人" prop="unitList">
                        <el-select v-model="approveLevelForm.unitList" multiple placeholder="请选择审批人" class="input-add">
                            <el-option v-for="item in userList" :key="item.id" :value="item.id" :label="item.realname"></el-option>
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="24">
                    <el-form-item label="审批有效时间" prop="continueTime">
                        <el-input type="number" v-model="approveLevelForm.continueTime" placeholder="请输入审批有效时间" class="input-add">
                            <template slot="prepend">
                                <el-select v-model="approveLevelForm.continueTimeUnit" placeholder="选择单位" style="width: 115px">
                                    <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                                </el-select>
                            </template>
                        </el-input>
                    </el-form-item>
                </el-col>
                <div class="checkUnit-point">
                            <div class="filter-container">
                                <el-button size="default" type="primary" @click="openApproveActionDialog('新增', '', 0)">
                                    <el-icon>
                                        <ele-FolderAdd />
                                    </el-icon>
                                    新增审批项
                                </el-button>
                            </div>
                            <el-table border fit highlight-current-row :data="approveLevelForm.itemList" style="width: 100%">
                                <el-table-column property="itemName" label="审批项名称" show-overflow-tooltip> </el-table-column>
                                <el-table-column property="type" label="审批项类型" show-overflow-tooltip>
                                    <template slot-scope="scope">
                                        <div v-for="item in typeList">
                                            <div v-if="scope.row.type === item.id">
                                                <span>{{item.name}}</span>
                                            </div>
                                        </div>
                                    </template>
                                </el-table-column>
                                <el-table-column property="measureId" label="措施名称" show-overflow-tooltip>
                                    <template slot-scope="scope">
                                        <div v-for="item in actionList">
                                            <div v-if="scope.row.measureId === item.id">
                                                <span>{{item.context}}</span>
                                            </div>
                                        </div>
                                    </template>
                                </el-table-column>
                                <el-table-column property="standId" label="标准名称" show-overflow-tooltip>
                                    <template slot-scope="scope">
                                        <div v-for="item in standardList">
                                            <div v-if="scope.row.standId === item.ruleStandId">
                                                <span>{{item.text}}</span>
                                            </div>
                                        </div>
                                    </template>
                                </el-table-column>
                                <el-table-column label="操作" width="150" align="center">
                                    <template slot-scope="scope">
                                        <el-button type="text" size="small" @click="openApproveActionDialog('修改', scope.row, scope.$index)">修改</el-button>
                                        <el-button type="text" size="small" style="color: red" @click="deleteApproveItem(scope.$index)">删除</el-button>
                                    </template>
                                </el-table-column>
                            </el-table>
                </div>
                <div align="right" style="padding-top: 10px">
                    <el-button type="warning" @click="approveLevelDialog = false" size="default" plain>取消</el-button>
                    <el-button type="primary" @click="submitApproveLevel()" size="default">确认</el-button>
                </div>
            </el-form>
        </el-dialog>
        <approve-item-dialog ref="approveItemDialogRef" @addApprovalItem="achieveApprovalItem"></approve-item-dialog>
    </div>
</template>
<script>
import approveItemDialog from './approveItemDialog.vue';
import {safetyActionApi} from "../../../../../api/safetyAction";
import {approveBasicApi} from "../../../../../api/approveBasic";
export default {
    name: 'approveLevelDialog',
    components: { approveItemDialog },
    data(){
        return{
            title: '',
            tableKey:'',
            activeName: 'ApproveAction',
            approveLevelDialog: false,
            approveLevelForm: {
                id: null,
                stepName: null,
                stepSerial: null,
                type: null,
                continueTime: null,
                continueTimeUnit: null,
                unitList: [],
                itemList: []
            },
            approveLevelFormRule: {
                stepName: [{ required: true, message: '请填写层次名称', trigger: 'blur' }],
                type: [{ required: true, message: '请选择审批层级', trigger: 'change' }],
                unitList: [{ required: true, message: '请选择审批人', trigger: 'change' }],
                continueTime: [{ required: true, message: '请填写有效时间', trigger: 'blur' }]
            },
            departmentList: [],
            userList: [],
            timeList: [
                { id: 1, name: '日' },
                { id: 2, name: '时' },
                { id: 3, name: '分' }
            ],
            typeList: [
                { id: 1, name: '单人' },
                { id: 2, name: '多人' },
                { id: 3, name: '分析人' }
            ],
            workLevelList: [],
            actionList: [],
            standardList: []
        }
    },
    created() {
        this.getActionData()
        this.getStandardData()
    },
    methods:{
        showApproveLevelDialog(type, value, userList) {
            this.approveLevelDialog = true;
            this.userList = userList;
            this.$nextTick(() => {
                this.$refs["approveLevelFormRef"].clearValidate()
            })
            if (type === '新增') {
                this.title = '新增审批层级';
                this.approveLevelForm = {
                    id: null,
                    stepName: null,
                    stepSerial: null,
                    type: null,
                    continueTime: null,
                    continueTimeUnit: null,
                    unitList: [],
                    itemList: []
                };
            } else {
                this.title = '修改审批层级';
                this.approveLevelForm = JSON.parse(JSON.stringify(value));
                this.approveLevelForm.unitList = this.approveLevelForm.unitList.map((item) => {
                    return item.bindUid;
                });
            }
        },
        openApproveActionDialog(type, value, index) {
            this.$refs["approveLevelFormRef"].validate((valid) => {
                if (valid) {
                    this.$refs.approveItemDialogRef.showApproveItemDialog(type, value, index, this.approveLevelForm, this.standardList, this.actionList);
                } else {
                    this.$message({
                        type: 'warning',
                        message: '请先完善审批层级信息,才能选择审批项'
                    });
                }
            });
        },
        submitApproveLevel() {
            this.$refs["approveLevelFormRef"].validate((valid) => {
                if (valid) {
                    this.approveLevelForm.unitList = this.approveLevelForm.unitList.map((item) => {
                        return { bindUid: item };
                    });
                    this.$emit('addApprovalLevel', this.approveLevelForm, this.title);
                    this.approveLevelDialog = false;
                } else {
                    this.$message({
                        type: 'warning',
                        message: '请完善审批层级基本信息'
                    });
                }
            });
        },
        achieveApprovalItem(value, title, index) {
            debugger
            if (title === '新增审批项') {
                this.approveLevelForm.itemList.push(value);
            } else {
                // this.approveLevelForm.itemList[index] = JSON.parse(JSON.stringify(value));
                this.$set(this.approveLevelForm.itemList,index,value)
            }
        },
        deleteApproveItem(index) {
            this.approveLevelForm.itemList.splice(index, 1);
        },
        async getActionData() {
            let res = await safetyActionApi().getAllSafetyActionList({ workType: null, type: null, context: null });
            if (res.data.code === '200') {
                this.actionList = res.data.data;
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
        async getStandardData() {
            let res = await approveBasicApi().getAllApproveBasicList({ ruleStandType: null, title: null });
            if (res.data.code === '200') {
                this.standardList = res.data.data;
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
    },
};
</script>
<style scoped></style>
src/views/specialWorkManage/workFlow/approveRule/components/approveRuleDialog.vue
对比新文件
@@ -0,0 +1,484 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog :visible.sync="ifShowApproveRuleDialog" :title="title" :close-on-click-modal="false">
            <el-form :model="approveRuleForm" label-width="120px" ref="approveRuleFormRef" :rules="approveRuleFormRules">
                    <el-col :span="24">
                        <el-form-item label="任务名称" prop="ruleName">
                            <el-input v-model="approveRuleForm.ruleName" :disabled="!disabled" class="input-add" placeholder="请填写任务名称"> </el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="部门名称" prop="depId">
                            <el-select v-model="approveRuleForm.depId" @change="clearValue" :disabled="!disabled" placeholder="请选择作业类型" class="input-add">
                                <el-option v-for="item in departmentList" :key="item.id" :value="item.id" :label="item.department"></el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="作业类型" prop="workType">
                            <el-select v-model="approveRuleForm.workType" @change="clearValue" :disabled="!disabled" placeholder="请选择作业类型" class="input-add">
                                <el-option v-for="item in workTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                        <el-col :span="24" v-if="approveRuleForm.workType === 3 || approveRuleForm.workType === 6 || approveRuleForm.workType === 8 || approveRuleForm.workType === 1">
                        <el-form-item label="作业等级" prop="workLevel">
                            <el-select v-model="approveRuleForm.workLevel" :disabled="!disabled" placeholder="请选择作业等级" class="input-add">
                                <el-option v-for="item in workLevelList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="创建审批链">
                            <div style="width: 100%;padding-bottom: 10px" v-show="disabled">
                                <el-button type="primary" size="default" @click="openApproveLevelDialog('新增', '')">新增审批层级</el-button>
                            </div>
                            <div style="width: 100%; margin-left: -30px">
                                <div v-for="(item, index) in approveRuleForm.stepList" class="stepItem">
                                    <div class="stepNum">{{ index + 1 }}</div>
                                    <div class="stepCard">
                                        <el-card class="box-card">
                                            <div class="text item">
                                                层级名称:<span>{{ item.stepName }}</span>
                                            </div>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                所属设备区域:<span>{{ item.regionId }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item" v-for="i in typeList">
                                                <div v-if="i.id === item.type">
                                                    审批层级:<span>{{ i.name }}</span>
                                                </div>
                                            </div>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                关联RFID:<span>{{ item.rfidId }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item">
                                                审批人:<span>{{
                                                    JSON.parse(JSON.stringify(
                                                        item.unitList
                                                            .map((item) => {
                                                                // for(let i in userList){
                                                                //     debugger
                                                                //     if(userList[i].id === item.bindUid){
                                                                //         return userList[i].realname
                                                                //     }
                                                                // }
                                                                return userList.find((i) => i.id === item.bindUid).realname;
                                                            })
                                                            .join('、')
                                                    ))
                                                }}</span>
                                            </div>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                巡检指标:<span>{{ item.quotaId }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item" v-for="i in timeList">
                                                <div v-if="i.id === item.continueTimeUnit">
                                                    审批有效时长:<span>{{ item.continueTime }}</span>
                                                    <span>{{ i.name }}</span>
                                                </div>
                                            </div>
                                            <!--                                            <div class="text item">-->
                                            <!--                                                数据填报类型:<span>{{ item.thisReportType }}</span>-->
                                            <!--                                            </div>-->
                                            <div class="text item">
                                                审批项:<span>{{
                                                    item.itemList
                                                        .map((item) => {
                                                            return item.itemName;
                                                        })
                                                        .join('、')
                                                }}</span>
                                            </div>
                                        </el-card>
                                    </div>
                                    <div v-show="disabled">
                                        <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px" size="default" @click="openApproveLevelDialog('修改', item)">修改</el-button>
                                        <el-button type="danger" size="default" @click="deleteApproveLevel(index, item)">删除</el-button>
                                    </div>
                                </div>
                            </div>
                        </el-form-item>
                    </el-col>
            </el-form>
            <template #footer>
                <div v-show="disabled" class="dialog-footer" align="right">
                    <el-button type="warning" @click="ifShowApproveRuleDialog = false" size="default" plain>取消</el-button>
                    <el-button type="primary" @click="submitApproveRule()" size="default">确认</el-button>
                </div>
            </template>
        </el-dialog>
        <approve-level-dialog ref="approveLevelDialogRef" @addApprovalLevel="achieveApprovalLevel"></approve-level-dialog>
    </div>
</template>
<script>
import approveLevelDialog from './approveLevelDialog.vue';
export default {
    name: 'approveRuleDialog',
    components: {approveLevelDialog},
    data() {
        return {
            title: '',
            pointTitle: '',
            disabled: true,
            ifShowApproveRuleDialog: false,
            inspectPointForm: {
                id: null,
                stepName: null,
                stepSerial: null,
                type: null,
                continueTime: null,
                continueTimeUnit: null,
                unitList: [],
                itemList: []
            },
            approveRuleForm: {
                id: null,
                ruleName: null,
                depId: null,
                workType: null,
                workLevel: null,
                stepList: []
            },
            approveRuleFormRules: {
                ruleName: [{required: true, message: '请填写规则名称', trigger: 'blur'}],
                depId: [{required: true, message: '请选择部门', trigger: 'change'}],
                workLevel: [{required: true, message: '请选择作业等级', trigger: 'change'}],
                workType: [{required: true, message: '请选择作业类型', trigger: 'cahnge'}]
            },
            departmentList: [],
            userList: [],
            typeList: [
                {id: 1, name: '单人'},
                {id: 2, name: '多人'},
                {id: 3, name: '分析人'}
            ],
            timeList: [
                {id: 1, name: '日'},
                {id: 2, name: '时'},
                {id: 3, name: '分'}
            ],
            workTypeList: [
                {id: 1, name: '动火作业'},
                {id: 2, name: '受限空间作业'},
                {id: 3, name: '吊装作业'},
                {id: 4, name: '动土作业'},
                {id: 5, name: '断路作业'},
                {id: 6, name: '高处作业'},
                {id: 7, name: '临时用电作业'},
                {id: 8, name: '盲板抽堵作业'}
            ],
            workLevelList: []
        }
    },
    created() {
    },
    methods: {
        openApproveLevelDialog(type, value) {
            this.$refs.approveLevelDialogRef.showApproveLevelDialog(type, value, this.userList);
        },
        achieveApprovalLevel(value, title) {
            if (title === '新增审批层级') {
                if (this.approveRuleForm.stepList.length === 0) {
                    value.stepSerial = 1;
                    this.approveRuleForm.stepList.push(value);
                } else {
                    value.stepSerial = (this.approveRuleForm.stepList[this.approveRuleForm.stepList.length - 1].stepSerial) +1;
                    this.approveRuleForm.stepList.push(value);
                }
            } else {
                let result = this.approveRuleForm.stepList.findIndex((item) => item.stepSerial === value.stepSerial);
                // this.approveRuleForm.stepList[result] = JSON.parse(JSON.stringify(value));
                this.$set(this.approveRuleForm.stepList,result,value)
            }
        },
        showApproveRuleDialog(type, value, departmentList, userList, workTypeList) {
            this.ifShowApproveRuleDialog = true;
            this.userList = userList;
            this.workTypeList = workTypeList;
            this.departmentList = departmentList;
            this.$nextTick(()=>{
                this.$refs["approveRuleFormRef"].clearValidate()
            })
            if (type === '新增') {
                this.disabled = true;
                this.title = '新增审批规则';
                this.approveRuleForm = {
                    id: null,
                    ruleName: null,
                    depId: null,
                    workType: null,
                    workLevel: null,
                    stepList: []
                };
            } else if (type === '修改') {
                this.disabled = true;
                this.title = '修改审批规则';
                this.approveRuleForm = JSON.parse(JSON.stringify(value));
                this.setValue(value.workType);
            } else {
                this.disabled = false;
                this.title = '查看审批规则';
                this.setValue(value.workType);
                this.approveRuleForm = JSON.parse(JSON.stringify(value));
            }
        },
        deleteApproveLevel(index, item) {
            this.approveRuleForm.stepList.splice(index, 1);
        },
        clearValue() {
            if (this.approveRuleForm.workType === 1) {
                this.approveRuleForm.workLevel = null;
                this.workLevelList = [
                    {id: 3, name: '特级动火作业'},
                    {id: 1, name: '一级动火作业'},
                    {id: 2, name: '二级动火作业'}
                ];
            } else if (this.approveRuleForm.workType === 3) {
                this.approveRuleForm.workLevel = null;
                this.workLevelList = [
                    {id: 8, name: '一级吊装作业'},
                    {id: 9, name: '二级吊装作业'},
                    {id: 10, name: '三级吊装作业'}
                ];
            } else if (this.approveRuleForm.workType === 6) {
                this.approveRuleForm.workLevel = null;
                this.workLevelList = [
                    {id: 7, name: '特级高处作业'},
                    {id: 4, name: '一级高处作业'},
                    {id: 5, name: '二级高处作业'},
                    {id: 6, name: '三级高处作业'},
                ];
            } else if (this.approveRuleForm.workType === 8) {
                this.approveRuleForm.workLevel = null;
                this.workLevelList = [
                    {id: 11, name: '抽盲板作业'},
                    {id: 12, name: '堵盲板作业'}
                ];
            } else {
                this.approveRuleForm.workLevel = null;
                this.workLevelList = [];
            }
        },
        setValue(workType) {
            if (workType === 1) {
                this.workLevelList = [
                    {id: 3, name: '特级动火作业'},
                    {id: 1, name: '一级动火作业'},
                    {id: 2, name: '二级动火作业'},
                ];
            } else if (workType === 3) {
                this.workLevelList = [
                    {id: 8, name: '一级吊装作业'},
                    {id: 9, name: '二级吊装作业'},
                    {id: 10, name: '三级吊装作业'}
                ];
            } else if (workType === 6) {
                this.workLevelList = [
                    {id: 7, name: '四级高处作业'},
                    {id: 4, name: '一级高处作业'},
                    {id: 5, name: '二级高处作业'},
                    {id: 6, name: '三级高处作业'}
                ];
            } else if (workType === 8) {
                this.workLevelList = [
                    {id: 11, name: '抽盲板作业'},
                    {id: 12, name: '堵盲板作业'}
                ];
            } else {
                this.workLevelList = [];
            }
        },
        parseNumber(type, value) {
            if (type === '时间单位') {
                return this.timeList.find((item) => item.id === value).name;
            }
        },
        submitApproveRule() {
            this.$refs["approveRuleFormRef"].validate(async (valid) => {
                if (valid) {
                    if (this.title === '新增审批规则') {
                        let res = await approveRuleApi().addApproveRule(this.approveRuleForm);
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '审批规则新增成功',
                                duration: 2000
                            });
                            this.ifShowApproveRuleDialog = false;
                            this.$emit('refreshApproveRule');
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        let res = await approveRuleApi().modApproveRule(this.approveRuleForm);
                        if (res.data.code === '200') {
                            this.$message({
                                type: 'success',
                                message: '审批规则修改成功',
                                duration: 2000
                            });
                            this.ifShowApproveRuleDialog = false;
                            this.$emit('refreshApproveRule');
                        } else {
                            this.$message({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    }
                } else {
                    this.$message({
                        type: 'warning',
                        message: '请完善基本信息'
                    });
                }
            });
        }
    },
};
</script>
<style scoped lang="scss">
$homeNavLengh: 8;
.home-container {
    height: calc(100vh - 144px);
    box-sizing: border-box;
    overflow: hidden;
    .homeCard {
        width: 100%;
        padding: 20px;
        box-sizing: border-box;
        background: #fff;
        border-radius: 4px;
        .main-card {
            width: 100%;
            height: 100%;
            .cardTop {
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 20px;
                .mainCardBtn {
                    margin: 0;
                }
            }
            .pageBtn {
                height: 60px;
                display: flex;
                align-items: center;
                justify-content: right;
                .demo-pagination-block + .demo-pagination-block {
                    margin-top: 10px;
                }
                .demo-pagination-block .demonstration {
                    margin-bottom: 16px;
                }
            }
        }
        &:last-of-type {
            height: calc(100% - 100px);
        }
    }
    .el-row {
        display: flex;
        align-items: center;
        margin-bottom: 20px;
        &:last-child {
            margin-bottom: 0;
        }
        .grid-content {
            align-items: center;
            min-height: 36px;
        }
        .topInfo {
            display: flex;
            align-items: center;
            font-size: 16px;
            font-weight: bold;
            & > div {
                white-space: nowrap;
                margin-right: 20px;
            }
        }
    }
}
.stepItem {
    width: 100%;
    display: flex;
    align-items: flex-start;
    margin-bottom: 30px;
    margin-left: 30px;
    padding-bottom: 30px;
    border-left: 2px solid #ccc;
    &:first-of-type {
        margin-top: 30px;
    }
    &:last-of-type {
        margin-bottom: 0;
        border-left: none;
    }
    .stepNum {
        width: 30px;
        height: 30px;
        border-radius: 15px;
        box-sizing: border-box;
        color: #333;
        border: 1px solid #999;
        line-height: 28px;
        text-align: center;
        margin-right: 10px;
        margin-left: -16px;
        margin-top: -30px;
    }
    .stepCard {
        width: 100%;
        margin-top: -30px;
        .box-card {
            width: 100%;
            >>>.el-card__header {
                padding: 10px 15px;
            }
            .card-header {
                width: 100%;
                display: flex;
                justify-content: space-between;
                align-items: center;
                & > div:first-of-type {
                    margin-right: 80px;
                    font-size: 18px;
                    font-weight: bold;
                }
            }
        }
    }
    &:hover .card-header {
        color: #0098f5;
    }
    &:hover .stepNum {
        border: 2px solid #0098f5;
        color: #0098f5;
    }
}
/deep/.el-date-editor {
    width: 100%;
}
</style>
src/views/specialWorkManage/workFlow/approveRule/index.vue
对比新文件
@@ -0,0 +1,409 @@
<template>
    <div class="home-container">
        <div style="height: 100%">
            <el-row class="homeCard">
                <div class="basic-line">
                    <span>规则名称:</span>
                    <el-input v-model="tableData.params.searchParams.ruleName" class="input-box" placeholder="规则名称"> </el-input>
                </div>
                <div class="basic-line">
                    <span>部门:</span>
                    <el-select v-model="tableData.params.searchParams.depId" clearable filterable class="input-box" placeholder="作业类型">
                        <el-option v-for="item in departmentList" :key="item.id" :label="item.department" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div class="basic-line">
                    <span>作业类型:</span>
                    <el-select v-model="tableData.params.searchParams.workType" clearable filterable class="input-box" placeholder="作业类型">
                        <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div class="basic-line">
                    <span>作业等级:</span>
                    <el-select v-model="tableData.params.searchParams.workLevel" clearable filterable class="input-box" placeholder="作业等级">
                        <el-option v-for="item in workLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                    </el-select>
                </div>
                <div style="padding-bottom: 10px">
                    <el-button type="primary" @click="getApproveRule">查询</el-button>
                    <el-button plain @click="reset">重置</el-button>
                </div>
            </el-row>
            <div class="homeCard">
                <div class="main-card">
                    <el-row class="cardTop">
                        <el-col :span="24" class="mainCardBtn">
                            <el-button type="primary"  size="default" @click="openApproveRuleDialog('新增', {})">新建</el-button>
                            <el-button type="danger"  size="default" @click="deleteMoreApproveRule" plain>批量删除</el-button>
                        </el-col>
                    </el-row>
                    <el-table ref="multipleTableRef" :data="tableData.approveRuleData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
                        <el-table-column type="selection" width="55" />
                        <el-table-column property="ruleName" label="任务名称" />
                        <el-table-column property="workType" label="作业类型">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.workType, '作业类型') }}
                                </span>
                            </template>
                        </el-table-column>
                        <el-table-column property="workLevel" label="作业等级">
                            <template slot-scope="scope">
                                <span>
                                    {{ parseNumber(scope.row.workLevel, '作业等级') }}
                                </span>
                            </template>
                        </el-table-column>
                        <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="modifiedUname" label="最后修改人" show-overflow-tooltip></el-table-column>
                        <el-table-column prop="gmtModified" label="最后修改时间" show-overflow-tooltip></el-table-column>
                        <el-table-column fixed="right" label="操作" align="center" width="300">
                            <template slot-scope="scope">
                                <el-button link type="text"  @click="openApproveRuleDialog('查看', scope.row)">查看</el-button>
                                <el-button link type="text"  @click="openApproveRuleDialog('修改', scope.row)">修改</el-button>
                                <el-button link type="text" style="color: red" @click="deleteApproveRule(scope.row)">删除</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <div class="pageBtn">
                        <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination>
                    </div>
                </div>
            </div>
        </div>
        <approve-rule-dialog ref="approveRuleDialogRef" @refreshApproveRule="getApproveRule"></approve-rule-dialog>
    </div>
</template>
<script>
import approveRuleDialog from './components/approveRuleDialog'
import { approveRuleApi } from '../../../../api/approveRule'
import {getDepartmentList} from "../../../../api/departmentManage";
import {safetyInspectionItemName} from "../../../../api/safetySelfInspection";
export default {
    name: 'index',
    components: { approveRuleDialog },
    data(){
        return{
            tableData: {
                approveRuleData: [],
                total: 0,
                loading: false,
                params: {
                    pageIndex: 1,
                    pageSize: 10,
                    searchParams: {
                        ruleName: null,
                        depId: null,
                        workType: null,
                        workLevel: null
                    }
                }
            },
            workTypeList: [
                { id: 1, name: '动火作业' },
                { id: 2, name: '受限空间作业' },
                { id: 3, name: '吊装作业' },
                { id: 4, name: '动土作业' },
                { id: 5, name: '断路作业' },
                { id: 6, name: '高处作业' },
                { id: 7, name: '临时用电作业' },
                { id: 8, name: '盲板抽堵作业' }
            ],
            workLevelList: [
                { id: 3, name: '特级动火作业' },
                { id: 1, name: '一级动火作业' },
                { id: 2, name: '二级动火作业' },
                { id: 7, name: '特级高处作业' },
                { id: 4, name: '一级高处作业' },
                { id: 5, name: '二级高处作业' },
                { id: 6, name: '三级高处作业' },
                { id: 8, name: '一级吊装作业' },
                { id: 9, name: '二级吊装作业' },
                { id: 10, name: '三级吊装作业' },
                { id: 11, name: '抽盲板作业' },
                { id: 12, name: '堵盲板作业' }
            ],
            departmentList: [],
            userList: [],
            deleteList: { ids: [] },
            timeType: [
                { id: 1, name: '分' },
                { id: 2, name: '小时' },
                { id: 3, name: '日' },
                { id: 4, name: '月' },
                { id: 5, name: '年' }
            ]
        }
    },
    created(){
        this.getApproveRule();
        this.getDepartmentData();
        this.getUserData();
    },
    methods:{
        async getApproveRule() {
            let res = await approveRuleApi().getApproveRuleList(this.tableData.params);
            if (res.data.code === '200') {
                this.tableData.approveRuleData = res.data.data;
                this.tableData.total = res.data.total;
            } else {
                this.$message({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        },
        openApproveRuleDialog(type, value) {
            this.$refs.approveRuleDialogRef.showApproveRuleDialog(type, value, this.departmentList, this.userList, this.workTypeList);
        },
        async getDepartmentData() {
            let res = await getDepartmentList({pageSize:1000,pageIndex:1})
            if(res.data.code === '200'){
                this.departmentList = res.data.result.result
            }else{
                this.$message({
                    message:res.data.message,
                    type:'warning'
                })
            }
        },
        async getUserData() {
            let res = await safetyInspectionItemName()
            if(res.data.code === '200'){
                this.userList = res.data.result
            }else{
                this.$message({
                    message:res.data.message,
                    type:'warning'
                })
            }
        },
        deleteApproveRule(row) {
            this.$confirm(`此操作将永久删除该审批规则,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await approveRuleApi().deleteApproveRule({ ids: [row.id] });
                    this.deleteList.ids = [];
                    if (res.data.code === '200') {
                        this.$message({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await this.getApproveRule();
                    } else {
                        this.$message({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        },
        deleteMoreApproveRule() {
            this.$confirm.confirm(`此操作将永久删除这些审批规则,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await approveRuleApi().deleteApproveRule(this.deleteList);
                    if (res.data.code === '200') {
                        this.$message({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await this.getApproveRule();
                    } else {
                        this.$message({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        },
        parseNumber(value, type) {
            if (type === '作业类型') {
                return this.workTypeList.find((item) => item.id === value).name;
            } else if (type === '作业等级') {
                return this.workLevelList.find((item) => item.id == value).name;
            } else {
            }
        },
        handleSelectionChange(val) {
            this.deleteList.ids = val.map((item) => {
                return item.ruleId;
            });
        },
        onHandleSizeChange(val) {
            this.tableData.params.pageSize = val;
            this.getApproveRule();
        },
        onHandleCurrentChange(val) {
            this.tableData.params.pageIndex = val;
            this.getApproveRule();
        },
        reset() {
            this.tableData.params = {
                pageIndex: 1,
                pageSize: 10,
                searchParams: {
                    ruleName: null,
                    depId: null,
                    workType: null,
                    workLevel: null
                }
            };
        }
    },
};
</script>
<style scoped lang="scss">
$homeNavLengh: 8;
.home-container {
    height: calc(100vh - 100px);
    box-sizing: border-box;
    overflow: hidden;
    .homeCard {
        width: 100%;
        padding: 20px;
        box-sizing: border-box;
        background: #fff;
        border-radius: 4px;
        .main-card {
            width: 100%;
            height: 100%;
            .cardTop {
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 20px;
                .mainCardBtn {
                    margin: 0;
                }
            }
            .pageBtn {
                height: 60px;
                display: flex;
                align-items: center;
                justify-content: right;
                .demo-pagination-block + .demo-pagination-block {
                    margin-top: 10px;
                }
                .demo-pagination-block .demonstration {
                    margin-bottom: 16px;
                }
            }
        }
        &:last-of-type {
            height: calc(100% - 100px);
        }
    }
    .el-row {
        display: flex;
        align-items: center;
        margin-bottom: 20px;
        &:last-child {
            margin-bottom: 0;
        }
        .grid-content {
            align-items: center;
            min-height: 36px;
        }
        .topInfo {
            display: flex;
            align-items: center;
            font-size: 16px;
            font-weight: bold;
            & > div {
                white-space: nowrap;
                margin-right: 20px;
            }
        }
    }
}
.stepItem {
    width: 100%;
    display: flex;
    align-items: flex-start;
    margin-bottom: 30px;
    margin-left: 30px;
    padding-bottom: 30px;
    border-left: 2px solid #ccc;
    &:first-of-type {
        margin-top: 30px;
    }
    &:last-of-type {
        margin-bottom: 0;
        border-left: none;
    }
    .stepNum {
        width: 30px;
        height: 30px;
        border-radius: 15px;
        box-sizing: border-box;
        color: #333;
        border: 1px solid #999;
        line-height: 28px;
        text-align: center;
        margin-right: 10px;
        margin-left: -16px;
        margin-top: -30px;
    }
    .stepCard {
        width: 100%;
        margin-top: -30px;
        .box-card {
            width: 100%;
            >>>.el-card__header {
                padding: 10px 15px;
            }
            .card-header {
                width: 100%;
                display: flex;
                justify-content: space-between;
                align-items: center;
                & > div:first-of-type {
                    margin-right: 80px;
                    font-size: 18px;
                    font-weight: bold;
                }
            }
        }
    }
    &:hover .card-header {
        color: #0098f5;
    }
    &:hover .stepNum {
        border: 2px solid #0098f5;
        color: #0098f5;
    }
}
.page-position{
    float: right;
    padding-top: 10px;
}
</style>
src/views/specialWorkManage/workFlow/index.vue
对比新文件
@@ -0,0 +1,13 @@
<template>
    <router-view></router-view>
</template>
<script>
    export default {
        name: "index"
    }
</script>
<style scoped>
</style>
src/views/specialWorkManage/workTicket/index.vue
对比新文件
@@ -0,0 +1,13 @@
<template>
    <router-view></router-view>
</template>
<script>
    export default {
        name: "index"
    }
</script>
<style scoped>
</style>
src/views/specialWorkManage/workTicket/myApproval/index.vue
对比新文件
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
    name: "index"
}
</script>
<style scoped>
</style>
src/views/specialWorkManage/workTicket/myJobApply/index.vue
对比新文件
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
    name: "index"
}
</script>
<style scoped>
</style>
src/views/specialWorkManage/workTicket/workApply/index.vue
对比新文件
@@ -0,0 +1,13 @@
<template>
<div>1</div>
</template>
<script>
export default {
    name: "index"
}
</script>
<style scoped>
</style>