Explorar o código

Merge branch 'master' of http://119.23.210.103:3000/wy/lh_firm_former

zhangjingyuan %!s(int64=3) %!d(string=hai) anos
pai
achega
742b6f9a61
Modificáronse 28 ficheiros con 2082 adicións e 1865 borrados
  1. BIN=BIN
      src/assets/images/login/logo.jpg
  2. 1 1
      src/components/jbd-panel/index.vue
  3. BIN=BIN
      src/views/system/blank/img/logo_MJJC.jpg
  4. 466 0
      src/views/system/jbdHome/board/checkBoard.vue
  5. 106 0
      src/views/system/jbdHome/board/component/bottomCard.vue
  6. 112 0
      src/views/system/jbdHome/board/component/middleCard.vue
  7. 165 0
      src/views/system/jbdHome/board/component/topBar.vue
  8. 594 0
      src/views/system/jbdHome/board/data.js
  9. 0 0
      src/views/system/jbdHome/board/img/bg.png
  10. 0 160
      src/views/system/jbdHome/datav/DataView.vue
  11. 0 481
      src/views/system/jbdHome/datav/cards3.vue
  12. 0 479
      src/views/system/jbdHome/datav/cards4.vue
  13. 0 135
      src/views/system/jbdHome/datav/digitalFlop.vue
  14. BIN=BIN
      src/views/system/jbdHome/datav/img/bg.jpg
  15. 0 93
      src/views/system/jbdHome/datav/rankingBoard.vue
  16. 0 148
      src/views/system/jbdHome/datav/roseChart.vue
  17. 0 71
      src/views/system/jbdHome/datav/scrollBoard.vue
  18. 0 50
      src/views/system/jbdHome/datav/topHeader.vue
  19. 0 134
      src/views/system/jbdHome/datav/waterLevelChart.vue
  20. 1 1
      src/views/system/jbdHome/index.js
  21. 248 0
      src/views/system/jbdScan/goods/deviceFailureTag.vue
  22. 6 4
      src/views/system/jbdScan/goods/deviceTag.vue
  23. 9 3
      src/views/system/jbdScan/goods/deviceVerificationTag.vue
  24. 270 0
      src/views/system/jbdScan/goods/fzrkTag.vue
  25. 27 1
      src/views/system/jbdScan/goods/sampleConfirmation.vue
  26. 5 4
      src/views/system/jbdScan/js/sampleConfirmationJS.js
  27. 7 1
      src/views/system/jbdScan/scan.vue
  28. 65 99
      src/views/system/login/page.vue

BIN=BIN
src/assets/images/login/logo.jpg


+ 1 - 1
src/components/jbd-panel/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="jbd-sys-title">
       <!--<span  class="jbd-sys-title-cont-center" style="margin-left: 40px;float: left;">金通实验室认证认可LIMS系统V2.0</span>-->
-      <span  class="jbd-sys-title-cont-center" style="margin-left: 40px;float: left;">深圳市罗湖医院集团细胞质量检测实验室</span>
+      <span  class="jbd-sys-title-cont-center" style="margin-left: 40px;float: left;">深圳市罗湖医院集团细胞质量检测实验室lims系统</span>
        <span style="float: right; " class="jbd-sys-title-contact">
          </br>
        深圳市金源信通科技有限公司开发 <i style="margin-left: 10px;" class="el-icon-phone"/> 0755-2642-4403

BIN=BIN
src/views/system/blank/img/logo_MJJC.jpg


+ 466 - 0
src/views/system/jbdHome/board/checkBoard.vue

@@ -0,0 +1,466 @@
+<template>
+    <div :class="$style.content">
+        <dv-full-screen-container>
+            <!-- 头部内容 -->
+            <div :class="$style.header">
+                <dv-decoration-8 :class="$style.left" />
+                <dv-decoration-5 :class="$style.center" />
+                <dv-decoration-8 :class="$style.right" :reverse="true" />
+                <div :class="$style.title">{{ titleName }}</div>
+                <div :class="$style.time">
+                    <span>月份:</span>
+                    <el-date-picker
+                        v-model="month"
+                        type="month"
+                        value-format="yyyy-MM"
+                        format="yyyy-MM"
+                        placeholder="日期选择"
+                        style="width: 120px"
+                        :readonly="false"
+                        :editable="true"
+                        :clearable="false"
+                        @change="updateAll"
+                    />
+                </div>
+                <div :class="$style.back" @click.prevent="goBack()">
+                    <dv-border-box-8>返回</dv-border-box-8>
+                </div>
+            </div>
+            <dv-border-box-1>
+                <!-- topBar -->
+                <top-bar v-if="topBarData.length" :info="topBarData" />
+                <!-- middleCard -->
+                <middle-card v-if="middleCardData.flag" :info="middleCardData" />
+                <!-- bottomCard -->
+                <bottom-card v-if="bottomCardData.flag" :info="bottomCardData" />
+            </dv-border-box-1>
+        </dv-full-screen-container>
+    </div>
+</template>
+<script>
+    import screenfull from 'screenfull'
+    import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
+    export default {
+        name: 'checkBoard',
+        components: {
+            topBar: () => import('./component/topBar'),
+            middleCard: () => import('./component/middleCard'),
+            bottomCard: () => import('./component/bottomCard')
+        },
+        data() {
+            const d = new Date()
+            return {
+                titleName: '检测综合信息查询',
+                year: d.toJSON().slice(0, 4),
+                month: d.toJSON().slice(0, 7),
+                today: d.toJSON().slice(0, 10),
+                label: ['委托', '受理', '任务发放', '报告'],
+                topBarData: [],
+                middleCardData: {
+                    tableData: {
+                        header: [
+                            '检测项目',
+                            '检测类型',
+                            '计划完成时间',
+                            '当前状态',
+                            '人员'
+                        ],
+                        data: [],
+                        rowNum: 7,
+                        columnWidth: ['300','100','150','150','100']
+                    },
+                    acceptData:[],
+                    taskData: [],
+                    flag: false
+                },
+                bottomCardData: {
+                    flag: false
+                },
+                timer: null
+            }
+        },
+        // beforeRouteEnter(to, from, next){
+        //     Promise.all([  ]).done(([ res ]) => {
+        //         console.log(res)
+        //     }).then(err => {
+        //         window.observer.trigger('error', err)
+        //         next()
+        //     })
+        // },
+        created() {
+            if (screenfull.isEnabled && !screenfull.isFullscreen) {
+                this.allView()
+            }
+
+            this.updateAll()
+
+            if (this.timer){
+                clearInterval(this.timer)
+            }
+
+            this.timer = setInterval(() => {
+                this.updateAll()
+            },600000)
+        },
+        beforeDestroy() {
+            if (screenfull.isFullscreen) {
+                screenfull.toggle()
+            }
+            clearInterval(this.timer)
+        },
+        methods: {
+            allView() {
+                // 默认显示全屏
+                screenfull.request()
+            },
+            goBack() {
+                this.$router.back(-1)
+            },
+            updateAll(e) {
+                this.getTopBarData()
+                this.getMiddleData()
+                this.getBottomData()
+            },
+            // 获取topBar数据
+            /**
+             *  委托——t_lhwtsqb
+             *  检测——t_lhjczb
+             *  任务——t_lhrwfpb
+             *  报告——t_lhjcbgb
+             */
+            getTopBarData() {
+                let quarter = this.getDateRange('quarter')
+                let week = this.getDateRange('week')
+                // 获取委托数及受理数
+                const sql = `select wt.month as month, wt.accepted as accepted, wt2.today as today, wt2.week as week, wt2.quarter as quarter, jc.total as jcTotal, jc.finished as jcFinish, rw.task as task, rw.finished as rwFinish, bg.report as report, bg.process as process, bg.approval as approval, bg.finished as bgFinish
+                from
+                (select count(id_) as month, count(wei_tuo_zhuang_ta = '已结束' or null) as accepted from t_lhwtsqb where create_time_ LIKE '${this.month}%') wt,
+                (select count(create_time_ like '${this.today}' or null) as today, count(create_time_ between '${week.start}' and '${week.end}' or null) as week, count(create_time_ between '${quarter.start}' and '${quarter.end}' or null) as quarter from t_lhwtsqb) wt2,
+                (select count(id_) as total, count(zhuang_tai_ = '已完成' or null) as finished from t_lhjczb where create_time_ LIKE '${this.month}%') jc,
+                (select count(id_) as task, count(zhuang_tai_ = '已完成' or null) as finished from t_lhrwfpb where create_time_ LIKE '${this.month}%') rw,
+                (select count(id_) as report, count(zhuang_tai_ = '报告待审核' or null) as process, count(zhuang_tai_ = '报告待审批' or null) as approval, count(zhuang_tai_ = '已完成' or zhuang_tai_ = '待发放' or null) as finished from t_lhjcbgb where create_time_ LIKE '${this.month}%') bg`
+                // console.log(sql)
+                curdPost('sql', sql).then(res => {
+                    const data = res.variables.data
+                    console.log(data)
+                    
+                    if ( data && data.length ) {
+                        const { month, accepted, approval, jcFinish, jcTotal, process, report, rwFinish, task, today, week, quarter, bgFinish } = data[0]
+                        this.middleCardData.taskData = [month, jcTotal, task, report]
+                        let result = [
+                            {
+                                title: '委托',
+                                children: [
+                                    {
+                                        label: '本季度',
+                                        value: quarter
+                                    },
+                                    {
+                                        label: '月度',
+                                        value: month
+                                    },
+                                    {
+                                        label: '本周',
+                                        value: week
+                                    },
+                                    {
+                                        label: '本日',
+                                        value: today
+                                    },
+                                    {
+                                        label: '受理',
+                                        value: accepted
+                                    }
+                                ]
+                            },
+                            {
+                                title: '任务分配',
+                                children: [
+                                    {
+                                        label: '总数',
+                                        value: task
+                                    },
+                                    {
+                                        label: '已完成',
+                                        value: rwFinish
+                                    },
+                                    {
+                                        label: '未完成',
+                                        value: task - rwFinish
+                                    }
+                                ]
+                            },
+                            {
+                                title: '检测',
+                                children: [
+                                    {
+                                        label: '总数',
+                                        value: jcTotal
+                                    },
+                                    {
+                                        label: '已完成',
+                                        value: jcFinish
+                                    },
+                                    {
+                                        label: '未完成',
+                                        value: jcTotal - jcFinish
+                                    }
+                                ]
+                            },
+                            {
+                                title: '报告',
+                                children: [
+                                    {
+                                        label: '总数',
+                                        value: report
+                                    },
+                                    {
+                                        label: '已完成',
+                                        value: bgFinish
+                                    },
+                                    {
+                                        label: '待审批',
+                                        value: approval
+                                    },
+                                    {
+                                        label: '待审核',
+                                        value: process
+                                    }
+                                ]
+                            }
+                        ]
+                        
+                        this.topBarData = result
+                    }
+                }).catch(error => {
+                    console.log(error)
+                })
+            },
+            // 获取中间图表数据
+            getMiddleData() {
+                // 获取检测数据
+                // const sql1 = `select tm.jian_ce_xiang_mu_, tm.jian_ce_lei_bie_, IFNULL(rw.qi_wang_wan_cheng, '') as qi_wang_wan_cheng, rw.zhuang_tai_, ipe.NAME_ from t_rwfpb rw, ibps_party_employee ipe, t_mjjcnlfw tm where rw.jian_ce_yuan_ = ipe.ID_ and rw.jian_ce_xiang_mu_ = tm.id_ and rw.create_time_ like '${this.month}%'`
+                const sql1 = `select tm.jian_ce_xiang_mu_, tm.jian_ce_lei_bie_, IFNULL(rwz.create_time_, '') as qi_wang_wan_cheng, rw.zhuang_tai_, ipe.NAME_ from t_lhrwfpb rw, ibps_party_employee ipe, t_mjjcnlfw tm, t_mjrwfpzb rwz where rwz.jian_ce_yuan_ = ipe.ID_ and rwz.jian_ce_xiang_mu_ = tm.id_ and rw.id_ = rwz.wai_jian_ and rw.create_time_ like '${this.month}%'`
+                // 获取检测受理类型数据
+                const sql2 = `select count(tm.jian_ce_lei_bie_ = '理化' or null) as lh, count(tm.jian_ce_lei_bie_ = '微生物' or null) as wsw, count(tm.jian_ce_lei_bie_ = '细胞活率' or null) as xbhl, count(tm.jian_ce_lei_bie_ = '残留检测' or null) as cljc, count(tm.jian_ce_lei_bie_ = '细胞鉴别' or null) as xbjb from t_lhjczb tj, t_mjjcnlfw tm where tj.jian_ce_xiang_mu_ = tm.id_ and tj.create_time_ like '${this.month}%'`
+
+                Promise.all([
+                    curdPost('sql', sql1),
+                    curdPost('sql', sql2)
+                ]).then(([res1, res2]) => {
+                    const data1 = res1.variables.data
+                    const data2 = res2.variables.data
+                    // console.log(data1, data2)
+
+                    this.middleCardData.tableData.data = []
+                    data1.forEach(item => {
+                        this.middleCardData.tableData.data.push(Object.values(item))
+                    })
+
+                    this.middleCardData.acceptData = Object.values(data2[0])
+                    this.middleCardData.flag = true
+                }).catch(error => {
+                    console.log(error)
+                })
+            },
+            // 获取底部图表数据
+            getBottomData() {
+                // 获取检测委托受理情况数据
+                const sql1 = `select tm.wei_tuo_zhuang_ta as state, DATE_FORMAT(tm.create_time_, '%Y-%m-%d %H:%i:%s') as time from t_lhwtsqb tm where tm.create_time_ like '${this.year}%'`
+                // 获取检测月度年度任务完成情况数据
+                const sql2 = `select rw.zhuang_tai_ as state, DATE_FORMAT(rw.create_time_, '%Y-%m-%d %H:%i:%s') as time from t_lhrwfpb rw where rw.create_time_ like '${this.year}%'`
+                // 获取已委托样品数量
+                const sql3 = `select count(yp.id_) as unReceive from t_lhypb yp, t_lhwtsqb wt where yp.parent_id_ = wt.id_ and yp.create_time_ like '${this.month}%'`
+                // 获取样品 收样/留样/不合格数量
+                const sql4 = `select count(id_) as receive, count(shi_fou_liu_yang_ = '是' or null) as keep, count(yan_shou_jie_guo_ = '残缺' or null) as incomplete from t_lhypdjb where create_time_ like '${this.month}%'`
+                Promise.all([
+                    curdPost('sql', sql1),
+                    curdPost('sql', sql2),
+                    curdPost('sql', sql3),
+                    curdPost('sql', sql4),
+                ]).then(([ res1, res2, res3, res4]) => {
+                    this.bottomCardData.flag = false
+                    const data1 = res1.variables.data
+                    const data2 = res2.variables.data
+                    const data3 = res3.variables.data
+                    const data4 = res4.variables.data
+                    // console.log(data1, data2, data3, data4)
+
+                    let trust = new Array(12).fill(0)
+                    let accepted = new Array(12).fill(0)
+                    let task = new Array(12).fill(0)
+                    let complete = new Array(12).fill(0)
+                    data1.forEach(item => {
+                        const index = parseInt(item.time.slice(5,7)) - 1
+                        if (item.state === '已结束') {
+                            accepted[index]++
+                        }
+                        trust[index]++
+                    })
+                    data2.forEach(item => {
+                        const index = parseInt(item.time.slice(5,7)) - 1
+                        if (item.state === '已完成') {
+                            complete[index]++
+                        }
+                        task[index]++
+                    })
+                    let taskCount = task.reduce((pre, cur) => pre + cur)
+                    let completeCount = complete.reduce((pre, cur) => pre + cur)
+                    let year = [
+                        {
+                            name: '未完成',
+                            value: taskCount - completeCount
+                        },
+                        {
+                            name: '已完成',
+                            value: completeCount
+                        }
+                    ]
+                    let sample = [data3[0].unReceive - data4[0].receive, data4[0].receive, data4[0].incomplete, data4[0].keep]
+                    this.bottomCardData.trust = trust
+                    this.bottomCardData.accepted = accepted
+                    this.bottomCardData.task = task
+                    this.bottomCardData.complete = complete
+                    this.bottomCardData.year = year
+                    this.bottomCardData.sample = sample
+                    this.bottomCardData.flag = true
+
+                    // console.log(this.bottomCardData)
+                }).catch(error => {
+                    console.log(error)
+                })
+            },
+            // 获取本周和本季度的开始和结束日期,以对象形式返回
+            getDateRange(type) {
+                let current = new Date()
+                if (type !== 'week' && type !== 'quarter') {
+                    console.log('type is error')
+                    return
+                }
+                if (type === 'quarter') {
+                    let year = current.getFullYear()
+                    let month = current.getMonth()
+                    const dateList = [
+                        {
+                            start: `${year}-01-01`,
+                            end: `${year}-03-31`
+                        },
+                        {
+                            start: `${year}-04-01`,
+                            end: `${year}-06-31`
+                        },
+                        {
+                            start: `${year}-07-01`,
+                            end: `${year}-09-31`
+                        },
+                        {
+                            start: `${year}-10-01`,
+                            end: `${year}-12-31`
+                        }
+                    ]
+                    let quarter = dateList[parseInt(month / 3)]
+                    return quarter
+                }
+                if (type === 'week') {
+                    let week = {}
+                    let currentWeek = current.getDay() === 0 ? 7 : current.getDay()
+                    let temp = new Date(current - (currentWeek - 1) * 86400000)
+                    week.start = new Date(current - (currentWeek - 1) * 86400000).toJSON().slice(0, 10)
+                    week.end = new Date((temp / 1000 + 6 * 86400) * 1000).toJSON().slice(0, 10)
+                    return week
+                }
+            }
+        }
+    }
+</script>
+<style lang="scss" module>
+    .content {
+        width: 100%;
+        height: 100%;
+        background-color: #030409;
+        position: absolute;
+        color: #fff;
+        z-index: 999;
+        :global {
+            #dv-full-screen-container {
+                background-image: url('./img/bg.png');
+                background-size: 100% 100%;
+                box-shadow: 0 0 3px blue;
+                display: flex;
+                flex-direction: column;
+            }
+            .main-content {
+                flex: 1;
+                display: flex;
+                flex-direction: column;
+            }
+
+            .block-left-right-content {
+                flex: 1;
+                display: flex;
+                margin-top: 0.8%;
+            }
+
+            .block-top-bottom-content {
+                flex: 1;
+                display: flex;
+                flex-direction: column;
+                box-sizing: border-box;
+                padding-left: 0.8%;
+            }
+
+            .block-top-content {
+                height: 55%;
+                display: flex;
+                flex-grow: 0;
+                box-sizing: border-box;
+                padding-bottom: 0.8%;
+            }
+        }
+        .header {
+            position: relative;
+            width: 100%;
+            height: 100px;
+            display: flex;
+            justify-content: space-between;
+            flex-shrink: 0;
+            .left, .right {
+                width: 25%;
+                height: 60px;
+            }
+            .center {
+                width: 40%;
+                height: 60px;
+                margin-top: 30px;
+            }
+            .title {
+                position: absolute;
+                font-size: 30px;
+                font-weight: bold;
+                left: 50%;
+                top: 15px;
+                transform: translateX(-50%);
+            }
+            .time, .back {
+                width: 8%;
+                cursor: pointer;
+                height: 2.825rem;
+                line-height: 2.825rem;
+                text-align: center;
+                margin-top: 2.5%;
+                flex: 1;
+                position: absolute;
+                color: #ffffff;
+            }
+            .time {
+                display: flex;
+                justify-content: flex-end;
+                width: 20%;
+                right: 75%;
+            }
+            .back {
+                left: 75%;
+            }
+        }
+    }
+</style>

