Browse Source

车辆轨迹,巡检任务责任人

CharlesLeocc 3 years ago
parent
commit
81f06f3247

File diff suppressed because it is too large
+ 2 - 2
src/configure.ts


+ 2 - 2
src/login/js/login.js

@@ -1,6 +1,6 @@
 /* CONFIGURE START */
-//var HOST_NAME = "112.51.249.202:1111";//"192.168.2.248:1111";//;//;//,//var HOST_NAME = "http://192.168.2.248:1111",
-var HOST_NAME = "192.168.2.248:1111";
+var HOST_NAME = "112.51.249.202:1111";//"192.168.2.248:1111";//;//;//,//var HOST_NAME = "http://192.168.2.248:1111",
+//var HOST_NAME = "192.168.2.248:1111";
 SYS_ADDR = location.href.trim().toLowerCase().replace(/login\/+$/, ""),
     COOKIE_EXPIRES = 1,
     COOKIE_PATH = location.pathname.trim().toLowerCase().replace(/login\/+$/, "");

+ 34 - 1
src/widgets/HomePage/Widget.ts

@@ -376,12 +376,45 @@ class HomePage extends BaseWidget {
         // }
         this.sendAjax(this,this.config.totalDevice,"GET",(data)=>{
             //let dom = this.domObj.find(".rightPanle .msLength .echart")[0];
-            this.zEchart(data, this.lSbChart,this.echartDisplay.type.totalEquipment);
+            this.zEchart_liuxian(data, this.lSbChart,this.echartDisplay.type.totalEquipment);
         })
         //let dom = this.domObj.find(".rightPanle .gssbtotal .echart")[0];
         //this.zEchart(data, dom,this.echartDisplay.type.totalEquipment);
     }
+    zEchart_liuxian(dataList, dom,type){
+        if (!dataList) {
+            return;
+        }
+        let echartData = {
+            x: [],
+            data_famen: [],
+            data_shebei:[]
+        };
+        for(var i in dataList){
+            echartData.x.push(i);
+            console.log(i,dataList[i])
+            dataList[i].forEach(item=>{
+                if(item.typeName == "阀门"){
+                    echartData.data_famen.push(item.value)
+                }else{
+                    echartData.data_shebei.push(item.value)
+                }
+            })
+        }
+        if(type==this.echartDisplay.type.totalEquipment){
+            this.echartDisplay.echartMRender(dom, echartData,type,(option)=>{
+                dom.setOption(option, true);
+            })
+        }
+        // return
+        // dataList.forEach(item => {
+        //     debugger
+        //     // echartData.x.push(item[0].companyName);
+        //     // echartData.data_shebei.push(item.value);
+        //     // echartData.data_famen.push(item.value);
 
+        // });
+    }
     /**
     * 渲染柱状图
     **/

+ 69 - 31
src/widgets/HomePage/echartDisplay.class.ts

