<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=0.5">
    <!-- 一个小时刷新一下当前页 -->
    <meta http-equiv="refresh" content="3600">
    <title>制造管理看板</title>

    <link href="/lib/bootstrap/bootstrap.min.css" rel="stylesheet" />
    <link href="/css/dashboard.css" rel="stylesheet" />

    <script type="text/javascript" src="/js/service.js"></script>
    <script type="text/javascript" src="/js/session.js"></script>
    <script type="text/javascript" src="/js/service/method-get-service.js"></script>

    <script type="text/javascript" src="/lib/jquery-3.4.1.js"></script>
    <script type="text/javascript" src="/lib/jquery-3.4.1.min.js"></script>

</head>

<body id="container" class="container-fluid">
    <div class="row no-padding head-bar" style="height:81px">
        <div class="col-lg-1 col-md-1">

        </div>
        <div class="col-lg-4 col-md-4 page-title">
            制造管理看板
        </div>
        <div class="col-lg-4 col-md-4 block-padding">
            <button type="button" class="btn btn-warning"
                onclick="window.location.replace('/pages/dashboard/warehouse.html');">仓库看板</button>
            <button type="button" class="btn btn-warning"
                onclick="window.location.replace('/pages/dashboard/line.html');">产线看板</button>
            <button type="button" class="btn btn-warning"
                onclick="window.location.replace('/pages/dashboard/quality.html');">品质看板</button>
            <button type="button" class="btn btn-warning"
                onclick="window.location.replace('/pages/dashboard/esop.html');">E-SOP</button>
            <button type="button" class="btn btn-warning"
                onclick="window.location.replace('/pages/dashboard/video1.html');">云看板</button>
        </div>
        <div class="col-lg-4 col-md-4">
        </div>
    </div>
    <div class="my-container" id="div-main">
        <div class="row">
            <div class="col-lg-3 col-md-3">
                <!--生产计划达成率-->
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12 center block-title">生产计划达成率</div>
                </div>
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12" style="height:290px" id="charts_11"></div>
                </div>
                <!--月工时分布情况-->
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12 center block-title">月工时分布情况</div>
                </div>
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12" style="height:290px" id="charts_12"></div>
                </div>
                <!--月质量异常分类 -->
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12 center block-title">月生产异常分类</div>
                </div>
                <div class="row">
                    <div class="col-lg-12 col-md-12" style="height:290px" id="charts_13"></div>
                </div>
            </div>
            <div class="col-lg-6 col-md-6">
                <!--月生产计划-->
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12 center block-title">月生产计划</div>
                </div>
                <div class="row block-padding">
                    <div class="col-lg-1 col-md-1 center no-padding" >工单号</div>
                    <div class="col-lg-2 col-md-2 center no-padding">项目名</div>
                    <div class="col-lg-2 col-md-2 center no-padding">物料编码</div>
                    <!-- <div class="col-lg-2 col-md-2 center no-padding">型号规格</div> -->
                    <div class="col-lg-2 col-md-2 center no-padding">物料名称</div>
                    <div class="col-lg-1 col-md-1 center no-padding">计划数量</div>
                    <div class="col-lg-1 col-md-1 center no-padding">标准工时</div>
                    <div class="col-lg-1 col-md-1 center no-padding">实际工时</div>
                    <div class="col-lg-2 col-md-2 center no-padding">完成进度(已/未)</div>
                    <!-- <span style="background-color:#5bc0de">&nbsp;&nbsp;&nbsp;</span> -->
                </div>
                <div class="row">
                    <div class="col-lg-12 col-md-12" style="height: 350px;">
                        <div class="row" v-for="product in mouthProduceTaskList">
                            <div class="col-lg-1 col-md-1 center no-padding">{{product.orderSheetCode}}</div>
                            <div class="col-lg-2 col-md-2 center no-padding">{{product.define12}}</div>
                            <div style="overflow:hidden; word-break:break-all;white-space:nowrap" class="col-lg-2 col-md-2 center no-padding">{{product.materialCode}}</div>
                            <!-- <div class="col-lg-2 col-md-2 center no-padding">{{product.specs}}</div> -->
                            <div style="overflow:hidden; word-break:break-all;white-space:nowrap" class="col-lg-2 col-md-2 left no-padding">{{product.materialName}}</div>
                            <div class="col-lg-1 col-md-1 center no-padding">{{product.planSum}}</div>
                            <div class="col-lg-1 col-md-1 center no-padding">{{product.workHour}}</div>
                            <div class="col-lg-1 col-md-1 center no-padding">{{product.manHoursInvested}}</div>
                            <div class="col-lg-2 col-md-2 center no-padding progress">
                                <span style="z-index:999;position:absolute;">{{product.completePercent}}</span>
                                <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="60"
                                    aria-valuemin="0" aria-valuemax="100" :style="{width:product.completePercent}">
                                    <!-- {{product.completePercent}} -->
                                </div>
                                <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60"
                                    aria-valuemin="0" aria-valuemax="100" :style="{width:product.incompletePercent}">
                                    <!-- {{product.incompletePercent}} -->
                                </div>
                                
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row block-padding">
                    <div class="col-lg-6 col-md-6">
                        <div class="row">
                            <div class="col-lg-12 col-md-12 center block-title">人员出勤率</div>
                        </div>
                        <div class="row">
                            <div class="col-lg-12 col-md-2" style="height:250px" id="charts_21"></div>
                        </div>
                        <div class="row">
                            <div class="col-lg-12 col-md-12 center block-title">当月产品良率</div>
                        </div>
                        <div class="row">
                            <div class="col-lg-12 col-md-2" style="height:250px" id="charts_22"></div>
                        </div>
                    </div>
                    <div class="col-lg-6 col-md-6">
                        <div class="row">
                            <div class="col-lg-12 col-md-12 center block-title">月制程质量异常</div>
                        </div>
                        <div class="row">
                            <div class="col-lg-12 col-md-2" style="height:250px" id="charts_23"></div>
                        </div>
                        <div class="row">
                            <div class="col-lg-12 col-md-12 center block-title">周成品入库数量</div>
                        </div>
                        <div class="row">
                            <div class="col-lg-12 col-md-2" style="height:250px" id="charts_24"></div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="col-lg-3" style="height: 100%;">
                <div class="row block-padding"  >
                    <div class="col-lg-12 col-md-12 center block-title" >当月生产效率</div>
                </div>
                <div class="row block-padding" style="height: 33%;min-height: 290px;">
                    <div class="col-lg-12 col-md-12" style="height:260px" id="charts_31"></div>
                </div>
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12 center block-title">项目完工进度</div>
                </div>
                <div class="row block-padding" style="height: 33%;min-height: 290px;">
                    <!-- <div class="col-lg-12 col-md-12" style="height:280px" id="charts_32"></div> -->
                    <!--月生产计划-->
                <div class="col-lg-12 col-md-12">
                    <!-- <div class="col-lg-3 col-md-3 center no-padding">工单号</div> -->
                    <div class="col-lg-3 col-md-3 center no-padding">项目名</div>
                    <div class="col-lg-2 col-md-2 center no-padding">计划数量</div>
                    <div class="col-lg-2 col-md-2 center no-padding">标准工时</div>
                    <div class="col-lg-2 col-md-2 center no-padding">实际工时</div>
                    <div class="col-lg-3 col-md-3 center no-padding">完工百分比</div>
                </div>
                <div class="col-lg-12 col-md-12">
                    <div class="col-lg-12 col-md-12" >
                        <div class="row" v-for="product in projectScheduleCompletionList">
                            <!-- <div class="col-lg-3 col-md-3 center no-padding">{{product.productionOrderNumberName}}</div> -->
                            <div class="col-lg-3 col-md-3 center no-padding" style="overflow:hidden; word-break:break-all;white-space:nowrap">{{product.define12}}</div>
                            <div class="col-lg-2 col-md-2 center no-padding">{{product.planSum}}</div>
                            <div class="col-lg-2 col-md-2 center no-padding">{{product.workHour}}</div>
                            <div class="col-lg-2 col-md-2 center no-padding">{{product.manHoursInvested}}</div>
                            <div class="col-lg-3 col-md-3 center no-padding progress">
                                <span style="z-index:999;position:absolute;">{{product.completePercent}}</span>
                                <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="60"
                                    aria-valuemin="0" aria-valuemax="100" :style="{width:product.completePercent}">
                                    <!-- {{product.completePercent}} -->
                                </div>
                                <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60"
                                    aria-valuemin="0" aria-valuemax="100" :style="{width:product.incompletePercent}">
                                    <!-- {{product.incompleteSum}} -->
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                </div>
                <div class="row block-padding">
                    <div class="col-lg-12 col-md-12 center block-title">月度项目发货统计</div>
                </div>
                <div class="row" style="height: 33%;">
                    <div class="col-lg-12 col-md-12" style="height:250px" id="charts_33"></div>
                </div>
            </div>
        </div>
    </div>

    <!-- jQuery  -->
    <script src="/lib/jquery.min.js"></script>
    <script src="/lib/vue.min.js"></script>
    <script src="/lib/echarts/echarts.min.js"></script>
    <script src="/lib/echarts/theme/macarons.js"></script>
    <script src="/js/service/material.js?_v=2"></script>
    <script src="/js/service/product.js?_v=2"></script>
    <script src="/js/service/person.js?_v=2"></script>
    <script src="/js/service/produce-task.js?_v=2"></script>
    <script src="/js/service/workhour.js?_v=2"></script>
    <script src="/js/content/mycharts.js?_v=2"></script>
    <script type="text/javascript">

        // 参数说明:beginFun("图表ID","list形式数据","翻页时间(毫秒)","本页面唯一id(不可重复)")
        // ChartsService.initBarWithShade("charts_24", ServiceProduct.getWeekInByCategory(),
        //                 ChartsService.getGridSpanSmall());
        var initSize = 3;
        var pageSize = 3;
        var pageIndex = 0;
        var pageSizeA = 3;
        var pageIndexA = 0;
        const weekInBycategoryList = ServiceProduct.getWeekInByCategory();
        setTimeout(beginFun("charts_24",weekInBycategoryList,10000,"charts_24"),500);


        
        var pageSizeMonthGoodB = 3;
        var pageIndexMonthGoodB = 0;
        const monthExceptionByCategory =  ServiceProduct.getMonthExceptionByCategory();
        // setTimeout(beginFunA("charts_23",monthExceptionByCategory,10000,"charts_23"),500);
        setTimeout(beB,500);
        function beB(){
            var lsitMonth = monthExceptionByCategory.slice(pageIndexMonthGoodB,pageSizeMonthGoodB);
            pageIndexMonthGoodB = pageSizeMonthGoodB;
            pageSizeMonthGoodB = pageSizeMonthGoodB + initSize;
            ChartsService.initBarWithTwoNumberRate("charts_23", lsitMonth,
                        ChartsService.getGridSpanSmall());
            if(monthExceptionByCategory.length <= pageIndexMonthGoodB){
                return;
            }
            setInterval(beginScrollB,10000);
        }
        function beginScrollB(){
            var lsitMonth = monthExceptionByCategory.slice(pageIndexMonthGoodB,pageSizeMonthGoodB);
            pageIndexMonthGoodB = pageSizeMonthGoodB;
            pageSizeMonthGoodB = pageSizeMonthGoodB + initSize;
            if(monthExceptionByCategory.length <= pageIndexMonthGoodB){
                pageIndexMonthGoodB = 0;
                pageSizeMonthGoodB = initSize;
            }
            ChartsService.initBarWithTwoNumberRate("charts_23", lsitMonth,
                        ChartsService.getGridSpanSmall());
        }
        
        const monthGoodList =  ServiceProduct.getMonthGood();
        setTimeout(beA,500);
        var pageSizeMonthGood = 3;
        var pageIndexMonthGood = 0;
        function beA(){
            var lsitMonth = monthGoodList.slice(pageIndexMonthGood,pageSizeMonthGood);
            pageIndexMonthGood = pageSizeMonthGood;
            pageSizeMonthGood = pageSizeMonthGood + initSize;
            ChartsService.initBarWithTwoNumberRate("charts_22", lsitMonth,
                        ChartsService.getGridSpanSmall());
            if(monthGoodList.length <= pageIndexMonthGood){
                return;
            }
            setInterval(beginScrollA,10000);
        }
        function beginScrollA(){
            var lsitMonth = monthGoodList.slice(pageIndexMonthGood,pageSizeMonthGood);
            pageIndexMonthGood = pageSizeMonthGood;
            pageSizeMonthGood = pageSizeMonthGood + initSize;
            if(monthGoodList.length <= pageIndexMonthGood){
                pageIndexMonthGood = 0;
                pageSizeMonthGood = initSize;
            }
            ChartsService.initBarWithTwoNumberRate("charts_22", lsitMonth,
                        ChartsService.getGridSpanSmall());
        }
        

        var vm = new Vue({
            el: '#div-main',
            data: {
                mouthProduceTaskList: [],
                projectScheduleCompletionList:[],

                cacheDataObject: {}, // 从服务器加载的全数据,界面只取某几条

                timer_long: '', // 定时取服务器数据
                timer_short: '' // 数据超长定时轮播
            },
            methods: {
                // 从服务器加载数据并显示
                refreshData: function () {
                    // 关闭定时器
                    clearInterval(this.timer_short);
                    // 刷新报表
                    ChartsService.initCommonPie("charts_11", ServiceProduceTask.getCompleteInfo(), [ '#ff9f7f', '#37a2da']);
                    ChartsService.initCommonPie("charts_12", ServiceWorkhour.getByMaterial());
                    ChartsService.initBarWithShade("charts_13", ServiceProduct
                        .getQualityExceptionByCategory(), ChartsService.getGridSpanSmall());

                    ChartsService.initBarWithTwoNumberRate("charts_21", ServicePerson.getMonthAttendance(),
                        ChartsService.getGridSpanSmall());
                    // ChartsService.initBarWithTwoNumberRate("charts_22", ServiceProduct.getMonthGood(),
                    //     ChartsService.getGridSpanSmall());
                    // ChartsService.initBarWithShade("charts_23", ServiceProduct
                    //     .getMonthExceptionByCategory(), ChartsService.getGridSpanSmall());
                    // ChartsService.initBarWithShade("charts_24", ServiceProduct.getWeekInByCategory(),
                    //     ChartsService.getGridSpanSmall());

                    ChartsService.initCommonPanel("charts_31", ServiceProduct.getProduceRate());
                    // ChartsService.initBarAndLine("charts_32", ServiceWorkhour.getStandAndRealByMaterial());
                    ChartsService.initBarWithShade("charts_33", ServiceProduct.getMonthSendByProject());
                    this.loadData();
                    // 开启定时器
                    this.timer_short = setInterval(this.scrollData, 5000);
                },
                // 轮播数据
                scrollData: function () {
                    for (var key in this.cacheDataObject) {
                        const dataList = this.cacheDataObject[key].data;
                        const pagesize = this.cacheDataObject[key].pagesize;
                        var pageindex = this.cacheDataObject[key].pageindex + 1;


                        if (dataList.length > pagesize) {
                            const pagesum = (dataList.length / pagesize).toFixed(0) * 1 + (dataList.length %
                                pagesize > 0 ? 1 : 0);
                            if (pageindex >= pagesum)
                                pageindex = 0;
                            this.cacheDataObject[key].pageindex = pageindex;
                            const startIndex = pageindex * pagesize;
                            const remainSum = dataList.length - startIndex;
                            const recordSum = remainSum >= pagesize ? pagesize : remainSum;
                            const keyPar = dataList.slice(startIndex, startIndex + pagesize);
                            if(keyPar.length < 1){
                                continue;
                            }
                            this[key] = dataList.slice(startIndex, startIndex + pagesize);
                        }
                    }

                },
                // 从服务器加载数据
                loadData: function () {
                    this.cacheDataObject = {};

                    // 月度生产计划
                    const mouthProduceTaskList = ServiceProduceTask.getMonthList();
                    this.cacheDataObject.mouthProduceTaskList = {
                        data: mouthProduceTaskList,
                        pagesize: 9,
                        pageindex: 0
                    }
                    this.mouthProduceTaskList = mouthProduceTaskList.slice(0, this.cacheDataObject
                        .mouthProduceTaskList.pagesize);

                    //项目进度完工百分比
                    const projectScheduleCompletionList = ServiceProduceTask.getProjectScheduleCompletion();
                    this.cacheDataObject.projectScheduleCompletionList = {
                        data: projectScheduleCompletionList,
                        pagesize: 8,
                        pageindex: 0
                    }
                    this.projectScheduleCompletionList = projectScheduleCompletionList.slice(0, this.cacheDataObject
                        .projectScheduleCompletionList.pagesize);

                }
            },
            mounted() {
                this.timer_long = setInterval(this.refreshData, 100000);
                this.refreshData();

            },
            beforeDestroy() {
                clearInterval(this.timer_long);
                clearInterval(this.timer_short);
            }
        });
    </script>

</body>

</html>