+ 106 - 0
src/views/system/jbdHome/board/component/bottomCard.vue

@@ -0,0 +1,106 @@
+<template>
+    <div id="bottom-card">
+        <div :class="$style.chart_box">
+            <!-- <div
+                v-for="(item, index) in cards"
+                :key="index"
+                :class="$style.item"
+            >
+                <div :id="item" style="width: 100%; height: 100%"></div>
+            </div> -->
+            <div :class="$style.item">
+                <div id="trust"></div>
+            </div>
+            <dv-decoration-2 :reverse="true" :dur="4" style="width:5px;height:100%;" />
+            <!-- <div :class="$style.item">
+                <div id="sample"></div>
+            </div>
+            <dv-decoration-2 :reverse="true" :dur="6" style="width:5px;height:100%;" /> -->
+            <div :class="$style.item">
+                <div id="month"></div>
+            </div>
+            <dv-decoration-2 :reverse="true" :dur="8" style="width:5px;height:100%;" />
+            <div :class="$style.item">
+                <div id="year"></div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+    import echarts from 'echarts'
+    import { trustOption, sampleOption, monthOption, yearOption } from '../data'
+    export default {
+        name: 'topBar',
+        props: {
+            info: {
+                type: Object,
+                default: {}
+            }
+        },
+        components: {},
+        watch: {
+            info: {
+                handler() {
+                    this.init()
+                },
+                deep: true
+            }
+        },
+        data() {
+            return {
+                cards: ['trust', 'sample', 'month', 'year']
+            }
+        },
+        created() {},
+        mounted() {
+            this.init()
+        },
+        methods: {
+            init() {
+                const trust = echarts.init(document.getElementById('trust'))
+                // const sample = echarts.init(document.getElementById('sample'))
+                const month = echarts.init(document.getElementById('month'))
+                const year = echarts.init(document.getElementById('year'))
+
+                // 设置图表数据
+                trustOption.series[0].data = this.info.trust
+                trustOption.series[1].data = this.info.accepted
+                monthOption.series[0].data = this.info.task
+                monthOption.series[1].data = this.info.complete
+                // sampleOption.series[0].data = this.info.sample
+                yearOption.series[0].data = this.info.year
+
+                // 渲染
+                trust.setOption(trustOption)
+                // sample.setOption(sampleOption)
+                month.setOption(monthOption)
+                year.setOption(yearOption)
+            }
+        }
+    }
+</script>
+<style lang="scss" module>
+    .chart_box {
+        position: relative;
+        display: flex;
+        justify-content: space-between;
+        width: 100%;
+        height: 100%;
+        .item {
+            width: 32.5%;
+            height: 100%;
+            background-color: rgba(6, 30, 93, 0.5);
+            > div {
+                width: 100%;
+                height: 100%;
+            }
+        }
+    }
+    :global {
+        #bottom-card {
+            width: 96%;
+            height: calc((100% - 240px) / 2);
+            padding: 0 2%;
+        }
+    }
+</style>

+ 112 - 0
src/views/system/jbdHome/board/component/middleCard.vue

@@ -0,0 +1,112 @@
+<template>
+    <div id="middle-card">
+        <div :class="$style.chart_box">
+            <div :class="$style.item">
+                <!-- <div :class="$style.title">
+                    <span>检测受理类型</span>
+                </div> -->
+                <div id="accept" style="width: 100%; height: 100%"></div>
+            </div>
+            <dv-decoration-2 :reverse="true" style="width:5px;height:100%;" />
+            <div :class="$style.item">
+                <!-- <div :class="$style.title">
+                    <span>检测任务情况</span>
+                </div> -->
+                <div id="task" style="min-width: 300px; height: 100%"></div>
+            </div>
+            <dv-decoration-2 :reverse="true" :dur="10" style="width:5px;height:100%;" />
+            <div :class="$style.item">
+                <dv-scroll-board
+                    v-if="tableData.data && tableData.data.length"
+                    :config="tableData"
+                    style="width: 100%; height: 100%"
+                />
+                <div v-else :class="$style.no_data">暂无数据</div>
+            </div>
+        </div>
+        <dv-decoration-10 :dur="15"/>
+    </div>
+</template>
+<script>
+    import echarts from 'echarts'
+    import { acceptOption, taskOption } from '../data'
+    export default {
+        name: 'topBar',
+        props: {
+            info: {
+                type: Object,
+                default: {}
+            }
+        },
+        components: {},
+        watch: {
+            info: {
+                handler() {
+                    this.init()
+                },
+                deep: true
+            }
+        },
+        data() {
+            return {
+                tableData: {}
+            }
+        },
+        created() {
+            // this.init()
+        },
+        mounted() {
+            this.init()
+        },
+        methods: {
+            init() {
+                const accept = echarts.init(document.getElementById('accept'))
+                const task = echarts.init(document.getElementById('task'))
+                
+                // 设置图表数据
+                acceptOption.series[0].data = this.info.acceptData
+                taskOption.series[0].data = this.info.taskData
+                this.tableData = JSON.parse(JSON.stringify(this.info.tableData))
+
+                //渲染
+                accept.setOption(acceptOption)
+                task.setOption(taskOption)
+            }
+        }
+    }
+</script>
+<style lang="scss" module>
+    .chart_box {
+        position: relative;
+        display: flex;
+        justify-content: space-between;
+        width: 100%;
+        height: 100%;
+        .item {
+            width: 24%;
+            height: 100%;
+            background-color: rgba(6, 30, 93, 0.5);
+            &:last-child {
+                width: 49%;
+            }
+            .no_data {
+                font-size: 20px;
+                text-align: center;
+                margin-top: 20px;
+            }
+        }
+    }
+    :global {
+        #middle-card {
+            width: 96%;
+            height: calc((100% - 240px) / 2);
+            padding: 0 2%;
+            margin: 15px 0 30px;
+            .dv-decoration-10 {
+                width: 100%;
+                margin: 12px 0;
+                height: 5px;
+            }
+        }
+    }
+</style>

+ 165 - 0
src/views/system/jbdHome/board/component/topBar.vue