@@ -41,7 +41,7 @@ class EchartDisplay {
                 label: {
                     // formatter: '{b|{b}}\n{c|{c}km}\n{d|{d}%}',
                     // formatter: '{b|{b}}:{c|{c}km}\n{d|{d}%}',
-                    formatter: '{b|{b}}{d|({d}%)}',
+                    formatter: '{b}',
                     rich: {
                         c: {
                             fontSize: 14,
@@ -236,6 +236,18 @@ class EchartDisplay {
         let color=this.colorSet(type);
         //let Chart = echarts.init(dom, 'macarons');
         let option = {
+            tooltip:{
+                trigger:'axis'
+            },
+            legend: {
+                data: ['阀门', '调压设备']
+            },
+            grid: {
+                left: '3%',
+                right: '4%',
+                bottom: '3%',
+                containLabel: true
+            },
             xAxis: {
                 type: 'category',
                 boundaryGap: false,
@@ -280,17 +292,17 @@ class EchartDisplay {
                 },
                 z: 10
             },
-            grid: {
-                top: 20,
-                left: 80,
-                right: 20,
-                bottom: 30
-            },
-            tooltip: {
-                trigger: 'item',
-                formatter: '{b} : {c} 个',
-                backgroundColor: "rgba(50,50,50,0.5)"
-            },
+            // grid: {
+            //     top: 20,
+            //     left: 80,
+            //     right: 20,
+            //     bottom: 30
+            // },
+            // tooltip: {
+            //     trigger: 'axis',
+            //     formatter: '{b} : {c} 个',
+            //     backgroundColor: "rgba(50,50,50,0.5)"
+            // },
             yAxis: {
                 offset:20,
                 type:"value",
@@ -300,12 +312,12 @@ class EchartDisplay {
                 axisTick: {
                     show: false
                 },
-                splitLine: {
-                    lineStyle: {
-                        color: "#4589cb",
-                        opacity: 0.2
-                    }
-                },
+                // splitLine: {
+                //     lineStyle: {
+                //         color: "#4589cb",
+                //         opacity: 0.2
+                //     }
+                // },
                 axisLabel: {
                     show: true
                 }
@@ -317,26 +329,52 @@ class EchartDisplay {
             ],
             series: [
                 {
+                    name:'阀门',
                     type: 'line',
                     label: {
                         show: true,
                         position: 'top',
                         color: "black"
                     },
-                    data: echartData.data,
-                    lineStyle:{
-                        color:color.end
+                    stack: 'Total',
+                    data: echartData.data_famen,
+                    // lineStyle:{
+                    //     color:color.start
+                    // },
+                    smooth: false,
+                    // areaStyle:{
+                    //     color: new echarts.graphic.LinearGradient(
+                    //         0, 0, 0, 1,
+                    //         [
+                    //             { offset: 1, color: color.start },
+                    //             { offset: 0, color: color.end }
+                    //         ]
+                    //     ),
+                    // }
+                },
+                {
+                    name:'调压设备',
+                    type: 'line',
+                    label: {
+                        show: true,
+                        position: 'top',
+                        color: "black"
                     },
-                    smooth: true,
-                    areaStyle:{
-                        color: new echarts.graphic.LinearGradient(
-                            0, 0, 0, 1,
-                            [
-                                { offset: 1, color: color.start },
-                                { offset: 0, color: color.end }
-                            ]
-                        ),
-                    }
+                    stack: 'Total',
+                    data: echartData.data_shebei,
+                    // lineStyle:{
+                    //     color:color.end
+                    // },
+                    smooth: false,
+                    // areaStyle:{
+                    //     color: new echarts.graphic.LinearGradient(
+                    //         0, 0, 0, 1,
+                    //         [
+                    //             { offset: 1, color: color.start },
+                    //             { offset: 0, color: color.end }
+                    //         ]
+                    //     ),
+                    // }
                 }
             ]
         };

+ 3 - 1
src/widgets/MaintenancePageInfo/css/style.scss

@@ -208,7 +208,9 @@
     .precessInfo{
         // width: calc(100% - 100px);
         position: relative;
-        left: 50px;
+        display: flex;
+        justify-content: center;
+        // left: 50px;
         span {
             display: inline-block;
             // width: calc((100%)/4);

+ 3 - 3
src/widgets/MissionSchedule/Widget.html

@@ -174,14 +174,14 @@ $$
                     <span style="color: red">*</span>计划完成率</label>
                 <input type="number" class="input-sm  plan_rate" value="80" />%
             </div>
-            <div class="form-group">
+            <div class="form-group" style="margin-left: 50px;">
                 <label for="">
                 <input type="radio" class="input-sm radio xunjianArea" checked='true' value="巡检区域" name="xunjianSelect" />
                巡检区域</label>
             </div>
             <div class="form-group" style="margin-left: 5px;margin-right: 20px;">
                 <label for="lineSelect">
-                <input type="radio" class="input-sm radio xunjianUser" value="巡检责任人" name="xunjianSelect" />
+                <input type="radio" class="input-sm radio xunjianUser" disabled value="巡检责任人" name="xunjianSelect" />
                 巡检责任人</label>
             </div>
         </div>
@@ -540,7 +540,7 @@ $$
     </div>
 </div>
 <div class="halfpaneltable missionschedule planregionslist-table">
-    <table class="table table-bordered  table-striped " style="table-layout: fixed;" cellspacing="0" id='planregionslist_table'>
+    <table class="table table-bordered  table-striped " style="table-layout: fixed;" cellspacing="0" id='planuserlist_table'>
         <thead>
             <tr>
                 <th title="人员名称">人员名称</th>

+ 258 - 6
src/widgets/MissionSchedule/Widget.ts

@@ -48,6 +48,7 @@ class MissionSchedule extends BaseWidget {
     missionschedule_planpoint_clusterLayer = null;//巡检点
     regionid = "";
     regionname = "";
+    realName = "";//巡检责任人参数
     //修改计划参数
     copyPopup = null;//复制弹出窗
     devices_selected = [];//存储已选择设备
@@ -55,6 +56,7 @@ class MissionSchedule extends BaseWidget {
     currentRegionPolygon = null;//当前选中片区
     drawToolbar = null;//地图框选数据
     dataTable_r = null;
+    dataTable_User = null;//责任人表格
     dataTable_current = null;//已选择的管线的datatable对象
     dataTable_current_list = {};
     objectIdsStr = {};//id集合
@@ -416,6 +418,7 @@ class MissionSchedule extends BaseWidget {
                     maxHeight:200,
                     inheritClass: false
                 }).multiselect("enable");
+                this.domObj.find(".xunjianUser").attr("disabled",false)
                 //this.domObj.find(".subUsers").multiselect("enable");
             }else{
                 //this.domObj.find(".subUsers").removeAttr("multiple");
@@ -426,6 +429,7 @@ class MissionSchedule extends BaseWidget {
                     maxHeight:200,
                     inheritClass: false
                 }).multiselect("disable");
+                this.domObj.find(".xunjianUser").attr("disabled",true)
                 //this.domObj.find(".subUsers").multiselect("disable");
             }
             // $('option', $('.subUsers')).each(function(element) {
@@ -698,10 +702,10 @@ class MissionSchedule extends BaseWidget {
             this.map.removeLayer(this.missionschedule_planpoint_clusterLayer);
             this.missionschedule_planpoint_clusterLayer = null;
         }
-        //this.getAllPlanRegion();
+        //this.getAllUserList();
         //查询
         this.domObj.find('.btn_search').off("click").on("click", function () {
-            //this.getAllPlanRegion();
+            this.getAllUserList();
         }.bind(this));
         //上一步 新增任务
         this.domObj.find('.btn_previous_step').off("click").on("click", function () {
@@ -720,6 +724,11 @@ class MissionSchedule extends BaseWidget {
         }
         var that = this;
         this.domObj.find('.widget-planregion_deviceselect .btn_search').hide();
+        if(this.xunjianSelectVal != "巡检区域"){
+            this.domObj.find('.btn_removeall').hide();
+            this.domObj.find('.btn_select').hide();
+            this.domObj.find('.btn_part_removeall').hide();
+        }
         this.addData.objectIds = undefined;
         this.addData.gisUrl = undefined;
         this.addData.gisInfo = undefined;
@@ -857,9 +866,11 @@ class MissionSchedule extends BaseWidget {
                         this.addData.gisInfo = xjlist;
                     }
                 } else {
-                    if (this.regionid == "") {
-                        this.toast.Show("请选择片区!");
-                        return;
+                    if (this.regionid == "" && this.xunjianSelectVal == "巡检区域") {
+
+                            this.toast.Show("请选择片区!");
+                            return;
+
                     }
                 }
                 if (this.addData && this.objectids.length == 0 && this.addData.objectIds == "") {
@@ -1332,7 +1343,7 @@ class MissionSchedule extends BaseWidget {
                     this.objectIdsStr = {};//id集合
                     this.gisUrlList = {};//多选时的gpurl集合
                 }
-                if(this.xunjianSelectVal = "巡检区"){
+                if(this.xunjianSelectVal == "巡检区"){
                     this.domObj.empty().append(this.template.split('$$')[2]);
                     this.initEvent3();
                 }else{
@@ -2584,7 +2595,248 @@ class MissionSchedule extends BaseWidget {
             ],
         });
     }
+    getAllUserList(){
+        //this.getAllPlanRegionToMap();
+        this.loadWait.show("正在查询人员,请等待...", this.domObj);
+        let that = this;
+        if (that.dataTable_User) {
+            that.dataTable_User.destroy();
+        }
+        that.dataTable_User = $(that.domObj.find("#planuserlist_table")[0]).DataTable({
+            dom: 't' +
+                '     <"row"' +
+                '           <" information"ri>' +
+                '           <" length-changing"l>' +
+                '           <" pull-right pagination"p>' +
+                '           <" turnToolbar">' +
+                '     >',
+            language: {
+                "lengthMenu": "每页_MENU_条",
+                "zeroRecords": "未查询到任何记录",
+                "info": "共 _TOTAL_ 条",
+                "infoEmpty": "",
+                "infoFiltered": "",
+                "processing": "查询中,请稍等...",
+                "paginate": {
+                    "first": "首页",
+                    "last": "尾页",
+                    "next": ">",
+                    "previous": "<"
+                },
+                "search": "搜索: ",
+            },
+            pagingType: "simple",
+            paging: true,
+            scrollCollapse: false,
+            processing: true,
+            scrollX: true,
+            scrollY: "calc(100% - 50px)",
+            ordering: false,
+            lengthMenu: [10, 20, 50], //更改显示记录数选项
+            drawCallback: function (settings) {
+                $(settings.nTable).find("tbody tr").off().click(function (e) {
+                    that.devices_selected = [];//设备归为0
+                    that.devices_selected_layers.clear();
+                    let dom = $(e.currentTarget).find(".getInfo");
+                    if (dom.data("realname") == null) {
+                        return;
+                    } else {
+                        //var mapPolygon = new Polygon(dom.data("geometry"));
+                        //that.zoom2MapHalf(mapPolygon);
+                        that.realName = dom.data("realname");
+                        //that.currentRegionPolygon = mapPolygon;
+                        //that.addData.regionId = parseInt(that.regionid);
+                        // if (that.addData.deviceTypeId == 1 || that.addData.deviceTypeId == 5 || that.addData.deviceTypeId == 6) {
+                        //     that.checkExistPlanDevice(that.regionid, that.addData.deviceTypeId + "", that.current_device_type_name);
+                        // } else {
+                        //var devicetype = this.getDeviceType(that.addData.deviceTypeIds);
+                        // }
+                        that.serachEquipmentByUser(that.addData.deviceTypeIds,that.realName)
+                        // if(that.addData.deviceTypeIds.split(",").length > 1){
+                        //     that.checkExistPlanDeviceByLayer_more(dom.data("geometry"), that.addData.deviceTypeIds + "", that.current_device_type_name);
+                        // }else{
+                        //     that.checkExistPlanDeviceByLayer(dom.data("geometry"), that.addData.deviceTypeIds + "", that.current_device_type_name);
+                        // }
+
+                    }
+                })
+                $(settings.nTable).find("tbody").on("mouseover","tr",function(e){
+                    $(settings.nTable).find("tbody tr.active").removeClass("active");
+                    $(e.currentTarget).addClass("active");
+                });
+                //添加当前第几页,共几页
+                let dom = $(settings.nTableWrapper);
+                let pageInfo = that.dataTable_User.page.info();
+                let addPosi = dom.find(".previous");
+                let pagehtml = '<li class="addPageInfo"><span>第' + (parseInt(pageInfo.page) + 1) + '页/共' + pageInfo.pages + '页</span></li>';
+                addPosi.after(pagehtml);
+                //添加自动跳转
+                let turnAddPosi = dom.find('.turnToolbar');
+                let turnpagehtml = '<input type="number" class="addPageIndexInput" value="' + (parseInt(pageInfo.page) + 1) + '" />  <button type="button" class="btn  btn-sm btn-default addPageIndexButton">跳转</button>'
+                turnAddPosi.empty().append(turnpagehtml);
+                turnAddPosi.find('.addPageIndexButton').off().click(e => {
+                    let pageIndex = (turnAddPosi.find('.addPageIndexInput').val());
+                    if (pageIndex > 0 && pageIndex <= pageInfo.pages) {
+                        that.dataTable_User.deafultPageIndex = pageIndex;
+                        that.dataTable_User.ajax.reload();
+                    } else {
+                        that.dataTable_User.deafultPageIndex = -10;
+                        that.toast.show("跳转页数超过查询范围请重新设置!");
+                    }
+                })
+            }.bind(that),
+            serverSide: true,
+            ajax: {
+                headers: that.header,
+                type: "GET",
+                data: function (e) {
+                    let start = (e['start'] / e['length']) + 1;
+                    if (that.dataTable_User && that.dataTable_User.deafultPageIndex && that.dataTable_User.deafultPageIndex != -10) {
+                        start = parseInt(that.dataTable_User.deafultPageIndex);
+                        that.dataTable_User.context[0]._iDisplayStart = (start - 1) * that.dataTable_User.context[0]._iDisplayLength
+                        that.dataTable_User.deafultPageIndex = -10;
+                    }
+                    return {
+                        "current": start || that.config.pagenumber,
+                        "size": e['length'] || that.config.pagesize,
+                        "realName": that.domObj.find(".serchcontent").val(),
+                    }
+                },
+                url: that.apiRoot + that.config.getAllUserList,
+                dataType: "json",
+                async: true,
+                error: function (e) {
+                    that.loadWait.hide();
+                    that.toast.show("人员查询失败");
+                    console.error(e);
+                },
+                dataSrc: function (results) {
+                    if (results.code == 1) {
+                        var value = results;
+                        results = {};
+                        //这里除了把数据处理后返回给DataTables,还需要把另外三个参数处理为顶级的属性(加入另外两个参数过会会有问题只需要recordsFiltered)
+                        value.recordsFiltered = value.result.total;
+                        results.data = [];
+                        if (value.result.records.length == 0) {
+                            // that.toast.Show("抱歉,当前未划分片区!");
+                            that.loadWait.hide();
+                            return results.data;
+                        };
+                        $.each(value.result.records, function (i, item) {
+                            results.data.push({
+                                realName: "<span class='getInfo' data-user_id='" + that.ajaxSend.setNullAndUndefined(item.id)
+                                    + "' data-realName='" + that.ajaxSend.setNullAndUndefined(item.realName)
+                                    + "' title='" + that.ajaxSend.setNullAndUndefined(item.realName) + "'>" + that.ajaxSend.setNullAndUndefined(item.realName) + "</span>",
+                                roleName: "<span title='" + that.ajaxSend.setNullAndUndefined(item.roleName) + "'>" + that.ajaxSend.setNullAndUndefined(item.roleName) + "</span>",
+                                lockFlagName: "<span title='" + that.ajaxSend.setNullAndUndefined(item.lockFlagName) + "'>" + that.ajaxSend.setNullAndUndefined(item.lockFlagName) + "</span>",
+                            });
+                        });
+                        that.loadWait.hide();
+                        return results.data;
+                    } else {
+                        that.toast.show(results.message);
+                        console.error(results.message);
+                    }
+                }
+            },
+            columns: [
+                { "data": "realName" },
+                { "data": "roleName" },
+                { "data": "lockFlagName" },
+            ],
+        });
+    }
 
+    serachEquipmentByUser(device_type_id,userName){
+        var url = this.AppX.appConfig.gisResource.pipe.config[this.config.mapindex].url;
+        var devicetype = this.getDeviceType(device_type_id);
+        var fields = this.getLayerShowFieldNames(devicetype.cnContactLayerName);
+            if (devicetype == null) return;
+            this.loadWait.show("正在检查信息,请等待...", this.domObj);
+            var where = "PROCENSOR like '%"+userName+"%'";
+            if (devicetype.sqlfilter != null && devicetype.sqlfilter.length > 0)
+                where += " and " + devicetype.sqlfilter;
+            var param = { "where": where, "spatialRel": "esriSpatialRelIntersects", "returnGeometry": false,"returnIdsOnly": true, "f": "json" };
+            $.ajax({
+                type: "POST",
+                url: url + "/" + devicetype.contactLayerId + "/query",
+                cache: false,
+                data: param,
+                dataType: "json",
+                success: function (response) {
+                    if (response.error !== undefined) {
+                        this.AppX.runtimeConfig.toast.Show("查询失败,请联系管理员");
+                        this.loadWait.hide();
+                        return;
+                    }
+                    let outfields = fields.map(e => { return e.name })
+                    if (!response.objectIds) {
+                        this.loadWait.hide();
+                        this.AppX.runtimeConfig.toast.Show("查询无果,该巡检人员没有绑定的设备");
+                        return;
+                    }
+                    this.getPlanDeviceList();
+                    this.gp = new Geoprocessor(this.analyzeUrl);
+                    let data = _.union(response.objectIds, this.objectids);
+                    this.objectids = data;
+                    this.addData.objectIds = _.join(this.objectids, ",");
+                    let layerName = "";
+                    layerName = devicetype.cnContactLayerName;
+                    var options = {
+                        "layername": layerName,
+                        "objectids": this.objectids.join(","),
+                        "outfields": outfields.join(","),
+                        usertoken: this.AppX.appConfig.gisToken
+                    };
+                    var delayResult = this.gp.submitJob(
+                        options,
+                        function (jobinfo) {
+                            if (this.dynamicMapServer) {
+                                this.map.removeLayer(this.dynamicMapServer);
+                                this.dynamicMapServer = null;
+                            }
+                            let mapServerUrl = this.mapServerUrl + "/jobs/" + jobinfo.jobId;
+                            this.addData.gisUrl = url + "/" + devicetype.contactLayerId + "/query";
+                            $.ajax({
+                                type: "get",
+                                dataType: "json",
+                                url: this.analyzeUrl + "/jobs/" + jobinfo.jobId + "/" + jobinfo.results.summary.paramUrl + "?f=pjson",
+                                success: function (result) {
+                                    this.domObj.find(".pipeTypeLength").text(result.value.result.summary.layersummary[0].length);
+                                }.bind(this)
+                            })
+                            this.dynamicMapServer = new ArcGISDynamicMapServiceLayer(mapServerUrl);
+                            this.dynamicMapServer.id = this.preLayerId + "dynamicMapServer";
+                            this.map.addLayer(this.dynamicMapServer);
+                            this.addSelectItems(this);
+                            this.loadWait.hide();
+                        }.bind(this),
+                        function (jobinfo) {
+                            this.jobid = jobinfo.jobId;
+                        }.bind(this),
+                        function (jobinfo) {
+                            this.AppX.runtimeConfig.toast.show("分析失败,请联系管理员");
+                            this.loadWait.hide();
+                            console.error(jobinfo);
+                        }.bind(this)
+                    );
+                    // var count = response.count;
+                    // this.loadWait.hide();
+                    // if (count > 0) {//下一步、设备选择
+                    //     this.getPlanDeviceList(polygon);
+                    //     this.plan_addpontype_layer.clear();
+                    //     var graphic = new Graphic(polygon, this.setSymbol("")[2], "");
+                    //     this.plan_addpontype_layer.add(graphic);
+                    // } else {
+                    //     this.toast.Show(" 抱歉,该片区内没有" + device_type_name + "信息!");
+                    // }
+                }.bind(this),
+                error: function (results) {
+                    this.loadWait.hide();
+                    this.toast.Show("查询巡检信息出错!");
+                }.bind(this)
+            });
+    }
     /**
       * @function 获取存在该类型的片区,加载到地图上
       */

+ 1 - 0
src/widgets/MissionSchedule/config.json

@@ -10,6 +10,7 @@
     "getPeriod": "/zmrq/planperiodtype/page",
     "isExitDevices": "/GpsRegion/Get_Region_Point_State/",
     "getPlanRegionList": "/zmrq/gpsregion/page",
+    "getAllUserList":"/base/user/pageNew",
     "addMissionScheduleInfo": "/zmrq/plan",
     "deleteMissionSchedule": "/zmrq/planchild/deleteByIds",
     "updateMissionSchedule": "/Plan/Update",

+ 1 - 1
src/widgets/PlanSearchAdmin/config.json

@@ -9,7 +9,7 @@
     "getPlanType": "/zmrq/planpointtype/page",
     "getPeriod": "/zmrq/planperiodtype/page",
     "getPlanRegionList": "/zmrq/gpsregion/page",
-    "deleteMainList":"/zmrq/plan/deleteByIds",
+    "deleteMainList":"/zmrq/planchild/deleteByIds",
     "addTrans":"/zmrq/plan/checkTransfer",
     "getRegionInfo": "/zmrq/planpoint/page",
     "getUserPlanPointList": "/Plan/Get_Curerent_Plan_Point",

+ 3 - 3
src/widgets/VehicleHistoryMonitor/Widget.html

@@ -41,12 +41,12 @@
                                     <span class="tool">
                                      <a  class="detail thumbnail collapse" title="轨迹" data-toggle="collapse" data-target="#%datapath" data-parent="#historyCollapseContainer" requesttype="path"><img src="widgets/VehicleHistoryMonitor/css/img/path.png" width=20 height=20/></a>
                                     <a  class="detail thumbnail collapse nocar" title="日志" data-toggle="collapse" data-target="#%datalog" data-parent="#historyCollapseContainer"  requesttype="log"><img src="widgets/VehicleHistoryMonitor/css/img/journal.png" width=20 height=20/></a>
-                                    <a  class="detail thumbnail collapse nocar" title="巡检计划" data-toggle="collapse" data-target="#%datacheckpoint" data-parent="#historyCollapseContainer" requesttype="checkpoint"><img src="widgets/VehicleHistoryMonitor/css/img/checkpoint.png" width=20 height=20/></a> 
+                                    <a  class="detail thumbnail collapse nocar" title="巡检计划" data-toggle="collapse" data-target="#%datacheckpoint" data-parent="#historyCollapseContainer" requesttype="checkpoint"><img src="widgets/VehicleHistoryMonitor/css/img/checkpoint.png" width=20 height=20/></a>
                                      </span>
                                     <span class="right" title='上线时间'>%data</span>
                                 </div>
                                 <div class="foot">
-                                    <span>&nbsp&nbsp</span><span class="right">&nbsp&nbsp</span>
+                                    <span>巡检里程(km):</span><span class="">%data</span>
                                 </div>
                             </div>
                         </div>
@@ -224,4 +224,4 @@ $$
 $$
 <div>
     <p><span>方向:${direction}</span></p>
-</div>
+</div>

+ 3 - 1
src/widgets/VehicleHistoryMonitor/Widget.ts

@@ -506,6 +506,7 @@ class VehicleHistoryMonitor extends BaseWidget {
         for (var i = 0, length = records.length; i < length; i++) {
             var departmentid = records[i].deptid;
             var carid = records[i].carid;
+            var carTotalDistance = ((records[i].carTotalDistance)/1000).toFixed(2);
             var name = records[i].carnum;
             var subName = (records[i].carnum.length > 7) ? records[i].carnum.substr(0, 7) + "..." : records[i].carnum;  //车牌号
             var x = 0;//经度
@@ -563,7 +564,7 @@ class VehicleHistoryMonitor extends BaseWidget {
                     onOffWorkTime = onTime;
                 }
             }
-            data = [departmentid, userState, oraginalAvatar, headPicture, carid, userState, title, x, y, subName, collapseIndex, collapseIndex, collapseIndex, onOffWorkTime, collapseIndex, collapseIndex, collapseIndex];
+            data = [departmentid, userState, oraginalAvatar, headPicture, carid, userState, title, x, y, subName, collapseIndex, collapseIndex, collapseIndex, onOffWorkTime,carTotalDistance,collapseIndex,collapseIndex,collapseIndex];
             var index = 0;
             var templateReplace = template.replace(/%data/g, function () {
                 return (index < data.length) ? (data[index++]) : "";
@@ -587,6 +588,7 @@ class VehicleHistoryMonitor extends BaseWidget {
             }
             this.AppX.runtimeConfig.routeplayer.Hide();
             this.relativeGraphicLayers.clearGraphics();
+            this.angleGraphic.clear();
         }.bind(this));
         //主动触发过滤
         if (this.domObj.find("select.userstate").find("option:selected").val() !== "allState") {

+ 2 - 2
src/widgets/VehicleMonitoring/Widget.html

@@ -43,8 +43,8 @@
                                     <span class="title"><a  userstate="%data" title="%data" longitude="%data" latitude="%data" class="workername">%data</a></span>
                                     <span class="tool">
                                      <a  class="detail thumbnail collapse" title="轨迹" data-toggle="collapse" data-target="#%datapath" data-parent="#historyCollapseContainer" requesttype="path"><img src="widgets/VehicleMonitoring/css/img/path.png" width=20 height=20/></a>
-                                    <!-- <a  class="detail thumbnail collapse nocar" title="日志" data-toggle="collapse" data-target="#%datalog" data-parent="#historyCollapseContainer"  requesttype="log"><img src="widgets/VehicleMonitoring/css/img/journal.png" width=20 height=20/></a>
-                                    <a  class="detail thumbnail collapse nocar" title="巡检计划" data-toggle="collapse" data-target="#%datacheckpoint" data-parent="#historyCollapseContainer" requesttype="checkpoint"><img src="widgets/VehicleMonitoring/css/img/checkpoint.png" width=20 height=20/></a>  -->
+                                    <a  class="detail thumbnail collapse nocar" title="日志" data-toggle="collapse" data-target="#%datalog" data-parent="#historyCollapseContainer"  requesttype="log"><img src="widgets/VehicleMonitoring/css/img/journal.png" width=20 height=20/></a>
+                                    <a  class="detail thumbnail collapse nocar" title="巡检计划" data-toggle="collapse" data-target="#%datacheckpoint" data-parent="#historyCollapseContainer" requesttype="checkpoint"><img src="widgets/VehicleMonitoring/css/img/checkpoint.png" width=20 height=20/></a>
                                      </span>
                                     <span class="right" title='上线时间'>%data</span>
                                 </div>

+ 2 - 2
src/widgets/VehicleMonitoring/Widget.ts

@@ -431,7 +431,7 @@ class VehicleMonitoring extends BaseWidget {
         var html = "";
         for (var i = 0, length = records.length; i < length; i++) {
             var departmentid = records[i].deptid;
-            var carTotalDistance = records[i].carTotalDistance;
+            var carTotalDistance = ((records[i].carTotalDistance)/1000).toFixed(2);
             var carid = records[i].carid;
             var name = records[i].carnum;
             var subName = (records[i].carnum.length > 7) ? records[i].carnum.substr(0, 7) + "..." : records[i].carnum;  //车牌号
@@ -490,7 +490,7 @@ class VehicleMonitoring extends BaseWidget {
                     onOffWorkTime = onTime;
                 }
             }
-            data = [departmentid, userState, oraginalAvatar, headPicture, carid, userState, title, x, y, subName, collapseIndex, collapseIndex, collapseIndex, onOffWorkTime,carTotalDistance];
+            data = [departmentid, userState, oraginalAvatar, headPicture, carid, userState, title, x, y, subName, collapseIndex, collapseIndex, collapseIndex, onOffWorkTime,carTotalDistance,collapseIndex,collapseIndex,collapseIndex];
             var index = 0;
             var templateReplace = template.replace(/%data/g, function () {
                 return (index < data.length) ? (data[index++]) : "";