licp
2024-04-12 6e101e1c82ddc11fbd515d161d8b67413004c42f
src/page/wel.vue
@@ -1,15 +1,18 @@
<template>
  <div class="dashboard-main">
        <div class="body">
    <div class="body">
        <el-row>
            <el-col :span="12">
                <p class="todo-title"><i class="el-icon-bell"></i><span> 生产调度 · 待办</span></p>
            </el-col>
        </el-row>
        <el-row>
            <el-col :span="6">
            <el-col :xs="24" :sm="12" :md="11" :lg="7">
                <el-card class="box-card todo-card">
                    <el-collapse v-model="activeName" accordion class="todo-collapse" style="display:none">
                    <ul class="type-box">
                        <li v-for="(m,i) in tabList" :key="i" :class="{active:current == i}" @click="changeTab(m,i)">{{ m }}</li>
                    </ul>
                    <el-collapse v-model="activeName" accordion class="todo-collapse" style="display: none;">
                        <el-collapse-item name="1">
                            <template slot="title">
                                <span class="title">今日待办</span>
@@ -63,33 +66,30 @@
                        </template>
                    </el-calendar>
                    <div class="todo-span"><span>待办</span></div>
                    <!-- <el-table :data="todoByDayList">
                        <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
                        <el-table-column prop="product_type" label="产品类型" align="center" min-width="50"></el-table-column>
                        <el-table-column prop="total" label="待办数量" align="center" min-width="50"></el-table-column>
                    </el-table> -->
                    <div class="todo-info" v-for="(item,index) in 10" :key="index">
                    <div class="todo-info" v-for="(item,index) in todoList" :key="index" v-show="todoList.length>0">
                        <div class="todo-info-state"></div>
                        <span>{{ item }}</span>
                    </div>
                    <span class="no-info" v-if="todoList.length==0">暂无</span>
                </el-card>
            </el-col>
            <el-col :span="6">
            <el-col :xs="24" :sm="12" :md="11" :lg="7">
                <el-card class="box-card todo-total-card">
                    <div class="todo-total-text">
                        <span>今日待办</span>
                        <span v-text="todoByDayList.length"></span>
                        <span v-text="todoInfo.todoByDay"></span>
                    </div>
                    <div class="todo-total-text">
                        <span>本周待办</span>
                        <span v-text="todoByWeekList.length"></span>
                        <span v-text="todoInfo.todoByWeek"></span>
                    </div>
                    <div class="todo-total-text">
                        <span>本月待办</span>
                        <span v-text="todoByMonthList.length"></span>
                        <span v-text="todoInfo.todoByMonth"></span>
                    </div>
                    <div class="todo-total-text">
                        <span>超期</span>
                        <span v-text="0"></span>
                        <span v-text="todoInfo.outByTime"></span>
                    </div>
                </el-card>
            </el-col>
@@ -130,6 +130,8 @@
    background: #FFFFFF;
    border-radius: 8px 8px 8px 8px;
    border: 1px solid #E8E8E8;
    display: flex;
    align-items: center;
    .todo-info-state{
        width:12px;
        height:64px;
@@ -138,6 +140,18 @@
        position: relative;
        top:0px;
    }
    span{
        font-size: 14px;
        margin: 0 16px;
    }
}
.no-info{
    font-size: 14px;
    color: #666;
    display: inline-block;
    text-align: center;
    width: 100%;
    margin-top: 100px;
}
.todo-total-card{
    margin-left: 15px;
@@ -147,6 +161,8 @@
        margin-bottom:10px;
        height: 40px;
        background: linear-gradient( 90deg, #C8C2FF 0%, rgba(200,194,255,0) 100%);
        display: flex;
        align-items: center;
        span:nth-child(1){
            width:50%;
            height:40px;
@@ -232,6 +248,24 @@
>>>.el-calendar-table td.is-selected {
    background-color: #e3effc;
}
.type-box{
    list-style-type: none;
    display: flex;
    align-items: center;
    width: 100%;
    padding-left: 0;
    margin-left: 20px;
    li{
        padding: 8px 16px;
        border: 1px solid #E3E1FD;
        cursor: pointer;
        font-size: 14px;
        color: #875A7B;
        &.active{
            background: linear-gradient( 180deg, #E3E1FD 0%, #F0EFF9 100%);
        }
    }
}
</style>
<script>
@@ -239,6 +273,7 @@
import ECharts from 'vue-echarts'
import {dateFormat} from '@/util/date'
import {getProductionSchedulReport} from '@/api/plan/productionschedul'
import { getReportList,getReport } from '@/api/wel/index'
export default {
  name: 'Wel',
  components: {
@@ -251,18 +286,26 @@
        todoByDayList: [],
        todoByWeekList: [],
        todoByMonthList: [],
        tabList:['水密接插件','海工器件','观测网','其他'],
        current:0,
        type:'水密接插件',
        todoList:[],
        todoInfo:{}
    }
  },
  computed: {
    ...mapGetters(['website'])
  },
  created() {
    this.getProSchedulReport()
    // this.getProSchedulReport()
    this.getReportList();
    this.getReport();
  },
  watch:{
    calendarValue(newVal){
        if(newVal){
            console.log(dateFormat(newVal,'yyyy-MM-dd'));
            this.getReportList()
        }
    }
  },
@@ -277,6 +320,35 @@
        }).catch(error=>{
            console.error(error)
        })
    },
    changeTab(m,i){
        this.type = m;
        this.current = i;
        this.getReportList()
        this.getReport();
    },
    getReportList(){
        getReportList({
            type:this.type,
            time:dateFormat(this.calendarValue,'yyyy-MM-dd')
        }).then(res=>{
            if(res.status===200){
                this.todoList = res.data.data
            }
        }).catch(error=>{
            console.error(error)
        })
    },
    getReport(){
        getReport({
            type:this.type,
        }).then(res=>{
            if(res.status===200){
                this.todoInfo = res.data.data
            }
        }).catch(error=>{
            console.error(error)
        })
    }
  }
}