@@ -0,0 +1,165 @@
+<template>
+    <div id="top-bar">
+        <div :class="$style.bar">
+            <div
+                v-for="(item, index) in topBarData"
+                :key="index"
+                :class="$style.item"
+            >
+                <div :class="$style.title">{{ item.title }}</div>
+                <div
+                    v-for="(v, i) in item.children"
+                    :key="i"
+                    :class="$style.box"
+                >
+                    <div :class="$style.label">{{ v.label }}</div>
+                    <div :class="$style.count">
+                        <dv-digital-flop
+                            :config="v.data"
+                            :class="$style.flop"
+                        />
+                        <div :class="$style.unit">{{ v.unit }}</div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <dv-decoration-10 />
+    </div>
+</template>
+<script>
+    export default {
+        name: 'topBar',
+        props: {
+            info: {
+                type: Array,
+                default: []
+            }
+        },
+        components: {},
+        watch: {
+            info(v) {
+                console.log(v)
+                this.update()
+            }
+        },
+        data() {
+            return {
+                topBarData: [],
+                fontColor: [
+                    '#d20962',
+                    '#f47721',
+                    '#7ac143',
+                    '#00a78e',
+                    '#00bce4',
+                    '#7d3f98',
+                    '#037ef3',
+                    '#f85a40',
+                    '#00c16e',
+                    '#ffd900',
+                    '#0cb9c1',
+                    '#7552cc'
+                ]
+            }
+        },
+        created() {
+            this.update()
+        },
+        methods: {
+            //随机颜色
+            getRandom(minNum, maxNum) {
+                if (arguments.length === 1) {
+                    return parseInt(Math.random() * minNum + 1, 10)
+                } else {
+                    return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+                }
+            },
+            // 数据更新
+            update() {
+                this.info.forEach(item => {
+                    item.children.forEach(i => {
+                        i.data = {
+                            number: [i.value],
+                            content: '{nt}',
+                            textAlign: 'right',
+                            style: {
+                                fill: this.fontColor[this.getRandom(0, 11)],
+                                fontWeight: 'bold'
+                            }
+                        }
+                        i.unit = '件'
+                    })
+                })
+                this.topBarData = JSON.parse(JSON.stringify(this.info))
+            }
+        }
+    }
+</script>
+<style lang="scss" module>
+    .bar {
+        position: relative;
+        height: 90%;
+        margin: 20px 2%;
+        display: flex;
+        // flex-shrink: 0;
+        justify-content: space-between;
+        align-items: center;
+        background-color: rgba(6, 30, 93, 0.5);
+        .item {
+            width: 20%;
+            // width: calc(100% / 13);
+            height: 60%;
+            padding: 12px 20px;
+            border-left: 5px solid rgb(6, 30, 93);
+            &:first-child{
+                width: 33.3%;
+                .box{
+                    width: 20%;
+                }
+            }
+            &:last-child{
+                width: 26.6%;
+                .box{
+                    width: 25%;
+                }
+            }
+            .title {
+                text-align: center;
+                font-size: 18px;
+                font-weight: bold;
+                margin-bottom: 20px;
+            }
+            .box{
+                display: inline-block;
+                width: 33%;
+                .label{
+                    text-align: center;
+                    font-size: 14px;
+                }
+                .count {
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    .flop {
+                        width: 60px;
+                        height: 40px;
+                        font-size: 18px;
+                    }
+                    .unit {
+                        margin-left: 10px;
+                        box-sizing: border-box;
+                    }
+                }
+            }
+        }
+    }
+    :global {
+        #top-bar{
+            height: 150px;
+        }
+        .dv-decoration-10 {
+            width: 96%;
+            margin: -7px 2% 0;
+            height: 5px;
+        }
+    }
+</style>

+ 594 - 0
src/views/system/jbdHome/board/data.js

@@ -0,0 +1,594 @@
+import echarts from "echarts"
+
+export const acceptOption = {
+    // 图表标题
+    title: {
+        show: true,
+        text: '检测受理类型',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    xAxis: {
+        type: 'category',
+        data: ['理化', '微生物', '细胞活率', '残留检测', '细胞鉴别'],
+        axisTick: {
+            alignWithLabel: true
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            },
+            formatter: function (params) {
+                let result = ''
+                //一行显示几个字
+                let rowMax = 2
+                let rowNumber = Math.ceil(params.length / rowMax)
+                // 超过 3 个字换行
+                if (params.length > 3) {
+                    for (let p = 0; p < rowNumber; p++) {
+                        let tempStr = ''
+                        let start = p * rowMax
+                        let end = start + rowMax
+                        if (p == rowNumber - 1) {
+                            tempStr = params.substring(start, params.length);
+                        } else {
+                            tempStr = params.substring(start, end) + '\n'
+                        }
+                        result += tempStr
+                    }
+    
+                } else {
+                    result = params
+                }
+                return result
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+        // axisLabel: {
+        //     inside: true,
+        //     color: "#000",
+        // },
+        // axisTick: {
+        //     show: true,
+        // },
+        // axisLine: {
+        //     show: true,
+        // },
+        // z: 10
+    },
+    yAxis: {
+        type: 'value',
+        name: '',
+        nameTextStyle: {
+            color: '#fff',
+            fontSize: 14
+        },
+        splitLine: {
+            show: false
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    series: [{
+        type: 'bar',
+        name: '',
+        data: [],
+        barMaxWidth: '35px',
+        itemStyle: {
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                { offset: 0, color: "#83bff6" },
+                { offset: 0.5, color: "#188df0" },
+                { offset: 1, color: "#188df0" },
+            ])
+        },
+        emphasis: {
+            itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: "#2378f7" },
+                    { offset: 0.7, color: "#2378f7" },
+                    { offset: 1, color: "#83bff6" },
+                ])
+            }
+        }
+    }],
+    tooltip: {
+        show: true,
+        trigger: 'axis'
+    }
+}
+
+export const taskOption = {
+    // 图表标题
+    title: {
+        show: true,
+        text: '检测任务情况',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    xAxis: {
+        type: 'category',
+        data: ['委托', '任务分配', '检测', '报告'],
+        axisTick: {
+            alignWithLabel: true
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    yAxis: {
+        type: 'value',
+        name: '',
+        nameTextStyle: {
+            color: '#fff',
+            fontSize: 14
+        },
+        splitLine: {
+            show: false
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    series: [{
+        type: 'bar',
+        name: '',
+        data: [],
+        barMaxWidth: '35px',
+        itemStyle: {
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                { offset: 0, color: "#83bff6" },
+                { offset: 0.5, color: "#188df0" },
+                { offset: 1, color: "#188df0" },
+            ])
+        },
+        emphasis: {
+            itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: "#2378f7" },
+                    { offset: 0.7, color: "#2378f7" },
+                    { offset: 1, color: "#83bff6" },
+                ])
+            }
+        }
+    }],
+    tooltip: {
+        show: true,
+        trigger: 'axis'
+    }
+}
+
+export const trustOption = {
+    legend: {
+        data: [
+            {
+                name: '委托',
+                itemStyle: {
+                    color: '#00baff'
+                }
+            },
+            {
+                name: '受理',
+                itemStyle: {
+                    color: '#f5d94e'
+                }
+            }
+        ],
+        textStyle: {
+            color: '#fff',
+        },
+        bottom: 10
+    },
+    title: {
+        show: true,
+        text: '检测委托受理量',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    xAxis: {
+        type: 'category',
+        data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+        axisTick: {
+            alignWithLabel: true
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    yAxis: {
+        type: 'value',
+        name: '',
+        nameTextStyle: {
+            color: '#fff',
+            fontSize: 14
+        },
+        splitLine: {
+            show: false
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    series: [
+        {
+            type: 'bar',
+            name: '委托',
+            data: [],
+            barMaxWidth: '35px',
+            barStyle: {
+                fill: 'rgba(0, 186, 255, 0.4)'
+            },
+            itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: "#83bff6" },
+                    { offset: 0.5, color: "#188df0" },
+                    { offset: 1, color: "#188df0" },
+                ])
+            },
+            emphasis: {
+                itemStyle: {
+                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                        { offset: 0, color: "#2378f7" },
+                        { offset: 0.7, color: "#2378f7" },
+                        { offset: 1, color: "#83bff6" },
+                    ])
+                }
+            }
+        },
+        {
+            type: 'line',
+            name: '受理',
+            data: [],
+            symbol: 'circle',
+            symbolSize: 10,
+            lineArea: {
+                show: true,
+                gradient: ['rgba(245, 217, 79, 0.8)', 'rgba(245, 217, 79, 0.2)']
+            },
+            itemStyle: {
+                color: '#f5d94e'
+            }
+        }
+        
+    ],
+    tooltip: {
+        show: true,
+        trigger: 'axis'
+    }
+}
+
+export const sampleOption = {
+    title: {
+        show: true,
+        text: '样品受理情况',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    xAxis: {
+        type: 'category',
+        data: ['已委托未收样', '已收样', '已收不合格', '留样'],
+        axisTick: {
+            alignWithLabel: true
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            },
+            formatter: function (params) {
+                let result = ''
+                //一行显示几个字
+                let rowMax = 3
+                let rowNumber = Math.ceil(params.length / rowMax)
+                if (params.length > rowMax) {
+                    for (let p = 0; p < rowNumber; p++) {
+                        let tempStr = ''
+                        let start = p * rowMax
+                        let end = start + rowMax
+                        if (p == rowNumber - 1) {
+                            tempStr = params.substring(start, params.length);
+                        } else {
+                            tempStr = params.substring(start, end) + '\n'
+                        }
+                        result += tempStr
+                    }
+    
+                } else {
+                    result = params
+                }
+                return result
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    yAxis: {
+        type: 'value',
+        name: '',
+        nameTextStyle: {
+            color: '#fff',
+            fontSize: 14
+        },
+        splitLine: {
+            show: false
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    series: [{
+        type: 'bar',
+        name: '',
+        data: [],
+        barMaxWidth: '35px',
+        itemStyle: {
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                { offset: 0, color: "#83bff6" },
+                { offset: 0.5, color: "#188df0" },
+                { offset: 1, color: "#188df0" },
+            ])
+        },
+        emphasis: {
+            itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: "#2378f7" },
+                    { offset: 0.7, color: "#2378f7" },
+                    { offset: 1, color: "#83bff6" },
+                ])
+            }
+        }
+    }],
+    tooltip: {
+        show: true,
+        trigger: 'axis'
+    }
+}
+
+export const monthOption = {
+    legend: {
+        data: [
+            {
+                name: '任务总数',
+                itemStyle: {
+                    color: '#00baff'
+                }
+            },
+            {
+                name: '已完成',
+                itemStyle: {
+                    color: '#f5d94e'
+                }
+            }
+        ],
+        textStyle: {
+            color: '#fff',
+        },
+        bottom: 10
+    },
+    title: {
+        show: true,
+        text: '检测任务月度完成量',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    xAxis: {
+        type: 'category',
+        data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+        axisTick: {
+            alignWithLabel: true
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    yAxis: {
+        type: 'value',
+        name: '',
+        nameTextStyle: {
+            color: '#fff',
+            fontSize: 14
+        },
+        splitLine: {
+            show: false
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    series: [
+        {
+            type: 'bar',
+            name: '任务总数',
+            data: [],
+            barMaxWidth: '35px',
+            barStyle: {
+                fill: 'rgba(0, 186, 255, 0.4)'
+            },
+            itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: "#83bff6" },
+                    { offset: 0.5, color: "#188df0" },
+                    { offset: 1, color: "#188df0" },
+                ])
+            },
+            emphasis: {
+                itemStyle: {
+                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                        { offset: 0, color: "#2378f7" },
+                        { offset: 0.7, color: "#2378f7" },
+                        { offset: 1, color: "#83bff6" },
+                    ])
+                }
+            }
+        },
+        {
+            type: 'line',
+            name: '已完成',
+            data: [],
+            symbol: 'circle',
+            symbolSize: 10,
+            lineArea: {
+                show: true,
+                gradient: ['rgba(245, 217, 79, 0.8)', 'rgba(245, 217, 79, 0.2)']
+            },
+            itemStyle: {
+                color: '#f5d94e'
+            }
+        }
+        
+    ],
+    tooltip: {
+        show: true,
+        trigger: 'axis'
+    }
+}
+
+export const yearOption = {
+    title: {
+        show: true,
+        text: '检测任务年度完成量',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    legend: {
+        orient: 'horizontal',
+        show: true,
+        left: 'center',
+        bottom: 10,
+        z: 3,
+        itemWidth: 25,
+        itemHeight: 14,
+        itemGap: 10,
+        data: [
+            {
+                name: '未完成',
+                textStyle: {
+                    color: '#ff6347'
+                }
+            },
+            {
+                name: '已完成',
+                textStyle: {
+                    color: '#3f3'
+                }
+            }
+        ]
+    },
+    series: [
+        {
+            name: '任务完成情况',
+            type: 'pie',
+            radius: '55%',
+            center: ['50%', '50%'],
+            data: [],
+            itemStyle: {
+                emphasis: {
+                    shadowBlur: 10,
+                    shadowOffsetX: 0,
+                    shadowColor: 'rgba(0, 0, 0, 0.5)'
+                },
+                normal: {
+                    label: {
+                        show: true,
+                        position: 'outer',
+                        formatter: `占比:{d}%\n\n\r{b}:{c}`,
+                        // formatter: `{b}:{c}\n\n\r占比:{d}%`,
+                        fontSize: 12
+                    },
+                    labelLine: {
+                        show: true
+                    }
+                }
+            }
+        }
+    ],
+    color: ['#ff6347', '#3f3'],
+    tooltip: {
+        show: true,
+        trigger: 'item',
+        formatter: '任务情况<br/>{b}:{c}<br/>占比:{d}%'
+    }
+}

+ 0 - 0
src/views/system/jbdHome/datav/img/bg.png → src/views/system/jbdHome/board/img/bg.png


+ 0 - 160
src/views/system/jbdHome/datav/DataView.vue

@@ -1,160 +0,0 @@
-<template>
-	<div  id="data-view">
-		   <dv-full-screen-container>
-			 <top-header :titleName="outputData.headerName"/>
-
-    <div
-                   style="width: 8%;
-                     cursor: pointer;
-                      height:2.825rem;
-                      line-height: 2.825rem;
-                      text-align:center;
-                      margin-left:63%;
-                      margin-top: 2.5%;
-                      flex: 1;
-                      position: absolute;
-                      color: #FFFFFF;">
-        <el-date-picker
-          v-model="queryDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          format="yyyy-MM-dd"
-          placeholder="日期选择"
-          style="width:130px"
-          :readonly="false"
-          :editable="true"
-          :clearable="false"
-        />
-
-      </div>
-    <div @click.prevent="toHome()"
-                   style="width: 8%;
-                     cursor: pointer;
-                      height:2.825rem;
-                      line-height: 2.825rem;
-                      text-align:center;
-                      margin-left:75%;
-                      margin-top: 2.5%;
-                      flex: 1;
-                      position: absolute;
-                      color: #FFFFFF;">
-
-                <dv-border-box-8>
-                         返回
-                      </dv-border-box-8>
-      </div>
-
-			  <div class="main-content">
-				<digital-flop />
-				<div class="block-left-right-content">
-
-				  <div class="block-top-bottom-content">
-					<!-- <div class="block-top-content">
-
-
-
-
-					  <scroll-board />
-					</div> -->
-
-					<cards3 />
-          <cards4 />
-				  </div>
-				</div>
-			  </div>
-		   </dv-full-screen-container>
-   </div>
-</template>
-
-<script>
-import cards3 from './cards3'
-import cards4 from './cards4'
-import topHeader from './topHeader'
-import digitalFlop from './digitalFlop'
-import roseChart from './roseChart'
-
-import scrollBoard from './scrollBoard'
-import screenfull from 'screenfull'
-import IbpsDateRange from '@/components/ibps-date-range'
-
-export default {
-  name: 'DataView',
-  components: {
-    cards3,
-    cards4,
-    topHeader,
-    digitalFlop,
-    IbpsDateRange
-  },
-  data () {
-    return {
-    queryDate:"2022-03-02",
-		outputData:{
-			headerName:'检测综合信息查询',
-
-		}
-
-	}
-  },
- created() {
-    if(screenfull.isEnabled && !screenfull.isFullscreen){
-    this.allView()
-    }
-  },
-  beforeDestroy() {
-      if(screenfull.isFullscreen){
-        screenfull.toggle()
-        }
-    },
-  methods: {
-    allView(){
-          screenfull.request() //默认显示全屏
-    },
-	  toHome(){
-      			this.$router.back(-1)
-		 }
-  }
-}
-</script>
-
-<style lang="less">
-#data-view {
-  width: 100%;
-  height: 100%;
-  background-color: #030409;
-  position: absolute;
-  color: #fff;
-  z-index:9999;
-  #dv-full-screen-container {
-    background-image: url('./img/bg.png');
-    background-size: 100% 100%;
-    box-shadow: 0 0 3px blue;
-    display: flex;
-    flex-direction: column;
-  }
-  .main-content {
-    flex: 1;
-    display: flex;
-    flex-direction: column;
-  }
-  .block-left-right-content {
-    flex: 1;
-    display: flex;
-    margin-top: 0.8%;
-  }
-  .block-top-bottom-content {
-    flex: 1;
-    display: flex;
-    flex-direction: column;
-    box-sizing: border-box;
-    padding-left:  0.8%;
-  }
-  .block-top-content {
-    height: 55%;
-    display: flex;
-    flex-grow: 0;
-    box-sizing: border-box;
-    padding-bottom:  0.8%;
-  }
-}
-</style>

