Parcourir la source

fix:设备管理看板柱状图间距以及风险控制进度查询修改

zhangjingyuan il y a 2 ans
Parent
commit
708ff77920

+ 89 - 0
src/views/system/jbdHome/board/component/fengxianPie.vue

@@ -0,0 +1,89 @@
+<template>
+    <div class="pieView">
+        <div style="width: 100%; height: 100%;" />
+    </div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+export default {
+    props: {
+        info: {
+            type: Object
+        }
+    },
+    data () {
+        return {
+            showChart: true
+        }
+    },
+    mounted () {
+    },
+    methods: {
+        getMiddleLeft (idSelector) {
+            const chartDom = document.getElementById(idSelector)
+            var myChart = echarts.init(chartDom)
+            const radius = '50%'
+            const inData = this.info.data
+            var option
+            option = {
+                title: {
+                    show: true,
+                    left: 'left',
+                    textStyle: {
+                        color: '#1f1f1f',
+                        fontSize: 18,
+                        fontWeight: '600'
+                    }
+                },
+                color: this.info.color,
+                tooltip: {
+                    trigger: 'item',
+                    formatter: '{d}%'
+                },
+                label: {
+                    formatter: '{b}\n{d}%',
+                    edgeDistance: '20%'
+                },
+
+                legend: {
+                    show: true,
+                    orient: 'vertical',
+                    itemGap: 6,
+                    z: 3,
+                    left: 'left',
+                    textStyle: {
+                        color: '#1f1f1f'
+                    }
+                },
+                series: [
+                    {
+                        type: 'pie',
+                        radius: radius,
+                        center: ['50%', '50%'],
+                        data: this.info.data,
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        },
+                        labelLine: {
+                            distanceToLabelLine: 0
+                        }
+                    }
+                ]
+            }
+            myChart.setOption(option)
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.pieView {
+width: 100%;
+height: 100%;
+overflow: hidden;
+}
+</style>

+ 15 - 6
src/views/system/jbdHome/board/component/moreBar.vue

@@ -18,6 +18,7 @@ export default {
     props: {
         info: {
             type: Object,
+            // eslint-disable-next-line vue/require-valid-default-prop
             default: {}
         }
     },
@@ -38,7 +39,7 @@ export default {
             const this_ = this
             const series = []
             console.log(this_.info, this_.info.config.idSelector, '12')
-            if (this_.info.data.source[0] == 999) {
+            if (this_.info.data.source[0] === 999) {
                 this.showChart = false
                 return
             }
@@ -67,23 +68,31 @@ export default {
                 if (max < 7) {
                     interval = 1
                 } else {
-                // interval = parseInt(max / 7)
                     interval = Math.ceil((parseInt(max / 7) / 10)) * 10
                 }
             }
             if (this_.info.config.idSelector === 'eqWeihu') {
+                let jihuamax = 0
+                let wanchengmax = 0
                 let max = 0
                 this_.info.data.source.forEach(item => {
                     console.log(item.计划数)
                     if (item.计划数 > max) {
-                        max = item.计划数
+                        jihuamax = item.计划数
                     }
                 })
+                this_.info.data.source.forEach(item => {
+                    console.log(item.完成数)
+                    if (item.完成数 > wanchengmax) {
+                        wanchengmax = item.完成数
+                    }
+                })
+                max = wanchengmax > jihuamax ? wanchengmax : jihuamax
                 if (max < 7) {
                     interval = 1
                 } else {
                 // interval = parseInt(max / 7)
-                    interval = Math.ceil((parseInt(max / 7) / 10)) * 10
+                    interval = Math.ceil((parseInt(max / 7)))
                 }
             }
             const option = {
@@ -95,8 +104,8 @@ export default {
                 },
                 grid: { // 让图表占满容器
                     top: '40px',
-                    left: '40px',
-                    right: '40px',
+                    left: '65px',
+                    right: '60px',
                     bottom: '40px'
                 },
                 tooltip: {},

+ 101 - 0
src/views/system/jbdHome/board/component/tableCom.vue

@@ -0,0 +1,101 @@
+<!-- eslint-disable vue/valid-v-for -->
+<template>
+    <div>
+        <el-table
+            :data="tableList"
+            style="width:100%"
+            height="300"
+        >
+            <el-table-column
+                v-for="(item) in tableProp"
+                :key="item.prop"
+                :prop="item.prop"
+                :label="item.label"
+                width="150"
+            />
+            <el-table-column v-if="controlSchedule" key="schedule" prop="schedule" label="进度">
+                <template slot-scope="scope">
+                    <el-progress :percentage="scope.row.percentage" :color="customColorMethod(percentage)" />
+                </template>
+            </el-table-column>
+
+        </el-table>
+
+    </div>
+</template>
+
+<script>
+export default {
+    props: {
+        tableProp: {
+            type: Array,
+            default: () => {
+                return [{ prop: 'date', label: '日期' }, { prop: 'province', label: '省份' }, { prop: 'name', label: '姓名' }]
+            }
+        },
+        percentage: {
+            type: Number,
+            default: 0
+        },
+        tableList: {
+            type: Array,
+            default: () => {
+                return [{
+                    date: '2016-05-07',
+                    name: '王小虎',
+                    province: '上海',
+                    city: '普陀区',
+                    address: '上海市普陀区金沙江路 1518 弄',
+                    zip: 200333
+                }]
+            }
+        },
+        controlSchedule: {
+            type: Boolean,
+            default: false
+        },
+        pageShow: {
+            type: Boolean,
+            default: false
+        }
+    },
+    data () {
+        return {
+            tableData: [],
+            // 步骤条步数
+            activeIndex: 20,
+            currentPage: 1
+        }
+    },
+    computed: {
+
+    },
+    watch: {
+
+    },
+    created () {
+        this.getInit()
+    },
+    methods: {
+        getInit () {
+            this.tableData = this.tableList
+        },
+        customColorMethod (percentage) {
+            if (percentage < 30) {
+                return '#909399'
+            } else if (percentage < 70) {
+                return '#e6a23c'
+            } else {
+                return '#67c23a'
+            }
+        },
+        handleSizeChange (val) {
+            console.log(`每页 ${val} 条`)
+        },
+        handleCurrentChange (val) {
+            console.log(`当前页: ${val}`)
+        }
+    }
+}
+</script>
+

+ 2 - 2
src/views/system/jbdHome/board/component/zhuzhuangtu.vue

@@ -81,8 +81,8 @@ export default {
                 // },
                 grid: { // 让图表占满容器
                     top: '40px',
-                    left: '40px',
-                    right: '40px',
+                    left: '65px',
+                    right: '60px',
                     bottom: '40px'
                 },
                 xAxis: [

+ 34 - 22
src/views/system/jbdHome/board/equipmentBoard.vue

@@ -427,13 +427,13 @@ export default {
             const sql3 = `select DISTINCT(a.bian_zhi_bu_men_),name_,COUNT(*) AS total  FROM t_sbdj AS a JOIN  ibps_party_position AS b ON a.bian_zhi_bu_men_ = b.id_ WHERE b.name_ not like '%检验科%' and  a.di_dian_ = '${didian}' and a.she_bei_zhuang_ta ='停用'  GROUP BY a.bian_zhi_bu_men_`
             let data1, data2, data3
             await Promise.all([curdPost('sql', sql1), curdPost('sql', sql2), curdPost('sql', sql3)]).then(([res1, res2, res3]) => {
-                if (res1.state == 200) {
+                if (res1.state === 200) {
                     data1 = res1.variables.data
                 }
-                if (res2.state == 200) {
+                if (res2.state === 200) {
                     data2 = res2.variables.data
                 }
-                if (res3.state == 200) {
+                if (res3.state === 200) {
                     data3 = res3.variables.data
                 }
             })
@@ -448,14 +448,14 @@ export default {
             })
             data2.forEach(item => {
                 source.forEach((el, index) => {
-                    if (item.name_ == el.product) {
+                    if (item.name_ === el.product) {
                         source[index]['良好数'] = item.total
                     }
                 })
             })
             data3.forEach(item => {
                 source.forEach((el, index) => {
-                    if (item.name_ == el.product) {
+                    if (item.name_ === el.product) {
                         source[index]['停用数'] = item.total
                     }
                 })
@@ -494,13 +494,25 @@ export default {
             this.weihuBarData.data.dimensions = ['product', '计划数', '完成数']
             let data1, data2
             await Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1, res2]) => {
-                if (res1.state == 200) {
+                if (res1.state === 200) {
                     data1 = res1.variables.data
                 }
-                if (res2.state == 200) {
+                if (res2.state === 200) {
                     data2 = res2.variables.data
                 }
             })
+
+            data2 = [
+
+                { bian_zhi_bu_men_: '1166373523464126464', name_: '检验科', total: 4 },
+
+                { bian_zhi_bu_men_: '1166703356459089920', name_: '临检组', total: 2544 },
+
+                { bian_zhi_bu_men_: '1166703455549521920', name_: '生化组', total: 2559 },
+
+                { bian_zhi_bu_men_: '1166703521244905472', name_: '免疫组', total: 1331 },
+
+                { bian_zhi_bu_men_: '1166703593022029824', name_: '微生物组', total: 2055 }]
             const source = []
             data1.forEach((item, index) => {
                 source.push({
@@ -512,10 +524,10 @@ export default {
             data2.forEach(item => {
                 let lock = true
                 source.forEach((el, index) => {
-                    if (item.name_ == el.product) {
+                    if (item.name_ === el.product) {
                         source[index]['完成数'] = item.total
                         lock = false
-                    } else if (lock && index == source.length - 1) {
+                    } else if (lock && index === source.length - 1) {
                         source.push({
                             product: item.name_,
                             '计划数': 0,
@@ -534,10 +546,10 @@ export default {
             this.moreBarData.data.source.forEach(item => {
                 let lock = true
                 source.forEach((el, index) => {
-                    if (item.product == el.product) {
+                    if (item.product === el.product) {
                         lock = false
                     }
-                    if (item.product != el.product && index == source.length - 1 && lock) {
+                    if (item.product !== el.product && index === source.length - 1 && lock) {
                         source.push({
                             product: item.product,
                             '计划数': 0,
@@ -546,7 +558,7 @@ export default {
                     }
                 })
             })
-            if (source.length == 0) {
+            if (source.length === 0) {
                 this.weihuBarData.data.source = [999]
             } else {
                 this.weihuBarData.data.source = source
@@ -561,7 +573,7 @@ export default {
             const source = []
             let data1
             await Promise.all([curdPost('sql', sql1)]).then(([res1, res2]) => {
-                if (res1.state == 200) {
+                if (res1.state === 200) {
                     data1 = res1.variables.data
                 }
             })
@@ -570,7 +582,7 @@ export default {
             let i = 0
             data1.forEach((item, index) => {
                 let zichan = item.zi_chan_yuan_zhi_
-                if (zichan == '' || zichan == null || zichan == undefined) {
+                if (zichan === '' || zichan === null || zichan === undefined) {
                     zichan = 0
                 } else {
                     if (zichan.includes('.')) {
@@ -581,7 +593,7 @@ export default {
                 if (partyMony.length === 0) {
                     partyMony = [{ party: item.name_, mony: zichan }]
                 } else {
-                    if (item.name_ == data1[index - 1].name_) {
+                    if (item.name_ === data1[index - 1].name_) {
                         partyMony[i].mony += zichan
                     } else {
                         partyMony.push({ party: item.name_, mony: zichan })
@@ -626,10 +638,10 @@ export default {
             this.jiaozhunBarData.data.dimensions = ['product', '计划数', '完成数']
             let data1, data2
             await Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1, res2]) => {
-                if (res1.state == 200) {
+                if (res1.state === 200) {
                     data1 = res1.variables.data
                 }
-                if (res2.state == 200) {
+                if (res2.state === 200) {
                     data2 = res2.variables.data
                 }
             })
@@ -644,11 +656,11 @@ export default {
             data2.forEach(item => {
                 let lock = true
                 source.forEach((el, index) => {
-                    if (item.name_ == el.product) {
+                    if (item.name_ === el.product) {
                         source[index]['完成数'] = item.total
                         lock = false
                     }
-                    if (lock && index == source.length - 1) {
+                    if (lock && index === source.length - 1) {
                         source.push({
                             product: item.name_,
                             '计划数': 0,
@@ -667,10 +679,10 @@ export default {
             this.moreBarData.data.source.forEach(item => {
                 let lock = true
                 source.forEach((el, index) => {
-                    if (item.product == el.product) {
+                    if (item.product === el.product) {
                         lock = false
                     }
-                    if (item.product != el.product && index == source.length - 1 && lock) {
+                    if (item.product !== el.product && index === source.length - 1 && lock) {
                         source.push({
                             product: item.product,
                             '计划数': 0,
@@ -749,7 +761,7 @@ export default {
             ]
             dataTypes.forEach(item => {
                 data.forEach(el => {
-                    if (item.she_bei_lei_xing_ == el.she_bei_lei_xing_) {
+                    if (item.she_bei_lei_xing_ === el.she_bei_lei_xing_) {
                         item.total = el.total
                     }
                 })

+ 518 - 0
src/views/system/jbdScan/goods/fengxiangkongzhi.vue

@@ -0,0 +1,518 @@
+<template>
+    <div class="bg">
+        <el-dialog width="70vw" height="50vh" :modal-append-to-body="false" title="风险评估进度查询" :visible.sync="scan">
+            <!-- 表单是否显示 -->
+            <div style="height: 75vh; width: 98%">
+                <div id="box">
+                    <div class="overall">
+                        <!-- 步骤条盒子 -->
+                        <div class="steps-box">
+                            <div class="Article-steps">
+                                <!-- 步骤条背景进度条 -->
+                                <div class="line">
+                                    <span class="plan" :style="`width:${activeIndex * (100 / (stepList.length - 1)) -100 / (stepList.length - 1) / 2}%`" />
+                                </div>
+                                <!-- 每步部分底部文字描述 -->
+                                <span v-for="(i, index) in stepList" :key="index" class="step" :class="(i.stepIndex < activeIndex || activeIndex == 100? 'step-active': (i.stepIndex == activeIndex ? 'current-active':''))">
+                                    <span class="step-num">
+                                        <i v-if="index != 0" class="el-icon-caret-right icon" />
+                                        <p cla>{{ i.title }}</p>
+                                    </span>
+                                    <p class="post">{{ i.post }}</p>
+                                </span>
+                            </div>
+                            <!-- 步骤条对应内容 -->
+                            <div class="Article-content" />
+                        </div>
+                    </div>
+                </div>
+                <template>
+                    <el-tabs v-model="activeName" class="count" @tab-click="handleClick">
+                        <el-tab-pane label="风险等级统计表" name="first">
+                            <div v-show="riskLeveChange" style="width: 50%;">
+                                <tableCom :table-prop="RiskLevelProp" :table-list="RiskLevelList" />
+                            </div>
+                            <div v-show="!riskLeveChange" style="width: 45%; height:350px">
+                                <div id="idSelector1" style="width: 300px; height: 300px; margin:0 auto" />
+                                <PieView ref="firstPieView" :info="riskLevePieView" />
+                            </div>
+                            <div v-show="RiskLevelList.length" class="change" @click="changeFn('first')">切换 <i class="el-icon-refresh" /></div>
+                        </el-tab-pane>
+                        <el-tab-pane label="涉及条款统计表" name="second"><tableCom :table-prop="[]" :table-list="[]" :table-with="50" /></el-tab-pane>
+                        <el-tab-pane label="责任部门统计表统计表" name="third"><tableCom :table-prop="[]" :table-list="[]" /></el-tab-pane>
+                        <el-tab-pane label="风险应对措施统计表" name="fourth">
+                            <div v-show="riskReChange" style="width: 50%;">
+                                <tableCom :table-prop="riskReProp" :table-list="riskReList" />
+                            </div>
+                            <div v-show="!riskReChange" style="width: 45%; height:350px">
+                                <div id="idSelector2" style="width: 300px; height: 300px; margin:0 auto" />
+                                <PieView ref="riskRePieView" :info="riskRePieView" />
+                            </div>
+                            <div v-show="riskReList.length" class="change" @click="changeFn('fourth')">切换 <i class="el-icon-refresh" /></div>
+                        </el-tab-pane>
+                        <el-tab-pane label="剩余风险等级统计表" name="fine">
+                            <div v-show="riskReChange" style="width: 50%;">
+                                <tableCom :table-prop="riskReProp" :table-list="riskReList" />
+                            </div>
+                            <div v-show="!riskReChange" style="width: 45%; height:350px">
+                                <div id="idSelector2" style="width: 300px; height: 300px; margin:0 auto" />
+                                <PieView :info="riskRePieView" />
+                            </div>
+                            <div v-show="riskReList.length" class="change" @click="changeFn('fine')">切换 <i class="el-icon-refresh" /></div>
+                        </el-tab-pane>
+                        <el-tab-pane label="降低风险登记表表" name="six"><tableCom :table-prop="[]" :table-list="[]" :table-with="50" /></el-tab-pane>
+                    </el-tabs>
+                </template>
+                <div>
+                    <div class="tableTitle">风险识别评估</div>
+                    <tableCom :table-prop="RiskIdenProp" :table-list="RiskIdenList" :page-show="true" />
+                    <div v-if="pageShow" class="block">
+                        <el-pagination
+                            :current-page="currentPage"
+                            :page-sizes="[15, 20, 50, 100]"
+                            :page-size="15"
+                            layout="total, sizes, prev, pager, next, jumper"
+                            :total="400"
+                            @size-change="handleSizeChange"
+                            @current-change="handleCurrentChange"
+                        />
+                    </div>
+                </div>
+                <div>
+                    <div class="tableTitle">部门风险改进记录</div>
+                    <tableCom :table-prop="ImproRecordsProp" :table-list="ImproRecordsList " :control-schedule="true" :page-show="true" />
+                </div>
+
+            </div>
+
+        </el-dialog>
+    </div>
+</template>
+<script>
+import * as echarts from 'echarts'
+import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
+import tableCom from '../../jbdHome/board/component/tableCom.vue'
+import PieView from '../../jbdHome/board/component/fengxianPie.vue'
+export default {
+    components: { tableCom, PieView },
+    filters: {
+    },
+    props: {
+        obj: {
+            type: Array
+        },
+        scanVisible: {
+            type: Boolean
+        }
+    },
+    data () {
+        return {
+            value: '',
+            zongid: '',
+            deptList: [],
+            userList: [],
+            visible: true,
+            jieduanValue: 0,
+            // 当前位置
+            activeIndex: 20,
+            // 步骤条步数
+            stepList: [
+                {
+                    stepIndex: 20,
+                    title: '评估计划'
+                    // post: '质量负责人'
+                },
+                {
+                    stepIndex: 40,
+                    title: '实施计划'
+                    // post: '内审组长'
+                },
+                {
+                    stepIndex: 60,
+                    title: '项目登记'
+                    // post: '内审员'
+                },
+                {
+                    stepIndex: 80,
+                    title: '风险改进'
+                    // post: '内审组长'
+                },
+                {
+                    stepIndex: 100,
+                    title: '风险报告'
+                    // post: '内审员'
+                }
+            ],
+            loading: true,
+            scan: true,
+            activeName: 'first',
+            tableProp: [],
+            tableList: [],
+            RiskIdenList: [],
+            RiskIdenProp: [],
+            ImproRecordsList: [],
+            ImproRecordsProp: [],
+            RiskLevelList: [],
+            RiskLevelProp: [],
+            riskLevePieView: {},
+            riskLeveChange: true,
+            riskReList: [],
+            riskReProp: [],
+            riskRePieView: {},
+            riskReChange: true
+        }
+    },
+    watch: {
+        obj (newVal, oldVal) {
+            alert('obj')
+            this.zongid = newVal[0].id_
+            this.getInits()
+        },
+        activeName (newVal, oldVal) {
+            if (newVal === 'first') {
+                this.getRiskLevel()
+            } else if (newVal === 'second') {
+                this.getClauseStatistics()
+            } else if (newVal === 'third') {
+                this.getDepartmentStatistics()
+            } else if (newVal === 'fourth') {
+                this.getRiskResponse()
+            }
+        }
+    },
+    created () {
+        this.zongid = this.obj[0].id_
+        alert('created')
+        this.getInits()
+    },
+    mounted () {
+        const this_ = this
+    },
+    destroyed () {
+        this.$destroy()
+    },
+    methods: {
+        changeFn (type) {
+            if (type === 'first') {
+                this.riskLeveChange = !this.riskLeveChange
+                this.$refs.firstPieView.getMiddleLeft('idSelector1')
+            } else if (type === 'fourth') {
+                this.riskReChange = !this.riskReChange
+                this.$refs.riskRePieView.getMiddleLeft('idSelector2')
+            }
+        },
+        findDept (depId) {
+            const dept = this.deptList.find(i => i.positionId === depId)
+            return dept.positionName
+        },
+        findUser (userId) {
+            const user = this.userList.find(i => i.userId === userId)
+            return user.userName
+        },
+        FindImprovementRecords (guo_shen_) {
+            if (guo_shen_ === '未编制') {
+                return 0
+            } else if (guo_shen_ === '已编制') {
+                return 25
+            } else if (guo_shen_ === '已评估') {
+                return 50
+            } else if (guo_shen_ === '已审核') {
+                return 75
+            } else if (guo_shen_ === '已完成') {
+                return 100
+            }
+        },
+        getInits () {
+            this.getRiskLevel() // 风险等级
+            this.getRiskIdentification()// 风险识别评估表
+            this.getImprovementRecords()// 风险改进记录
+            this.scan = this.scanVisible
+            this.userList = this.$store.getters.userList
+            this.deptList = this.$store.getters.deptList
+        },
+        handleClick (tab, event) {
+            // console.log(tab, event)
+        },
+        // 风险等级
+        async getRiskLevel () {
+            const sql1 = `select COUNT(a.feng_xian_deng_ji) AS total FROM t_fxsbpgbzb AS a,t_fxsbpgb AS b WHERE a.parent_id_ = b.id_ AND a.feng_xian_deng_ji = '低风险'`
+            const sql2 = `select COUNT(a.feng_xian_deng_ji) AS total FROM t_fxsbpgbzb AS a,t_fxsbpgb AS b WHERE a.parent_id_ = b.id_ AND a.feng_xian_deng_ji = '中风险'`
+            const sql3 = `select COUNT(a.feng_xian_deng_ji) AS total FROM t_fxsbpgbzb AS a,t_fxsbpgb AS b WHERE a.parent_id_ = b.id_ AND a.feng_xian_deng_ji = '高风险'`
+            let list1, list2, list3
+            await Promise.all([this.$common.request('sql', sql1), this.$common.request('sql', sql2), this.$common.request('sql', sql3)]).then((res) => {
+                list1 = res[0].variables.data[0]
+                list2 = res[0].variables.data[0]
+                list3 = res[0].variables.data[0]
+            })
+            console.log(list1, 111)
+            const total = parseInt(list1.total) + parseInt(list2.total) + parseInt(list3.total)
+            const gao = list1.total
+            const gao_zhan_bi_ = parseFloat(gao / total * 100).toFixed(2) + '%'
+            const zhong = list2.total
+            const zhong_zhan_bi_ = parseFloat(zhong / total * 100).toFixed(2) + '%'
+            const di = list3.total
+            const di_zhan_bi_ = parseFloat(di / total * 100).toFixed(2) + '%'
+            this.RiskLevelList = [
+                { deng_ji_: '高风险', shu_liang_: gao, zhan_bi_: gao_zhan_bi_ },
+                { deng_ji_: '中风险', shu_liang_: zhong, zhan_bi_: zhong_zhan_bi_ },
+                { deng_ji_: '低风险', shu_liang_: di, zhan_bi_: di_zhan_bi_ },
+                { deng_ji_: '合计', shu_liang_: total, zhan_bi_: '' }
+            ]
+            this.RiskLevelProp = [
+                { prop: 'deng_ji_', label: '风险等级' },
+                { prop: 'shu_liang_', label: '数量' },
+                { prop: 'zhan_bi_', label: '占比' }
+            ]
+            this.riskLevePieView = {
+                data: [{ name: '高风险', value: gao }, { name: '中风险', value: zhong }, { name: '低风险', value: di }],
+                idSelector: 'adhjaodh',
+                color: ['#FF0033', '#3870e0', '#339933']
+            }
+            console.log(this.riskLevePieView, 'this.riskLevePieView')
+        },
+        // 涉及条款统计表
+        getClauseStatistics () {
+            this.tableProp = []
+            this.tableList = []
+        },
+        // 责任部门统计表统计表
+        getDepartmentStatistics () {
+            this.tableProp = []
+            this.tableList = []
+        },
+        // 风险应对措施统计表
+        async getRiskResponse () {
+            const sql1 = `select COUNT(a.feng_xian_ying_du) AS total FROM t_fxsbpgbzb AS a,t_fxsbpgb AS b WHERE a.parent_id_ = b.id_ AND a.feng_xian_ying_du = '风险降低'`
+            const sql2 = `select COUNT(a.feng_xian_ying_du) AS total FROM t_fxsbpgbzb AS a,t_fxsbpgb AS b WHERE a.parent_id_ = b.id_ AND a.feng_xian_ying_du = '风险接受'`
+            const sql3 = `select COUNT(a.feng_xian_ying_du) AS total FROM t_fxsbpgbzb AS a,t_fxsbpgb AS b WHERE a.parent_id_ = b.id_ AND a.feng_xian_ying_du = '风险回避'`
+            let list1, list2, list3
+            await Promise.all([this.$common.request('sql', sql1), this.$common.request('sql', sql2), this.$common.request('sql', sql3)]).then((res) => {
+                list1 = res[0].variables.data[0]
+                list2 = res[0].variables.data[0]
+                list3 = res[0].variables.data[0]
+            })
+            const total = parseInt(list1.total) + parseInt(list2.total) + parseInt(list3.total)
+            const jiang_di_ = list1.total
+            const jiang_di_zhan_bi_ = parseFloat(jiang_di_ / total * 100).toFixed(2) + '%'
+            const jie_shou_ = list2.total
+            const jie_shou_zhan_bi_ = parseFloat(jie_shou_ / total * 100).toFixed(2) + '%'
+            const hui_bi_ = list3.total
+            const hui_bi_zhan_bi_ = parseFloat(hui_bi_ / total * 100).toFixed(2) + '%'
+            this.riskReList = [
+                { cuo_shi_: '风险降低', shu_liang_: jiang_di_, zhan_bi_: jiang_di_zhan_bi_ },
+                { cuo_shi_: '风险接受', shu_liang_: jie_shou_, zhan_bi_: jie_shou_zhan_bi_ },
+                { cuo_shi_: '风险回避', shu_liang_: hui_bi_, zhan_bi_: hui_bi_zhan_bi_ }
+            ]
+            this.riskReProp = [
+                { prop: 'cuo_shi_', label: '应对措施' },
+                { prop: 'shu_liang_', label: '数量' },
+                { prop: 'zhan_bi_', label: '占比' }
+            ]
+            this.riskRePieView = {
+                data: [{ name: '风险降低', value: jiang_di_ }, { name: '风险接受', value: jie_shou_ }, { name: '风险回避', value: hui_bi_ }],
+                config: { title: '', idSelector: 'riskResponse222' },
+                color: ['#339933', '#3870e0', '#FF0033']
+            }
+            console.log(this.riskRePieView, 1231231)
+        },
+        // 风险识别评估表
+        async getRiskIdentification () {
+            const this_ = this
+            const sql = `select bian_zhi_bu_men_,bian_zhi_shi_jian,bian_zhi_ren_,shi_fou_guo_shen_ from t_fxsbpgb where zong_id_ = '${this.zongid}'`
+            await curdPost('sql', sql).then((res) => {
+                this_.RiskIdenList = res.variables.data
+            })
+            for (const item of this_.RiskIdenList) {
+                item.bian_zhi_ren_ = this.findUser(item.bian_zhi_ren_)
+                item.bian_zhi_bu_men_ = this.findDept(item.bian_zhi_bu_men_)
+                item.bian_zhi_shi_jian = item.bian_zhi_shi_jian || '/'
+                item.shi_fou_guo_shen_ = item.shi_fou_guo_shen_ || '未编制'
+            }
+            this.RiskIdenProp = [
+                { prop: 'bian_zhi_bu_men_', label: '编制部门' },
+                { prop: 'bian_zhi_shi_jian', label: '编制时间' },
+                { prop: 'bian_zhi_ren_', label: '编制人' },
+                { prop: 'shi_fou_guo_shen_', label: '状态' }
+            ]
+        },
+        // 风险改进记录
+        async getImprovementRecords () {
+            const this_ = this
+            const sql = `select * from t_bmfxgjjl where zong_id_ = '${this.zongid}' `
+            await curdPost('sql', sql).then((res) => {
+                this_.ImproRecordsList = res.variables.data
+            })
+            for (const item of this_.ImproRecordsList) {
+                item.bian_zhi_ren_ = this.findUser(item.bian_zhi_ren_)
+                item.bian_zhi_bu_men_ = this.findDept(item.bian_zhi_bu_men_)
+                item.bian_zhi_shi_jian = item.bian_zhi_shi_jian || '/'
+                item.shi_fou_guo_shen_ = item.shi_fou_guo_shen_ || '未编制'
+                item.percentage = this.FindImprovementRecords(item.shi_fou_guo_shen_)
+            }
+            this.ImproRecordsProp = [
+                { prop: 'bian_zhi_bu_men_', label: '编制部门' },
+                { prop: 'bian_zhi_shi_jian', label: '编制时间' },
+                { prop: 'bian_zhi_ren_', label: '编制人' },
+                { prop: 'shi_fou_guo_shen_', label: '状态' },
+                { prop: 'yao_su_tiao_kuan_', label: '要素条款' },
+                { prop: 'yan_zhong_cheng_d', label: '严重程度' }
+
+            ]
+            // this.tableList = []
+        }
+
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+.bg {
+    .tableTitle{
+        padding: 10px;
+    }
+    .change{
+        position: absolute;
+        top: 2px;
+        right: 46%;
+        cursor: pointer;
+    }
+  .check-progress{
+    width: 92%;
+    position: relative;
+    line-height: 1;
+    margin: 0 auto;
+    margin-left: 5%;
+  }
+  .steps-box {
+    user-select: none;
+    width: 90%;
+    height: 2px;
+    position: relative;
+    margin: 10px auto;
+    display: flex;
+    justify-content: space-between;
+    // <!-- 步骤条背景进度条 -->
+    .line {
+      display: block;
+      margin: 0 auto;
+      position: absolute;
+      top: 27px;
+      left: 5%;
+      background: #67c23a;
+      width: 95%;
+      height: 2px;
+      overflow: hidden;
+      .plan {
+        position: absolute;
+        top: 0;
+        left: 0;
+        height: 2px;
+        transition: 0.5s;
+        background: #37a2da;
+      }
+    }
+    .Article-steps {
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+      .step {
+        .title {
+          font-size: 17px;
+          font-weight: bold;
+          color: #808080;
+        }
+        .step-num {
+          position: absolute;
+          width: 58px;
+          height: 58px;
+          display: inline-block;
+          line-height: 50px;
+          background: #808080;
+          // clip-path: polygon(50% 0, 100% 85%, 0 85%);
+          color: white;
+          font-weight: bold;
+          z-index: 999;
+          border-radius: 50%;
+          text-align: center;
+          // transition: 0.5s;
+          font-size: 10px;
+          display: flex;
+          align-items: center;
+          .icon {
+            position: absolute;
+            left: -12px;
+            color: #8ab;
+            font-size: 16px;
+            font-weight: bold;
+            top: 35%;
+          }
+          p {
+            line-height: 20px;
+            width: 40px;
+            overflow: hidden;
+            line-height: 18px;
+            white-space: normal;
+            margin: 0 auto;
+            text-align: center;
+          }
+          .num {
+            transition: 0.5s;
+            display: inline-block;
+          }
+        }
+        .post{
+          text-align: center;
+          font-size: 12px;
+          margin-top: 5px;
+          position: absolute;
+          top: 60px;
+          color: #2d7df5;
+          width: 60px;
+          overflow: hidden;
+        }
+      }
+    }
+    // //当前所在位置样式
+    .current-active
+    {
+      .step-num {
+        background: #2d7df5 !important;
+      }
+      .title {
+        color: #2d7df5 !important;
+      }
+    }
+    .step-active
+    {
+      .step-num {
+        background: #00CC00 !important;
+      }
+      .title {
+        color: #2d7df5 !important;
+      }
+    }
+    .Article-content {
+      padding: 20px;
+      .btn {
+        width: 150px;
+        display: block;
+        margin: 0 auto;
+        margin-bottom: 10px;
+        background: #2d7df5;
+        color: white;
+        padding: 10px;
+        border-radius: 5px;
+        cursor: pointer;
+      }
+      .content {
+        padding: 20px;
+      }
+    }
+  }
+}
+.count{
+    margin: 0 auto;
+    margin-top: 80px;
+    width: 98%;
+}
+</style>

+ 3 - 0
src/views/system/jbdScan/scan.vue

@@ -11,6 +11,7 @@ import deviceTag from './goods/deviceTag.vue'
 import deviceVerificationTag from './goods/deviceVerificationTag.vue'
 import deviceFailureTag from './goods/deviceFailureTag.vue'
 import neishenzhuangtai from './goods/neishenzhuangtai'
+import fengxiangkongzhi from './goods/fengxiangkongzhi'
 import guanshenzhuangtai from './goods/guanshenzhuangtai'
 import bwTag from './goods/bwTag.vue'
 import fzrkTag from './goods/fzrkTag.vue'
@@ -22,6 +23,7 @@ export default {
         deviceVerificationTag,
         deviceFailureTag,
         neishenzhuangtai,
+        fengxiangkongzhi,
         guanshenzhuangtai,
         bwTag,
         fzrkTag,
@@ -35,6 +37,7 @@ export default {
 
     methods: {
         scanOff (val) {
+            console.log(val);
             this.$emit('scanOff', val)
         }
     }