Browse Source

在ajaxsend中增加了一个展示表格函数,隐患查询增加导出全部,巡检增加多周期跳跃

CharlesLeocc 3 years ago
parent
commit
5583768a78

+ 351 - 1
src/common/AjaxSend.class.ts

@@ -789,8 +789,358 @@ class AjaxSend {
         option.dataTable = $(that.domObj.find("#" + elementId)[0]).DataTable(table_data);
         return option.dataTable;
     }
+    /**
+     *
+     *渲染时列显示与隐藏
+     * @param {*} option
+     * @return {*}
+     * @memberof AjaxSend
+     */
+    public DataTables_check_visible(option) {
+        let ajaxSend = this;
+        let that = option.that, elementId = option.elementId, url = option.url, searchInfo = option.searchInfo,
+            displayTitle = option.displayTitle, displayField = option.displayField, beforeTrClickEvent = option.beforeTrClickEvent,
+            afterTrClickEvent = option.afterTrClickEvent, drawEvent = option.drawEvent, errmassage = option.errmassage,
+            nullmessage = option.nullmessage,title = option.exportTitle, extentDisplayTitle = option.extentDisplayTitle,
+            extentDisplayContent = option.extentDisplayContent,serachCallBack = option.serachCallBack,testData=option.testData;
+        let isCheck = null;
+        if (option.isCheck != undefined || option.isCheck != null) {
+            isCheck = option.isCheck
+        } else {
+            isCheck = true;
+        }
+        let requestMethod = null;
+        let contentType = "application/x-www-form-urlencoded"
+        if (option.requestMethod != undefined || option.requestMethod != null) {
+            requestMethod = option.requestMethod;
+            contentType = "application/json;charset=utf-8";
+        } else {
+            requestMethod = "GET";
+        }
+        let classThis = this;
+        if (option.dataTable) {
+            option.dataTable.destroy();
+        }
+        //displayTitle表头
+        let tableThead_th
+        tableThead_th = '<th title="本页全选" width="50"><input type="checkbox" class="AllCheck" /></th>';
+        for (let e of displayTitle) {
+            tableThead_th += '<th title="' + e + '">' + e + '</th>';
+        }
+        if (extentDisplayTitle && extentDisplayTitle.length > 0) {
+            for (let el of extentDisplayTitle) {
+                tableThead_th += '<th title="' + el + '">' + el + '</th>';
+            }
+        }
+        that.domObj.find("#" + elementId).empty().append("<thead><tr>" + tableThead_th + "</tr></thead>");
+        //组织DataTable参数
+        let columns = [];
+        columns.push({ "data": "input" })
+        for (let e of displayField) {
+            columns.push({ "data": e.name ,"visible": e.visible})
+        }
+        if (extentDisplayContent && extentDisplayContent.length > 0) {
+            for (let el of extentDisplayContent) {
+                columns.push({ "data": el.field })
+            }
+        }
+        let table_data = {
+            dom: 't' +
+                '     <"row"' +
+                '           <" information"ri>' +
+                '           <" length-changing"l>' +
+                '           <" pull-right pagination"p>' +
+                '           <" turnToolbar">' +
+                '           <" Bfrtip">' +
+                '     >' +
+                "<'row_datable_export'<'col-md-12'B>>",
+            buttons: [{
+                extend: 'excelHtml5',
+                title: title,
+                customize: function (xlsx) {
+                    var sheet = xlsx.xl.worksheets['sheet1.xml'];
+                },
+                exportOptions: {
+                    format: {
+                        body: function (data, row, column, node) {
+                            if (data.indexOf("singleCheckBox") != -1) {
+                                return (row + 1);
+                            } else if(data.indexOf("infoWrite") != -1){
+                                return "";
+                            }
+                            else {
+                                return node.textContent
+                            }
+                        },
+                        header: function (data, column, node) {
+                            if (data.indexOf("AllCheck") != -1) {
+                                return "序号";
+                            } else if(data == "详情"){
+                                return ""
+                            }
+                            else {
+                                return data
+                            }
+                        }
+                    }
+                }
+            }],
+            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, 50, 100, 1000,100000], //更改显示记录数选项
+            drawCallback: function (settings) {
+                $(settings.nTableWrapper).find(".AllCheck").prop('checked', false);
+                $(settings.nTable).off('click', "tbody tr").on('click', "tbody tr", function (e) {
+                    let dom = $(e.currentTarget).find(".currentTableData");
+                    let index = parseInt(dom.attr("index"));
+                    if (option.dataTable.aExtentData && option.dataTable.aExtentData.currentAllData && option.dataTable.aExtentData.currentAllData.length == 0) {
+                        return;
+                    }
+                    let clickData = option.dataTable.aExtentData.currentAllData[index];
+                    if (beforeTrClickEvent && !beforeTrClickEvent(clickData)) {
+                        return;
+                    };
+                    if (option.dataTable.aExtentData && option.dataTable.aExtentData.currentTableData && option.dataTable.aExtentData.currentTableData.id && clickData.id == option.dataTable.aExtentData.currentTableData.id) {
+                        return;
+                    } else {
+                        option.dataTable.aExtentData.currentTableData = clickData;
+                    }
+                    $(settings.nTable).find("tbody tr.active").removeClass("active");
+                    $(e.currentTarget).addClass("active");
+                    if (afterTrClickEvent && !afterTrClickEvent()) {
+                        return;
+                    };
+                });
+                if (drawEvent) {
+                    drawEvent();
+                }
+                //添加当前第几页,共几页
+                let dom = $(settings.nTableWrapper);
+                dom.find(".row_datable_export").attr("style", "display:none");
+                let addPosi = dom.find(".previous");
+                let pagehtml = '<li class="addPageInfo"><span>第' + (settings._iDisplayStart / settings._iDisplayLength + 1) + '页/共' + Math.ceil(settings._iRecordsDisplay / settings._iDisplayLength) + '页</span></li>';
+                addPosi.after(pagehtml);
+                //添加自动跳转
+                let turnAddPosi = dom.find('.turnToolbar');
+                let turnpagehtml = '<input type="number" class="addPageIndexInput" value="' + (settings._iDisplayStart / settings._iDisplayLength + 1) + '" />  <button type="button" class="btn  btn-sm btn-default addPageIndexButton">跳转</button>'
+                turnAddPosi.empty().append(turnpagehtml);
+                turnAddPosi.find('.addPageIndexButton').off().click(e => {
+                    let pageInfo = option.dataTable.page.info();
+                    let pageIndex = (turnAddPosi.find('.addPageIndexInput').val());
+                    if (pageIndex > 0 && pageIndex <= pageInfo.pages) {
+                        option.dataTable.deafultPageIndex = pageIndex;
+                        option.dataTable.ajax.reload();
+                    } else {
+                        option.dataTable.deafultPageIndex = -10;
+                        that.toast.show("跳转页数超过查询范围请重新设置!");
+                    }
+                });
+                //全选
+                dom.find('.AllCheck').off().click(e => {
+                    let currentDom = $(e.currentTarget)[0];
+                    if (currentDom["checked"]) {
+                        dom.find(".singleCheckBox").prop('checked', true);
+                    } else {
+                        dom.find(".singleCheckBox").prop('checked', false);
+                    };
+                    classThis.DataTables_check_getCheck(option.dataTable, dom);
+                });
+                //单选
+                dom.find('.singleCheckBox').off().click(e => {
+                    let currentDom = dom.find(".singleCheckBox:checked");
+                    let currentAllDom = dom.find(".singleCheckBox");
+                    if (currentDom.length == currentAllDom.length) {
+                        dom.find(".AllCheck").prop('checked', true);
+                    } else {
+                        dom.find(".AllCheck").prop('checked', false);
+                    }
+                    classThis.DataTables_check_getCheck(option.dataTable, dom);
+                });
+                if (!isCheck) {
+                    dom.find(".singleCheckBox").parent('td').attr('style', 'display:none');
+                    dom.find(".AllCheck").parent('th').attr('style', 'display:none')
+                }
+            }.bind(that),
+            serverSide: true,
+            ajax: {
+                headers: that.header,
+                type: requestMethod,
+                data: function (e) {
+                    let start = (e['start'] / e['length']) + 1;
+                    if (option.dataTable && option.dataTable.deafultPageIndex && option.dataTable.deafultPageIndex != -10) {
+                        start = parseInt(option.dataTable.deafultPageIndex);
+                        option.dataTable.context[0]._iDisplayStart = (start - 1) * option.dataTable.context[0]._iDisplayLength
+                        option.dataTable.deafultPageIndex = -10;
+                    }
+                    let searchData = null;
+                    if (that.searchInfo) {
+                        that.searchInfo.current = start || that.config.pagenumber;
+                        that.searchInfo.size = e['length'] || that.config.pagesize;
+                        searchData = that.searchInfo;
+                    } else {
+                        searchInfo.current = start || that.config.pagenumber;
+                        searchInfo.size = e['length'] || that.config.pagesize;
+                        searchData = searchInfo;
+                    }
+                    if (requestMethod == "POST") {
+                        let data = JSON.stringify(searchData);
+                        searchData = data;
+                    }
+                    return searchData;
+                },
+                url: that.apiRoot + url,
+                dataType: "json",
+                contentType: contentType,
+                async: true,
+                error: function (e) {
+                    that.loadWait.hide();
+                    let title = '查询失败!';
+                    if (errmassage) {
+                        title = errmassage;
+                    }
+                    that.toast.show(title);
+                    console.error(e);
+                },
+                dataSrc: function (results) {
+                    that.AppX.runtimeConfig.map.infoWindow.hide();
+                    //如果有测试数据,直接返回测试数据
+                    if(testData){
+                        results=testData;
+                    }
+                    if (results.code == 1) {
+                        var value = results;
+                        if (serachCallBack) {
+                            serachCallBack(results);
+                        }
+                        results = {};
+                        option.dataTable.aExtentData = {};
+                        option.dataTable.aExtentData.currentAllData = value.result.records;
+                        //这里除了把数据处理后返回给DataTables,还需要把另外三个参数处理为顶级的属性(加入另外两个参数过会会有问题只需要recordsFiltered)
+                        value.recordsFiltered = value.result.total;
+                        results.data = [];
+                        if (value.result.records.length == 0) {
+                            let title = '未查询到数据!';
+                            if (nullmessage) {
+                                title = nullmessage;
+                            }
+                            that.toast.show(title);
+                            that.loadWait.hide();
+                            that.AppX.runtimeConfig.loadMask.hide();
+                            that.AppX.runtimeConfig.loadFulldMask.hide();
+                            return results.data;
+                        };
 
-
+                        //渲染最多支持二级结构(如果还有多级的话只能自己扩展了),且二级中存在多个则只渲染第一个
+                        $.each(value.result.records, function (i, item) {
+                            let itemData = {};
+                            for (let e of displayField) {
+                                //特殊结构渲染(每个特殊结构都是针对于某个模块的特殊结构定制的使用_special_来判断特殊结构)
+                                if (e.name.indexOf('_special_') != -1) {
+                                    //针对于设备运行台账模块
+                                    if (e.name.indexOf('EquipmentOperationLedger') != -1) {
+                                        let dataInfo = "";
+                                        if (item['content']) {
+                                            item['content'].forEach(a => {
+                                                dataInfo += (ajaxSend.verificationHelper.setNullAndUndefined(a.name) + ":" + ajaxSend.verificationHelper.setNullAndUndefined(a.names) + ";")
+                                            })
+                                        }
+                                        dataInfo = ajaxSend.verificationHelper.setNullAndUndefined(dataInfo);
+                                        itemData[e.name] = "<span title='" + dataInfo + "'>" + dataInfo + "</span>";
+                                    }
+                                }
+                                //一级结构的渲染
+                                else if (e.name.indexOf('/') == -1) {
+                                    let dataInfo = ajaxSend.verificationHelper.setNullAndUndefined(item[e.name]);
+                                    //判断是否是数字
+                                    if (typeof (dataInfo) == "number") {
+                                        //判断是否是小数
+                                        if (dataInfo % 1 != 0) {
+                                            dataInfo = dataInfo.toFixed(2);
+                                        } else {
+                                            dataInfo = dataInfo;
+                                        }
+                                    }
+                                    itemData[e.name] = "<span title='" + dataInfo + "'>" + dataInfo + "</span>";
+                                }
+                                //二级结构的渲染
+                                else {
+                                    let fieldArr = e.name.split('/');
+                                    //获取二级数据列
+                                    let fileld1 = fieldArr[0];
+                                    //获取二级数据
+                                    let fileld2 = fieldArr[1];
+                                    let dataList = item[fileld1];
+                                    if (dataList) {
+                                        let dataItem = null;
+                                        //是数组则取第一个,不是数组直接赋值
+                                        if (dataList instanceof Array) {
+                                            if (dataList.length > 0) {
+                                                dataItem = dataList[0]
+                                            }
+                                        } else {
+                                            if (dataList != "") {
+                                                dataItem = dataList;
+                                            }
+                                        }
+                                        //获取数据
+                                        let dataInfo = null;
+                                        if (dataItem) {
+                                            dataInfo = ajaxSend.verificationHelper.setNullAndUndefined(dataItem[fileld2]);
+                                        } else {
+                                            dataInfo = ajaxSend.verificationHelper.setNullAndUndefined(undefined);
+                                        }
+                                        itemData[e.name] = "<span title='" + dataInfo + "'>" + dataInfo + "</span>";
+                                    } else {
+                                        itemData[e.name] = "<span title='" + ajaxSend.verificationHelper.setNullAndUndefined(undefined) + "'>" + ajaxSend.verificationHelper.setNullAndUndefined(undefined) + "</span>";
+                                    }
+                                }
+                            }
+                            itemData["input"] = "<input class='singleCheckBox currentTableData' type='checkbox' index='" + i + "'>";
+                            if (extentDisplayContent && extentDisplayContent.length > 0) {
+                                for (let el of extentDisplayContent) {
+                                    itemData[el.field] = el.fieldContent
+                                }
+                            }
+                            results.data.push(itemData);
+                        });
+                        that.loadWait.hide();
+                        that.AppX.runtimeConfig.loadMask.hide();
+                        that.AppX.runtimeConfig.loadFulldMask.hide();
+                        return results.data;
+                    } else {
+                        that.toast.show(results.message);
+                        console.error(results.message);
+                        that.loadWait.hide();
+                        that.AppX.runtimeConfig.loadMask.hide();
+                        that.AppX.runtimeConfig.loadFulldMask.hide();
+                    }
+                }
+            },
+            columns: columns,
+        };
+        option.dataTable = $(that.domObj.find("#" + elementId)[0]).DataTable(table_data);
+        return option.dataTable;
+    }
     /**此方法有check选中
      * 本方法将在option.dataTable对象中加入当前选中列表的数据(option.dataTable.aExtentData.currentTableData)和所有查询的数据(option.dataTable.aExtentData.currentAllData)
      * 选中的行的类名中将加入active用来改变选中行的颜色

+ 7 - 5
src/common/VerificationHelper.class.ts

@@ -1,7 +1,7 @@
 /***
  * 部分常用工具(可自行将常用的一些判断放置在此处)
  * 部分验证是从网上搜索,若不适用可自行替换正则表达式
- * 
+ *
 */
 class VerificationHelper {
     /**
@@ -81,7 +81,7 @@ class VerificationHelper {
         }
     }
 
-    
+
     /**
      * 本方法用于对列表输出的空值的统一设置为空(传入值为nullundefined""的统一设置),目前统一设置为--
      * @param input 判断的输入
@@ -143,8 +143,10 @@ class VerificationHelper {
     * */
     isPhone(input, toast, message?) {
         // let reg = /^[1][3,4,5,7,8][0-9]{9}$/;;
-        let reg=/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
-        let reg2 = /^(0[0-9]{2,3}\-)([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;
+        // /^1\d{10}$/   /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+        let reg=/^1\d{10}$/;
+        // /^0\d{2,3}-?\d{7,8}$/  /^(0[0-9]{2,3}\-)([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/
+        let reg2 = /^0\d{2,3}-?\d{7,8}$/;
         let str_message = "号码输入有误";
         if (!reg.test(input) && !reg2.test(input)) {
             if (message != undefined) {
@@ -204,4 +206,4 @@ class VerificationHelper {
     }
 
 }
-export = VerificationHelper;
+export = VerificationHelper;

+ 6 - 0
src/widgets/HiddenTroubleSearchAll/Widget.html

@@ -16,6 +16,12 @@
 
             </select>
         </div>
+        <div class="form-group">
+            <label for="plan_begindate">上报日期</label>
+            <input type="text" readonly="readonly" class="form-control report_begindate minwidth" id="plan_begindate" placeholder="年-月-日">
+            <label for="plan_enddate">~</label>
+            <input type="text" readonly="readonly" class="form-control report_enddate minwidth" id="plan_enddate" placeholder="年-月-日">
+        </div>
         <div class="form-group">
             <button id="btn_add" type="button" class="btn btn-sm btn-default btn-success btn_search">
                 <span class="glyphicon glyphicon-search" aria-hidden="true"></span>查询

+ 60 - 2
src/widgets/HiddenTroubleSearchAll/Widget.ts

@@ -1,4 +1,5 @@
 import BaseWidget = require('core/BaseWidget.class');
+import Functions = require('core/Functions.module');
 import AjaxSend = require("common/AjaxSend.class");
 import MapSet = require("common/MapSet.class");
 import VerificationHelper = require("common/VerificationHelper.class");
@@ -39,6 +40,7 @@ class HiddenTroubleSearchAll extends BaseWidget {
         this.configure();
         this.initHtml();
         this.initEvent();
+        this.configTimes();
         this.getInfoList();
         this.getAllInfo();
     }
@@ -64,7 +66,31 @@ class HiddenTroubleSearchAll extends BaseWidget {
         this.selectTablePoint = this.mapSet.setGraphSymbol("point");
         this.selectTableLine = this.mapSet.setGraphSymbol("polyline");
     }
+    planEnddate = {
+        format: 'YYYY-MM-DD hh:mm:ss', //日期格式
+        isinitVal: false
+    }
+
+    planBegindate = {
+        format: 'YYYY-MM-DD hh:mm:ss', //日期格式
+        isinitVal: false,
+        okfun: function (obj) {
+            //debugger
+            var dt = new Date(obj.val).setDate(new Date(obj.val).getDate()+1);
+            // //new Date().add(1).day()
+            //Functions.DateFormat(new Date(dt), "yyyy-MM-dd hh:mm:ss");
+            this.planEnddate.minDate = Functions.DateFormat(new Date(dt), "yyyy-MM-dd hh:mm:ss");;
+            this.domObj.find(".report_enddate").val(this.planEnddate.minDate);
+        }.bind(this)
+    }
 
+    /**
+     * @function 配置时间控件
+     */
+    configTimes() {
+        $.jeDate("." + this.baseClass + " .report_begindate", this.planBegindate);
+        $.jeDate("." + this.baseClass + " .report_enddate", this.planEnddate);
+    }
     /**
      * 选中列表图层的渲染创建、销毁、清理
      * @param action 通过枚举operation控制操作
@@ -92,13 +118,43 @@ class HiddenTroubleSearchAll extends BaseWidget {
         this.domObj.find(".btn_search").off().click(e => {
             this.getInfoList();
         });
-        this.domObj.find(".btn_exportExcel").off().click(e => {
-            this.domObj.find(".buttons-excel").trigger("click");
+        this.domObj.find(".btn_exportExcel").off().click((e) => {
+            this.getSearchInfo();
+            this.searchInfo.current = 1;
+            this.searchInfo.size = 100000;
+            var trouble = this.searchInfo
+            this.ajaxSend.sendAjax(this, trouble, this.config.exportTrouble, this.ajaxSend.type.post, function (results) {
+                let url = this.apiRoot + this.config.downloadFile +`?access_token=${getCookies("token")}&fileName=${results.result.fileName}&remotePath=${results.result.remotePath}`
+                window.open(url);
+                //window.location.href = url
+            }.bind(this),function(results){
+                this.toast.Show("下载失败");
+            });
+            //this.domObj.find(".buttons-excel").trigger("click");
         });
         this.domObj.find(".btn_delete").off().click(e => {
             this.deleteTroubleInfo();
         });
     }
+    getFileAddress(searchInfo,url,sendType){
+        return new Promise<void>((resolve, reject) => {
+            this.ajaxSend.sendAjax(this, searchInfo, url, sendType, function (results) {
+                resolve(results);
+            }.bind(this),function(results){
+                reject(results);
+            });
+        })
+    }
+    downloadRes(name,url){
+        // let response = await fetch(url); // 内容转变成blob地址
+        // let blob = await response.blob();  // 创建隐藏的可下载链接
+        // let objectUrl = window.URL.createObjectURL(blob);
+        let a = document.createElement('a');
+        a.href = url;
+        a.download = name;
+        a.click();
+        a.remove();
+    }
 
     /**
      * 初始化隐患上报环节
@@ -178,6 +234,8 @@ class HiddenTroubleSearchAll extends BaseWidget {
         this.searchInfo = {
             troubleName: this.domObj.find(".hiddenName").val(),
             processId:this.domObj.find(".processId").val(),
+            startTime:this.domObj.find(".report_begindate").val(),
+            endTime:this.domObj.find(".report_enddate").val(),
             "orders[0].asc":false,
             "orders[0].column":"report_time"
         }

+ 2 - 0
src/widgets/HiddenTroubleSearchAll/config.json

@@ -7,6 +7,8 @@
     "troubleInfo":"/zmrq/trouble/page",
     "deleteTroublrInfo":"/zmrq/trouble/deleteByIds",
     "trouble":"/zmrq/trouble/secretaryCheck",
+    "exportTrouble":"/zmrq/trouble/export",
+    "downloadFile":"/base/file/downloadFile",
     "tolerance": 3,
     "zoomscale": 2000,
     "dataInfo":{

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

@@ -329,13 +329,13 @@ $$
 <div class='stateInfo'><span class='titleInfo'>调度中心抢修派工</span></div>
 <div class="form-group form-inline">
     <div class='item'>
-        <label class=" control-label">调度处理部门</label>
+        <label class=" control-label">部门</label>
         <select class="input-sm form-control  dispatchDisposeDeptId" data-live-search="true"
         name='dispatchDisposeDeptId' showname='dispatchDisposeDeptIdName' data-style="btn-primary">
         </select>
     </div>
     <div class='item'>
-        <label class=" control-label">调度处理人员</label>
+        <label class=" control-label">责任班长</label>
         <select class="input-sm form-control  dispatchDisposeUserId" data-live-search="true"
             name='dispatchDisposeUserId' showname='dispatchDisposeUserIdName' data-style="btn-primary">
         </select>

+ 1 - 0
src/widgets/MaintenanceTask/Widget.ts

@@ -106,6 +106,7 @@ class MaintenanceTask extends BaseWidget {
         this.searchInfo = {
             workOrderType: workOrderType ? workOrderType : "",
             address: address ? address : "",
+            dispatchDisposeUserId:this.AppX.appConfig.userId,
             userIds:this.AppX.appConfig.userId,
             workOrderState:this.maintenancePageInfo.workOrderState.waitAudit,
             "orders[0].asc":false,

+ 105 - 15
src/widgets/MissionSchedule/Widget.ts

@@ -795,7 +795,7 @@ class MissionSchedule extends BaseWidget {
                     planRate:JSON.stringify(this.addData.planRate),
                     synergyUserIds:this.addData.synergyUserIds || "",
                     userId:Number(this.addData.userId),
-                    plan_tolerance:this.addData.plan_tolerance
+                    tolerance:this.addData.plan_tolerance
                 }
                 this.ajaxSend.sendAjax(this, sendData, this.config.addMissionScheduleInfo, this.ajaxSend.type.post, this.addMissionScheduleInfoCallback.bind(this));
             }else{
@@ -907,7 +907,7 @@ class MissionSchedule extends BaseWidget {
                     planRate:JSON.stringify(this.addData.planRate),
                     synergyUserIds:this.addData.synergyUserIds || "",
                     userId:Number(this.addData.userId),
-                    plan_tolerance:this.addData.plan_tolerance
+                    tolerance:this.addData.plan_tolerance
                 }
                 this.ajaxSend.sendAjax(this, sendData2, this.config.addMissionScheduleInfo, this.ajaxSend.type.post, this.addMissionScheduleInfoCallback.bind(this));
                 }
@@ -1956,7 +1956,7 @@ class MissionSchedule extends BaseWidget {
         isToday: false,
         okfun:function(obj){
             var period_id = this.domObj.find(".periodid option:selected").val() + "";
-            if(period_id == "3"){
+            if(period_id == "3"){//一周一巡
                 var startDate = this.domObj.find(".plan_begindate").val();
                 var start = new Date(startDate.replace(/-/g, "/"));
                 var end = new Date(obj.val.replace(/-/g, "/"));
@@ -1968,6 +1968,94 @@ class MissionSchedule extends BaseWidget {
                     this.toast.Show("当前日期不是当前周期的倍数,已自动选择当前周期结束时间");
                 }
             }
+            if(period_id == "4"){//半月一巡
+                if(new Date(obj.val).getDate() > 15){
+                   let day =  new Date(obj.val).moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                   this.domObj.find(".plan_enddate").val(day);
+                   this.toast.Show("已自动选择当前周期结束时间");
+                }else if(new Date(obj.val).getDate() < 15){
+                  let day = new Date(obj.val).setDate(15);
+                  day = Functions.DateFormat(new Date(day), "yyyy-MM-dd")
+                  this.domObj.find(".plan_enddate").val(day);
+                  this.toast.Show("已自动选择当前周期结束时间");
+                }else{
+                    this.domObj.find(".plan_enddate").val(new Date(obj.val).toString("yyyy-MM-dd"));
+                }
+            }
+            if(period_id == "5"){//一月一巡
+                let day =  new Date(obj.val).moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                this.domObj.find(".plan_enddate").val(day);
+                this.toast.Show("已自动选择当前周期结束时间");
+            }
+            if(period_id == "6"){//二月一巡
+                let beginMonth = new Date(this.domObj.find(".plan_begindate").val()).getMonth();//一月=0
+                let endMonth = new Date(obj.val).getMonth() + 1;//二月=1
+                let totalMonth = endMonth - beginMonth;
+                if(totalMonth % 2 == 0){//一月初到二月底为一个周期,如果选择的是二月的中的日期,则直接定位到二月底;三月=2,endMonth = 2+1;3/2有余数
+                    let tt = new Date(obj.val).moveToLastDayOfMonth()
+                    this.domObj.find(".plan_enddate").val(new Date(obj.val).moveToLastDayOfMonth().toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else{//3月初到四月底为一个周期,如果选择的是3月,则直接定位到下一个月的月底
+                    let tt = new Date(obj.val).next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(new Date(obj.val).next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }
+                //let day =  new Date(obj.val).moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                //this.domObj.find(".plan_enddate").val(day);
+            }
+            if(period_id == "7"){//三月一巡
+                let beginMonth = new Date(this.domObj.find(".plan_begindate").val()).getMonth();//一月=0
+                let endMonth = new Date(obj.val).getMonth() + 1;//三月=2
+                let totalMonth = endMonth - beginMonth;
+                if(totalMonth % 3 == 0){//
+                    let tt = new Date(obj.val).moveToLastDayOfMonth()
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 1){//余数为1
+                    let tt = new Date(obj.val).next().month().next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 2){//余数为2
+                    let tt = new Date(obj.val).next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }
+                //let day =  new Date(obj.val).moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                //this.domObj.find(".plan_enddate").val(day);
+            }
+            if(period_id == "8"){//半年一巡
+                let beginMonth = new Date(this.domObj.find(".plan_begindate").val()).getMonth();//一月=0
+                let endMonth = new Date(obj.val).getMonth() + 1;//三6月=5
+                let totalMonth = endMonth - beginMonth;
+                if(totalMonth % 6 == 0){//
+                    let tt = new Date(obj.val).moveToLastDayOfMonth()
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 1){//余数为1
+                    let tt = new Date(obj.val).next().month().next().month().next().month().next().month().next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 2){//余数为2
+                    let tt = new Date(obj.val).next().month().next().month().next().month().next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 3){
+                    let tt = new Date(obj.val).next().month().next().month().next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 4){
+                    let tt = new Date(obj.val).next().month().next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }else if(totalMonth % 3 == 5){
+                    let tt = new Date(obj.val).next().month().moveToLastDayOfMonth();
+                    this.domObj.find(".plan_enddate").val(tt.toString("yyyy-MM-dd"));
+                    this.toast.Show("已自动选择当前周期结束时间");
+                }
+
+                //let day =  new Date(obj.val).moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                //this.domObj.find(".plan_enddate").val(day);
+            }
         }.bind(this)
     }
     startDate = {
@@ -2042,42 +2130,44 @@ class MissionSchedule extends BaseWidget {
                     if (new Date().getDate() > 15)//当前日期在下半月,只能安排下月初的半月计划
                     {
                         this.startDate.minDate = this.startDate.maxDate = new Date().next().month().toString("yyyy-MM-01");
-                        this.endDate.minDate = this.endDate.maxDate = new Date().next().month().toString("yyyy-MM-15");
+                        //this.endDate.minDate = this.endDate.maxDate = new Date().next().month().toString("yyyy-MM-15");
+                        this.endDate.minDate = new Date().next().month().toString("yyyy-MM-15");
                     }
                     else {
                         this.startDate.minDate = this.startDate.maxDate = new Date().toString("yyyy-MM-16");
-                        this.endDate.minDate = this.endDate.maxDate = new Date().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                        //this.endDate.minDate = this.endDate.maxDate = new Date().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                        this.endDate.minDate = new Date().moveToLastDayOfMonth().toString("yyyy-MM-dd");
                     }
                     this.endDate.format = this.startDate.format = 'YYYY-MM-DD';
                     break;
                 case "5"://一月一巡
                     this.domObj.find(".period_sign").attr("title", "从每月1日开始计算,结束日期月底,只允许安排一个周期计划");
                     this.startDate.minDate = this.startDate.maxDate = new Date().next().month().toString("yyyy-MM-01");
-                    this.endDate.minDate = this.endDate.maxDate = new Date().next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                    //this.endDate.minDate = this.endDate.maxDate = new Date().next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                    this.endDate.minDate = new Date().next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
                     this.endDate.format = this.startDate.format = 'YYYY-MM-DD';
                     break;
                 case "6"://二月一巡
-                    new Date()
                     this.domObj.find(".period_sign").attr("title", "从每月1日开始计算,结束日期月底,只允许安排一个周期计划");
                     this.startDate.minDate = this.startDate.maxDate = new Date().next().month().toString("yyyy-MM-01");
-                    this.endDate.minDate = new Date(this.startDate.minDate).add(59).day().toString("yyyy-MM-dd");
-                    this.endDate.maxDate = new Date(this.startDate.minDate).add(65).day().toString("yyyy-MM-dd");
+                    this.endDate.minDate = new Date(this.startDate.minDate).next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                    //this.endDate.minDate = new Date(end).next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                    //this.endDate.minDate = new Date(this.startDate.minDate).add(59).day().toString("yyyy-MM-dd");
+                    //this.endDate.maxDate = new Date(this.startDate.minDate).add(65).day().toString("yyyy-MM-dd");
                     this.endDate.format = this.startDate.format = 'YYYY-MM-DD';
                     break;
                 case "7"://三月一巡
-                    new Date()
                     this.domObj.find(".period_sign").attr("title", "从每月1日开始计算,结束日期月底,只允许安排一个周期计划");
                     this.startDate.minDate = this.startDate.maxDate = new Date().next().month().toString("yyyy-MM-01");
-                    this.endDate.minDate = new Date(this.startDate.minDate).add(89).day().toString("yyyy-MM-dd");
-                    this.endDate.maxDate = new Date(this.startDate.minDate).add(95).day().toString("yyyy-MM-dd");
+                    this.endDate.minDate = new Date(this.startDate.minDate).next().month().next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                    //this.endDate.maxDate = new Date(this.startDate.minDate).add(95).day().toString("yyyy-MM-dd");
                     this.endDate.format = this.startDate.format = 'YYYY-MM-DD';
                     break;
                 case "8"://半年一巡
-                    new Date()
                     this.domObj.find(".period_sign").attr("title", "从每月1日开始计算,结束日期月底,只允许安排一个周期计划");
                     this.startDate.minDate = this.startDate.maxDate = new Date().next().month().toString("yyyy-MM-01");
-                    this.endDate.minDate = new Date(this.startDate.minDate).add(179).day().toString("yyyy-MM-dd");
-                    this.endDate.maxDate = new Date(this.startDate.minDate).add(185).day().toString("yyyy-MM-dd");
+                    this.endDate.minDate = new Date(this.startDate.minDate).next().month().next().month().next().month().next().month().next().month().moveToLastDayOfMonth().toString("yyyy-MM-dd");
+                    //this.endDate.maxDate = new Date(this.startDate.minDate).add(185).day().toString("yyyy-MM-dd");
                     this.endDate.format = this.startDate.format = 'YYYY-MM-DD';
                     break;
             }

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

@@ -224,8 +224,8 @@ class PipeRecordConfirm extends BaseWidget {
             isCheck: false,
             searchInfo: that.searchInfo,//条件在不断变化,故需要有全局的条件监听
             // testData:this.config.dataInfo,
-            displayTitle: ["埋设时间", "埋设人员", "埋设地址", "状态","备注"],
-            displayField: ["buriedTime", "buriedUser", "buriedAddress","stateName", "description"],
+            displayTitle: ["申请时间", "工程名称", "埋设地址", "状态","备注"],
+            displayField: ["createTime", "name", "buriedAddress","stateName", "description"],
             extentDisplayTitle: ['确认'],
             extentDisplayContent: [{
                 field: "infoWrite",

+ 15 - 13
src/widgets/PipeRecordPageInfo/Widget.html

@@ -29,14 +29,14 @@ $$
         </select>
     </div>
     <div class='item'>
-        <label class=" control-label">新增设备</label>
-        <select class="input-sm form-control  addDevice"
-            name='addDevice' showname='addDeviceName'>
-            <option value="1">调压器(柜)</option>
-            <option value="2">阀井</option>
-            <option value="0"></option>
+        <label class=" control-label">有无埋地管</label>
+        <select class="input-sm form-control  isBuried"
+            name='isBuried' showname='isBuriedName'>
+            <option value="0"></option>
+            <option value="1"></option>
         </select>
     </div>
+
 </div>
 <div class="form-group form-inline">
     <div class='item'>
@@ -65,19 +65,21 @@ $$
         <input type="text" autocomplete="off" class="form-control code" name="code" showname='code' placeholder="调压器编号">
     </div>
     <div class='item'>
-        <label class=" control-label">新增设备数量</label>
+        <label class=" control-label">新增调压器数量</label>
         <input type="text" autocomplete="off" class="form-control addDeviceNum" name="addDeviceNum" showname='addDeviceNum' placeholder="新增设备数量">
     </div>
 </div>
 <div class="form-group form-inline">
     <div class='item'>
-        <label class=" control-label">有无埋地管</label>
-        <select class="input-sm form-control  isBuried"
-            name='isBuried' showname='isBuriedName'>
-            <option value="0"></option>
-            <option value="1"></option>
-        </select>
+        <label class=" control-label">阀井编号</label>
+        <input type="text" autocomplete="off" class="form-control valveWellCode" name="valveWellCode" showname='valveWellCode' placeholder="阀井编号">
     </div>
+    <div class='item'>
+        <label class=" control-label">新增阀井数量</label>
+        <input type="text" autocomplete="off" class="form-control valveWellNum" name="valveWellNum" showname='valveWellNum' placeholder="新增阀井数量">
+    </div>
+</div>
+<div class="form-group form-inline">
     <div class='item'>
         <label class="mustWrite control-label">申请人</label>
         <select class="input-sm form-control  createUser"

File diff suppressed because it is too large
+ 3 - 3
src/widgets/PipeRecordSearch/Widget.ts


+ 1 - 0
src/widgets/UserInfoManagement/css/style.scss

@@ -1,6 +1,7 @@
 .widget-UserInfoManagement {
     height: 100%;
     .UserInfoManagement_tit {
+        height: 100%;
         .form-group {
             float: left;
             margin: 4px 0px 4px 4px;

+ 2 - 1
tsconfig.json

@@ -3,6 +3,7 @@
     "module": "amd",
     "sourceMap": true,
     "target": "es5",
+    "lib": ["ES2015","DOM"],
     "noImplicitAny": false,
     "removeComments": true,
     "preserveConstEnums": true,
@@ -17,4 +18,4 @@
     "node_modules",
     "temp"
   ]
-}
+}