+ 0 - 481
src/views/system/jbdHome/datav/cards3.vue

@@ -1,481 +0,0 @@
-<template>
-  <div id="cards">
-    <div
-      class="card-item"
-      v-for="(card, i) in cards"
-      :key="card.title"
-      >
-
-      <div class="card-header">
-        <!-- 月 、周的统计-->
-      	<div class="card-header-left" v-if="i==3">
-          <span style="color: #FFFFFF;">报告</span>
-        年度
-         <span style="color: #FFFFFF;">完成量</span>
-        </div>
-        <div class="card-header-left" v-if="i==2">
-          <span style="color: #FFFFFF;">检测</span>
-        月度
-         <span style="color: #FFFFFF;">完成量</span>
-        </div>
-        <div class="card-header-left" style="color: #00baff;" v-if="i==0">
-        检测委托
-         <span style="color: #FFFFFF;">受理量</span>
-        </div>
-
-      </div>
-
-      <dv-charts  class="ring-chartsDead" :option="option" v-if="i==0"/>
-      <water-level-chart class="ring-charts-water" v-else-if="i==1"/>
-
-      <dv-charts class="ring-charts" :option="optionTask2"  v-else-if="i==2"/>
-      <dv-charts class="ring-charts" :option="optionTask3"  v-else-if="i==3"/>
-
-    </div>
-  </div>
-</template>
-
-<script>
-  import { stageCompleteStatis } from '@/api/platform/system/jbdHome'
-  import echarts from 'echarts'
-  import waterLevelChart from './waterLevelChart'
-export default {
-  name: 'Cards',
-  components: {
-    waterLevelChart
-  },
-  data () {
-    return {
-      cards: [{},{},{},{}],
-      dataDate:['日','周','月度','年度'],
-      config:{
-        data:[],
-          radius: '65%',
-          activeRadius: '80%',
-          digitalFlopStyle: {
-              fontSize: 16
-            },
-          showOriginValue: true,
-           lineWidth: 22
-
-          },
-      option: {},
-      optionTask1: {},
-      optionTask2: {},
-      optionTask3: {},
-    }
-  },
-  methods: {
-    createData () {
-      const { randomExtend } = this
-     this.caseInof()
-     this.coffinInof()
-     this.amountCons()
-    },
-    randomExtend (minNum, maxNum) {
-      if (arguments.length === 1) {
-        return parseInt(Math.random() * minNum + 1, 10)
-      } else {
-        return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
-      }
-  },
-  //类别未定义
-  caseInof(){
-    let case1 = [120,130,140,150,160,170,180,190,200,220,230,240]
-    let case2 = [190,200,210,220,230,240,250,260,270,280,290,300]
-    let max = 0
-    max=300
-    this.option =  {
-             legend: {
-               data: [
-                 {
-                   name: '检测委托',
-                   color: '#00baff'
-                 },
-                 {
-                   name: '检测受理',
-                   color: '#f5d94e'
-                 }
-               ],
-               textStyle: {
-                 fill: '#fff'
-               }
-             },
-             xAxis: {
-               data: [
-                 '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'
-               ],
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               }
-             },
-             yAxis: {
-               data: 'value',
-               splitLine: {
-                 show: false
-               },
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               },
-               min: 0,
-               maxTax: max
-             },
-             series: [
-               {
-                 name: '检测委托',
-                 data:  case1,
-                 type: 'bar',
-                 barStyle: {
-                   fill: 'rgba(0, 186, 255, 0.4)'
-                 }
-               },
-               {
-                 data: case2,
-                 type: 'line',
-                 name: '检测受理',
-                 lineArea: {
-                   show: true,
-                   gradient: ['rgba(245, 217, 79, 0.8)', 'rgba(245, 217, 79, 0.2)']
-                 },
-                 lineStyle: {
-                   stroke: '#f5d94e'
-                 },
-                 linePoint: {
-                   radius: 4,
-                   style: {
-                     fill: '#f5d94e',
-                     stroke: 'transparent'
-                   }
-                 }
-               }
-             ]
-          }
-
-  },
-
-  coffinInof(){
-
-    let data1 = [];
-    data1.push("受理");
-    data1.push("待检测");
-    data1.push("检测");
-    data1.push("返样");
-    data1.push("留样");
-
-    let data2 = [];
-    data2.push(230);
-    data2.push(190);
-    data2.push(130);
-    data2.push(230);
-    data2.push(250);
-
-    let dataAxis = data1;
-    let data = data2;
-    let yangPinIdChart = echarts.init(document.getElementById("yangPinId"))
-    this.optionTask1 =  {
-         grid: {
-                      top: '20%',
-                      left: '3%',
-                      right: '4%',
-                      bottom: '10%',
-                      containLabel: true
-                  },
-        title: {
-          text: '',
-          subtext: ""
-        },
-        xAxis: {
-          data: dataAxis,
-          axisLabel: {
-            inside: true,
-            color: '#000'
-          },
-          axisTick: {
-            show: true
-          },
-          axisLine: {
-            show: true
-          },
-          z: 10
-        },
-        yAxis: {
-          axisLine: {
-            show: false
-          },
-          axisTick: {
-            show: false
-          },
-          axisLabel: {
-            color: '#999'
-          }
-        },
-        dataZoom: [
-          {
-            type: 'inside'
-          }
-        ],
-
-        series: [
-          {
-            type: 'bar',
-            showBackground: true,
-            itemStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: '#83bff6' },
-                { offset: 0.5, color: '#188df0' },
-                { offset: 1, color: '#188df0' }
-              ])
-            },
-            emphasis: {
-              itemStyle: {
-                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                  { offset: 0, color: '#2378f7' },
-                  { offset: 0.7, color: '#2378f7' },
-                  { offset: 1, color: '#83bff6' }
-                ])
-              }
-            },
-            data: data
-          }
-        ]
-      };
-      yangPinIdChart.setOption(this.optionTask1);
-  },
-  amountCons(){
-    let case1 = [190,200,210,220,230,240,250,260,270,280,290,300]
-    let case2 = [120,130,140,150,160,170,180,190,200,210,220,230]
-    let max = 300
-
-    this.optionTask2 =  {
-             legend: {
-               data: [
-                 {
-                   name: '已检样品',
-                   color: '#00baff'
-                 },
-                 {
-                   name: '未检样品',
-                   color: '#f5d94e'
-                 }
-               ],
-               textStyle: {
-                 fill: '#fff'
-               }
-             },
-             xAxis: {
-               data: [
-                 '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'
-               ],
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               }
-             },
-             yAxis: {
-               data: 'value',
-               splitLine: {
-                 show: false
-               },
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               },
-               min: 0,
-               maxTax: max
-             },
-             series: [
-               {
-                 name: '已检样品',
-                 data:  case1,
-                 type: 'bar',
-                 barStyle: {
-                   fill: 'rgba(0, 186, 255, 0.4)'
-                 }
-               },
-               {
-                 data: case2,
-                 type: 'line',
-                 name: '未检样品',
-                 lineArea: {
-                   show: true,
-                   gradient: ['rgba(245, 217, 79, 0.8)', 'rgba(245, 217, 79, 0.2)']
-                 },
-                 lineStyle: {
-                   stroke: '#f5d94e'
-                 },
-                 linePoint: {
-                   radius: 4,
-                   style: {
-                     fill: '#f5d94e',
-                     stroke: 'transparent'
-                   }
-                 }
-               }
-             ]
-          }
-        this.optionTask3  = {
-          series: [
-            {
-              type: 'gauge',
-              startAngle: -Math.PI / 2,
-              endAngle: Math.PI * 1.5,
-              arcLineWidth: 13,
-              radius: '80%',
-              data: [
-                { name: '完成占比', value: 32 }
-              ],
-              axisLabel: {
-                show: false
-              },
-              axisTick: {
-                show: false
-              },
-              pointer: {
-                show: false
-              },
-              backgroundArc: {
-                style: {
-                  stroke: '#224590'
-                }
-              },
-              details: {
-                show: true,
-                formatter: '完成占比{value}%',
-                style: {
-                  fill: '#1ed3e5',
-                  fontSize: 16
-                }
-              }
-            }
-          ],
-          color: ['#03d3ec']
-        }
- },
-
- yearSynthesize(data){
-   // let cofData =[]
-   // for(let i = 0; i < data.length; i++) {
-   //   let param ={}
-   //   param.total =   data[i].num
-   //   param.name  =   data[i].type
-   //   cofData.push(param)
-   //   }
-
-
-      //this.config.data = cofData
- },
-
-},
-  mounted () {
-    const { createData } = this
-    createData()
-
-  }
-}
-</script>
-
-<style lang="less">
-#cards {
-  display: flex;
-  width: 92%;
-  justify-content: space-between;
-  height: 50%;
-
-  .card-item {
-    background-color: rgba(6, 30, 93, 0.5);
-    border-top: 2px solid rgba(1, 153, 209, .5);
-    width: 24.3%;
-    display: flex;
-    flex-direction: column;
-  }
-  .card-header {
-    margin-top: 1%;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    .card-header-left {
-      font-size: 1.5rem;
-      font-weight: bold;
-      padding-left: 1.25rem;
-      color: #03d3ec;
-    }
-    .card-header-right {
-      padding-right: 1.25rem;
-      font-size: 32px;
-    }
-  }
-  .ring-charts-water {
-    height:90%;
-    width:100%;
-  }
-  .ring-charts {
-    height:80%;
-  }
-  .ring-chartsDead {
-    height:80%;
-  }
-  .card-footer {
-    height: 40%;
-    display: flex;
-    align-items: center;
-    justify-content: space-around;
-  }
-  .card-footer-item {
-    padding: 0.5rem 0.75rem 0px 0.75rem;
-    box-sizing: border-box;
-    width: 45%;
-    background-color: rgba(6, 30, 93, 0.7);
-    border-radius: 3px;
-    .footer-title {
-      font-size:1rem;
-    }
-    .footer-detail {
-      color: #1294fb;
-      display: flex;
-	  font-size:1.125rem;
-      align-items: center;
-      .dv-digital-flop {
-        margin-right: 0.3125rem;
-      }
-    }
-  }
-}
-</style>

+ 0 - 479
src/views/system/jbdHome/datav/cards4.vue

@@ -1,479 +0,0 @@
-<template>
-  <div id="cards">
-    <div
-      class="card-item"
-      v-for="(card, i) in cards"
-      :key="card.title"
-      >
-
-      <div class="card-header">
-        <!-- 月 、周的统计-->
-      	<div class="card-header-left" v-if="i==3">
-          <span style="color: #FFFFFF;">设备</span>
-        月度
-         <span style="color: #FFFFFF;">使用率</span>
-        </div>
-        <div class="card-header-left" v-if="i==2">
-          <span style="color: #FFFFFF;">设备</span>
-        月度
-         <span style="color: #FFFFFF;">使用情况</span>
-        </div>
-
-        <div class="card-header-left" style="color: #00baff;" v-if="i==1">
-          样品
-         <span style="color: #FFFFFF;">受理情况</span>
-        </div>
-      </div>
-
-      <rose-chart class="ring-charts-rose" v-if="i==0"/>
-      <div id="yangPinId" class="ring-chartsDead" v-else-if="i==1"/>
-      <dv-charts class="ring-charts" :option="optionTask2"  v-else-if="i==2"/>
-      <dv-charts class="ring-charts" :option="optionTask3"  v-else-if="i==3"/>
-
-    </div>
-  </div>
-</template>
-
-<script>
-  import { stageCompleteStatis } from '@/api/platform/system/jbdHome'
-  import echarts from 'echarts'
-  import roseChart from './roseChart'
-export default {
-  name: 'Cards',
-  components: {
-     roseChart
-  },
-  data () {
-    return {
-      cards: [{},{},{},{}],
-      dataDate:['日','周','月度','年度'],
-      config:{
-        data:[],
-          radius: '65%',
-          activeRadius: '80%',
-          digitalFlopStyle: {
-              fontSize: 16
-            },
-          showOriginValue: true,
-           lineWidth: 22
-
-          },
-      option: {},
-      optionTask1: {},
-      optionTask2: {},
-      optionTask3: {},
-    }
-  },
-  methods: {
-    createData () {
-      const { randomExtend } = this
-     this.caseInof()
-     this.coffinInof()
-     this.amountCons()
-    },
-    randomExtend (minNum, maxNum) {
-      if (arguments.length === 1) {
-        return parseInt(Math.random() * minNum + 1, 10)
-      } else {
-        return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
-      }
-  },
-  //类别未定义
-  caseInof(){
-    let case1 = [120,130,140,150,160,170,180,190,200,220,230,240]
-    let case2 = [190,200,210,220,230,240,250,260,270,280,290,300]
-    let max = 0
-    max=300
-    this.option =  {
-             legend: {
-               data: [
-                 {
-                   name: '检测委托',
-                   color: '#00baff'
-                 },
-                 {
-                   name: '检测受理',
-                   color: '#f5d94e'
-                 }
-               ],
-               textStyle: {
-                 fill: '#fff'
-               }
-             },
-             xAxis: {
-               data: [
-                 '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'
-               ],
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               }
-             },
-             yAxis: {
-               data: 'value',
-               splitLine: {
-                 show: false
-               },
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               },
-               min: 0,
-               maxTax: max
-             },
-             series: [
-               {
-                 name: '检测委托',
-                 data:  case1,
-                 type: 'bar',
-                 barStyle: {
-                   fill: 'rgba(0, 186, 255, 0.4)'
-                 }
-               },
-               {
-                 data: case2,
-                 type: 'line',
-                 name: '检测受理',
-                 lineArea: {
-                   show: true,
-                   gradient: ['rgba(245, 217, 79, 0.8)', 'rgba(245, 217, 79, 0.2)']
-                 },
-                 lineStyle: {
-                   stroke: '#f5d94e'
-                 },
-                 linePoint: {
-                   radius: 4,
-                   style: {
-                     fill: '#f5d94e',
-                     stroke: 'transparent'
-                   }
-                 }
-               }
-             ]
-          }
-
-  },
-
-  coffinInof(){
-
-    let data1 = [];
-    data1.push("受理");
-    data1.push("待检测");
-    data1.push("检测");
-    data1.push("返样");
-    data1.push("留样");
-
-    let data2 = [];
-    data2.push(230);
-    data2.push(190);
-    data2.push(130);
-    data2.push(230);
-    data2.push(250);
-
-    let dataAxis = data1;
-    let data = data2;
-    let yangPinIdChart = echarts.init(document.getElementById("yangPinId"))
-    this.optionTask1 =  {
-         grid: {
-                      top: '20%',
-                      left: '3%',
-                      right: '4%',
-                      bottom: '10%',
-                      containLabel: true
-                  },
-        title: {
-          text: '',
-          subtext: ""
-        },
-        xAxis: {
-          data: dataAxis,
-          axisLabel: {
-            inside: true,
-            color: '#000'
-          },
-          axisTick: {
-            show: true
-          },
-          axisLine: {
-            show: true
-          },
-          z: 10
-        },
-        yAxis: {
-          axisLine: {
-            show: false
-          },
-          axisTick: {
-            show: false
-          },
-          axisLabel: {
-            color: '#999'
-          }
-        },
-        dataZoom: [
-          {
-            type: 'inside'
-          }
-        ],
-
-        series: [
-          {
-            type: 'bar',
-            showBackground: true,
-            itemStyle: {
-              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                { offset: 0, color: '#83bff6' },
-                { offset: 0.5, color: '#188df0' },
-                { offset: 1, color: '#188df0' }
-              ])
-            },
-            emphasis: {
-              itemStyle: {
-                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                  { offset: 0, color: '#2378f7' },
-                  { offset: 0.7, color: '#2378f7' },
-                  { offset: 1, color: '#83bff6' }
-                ])
-              }
-            },
-            data: data
-          }
-        ]
-      };
-      yangPinIdChart.setOption(this.optionTask1);
-  },
-  amountCons(){
-    let case1 = [190,200,210,220,230,240,250,260,270,280,290,300]
-    let case2 = [20,30,40,50,60,70,80,90,100,110,120,130]
-    let max = 300
-
-    this.optionTask2 =  {
-             legend: {
-               data: [
-                 {
-                   name: '使用',
-                   color: '#00baff'
-                 },
-                 {
-                   name: '未使用',
-                   color: '#f5d94e'
-                 }
-               ],
-               textStyle: {
-                 fill: '#fff'
-               }
-             },
-             xAxis: {
-               data: [
-                 '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'
-               ],
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               }
-             },
-             yAxis: {
-               data: 'value',
-               splitLine: {
-                 show: false
-               },
-               axisLine: {
-                 style: {
-                   stroke: '#999'
-                 }
-               },
-               axisLabel: {
-                 style: {
-                   fill: '#999'
-                 }
-               },
-               axisTick: {
-                 show: false
-               },
-               min: 0,
-               maxTax: max
-             },
-             series: [
-               {
-                 name: '使用',
-                 data:  case1,
-                 type: 'bar',
-                 barStyle: {
-                   fill: 'rgba(0, 186, 255, 0.4)'
-                 }
-               },
-               {
-                 data: case2,
-                 type: 'line',
-                 name: '未使用',
-                 lineArea: {
-                   show: true,
-                   gradient: ['rgba(245, 217, 79, 0.8)', 'rgba(245, 217, 79, 0.2)']
-                 },
-                 lineStyle: {
-                   stroke: '#f5d94e'
-                 },
-                 linePoint: {
-                   radius: 4,
-                   style: {
-                     fill: '#f5d94e',
-                     stroke: 'transparent'
-                   }
-                 }
-               }
-             ]
-          }
-        this.optionTask3  = {
-          series: [
-            {
-              type: 'gauge',
-              startAngle: -Math.PI / 2,
-              endAngle: Math.PI * 1.5,
-              arcLineWidth: 13,
-              radius: '80%',
-              data: [
-                { name: '使用率占比', value: 23 }
-              ],
-              axisLabel: {
-                show: false
-              },
-              axisTick: {
-                show: false
-              },
-              pointer: {
-                show: false
-              },
-              backgroundArc: {
-                style: {
-                  stroke: '#224590'
-                }
-              },
-              details: {
-                show: true,
-                formatter: '使用率占比{value}%',
-                style: {
-                  fill: '#1ed3e5',
-                  fontSize: 16
-                }
-              }
-            }
-          ],
-          color: ['#03d3ec']
-        }
- },
-
- yearSynthesize(data){
-   // let cofData =[]
-   // for(let i = 0; i < data.length; i++) {
-   //   let param ={}
-   //   param.total =   data[i].num
-   //   param.name  =   data[i].type
-   //   cofData.push(param)
-   //   }
-
-
-      //this.config.data = cofData
- },
-
-},
-  mounted () {
-    const { createData } = this
-    createData()
-
-  }
-}
-</script>
-
-<style lang="less">
-#cards {
-  display: flex;
-  width: 92%;
-  justify-content: space-between;
-  height: 50%;
-  .card-item {
-    background-color: rgba(6, 30, 93, 0.5);
-    border-top: 2px solid rgba(1, 153, 209, .5);
-    width: 24.3%;
-    display: flex;
-    flex-direction: column;
-  }
-  .card-header {
-    margin-top: 1%;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    .card-header-left {
-      font-size: 1.5rem;
-      font-weight: bold;
-      padding-left: 1.25rem;
-      color: #03d3ec;
-    }
-    .card-header-right {
-      padding-right: 1.25rem;
-      font-size: 32px;
-    }
-  }
-  .ring-charts {
-    height:80%;
-  }
-  .ring-charts-rose {
-    height:80%;
-    width:100%;
-  }
-  .ring-chartsDead {
-    height:80%;
-  }
-  .card-footer {
-    height: 40%;
-    display: flex;
-    align-items: center;
-    justify-content: space-around;
-  }
-  .card-footer-item {
-    padding: 0.5rem 0.75rem 0px 0.75rem;
-    box-sizing: border-box;
-    width: 45%;
-    background-color: rgba(6, 30, 93, 0.7);
-    border-radius: 3px;
-    .footer-title {
-      font-size:1rem;
-    }
-    .footer-detail {
-      color: #1294fb;
-      display: flex;
-	  font-size:1.125rem;
-      align-items: center;
-      .dv-digital-flop {
-        margin-right: 0.3125rem;
-      }
-    }
-  }
-}
-</style>

+ 0 - 135
src/views/system/jbdHome/datav/digitalFlop.vue

@@ -1,135 +0,0 @@
-<template>
-  <div id="digital-flop">
-    <div
-      class="digital-flop-item"
-      v-for="item in digitalFlopData"
-      :key="item.title"
-      v-if=" item.title!='委托案件'"
-    >
-      <div class="digital-flop-title">{{ item.title}}</div>
-      <div class="digital-flop">
-        <dv-digital-flop
-          :config="item.number"
-          style="width:80px;height:50px;font-size: 18px;"
-        />
-          <div class="unit">件</div>
-      </div>
-    </div>
-
-    <dv-decoration-10 />
-  </div>
-</template>
-
-<script>
- import { staffTaskNum } from '@/api/platform/system/jbdHome'
-export default {
-  name: 'DigitalFlop',
-  data () {
-    return {
-      digitalFlopData: [],
-      fontColor:['#4d99fc','#40faee','#D39745','#4d99fc','#f46827','#40faee'],
-      digData :{
-          title: '',
-          number: {
-            number: [],
-            content: '{nt}',
-            textAlign: 'right',
-            style: {
-              fill: '#f46827',
-              fontWeight: 'bold'
-            }
-          },
-          unit: '件'
-        },
-    }
-  },
-  mounted () {
-      const { createData } = this
-      createData()
-      setInterval(this.createData, 3600000)
-   },
-  methods: {
-    createData () {
-      const { randomExtend } = this
-      const { digitalFlopData } = this
-      staffTaskNum().then(data=>{ //将参数替换成对应参数
-          if(data.state === 200 && data.variables.data){
-                this.digitalFlopData =[]
-                let digCont = data.variables.data
-               digCont= []
-               digCont.push({taskName:'受理',taskNum:120})
-               digCont.push({taskName:'待检测',taskNum:20})
-               digCont.push({taskName:'检测',taskNum:15})
-               digCont.push({taskName:'审核',taskNum:20})
-               digCont.push({taskName:'审批',taskNum:30})
-               digCont.push({taskName:'待发放',taskNum:60})
-               digCont.push({taskName:'已发放',taskNum:75})
-               for(let i = 0; i < digCont.length; i++) {
-                  let digData = {}
-                  digData.title = digCont[i].taskName
-                  digData.unit = '件'
-                  digData.number={}
-                  digData.number.number = [digCont[i].taskNum]
-                  digData.number.content ='{nt}'
-                  digData.number.textAlign = 'right'
-                  digData.number.style={}
-                  digData.number.style.fill = this.fontColor[randomExtend(0, 5)]
-                  digData.number.style.fontWeight = 'bold'
-                  this.digitalFlopData.push(digData)
-                }
-          }
-      })
-    },
-    randomExtend (minNum, maxNum) {
-      if (arguments.length === 1) {
-        return parseInt(Math.random() * minNum + 1, 10)
-      } else {
-        return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
-      }
-    },
-    /* 随机颜色*/
-  },
-}
-</script>
-
-<style lang="less">
-#digital-flop {
-  position: relative;
-  height: 12%;
-  flex-shrink: 0;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  background-color: rgba(6, 30, 93, 0.5);
-  .dv-decoration-10 {
-    position: absolute;
-    width: 80%;
-    left: 2.5%;
-    height: 5px;
-    bottom: 0px;
-  }
-  .digital-flop-item {
-    width: 18%;
-    height: 80%;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    border-left: 5px solid rgb(6, 30, 93);
-  }
-  .digital-flop-title {
-    font-size: 16px;
-    margin-bottom: 20px;
-  }
-  .digital-flop {
-    display: flex;
-  }
-  .unit {
-    margin-left: 10px;
-    display: flex;
-    align-items: flex-end;
-    box-sizing: border-box;
-    padding-bottom: 13px;
-  }
-}
-</style>

BIN=BIN
src/views/system/jbdHome/datav/img/bg.jpg


+ 0 - 93
src/views/system/jbdHome/datav/rankingBoard.vue

@@ -1,93 +0,0 @@
-<template>
-  <div id="ranking-board">
-    <div class="ranking-board-title">本年度受理</div>               <!-- 100vh; -->
-    <dv-scroll-ranking-board :config="config" style="width:100%;height:70vh"></dv-scroll-ranking-board>
-  </div>
-</template>
-
-<script>
-import { countCaseNumData } from '@/api/platform/system/jbdHome'
-export default {
-  name: 'RankingBoard',
-  data () {
-    return {
-      config: { data: [
-          {
-            name: '飞行公司',
-            value: 55
-          },
-          {
-            name: '网销公司',
-            value: 120
-          },
-          {
-            name: '中国立体',
-            value: 78
-          },
-          {
-            name: '力当实业',
-            value: 66
-          },
-          {
-            name: '黄宏工程',
-            value: 80
-          },
-          {
-            name: '王吉实业',
-            value: 45
-          },
-          {
-            name: '鑫辛工程',
-            value: 29
-          },
-          {
-            name: '王当制造',
-            value: 29
-          },
-          {
-            name: '绿化环境',
-            value: 29
-          }
-        ],unit:' 份委托',
-        rowNum:8}
-    }
-  },
- mounted () {
-     const { getData } = this
-     getData()
-     setInterval(this.getData, 3600000)
-  },
-  methods:{
-    getData(){
-        const { config } = this
-        countCaseNumData().then(data=>{ //将参数替换成对应参数
-        if(200 === data.state && data.variables.data.length>1){
-             let cont = JSON.parse(JSON.stringify(data.variables.data).replace(/"songJianDanWei":/g,'"name":').replace(/"ajnum":/g,'"value":'))
-              cont.pop()
-              this.config ={ ...this.config }
-              }
-         })
-    },
-  },
-}
-</script>
-
-<style lang="less">
-#ranking-board {
-  width: 22%;
-  box-shadow: 0 0 3px blue;
-  display: flex;
-  flex-direction: column;
-  background-color: rgba(6, 30, 93, 0.5);
-  border-top: 2px solid rgba(1, 153, 209, .5);
-  box-sizing: border-box;
-  padding: 0px 1.5rem;
-  .ranking-board-title {
-    font-weight: bold;
-    height: 5%;
-    display: flex;
-    align-items: center;
-    font-size: 1.25rem;
-  }
-}
-</style>

+ 0 - 148
src/views/system/jbdHome/datav/roseChart.vue

@@ -1,148 +0,0 @@
-<template>
-  <div id="rose-chart">
-    <div class="rose-chart-title">检测受理类型</div>
-    <div id="roseChartId" :style="{height:height}"></div>
-  </div>
-</template>
-
-<script>
-import echarts from 'echarts'
-
-export default {
-  name: 'RoseChart',
-  data () {
-    return {
-
-    }
-  },
-  props: {
-
-    width:{
-      type:String,
-      default:"20%"
-    },
-    height:{
-      type:String,
-      default: "90%"
-    },
-
-  },
-  methods: {
-    createData () {
-
-        let data1 = [];
-         data1.push(130);
-         data1.push(190);
-         data1.push(230);
-         data1.push(290);
-
-         let data3 = [];
-         data3.push("尺寸");
-         data3.push("元素");
-         data3.push("排放");
-         data3.push("污染");
-
-
-              let dataAxis = data3;
-              let data = data1;
-              let roseChart = echarts.init(document.getElementById("roseChartId"))
-              let option ={
-                 grid: {
-                              top: '20%',
-                              left: '3%',
-                              right: '4%',
-                              bottom: '10%',
-                              containLabel: true
-                          },
-                title: {
-                  text: '',
-                  subtext: ""
-                },
-                xAxis: {
-                  data: dataAxis,
-                  axisLabel: {
-                    inside: true,
-                    color: '#000'
-                  },
-                  axisTick: {
-                    show: true
-                  },
-                  axisLine: {
-                    show: true
-                  },
-                  z: 10
-                },
-                yAxis: {
-                  axisLine: {
-                    show: false
-                  },
-                  axisTick: {
-                    show: false
-                  },
-                  axisLabel: {
-                    color: '#999'
-                  }
-                },
-                dataZoom: [
-                  {
-                    type: 'inside'
-                  }
-                ],
-
-                series: [
-                  {
-                    type: 'bar',
-                    showBackground: true,
-                    itemStyle: {
-                      color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                        { offset: 0, color: '#83bff6' },
-                        { offset: 0.5, color: '#188df0' },
-                        { offset: 1, color: '#188df0' }
-                      ])
-                    },
-                    emphasis: {
-                      itemStyle: {
-                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-                          { offset: 0, color: '#2378f7' },
-                          { offset: 0.7, color: '#2378f7' },
-                          { offset: 1, color: '#83bff6' }
-                        ])
-                      }
-                    },
-                    data: data
-                  }
-                ]
-              };
-                roseChart.setOption(option);
-          }
-  },
-  mounted () {
-    const { createData } = this
-    createData()
-  }
-}
-</script>
-
-<style lang="less">
-#rose-chart {
-  width: 25%;
-  height: 100%;
-  background-color: rgba(6, 30, 93, 0.5);
-  border-top: 2px solid rgba(1, 153, 209, .5);
-  box-sizing: border-box;
-  .rose-chart-title {
-    height: 50px;
-    font-weight: bold;
-    text-indent: 20px;
-    font-size: 20px;
-    display: flex;
-    align-items: center;
-  }
-  .dv-charts-container {
-    height: calc(~"90% - 50px");
-  }
-}
- .ring-chartsDead {
-    height:80%;
-  }
-</style>

+ 0 - 71
src/views/system/jbdHome/datav/scrollBoard.vue

@@ -1,71 +0,0 @@
-<template>
-  <div id="scroll-board">
-    <dv-scroll-board :config="config"></dv-scroll-board>
-  </div>
-</template>
-
-<script>
-  import {
-    StatisticsSelect
-  } from '@/api/platform/system/jbdHome'
-  export default {
-    name: 'ScrollBoard',
-    data() {
-      return {
-        config: {
-          header: ['检测任务', '检测类型', '计划完成时间', '进度', '人员'],
-          data: [],
-          columnWidth: [130, 170, 130, 170, 130],
-          align: ['center', 'center', 'center', 'center'],
-          rowNum: 7,
-          headerBGC: '#1981f6',
-          headerHeight: 45,
-          oddRowBGC: 'rgba(0, 44, 81, 0.8)',
-          evenRowBGC: 'rgba(10, 29, 50, 0.8)',
-        },
-          cont:[{jian_ce_ren_wu:'样品登记',jian_ce_lei_xing:'尺寸类',ji_hua_wan_cheng_shi_jian:'2022-02-31',jin_du:'20%',ren_yuan:'杨小曦'},
-          {jian_ce_ren_wu:'资源确认',jian_ce_lei_xing:'尺寸类',ji_hua_wan_cheng_shi_jian:'2022-02-21',jin_du:'30%',ren_yuan:'康雄'},
-          {jian_ce_ren_wu:'数据处理',jian_ce_lei_xing:'光谱类',ji_hua_wan_cheng_shi_jian:'2022-03-01',jin_du:'30%',ren_yuan:'邱元军'},
-          {jian_ce_ren_wu:'数据处理',jian_ce_lei_xing:'光谱类',ji_hua_wan_cheng_shi_jian:'2022-03-01',jin_du:'15%',ren_yuan:'林霖'},
-          {jian_ce_ren_wu:'数据校验',jian_ce_lei_xing:'汽车耗油类',ji_hua_wan_cheng_shi_jian:'2022-04-11',jin_du:'70%',ren_yuan:'杨光辉'},
-          {jian_ce_ren_wu:'数据校验',jian_ce_lei_xing:'汽车耗油类',ji_hua_wan_cheng_shi_jian:'2022-04-11',jin_du:'70%',ren_yuan:'陈东晗'},
-          {jian_ce_ren_wu:'报告',jian_ce_lei_xing:'汽车排放类',ji_hua_wan_cheng_shi_jian:'2022-05-31',jin_du:'90%',ren_yuan:'周蔚'}
-         ]
-      }
-    },
-    mounted() {
-      const {
-        createData
-      } = this
-      createData()
-      setInterval(this.createData, 3600000)
-    },
-    methods: {
-      createData(val) {
-            let sunData = []
-            for (let i = 0; i < this.cont.length; i++) {
-              let dataCont = []
-              dataCont.push(this.cont[i].jian_ce_ren_wu)
-              dataCont.push(this.cont[i].jian_ce_lei_xing)
-              dataCont.push(this.cont[i].ji_hua_wan_cheng_shi_jian)
-              dataCont.push(this.cont[i].jin_du)
-               dataCont.push(this.cont[i].ren_yuan)
-              sunData.push(dataCont)
-            }
-            this.config.data = sunData
-            this.config = { ...this.config
-            }
-      }
-    }
-  }
-</script>
-
-<style lang="less">
-  #scroll-board {
-    width: 42%;
-    box-sizing: border-box;
-    margin-left: 1%;
-    height: 100%;
-    overflow: hidden;
-  }
-</style>

+ 0 - 50
src/views/system/jbdHome/datav/topHeader.vue

@@ -1,50 +0,0 @@
-<template>
-  <div id="top-header">
-    <dv-decoration-8 class="header-left-decoration" />
-    <dv-decoration-5 class="header-center-decoration" />
-    <dv-decoration-8 class="header-right-decoration" :reverse="true" />
-    <div class="center-title">{{titleName}}</div>
-    
-  </div>
-</template>
-
-<script>
-
-export default {
-  name: 'TopHeader',
-  props:['titleName'],
-  data () {
-    return {
-      queryDate:'2022-03-02'
-	}
-  },
-}
-</script>
-
-<style lang="less">
-#top-header {
-  position: relative;
-  width: 100%;
-  height: 100px;
-  display: flex;
-  justify-content: space-between;
-  flex-shrink: 0;
-  .header-center-decoration {
-    width: 40%;
-    height: 60px;
-    margin-top: 30px;
-  }
-  .header-left-decoration, .header-right-decoration {
-    width: 25%;
-    height: 60px;
-  }
-  .center-title {
-    position: absolute;
-    font-size: 30px;
-    font-weight: bold;
-    left: 50%;
-    top: 15px;
-    transform: translateX(-50%);
-  }
-}
-</style>

+ 0 - 134
src/views/system/jbdHome/datav/waterLevelChart.vue

@@ -1,134 +0,0 @@
-<template>
-  <div id="water-level-chart">
-    <div class="water-level-chart-title">检测任务情况</div>
-
-    <div class="water-level-chart-details">
-      累计<span>490</span>件
-    </div>
-
-    <div class="chart-container">
-      <dv-conical-column-chart :config="config" v-if="config" />
-    </div>
-  </div>
-</template>
-
-<script>
-import { tasksCompleteState } from '@/api/platform/system/jbdHome'
-export default {
-  name: 'WaterLevelChart',
-  data () {
-    return {
-      dataNum:0,
-      config: {
-            data:[],
-            showValue: true
-      }
-    }
-  },
-  mounted() {
-  	this.createData()
-  },
-  methods:{
-    createData(){
-      const { config } = this
-       tasksCompleteState().then(data=>{ //将参数替换成对应参数
-          if(200 === data.state && data.variables.data.length>0){
-               let watCont = data.variables.data
-               let waterData = []
-                 for(let i = 0; i < watCont.length; i++) {
-                     let watData = {}
-                     if(watCont[i].org){ //筛选总数量
-
-                        if(watCont[i].org.substring(0,3) =='DNA'){
-                          watData.name =  watCont[i].org.substring(0,3)
-                        }else{
-                          watData.name = watCont[i].org.substring(0,2)
-                        }
-
-                       watData.value = watCont[i].Num
-                       waterData.push(watData)
-                     }else{
-                       if(watCont[i].Num > this.dataNum){
-                        this.dataNum =  watCont[i].Num
-                       }
-                     }
-                   }
-                    this.config.data = waterData
-                    this.config.showValue = true
-                    this.config ={ ...this.config}
-          }else{
-            let watCont = [{org: "受理", Num: 120},{org: "待检测", Num: 50},{org: "检测", Num: 45},{org: "审核", Num: 40},{org: "审批", Num: 30},{org: "待发放", Num: 20},{org: "已发放", Num: 15}]
-            let waterData = []
-            for(let i = 0; i < watCont.length; i++) {
-                let watData = {}
-                if(watCont[i].org){
-                  watData.name = watCont[i].org.substring(0,2)
-                  watData.value = watCont[i].Num
-                  waterData.push(watData)
-                }else{
-                  if(watCont[i].Num > this.dataNum){
-                   this.dataNum =  watCont[i].Num
-                  }
-                }
-              }
-               this.config.data = waterData
-               this.config.showValue = true
-               this.config ={ ...this.config}
-            }
-       })
-    }
-  }
-}
-</script>
-
-<style lang="less">
-#water-level-chart {
-  width: 24%;
-  height: 100%;
-  box-sizing: border-box;
-  margin-left: 1%;
-  background-color: rgba(6, 30, 93, 0.5);
-  border-top: 2px solid rgba(1, 153, 209, .5);
-  display: flex;
-  flex-direction: column;
-  .water-level-chart-title {
-    font-weight: bold;
-    height: 50px;
-    display: flex;
-    align-items: center;
-    font-size: 20px;
-    justify-content: center;
-  }
-  .water-level-chart-details {
-    height: 15%;
-    display: flex;
-    justify-content: center;
-    font-size: 17px;
-    align-items: flex-end;
-    span {
-      font-size: 35px;
-      color: #58a1ff;
-      margin: 0 5px;
-      margin-bottom: -2px;
-    }
-  }
-  .chart-container {
-    width: 95%;
-    flex: 1;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-  .dv-water-pond-level {
-
-    height: 210px;
-    border: 10px;
-    ellipse {
-      stroke: transparent !important;
-    }
-    text {
-      font-size: 40px;
-    }
-  }
-}
-</style>

+ 1 - 1
src/views/system/jbdHome/index.js

@@ -1,2 +1,2 @@
-import page from './datav/DataView.vue'
+import page from './board/checkBoard.vue'
 export default page

+ 248 - 0
src/views/system/jbdScan/goods/deviceFailureTag.vue

@@ -0,0 +1,248 @@
+<template>
+  <div class="bg">
+    <el-dialog 
+      width="21cm"
+      height="10cm" 
+       :modal-append-to-body='true' :append-to-body="true" title="设备故障标签" :visible.sync="scanVisible">
+      <!-- 表单是否显示 -->
+      <div style="height:500px">
+          <div ref="qrcode" id="box">
+          <vue-easy-print tableShow ref="easyPrint"
+            :onePageRow="onePageRow"
+          >
+            <div v-for="(item1, index1) in list" :key="index1"  style="display: inline-block" >
+              <div v-for="(item2, index2) in parseInt(item1.num)" :key="index2" 
+              style="display: inline-block"
+              ><!-- style="page-break-after:always" -->
+               <div class="All">
+                <div class="tagBox">
+                  <div class="lh">
+                    <div>设备名称:</div>
+                    <div>{{ item1.name }}</div>
+                  </div>
+                  <div class="la">
+                    <div class="lh">
+                      <div>设备编号:</div>
+                      <div>{{ item1.serial }}</div>
+                    </div>
+                  </div>
+                  <div class="lh">
+                    <div>存放地点:</div>
+                    <div>{{ item1.local }}</div>
+                  </div>
+                  <div class="lh">
+                    <div>启用日期:</div>
+                    <div>{{ item1.time }}</div>
+                  </div>
+
+                  <div class="lh">
+                    <div>资产原值:</div>
+                    <div>{{ item1.money }}</div>
+                  </div>
+                  <div class="lh">
+                    <div>使用科室:</div>
+                    <div>{{ item1.condition }}</div>
+                  </div>
+
+                  <div class="lh">
+                    <div>固定资产编号:</div>
+                    <div>{{ item1.assets }}</div>
+                  </div>
+                  <div class="lh">
+                    <div>设备状态:</div>
+                    <div>{{ item1.status }}</div>
+                  </div>
+                 
+                  <div class="ewm">
+                    <vue-barcode :value="item1.serial" :width=1.5 :height=25 :fontSize=15 :margin=8 ></vue-barcode>
+                  </div>
+
+                  <!-- <div
+                    style="page-break-after: always; display: block !important;height: 40px"
+                  ></div> -->
+
+
+                </div>
+               </div>
+              </div>
+            </div>
+          </vue-easy-print>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <!-- <el-button @click="dialogVisible = false">取 消</el-button> -->
+        <el-button type="primary" @click="printDemo">打印标签</el-button>
+      </span>
+    </el-dialog>
+
+
+  </div>
+</template>
+
+<script>
+import VueBarcode from 'vue-barcode';
+import vueEasyPrint from "vue-easy-print";
+import repostCurd from '@/business/platform/form/utils/custom/joinCURD.js';
+
+export default {
+  components: {
+    VueBarcode,
+    vueEasyPrint,
+  },
+  props: {
+    obj: {
+      default: [],
+      type: Array
+    },
+    onePageRow:{
+      type:Number,
+      default:3
+    },
+    blankLines:{
+      type:Boolean,
+      default:true
+    },
+    scanVisible:{
+      type:Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      value: '',
+      id: '',
+      list: [{
+        name: 1,
+        serial: 1,
+        assets: 1,
+        num: 1,
+        local:1,
+        condition: 1,
+        money:1,
+        time:1,
+        yinZi:1,
+        status: 1
+      }],
+      visible: true,
+    }
+  },
+  watch: {
+    obj() {
+      this.getInit()
+      // console.log(this.obj)
+    }
+  },
+  created() {
+    this.getInit()
+  },
+  methods: {
+    printDemo() {
+      this.$refs.easyPrint.print()
+    },
+    getInit() {
+      var idStr = '';
+      this.obj.forEach(item=>{
+        idStr += item.split(" ")[0] + ','
+      })
+      idStr = idStr.substring(0,idStr.length-1);
+      this.getLook(idStr)
+    },
+    getLook(id) {
+      let sql =`select * from t_sbdj where she_bei_shi_bie_h = any(SELECT she_bei_bian_h_id FROM t_sbwxsq where FIND_IN_SET(id_,'${id}')) `
+      // console.log(sql)
+      repostCurd("sql", sql).then(res => {
+          const data = res.variables.data
+          // console.log(data)
+          let list = []
+          data.forEach(item => {
+            let num = 1
+            let o = {
+              name: item.she_bei_ming_cheng_,
+              serial: item.she_bei_shi_bie_h,
+              assets: item.zi_chan_bian_hao_,
+              num: num,
+              local:item.cun_fang_di_dian_,
+              condition: item.shi_yong_ke_shi_,
+              money:item.zi_chan_yuan_zhi_,
+              time:item.qi_yong_ri_qi_!=null?this.getTime(item.qi_yong_ri_qi_):'',
+              status:item.she_bei_zhuang_ta,
+            }
+            list.push(o)
+          })
+          
+          this.list = list
+      })
+    },
+    getTime(second) {
+      let date =new Date(second);
+      let year = date.getFullYear();
+      let month = ''
+      let day = ''
+      if((date.getMonth()+1)<=9){
+        month = "0"+ (date.getMonth()+1)
+      }else{
+        month = date.getMonth()+1
+      }
+      if(date.getDate()<=9){
+        day =  "0"+date.getDate();
+      }else {
+        day =  date.getDate();
+      }
+        return year + "-"+month+"-"+day;
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.bg {
+  // height: auto;
+}
+
+.tagBox {
+  width: 283px;   // 300  240
+  height: 283px;  // 180  150  94
+  position: relative;
+  border: 2px solid #ed0c0c;
+  padding: 5px;
+  display: inline-block;
+  // justify-content: space-around;
+  // flex-direction: column;
+  margin: 10px 5px;
+  border-radius: 4px;
+  background-color: #fff;
+}
+.ewm{
+
+}
+/*
+.tagBox {
+  width: 177.5px;   // 300  240
+  height: 106.5px;  // 180  150
+  position: relative;
+  border: 1px solid #000000;
+  padding: 20px;
+  display: flex;
+  justify-content: space-around;
+  flex-direction: column;
+  margin: 20px auto;
+  border-radius: 15px;
+  background-color: #fff;
+}
+*/
+
+.la {
+  display: flex;
+  align-items: center;
+}
+
+.lh {
+  // line-height: auto;
+  font-size: 18px;  //16
+  color: #ed0c0c;
+  display: flex;
+  align-items: center;
+  // padding: 4px;
+
+}
+</style>

+ 6 - 4
src/views/system/jbdScan/goods/deviceTag.vue

@@ -49,10 +49,10 @@
                   </div>
 
                  
-                  <!-- <div class="lh">
-                    <div>流转状态:</div>
-                    <div>▢待检,▢已检,▢留样</div>
-                  </div> -->
+                  <div class="lh">
+                    <div>设备状态:</div>
+                    <div>{{ item1.status }}</div>
+                  </div>
                  
                   <div class="ewm">
                     <vue-barcode :value="item1.serial" :width=1.5 :height=25 :fontSize=15 :margin=8 ></vue-barcode>
@@ -121,6 +121,7 @@ export default {
         condition: 1,
         money:1,
         time:1,
+        status:1
       }],
       visible: true,
     }
@@ -164,6 +165,7 @@ export default {
               condition: item.shi_yong_ke_shi_,
               money:item.zi_chan_yuan_zhi_,
               time:item.qi_yong_ri_qi_!=null?this.getTime(item.qi_yong_ri_qi_):'',
+              status:item.she_bei_zhuang_ta,
             }
             list.push(o)
           })

+ 9 - 3
src/views/system/jbdScan/goods/deviceVerificationTag.vue

@@ -60,6 +60,10 @@
                     <div>固定资产编号:</div>
                     <div>{{ item1.assets }}</div>
                   </div>
+                  <div class="lh">
+                    <div>设备状态:</div>
+                    <div>{{ item1.status }}</div>
+                  </div>
                  
                   <div class="ewm">
                     <vue-barcode :value="item1.serial" :width=1.5 :height=25 :fontSize=15 :margin=8 ></vue-barcode>
@@ -130,7 +134,8 @@ export default {
         time:1,
         yinZi:1,
         jiGou:1,
-        jiaoZhunTime:1
+        jiaoZhunTime:1,
+        status: 1
       }],
       visible: true,
     }
@@ -158,7 +163,7 @@ export default {
     },
     getLook(id) {
       let sql = `select dj.she_bei_ming_cheng_,dj.she_bei_shi_bie_h,dj.zi_chan_bian_hao_,
-        dj.cun_fang_di_dian_,dj.shi_yong_ke_shi_,dj.zi_chan_yuan_zhi_,  dj.qi_yong_ri_qi_,
+        dj.cun_fang_di_dian_,dj.shi_yong_ke_shi_,dj.zi_chan_yuan_zhi_,  dj.qi_yong_ri_qi_,dj.she_bei_zhuang_ta,
         zx.xiu_zheng_zhi_,zx.xiao_zhun_ri_qi_,zx.jian_ding_xiao_zh
         from t_sbdj dj right JOIN t_sbjdxzzx zx on zx.yi_qi_bian_hao_ = dj.id_ where find_in_set(zx.parent_id_,'${id}')`
       // console.log(sql)
@@ -179,7 +184,8 @@ export default {
               time:item.qi_yong_ri_qi_!=null?this.getTime(item.qi_yong_ri_qi_):'',
               yinZi:item.xiu_zheng_zhi_,
               jiGou:item.jian_ding_xiao_zh,
-              jiaoZhunTime:item.xiao_zhun_ri_qi_
+              jiaoZhunTime:item.xiao_zhun_ri_qi_,
+              status:item.she_bei_zhuang_ta,
             }
             list.push(o)
           })

+ 270 - 0
src/views/system/jbdScan/goods/fzrkTag.vue

@@ -0,0 +1,270 @@
+<template>
+    <div class="bg">
+      <el-dialog
+        width="21cm"
+        height="12cm"
+        :modal-append-to-body="false"
+        title="物料标签"
+        :visible.sync="scanVisible"
+      >
+        <!-- 表单是否显示 -->
+        <div class="demo">
+          <div ref="qrcode" id="box">
+            <vue-easy-print
+              tableShow
+              ref="easyPrint"
+              :onePageRow="onePageRow"
+              :spaceRow="spaceRow"
+            >
+              <div
+                v-for="(item1, index1) in list"
+                :key="index1"
+                class="box-content"
+              >
+                <div
+                  v-for="(item2, index2) in parseInt(item1.shu_liang_) || 0"
+                  :key="index2"
+                  style="display: inline-block"
+                >
+                  <div class="tagBox">
+                    <!-- <div class="logo"> -->
+                    <!-- <img
+                        style="width: 90px; height: 20px"
+                        src="./ming.jpg"
+                        alt=""
+                      />
+                    </div> -->
+                    <div class="la">
+                      <div
+                        style="
+                          display: flex;
+                          justify-content: flex-start;
+                          text-align: left;
+                        "
+                      >
+                        <span> 物料名称:</span>
+                        <p style="width: 180px; margin: 0px">
+                          {{ item1.fen_zhuang_wu_lia }}
+                        </p>
+                      </div>
+                    </div>
+                    <div class="la">
+                      <div class="lh">
+                        <div style="white-space: nowrap">物料代码:</div>
+                        <div>{{ item1.wu_liao_bian_ma_ }}</div>
+                      </div>
+                    </div>
+                    <div class="la">
+                      <div class="lh">
+                        <div>规格:</div>
+                        <div>{{ item1.han_liang_nong_du }}</div>
+                      </div>
+                    </div>
+                    <div class="la">
+                      <div style="display: flex">
+                        <div class="lh" style="display: flex">
+                          <div>货号:</div>
+                          <div>{{ item1.huo_hao_ }}</div>
+                        </div>
+                        <div class="lh" style="display: flex; margin-left: 3px">
+                          <div>批号:</div>
+                          <div>{{ item1.fen_zhuang_pi_hao }}</div>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="la">
+                      <div style="display: flex">
+                        <div class="lh">
+                          <div>配置时间:</div>
+                          <div>
+                            {{ item1.parent_id_ | timesfiltes(listtimes) }}
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="la">
+                      <div style="display: flex">
+                        <div class="lh" style="margin-left: 1px">
+                          <div>有效期:</div>
+                          <div>{{ item1.you_xiao_qi_zhi_ }}</div>
+                        </div>
+                      </div>
+                    </div>
+                    <!-- <div class="la">
+                      <div class="lh">
+                        <div>配置人:</div>
+                        <div>
+                          {{ item1.parent_id_ | peizhifiltes(listtimes) }}
+                        </div>
+                      </div>
+                    </div> -->
+                    <div class="la">
+                      <div class="lh">
+                        <div>状态</div>
+                        <!-- <div class="la" style="height: 40px"></div> -->
+                      </div>
+                    </div>
+  
+                    <div
+                      style="
+                        page-break-after: always;
+                        display: block !important;
+                        height: 40px;
+                      "
+                    ></div>
+                  </div>
+                </div>
+              </div>
+            </vue-easy-print>
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="printDemo">打印标签</el-button>
+        </span>
+      </el-dialog>
+    </div>
+  </template>
+  
+  <script>
+  import VueBarcode from "vue-barcode";
+  import vueEasyPrint from "vue-easy-print";
+  import repostCurd from "@/business/platform/form/utils/custom/joinCURD.js";
+  
+  export default {
+    components: {
+      VueBarcode,
+      vueEasyPrint,
+    },
+    props: {
+      obj: {
+        default: [],
+        type: Array,
+      },
+      onePageRow: {
+        type: Number,
+        default: 3,
+      },
+      blankLines: {
+        type: Boolean,
+        default: true,
+      },
+      spaceRow: {
+        type: Boolean,
+        default: true,
+      },
+      scanVisible: {
+        type: Boolean,
+        default: false,
+      },
+      currentScan: {
+        type: Boolean,
+        default: false,
+      },
+    },
+    data() {
+      return {
+        onePageRow: 1,
+        value: "",
+        id: "",
+        list: [],
+        listtimes: [],
+        visible: true,
+      };
+    },
+    filters: {
+      timesfiltes: function (value, arr) {
+        for (let i = 0; i < arr.length; i++) {
+          if (arr[i].id_ == value) {
+            return arr[i].bian_zhi_shi_jian;
+          }
+        }
+      },
+      peizhifiltes: function (value, arr) {
+        for (let i = 0; i < arr.length; i++) {
+          if (arr[i].id_ == value) {
+            return arr[i].bian_zhi_ren_;
+          }
+        }
+      },
+    },
+    created() {
+      this.getInit();
+    },
+    watch: {
+      obj() {
+        this.getInit();
+      },
+    },
+    methods: {
+      printDemo() {
+        this.$refs.easyPrint.print();
+      },
+      getInit() {
+        var idStr = "";
+        this.obj.forEach((item) => {
+          idStr += item + ",";
+        });
+        idStr = idStr.substring(0, idStr.length - 1);
+  
+        this.getLook(idStr);
+      },
+      async getLook(id) {
+        let this_ = this;
+        this.list = [];
+        let sql = `select * FROM t_fzwlmx  WHERE FIND_IN_SET(parent_id_,'${id}')`;
+        await repostCurd("sql", sql).then((res) => {
+          this_.list = res.variables.data;
+        });
+        let sql1 = `select id_,fen_zhuang_ren_,fen_zhuang_ri_qi_ FROM t_fzwlrkd  WHERE FIND_IN_SET(id_,'${id}')`;
+        await repostCurd("sql", sql1).then((res) => {
+          console.log(res.variables.data);
+          this_.listtimes = res.variables.data;
+        });
+      },
+    },
+  };
+  </script>
+  
+  <style lang="scss" scoped>
+  .demo {
+    height: 300px;
+    width: 100%;
+  }
+  
+  .logo {
+    position: absolute;
+    top: -32px;
+    left: 0;
+  }
+  
+  .content {
+    display: flex;
+    justify-content: flex-start;
+    text-align: left;
+  }
+  .tagBox {
+    width: 240px;
+    height: 150px;
+    position: relative;
+    border: 1px solid #000000;
+    padding: 2px;
+    display: inline-block;
+    margin: 50px 4px 44px 3px;
+    background-color: #fff;
+  }
+  
+  .la,
+  .logo {
+    align-items: center;
+    font-size: 8px;
+    display: inline-block;
+    width: 100%;
+  }
+  
+  .lh {
+    font-size: 8px;
+    display: flex;
+    align-items: center;
+  }
+  </style>
+  

+ 27 - 1
src/views/system/jbdScan/goods/sampleConfirmation.vue

@@ -468,11 +468,13 @@ import sampleConfirmationJS from '../js/sampleConfirmationJS.js'
 import IbpsLinkData from '@/business/platform/data/templaterender/link-data'
 import weizhiData from "./weizhiData.vue"
 import liuyangData from "./liuyangData.vue"
+import IbpsUserSelector from '@/business/platform/org/selector'
  export default {
    components:{
      IbpsLinkData,
      weizhiData,
-     liuyangData
+     liuyangData,
+     IbpsUserSelector
    },
    mixins:[sampleConfirmationJS],
    props:{scanVisible:Boolean},
@@ -520,6 +522,30 @@ import liuyangData from "./liuyangData.vue"
              }],
       OriginalPosition:[],
       mjwtsqbAllResult:[],
+      checkOptions:[{
+            value:'完好',
+            label:'完好'
+          },{
+            value:'残缺',
+            label:'残缺'
+          }],
+      ifLY:[{
+          value:'是',
+          label:'是'
+        },{
+          value:'否',
+          label:'否'
+        }],
+        sex:[{
+          value:'男',
+          label:'男'
+        },{
+          value:'女',
+          label:'女'
+        }],
+      // OriginalPosition:[],
+      pageCount:'',
+      item:''
       // currentPage:1,
       // pageCount:''
 

+ 5 - 4
src/views/system/jbdScan/js/sampleConfirmationJS.js

@@ -28,8 +28,8 @@ export default {
 
       // 扫码扫到新数据,查询 回填展示
       if(flag){
-         repostCurd('select','{"tableName": "t_lhypb","paramWhere":{"yang_pin_bian_hao":"' + id + '"}}').then(response => {
-          if (response.variables.data && response.variables.data.length > 0) {
+         repostCurd('select','{"tableName": "t_lhypb","paramWhere":{"yang_pin_bian_hao":"' + id + '"}}').then(res => {
+          if (res.variables.data && res.variables.data.length > 0) {
             for (let i in res.variables.data) {
               res.variables.data[i].jie_yang_shu_lian = 1
               res.variables.data[i].jie_yang_zhuang_t = '未确认'
@@ -62,8 +62,8 @@ export default {
       // this指针
       let this_ = this;
       // 回传关闭事件。隐藏当前组件。
-      let changeWeizhi;
-      let changesyWeizhi;
+      let changeWeiZhi;     // 此处俩字段作用在下面 选择货位时出现重复位置 而重新更新样品登记表 收样位置|留样位置
+      let changesyWeiZhi;
       let judge = true;
         this.$confirm('请再次确认 [样品接收信息]').then(_ => {
 
@@ -89,6 +89,7 @@ export default {
             let lhwtbID = []
             // 罗湖委托表展示表ID
             let lhwtzsbID = []
+            let lhwtbOnlyId = []
             // 罗湖样品id列表
             let lhypIdList = []
             // 罗湖样品id格式列表

+ 7 - 1
src/views/system/jbdScan/scan.vue

@@ -19,10 +19,16 @@ import manualConfirmation from './goods/manualConfirmation'
 import tag from './goods/tag'
 import deviceTag from './goods/deviceTag.vue'
 import deviceVerificationTag from './goods/deviceVerificationTag.vue'
+import deviceFailureTag from './goods/deviceFailureTag.vue'
 import neishenzhuangtai from './goods/neishenzhuangtai'
 import bwTag from './goods/bwTag.vue'
+import fzrkTag from './goods/fzrkTag.vue'
 export default {
-  components: { facility,material,sample,sampleConfirmation,manualConfirmation,tag,deviceTag,neishenzhuangtai,bwTag},
+  components: { 
+    facility,material,sample,sampleConfirmation,manualConfirmation,tag,
+    deviceTag,deviceVerificationTag,deviceFailureTag,
+    neishenzhuangtai,bwTag,fzrkTag
+  },
   props:{
     currentScan:String,
     scanVisible:Boolean,

+ 65 - 99
src/views/system/login/page.vue

@@ -1,121 +1,87 @@
 <template>
-
-        <el-container class="login-container" @keyup.enter="handleLogin">
-            <el-header style="width: 80%;">
-              <div style="width:100%;height: 93px;text-align: center; position: relative;top:10%;overflow:hidden;" >
-                <h1 class="login-info-title" style="font-size: 40px;color:#1894d0;">深圳市罗湖医院集团细胞质量检测实验室</h1>
-              </div>
-            </el-header>
-
-            <el-main style="width: 80%;height:100%; margin-top:60px; overflow: hidden; border:0px">
-
-                    <div class="login-border" >
-                      <div class="animated fadeIn jbd-login-page-main-img">
-                      </div>
-
-                      <div class="login-main animated fadeIn jbd-login-page-main ">
-
-                        <h3><span>{{ $t('login.userLogin') }}</span>
-
-                          <ibps-api-base-url-controller v-if="$nodeEnv === 'development'">
-                            <el-tooltip
-                              effect="dark"
-                              :content="$t('navbar.switchEnvironment')"
-                              placement="bottom"
-                            >
-                              <el-button type="text" class="ibps-fr ibps-mr-5 btn-text can-hover">
-                                <ibps-icon name="wifi" style="font-size: 18px;" />
-                              </el-button>
+    <el-container class="login-container" @keyup.enter="handleLogin">
+        <el-main style="width: 80%; height: 100%; margin-top: 60px; overflow: hidden; border: 0px">
+            <div class="login-border">
+                <div class="animated fadeIn">
+                  <h1 class="login-info-title login-title">
+                    <img src="../../../assets/images/login/logo.jpg" class="logoImg"/>
+                    深圳市罗湖医院集团
+                  </h1>
+                  <h1 class="login-info-title login-title">细胞质量检测实验室lims系统</h1>
+                </div>
+
+                <div class="login-main animated fadeIn jbd-login-page-main">
+                    <h3>
+                        <span>{{ $t('login.userLogin') }}</span>
+                        <ibps-api-base-url-controller v-if="$nodeEnv === 'development'">
+                            <el-tooltip effect="dark" :content="$t('navbar.switchEnvironment')" placement="bottom">
+                                <el-button type="text" class="ibps-fr ibps-mr-5 btn-text can-hover">
+                                    <ibps-icon name="wifi" style="font-size: 18px" />
+                                </el-button>
                             </el-tooltip>
-                          </ibps-api-base-url-controller>
-                        </h3>
-                        <user-login />
-                        <login-bottom />
-                      </div>
-
-                    </div>
-
-
-            </el-main>
-            <el-footer style=" width: 80%;" >
-
-            <div style="font-size: 12px;text-align:right;">
-                <hr>
-
-                <p>
-                  <!--<i style="margin-left: 50px;" class="el-icon-office-building"/> 深圳市明鉴细胞专业技术有限公司
-                  <i style="margin-left: 20px;" class="el-icon-location-information"/> 深圳市南山区科技园高新北区源兴科技大厦东座303
-                  <i style="margin-left: 20px;" class="el-icon-phone"/> 400-9919-863
-                  <i style="margin-left: 20px;" class="el-icon-message"/> services@mingjiantech.com-->
-                  <i class="el-icon-s-platform"/> 深圳市金源信通科技有限公司开发
-                </p>
+                        </ibps-api-base-url-controller>
+                    </h3>
+                    <user-login />
+                    <login-bottom />
+                </div>
             </div>
-         </el-footer>
-        </el-container>
+        </el-main>
+        <el-footer style="width: 80%">
+            <div style="font-size: 12px; text-align: right">
+                <hr />
+                <div>
+                    <i class="el-icon-s-platform" /> 深圳市金源信通科技有限公司开发
+                </div>
+            </div>
+        </el-footer>
+    </el-container>
 </template>
 <script>
 import '@/assets/styles/pages/login.scss'
 import LoginBottom from './login-bottom'
 import UserLogin from './user-login'
-import IbpsPluginLanguage from '@/plugins/language'
+// import IbpsPluginLanguage from '@/plugins/language'
 import IbpsApiBaseUrlController from '@/plugins/api-base-url'
 
 export default {
-  name: 'login',
-  components: {
-    LoginBottom,
-    UserLogin,
-    IbpsPluginLanguage,
-    IbpsApiBaseUrlController
-  },
-  data() {
-    return {
-      activeName: 'user'
+    name: 'login',
+    components: {
+        LoginBottom,
+        UserLogin,
+        // IbpsPluginLanguage,
+        IbpsApiBaseUrlController
+    },
+    data() {
+        return {
+            activeName: 'user'
+        }
+    },
+    methods: {
+        handleLogin() {}
     }
-  },
-  methods: {
-    handleLogin() { }
-  }
 }
 </script>
 <style>
-/*.jbd-login-page-bg{
-    margin-top:70px;
-    height: 1200px;
-    width: 800px;
-
-    background-image: url("../../../assets/images/login/MJ_bg01.png");
-    background-repeat:no-repeat;
-    background-size:100% ;
-
-
-  }
-*/
-  .jbd-login-page-main{
-    margin-top:140px;
-    margin-left:3%;
-    margin-bottom:20px;
+.jbd-login-page-main {
+    margin-left: 3%;
+    margin-bottom: 20px;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
     padding: 30px;
     height: 320px;
     width: 300px;
-    background-repeat:no-repeat;
+    background-repeat: no-repeat;
     border-radius: 5%;
     box-sizing: border-box;
-
-  }
-
-  /*  margin-left: 12%;*/
-  .jbd-login-page-main-img{
-    /* box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); */
-   margin-top:120px;
-   height: 520px;
-   width: 650px;
-   margin-right:3%;
-   background-image: url("../../../assets/images/login/login3.png");
-   /* background-image: url("../../../assets/images/login/MJ_login0.jpg"); */
-   background-size:100% ;
-   background-repeat:no-repeat;
-
-  }
+}
+.login-title{
+  text-align: center;
+  font-size: 40px;
+  color: #1894d0
+}
+.logoImg{
+  width: 50px;
+  height: 50px;
+  position: relative;
+  top: 10px;
+}
 </style>