Browse Source

Merge branch 'master' of ssh://10.10.100.21/source/UAS2.0_DEV_TEST

zhuth 6 years ago
parent
commit
8cbd66d301

+ 10 - 0
app/Application.scss

@@ -107,3 +107,13 @@ $enable-font-awesome: dynamic(true);
 .x-datepicker-arrow {
   height: 32px;
 }
+
+/* button */
+.x-btn-blue{
+  background:#5fa2dd !important;
+  border-color: #5fa2dd !important;
+  .x-btn-inner-default-toolbar-small{
+    color:#fff;
+  }
+}
+

+ 2 - 0
app/view/grid/dataList/DataListPanel.js

@@ -47,6 +47,7 @@ Ext.define('uas.view.grid.dataList.DataListPanel', {
         dock: 'top',
         height:32,
         items:[{
+            cls:'x-btn-blue',
             xtype:'button',
             text:'筛选',
             handler:function(me){
@@ -115,6 +116,7 @@ Ext.define('uas.view.grid.dataList.DataListPanel', {
         dataIndex: 'id',
         text: '序号',
         width:60,
+        align:'center',
         locked: true
     }, {
         dataIndex: 'code',

+ 89 - 10
app/view/grid/mergeColumn/MergeColumnGrid.js

@@ -2,18 +2,99 @@
  * @Description: 
  * @Author: hy
  * @Date: 2019-08-12 17:59:33
- * @LastEditTime: 2019-08-15 14:24:07
+ * @LastEditTime: 2019-08-15 14:24:07  
  */
 Ext.define('uas.view.grid.mergeColumn.MergeColumnGrid', {
     extend: 'Ext.grid.Panel',
     xtype: 'mergeColumnGrid',
+    cls:'x-merge-grid',
     columnLines: true,
+    sortableColumns: false,
+    bufferedRenderer:false,
 
-    store: {
-        type: 'companies',
-        sorters: {
-            property: 'name',
-            direction: 'DESC'
+    initComponent: function () {
+        var me = this;
+        Ext.apply(me, {
+            store: Ext.create('uas.store.Companies',{})
+        });
+        me.callParent(arguments);
+        me.store.load(function(records, operation, success) {
+            const grid = me;
+            //1000条数据 100延迟 超过10000条数据 延迟固定为1秒
+            let time = records.length*0.1>1000?1000:records.length*0.1;
+            var myMask = new Ext.LoadMask({
+                msg: "正在合并单元格...",
+                target: grid.ownerCt
+            });
+            myMask.show();
+            setTimeout(() => {
+               grid.mergeCells(grid,[...new Array(grid.columns.length).keys()]); 
+               myMask.destroy(); 
+            }, time);
+            
+        });
+    },
+   
+    /*
+     *  合并列
+     *  cols 需要合并的列index
+     */
+    mergeCells:function(grid,cols){  
+        var id = grid.getView().getId();
+        //清除所有监听事件  避免一些bug
+        grid.getView().clearListeners();
+        //获取view
+        var gridview = document.getElementById(id);
+        //获取所有的tr[]
+        var trArray = gridview.getElementsByTagName('tr');
+        //只有一行时不合并
+        var length = trArray.length;
+        if (length <= 1) {
+            return;
+        }
+        //把所有的行都放入第一个table 并把原来的列删除
+        for (var i = 1; i < length; i++) {
+            //指定位置插入对应table行的html文本
+            trArray[i - 1].insertAdjacentHTML("afterEnd", trArray[i].innerHTML);
+            trArray[i + 1].remove();
+        }
+
+        //margin像素 根据该合并grid的每一行的高度而定
+        const pixel = 25;
+
+        //通用方法行合并单元格
+        var length = trArray.length;
+        var html = "<hr style='height:0.1px;border:none;border-bottom:#e9e9e9 1px solid;'>";//分割线
+        for (var i in cols) {
+            var column = cols[i];//列
+            var k = 0;//开始合并的列
+            for (var i = 0; i < length; i++) {
+                var num = 1;//需要合并的列数 默认是一列
+                var data = trArray[i].childNodes[column].innerText;
+                for (var j = i + 1; j < length; j++) {
+                    if (data == trArray[j].childNodes[column].innerText) {
+                        trArray[j].childNodes[column].style.display = 'none';
+                        if (j == length - 1) {
+                            k = j;
+                        }
+                        num++;
+                    } else {
+                        k = j;
+                        break;
+                    }
+                }
+                trArray[i].childNodes[column].setAttribute('rowSpan', num);
+                trArray[i].getElementsByTagName("div")[column].setAttribute("style", "text-align:center");
+                if (num > 1) {
+                    trArray[i].getElementsByTagName("div")[column].style.marginTop = "" + pixel * (num - 1) + "px";
+                }
+                trArray[k].childNodes[column].insertAdjacentHTML("afterbegin", html);
+                if (k == length - 1) {//说明此时i是最后一行
+                    trArray[k].getElementsByTagName("div")[column].setAttribute("style", "text-align:center");
+                    break;
+                }
+                i = k - 1;
+            }
         }
     },
 
@@ -38,15 +119,13 @@ Ext.define('uas.view.grid.mergeColumn.MergeColumnGrid', {
             dataIndex: 'priceChange',
 
             width: 80,
-            sortable: true,
-            renderer: 'renderChange'
+            sortable: true
         }, {
             text: '% Change',
             dataIndex: 'priceChangePct',
 
             width: 100,
-            sortable: true,
-            renderer: 'renderPercent'
+            sortable: true
         }]
     }, {
         text: 'Last Updated',

+ 12 - 0
app/view/grid/mergeColumn/MergeColumnGrid.scss

@@ -0,0 +1,12 @@
+.x-merge-grid{
+    .x-grid-item-over{
+        background-color:#fff !important;
+    }
+    .x-grid-item{
+        border-top-width: 0px !important;
+    }
+    .x-grid-cell-inner::before{
+        border:none !important;
+    }
+} 
+

+ 1 - 1
app/view/window/searchPlan/ConditionPanel.js

@@ -73,7 +73,7 @@ Ext.define('uas.view.window.searchPlan.ConditionPanel', {
             refreshDate:function(grid){
                 const me = this;
                 if(grid.nowFilterCondition&&grid.nowFilterCondition.length>0){
-                    me.store.loadData(grid.nowFilterCondition,true)
+                    me.store.loadData(grid.nowFilterCondition,false)
                 }else{
                     me.store.removeAll();
                 }

+ 17 - 2
app/view/window/searchPlan/Window.js

@@ -31,12 +31,27 @@ Ext.define('uas.view.window.searchPlan.Window', {
         items:[{
             title:'条件设置',
             xtype:'conditionPanel'
-        },{
-            title:'排序设置'
         },{
             title:'列设置'
         }]
     }],
+    bbar:[{
+        xtype:'checkbox',
+        boxLabel: '设为默认方案',
+    },'->',{
+        cls:'x-btn-blue',
+        xtype:'button',
+        text: '查询',
+    },{
+        xtype:'button',
+        text: '确认',
+    },{
+        xtype:'button',
+        text: '取消',
+        handler:function(me){
+            me.ownerCt.ownerCt.hide()
+        }
+    }],
     listeners:{
         show:function(){
             const me = this;

+ 1 - 1
app/overrides/data/Connection.js → overrides/data/Connection.js

@@ -2,7 +2,7 @@
  * 在 ajax request 前修改url,增加服务端`basePath`
  * `basePath`在`app.json`配置
  */
-Ext.define('uas.override.data.Connection', {
+Ext.define('Ext.overrides.data.Connection', {
     override: 'Ext.data.Connection',
  
     urlRegexp: /(http|ftp|https):\/\//,

+ 1 - 1
app/overrides/util/ClickRepeater.js → overrides/util/ClickRepeater.js

@@ -4,7 +4,7 @@
  * @Date: 2019-08-12 18:31:11
  * @LastEditTime: 2019-08-12 18:40:58
  */
-Ext.define('uas.overrides.util.ClickRepeater', {
+Ext.define('Ext.overrides.util.ClickRepeater', {
     override: 'Ext.util.ClickRepeater',
 
     privates: {

+ 1 - 1
resources/json/navigation.json

@@ -60,7 +60,7 @@
             },
             {
                 "text": "列合并",
-                "target": "grid-merge-column",
+                "target": "mergeColumnGrid",
                 "leaf": true,
                 "iconCls": "x-fa fa-smile-o"
             },

+ 7 - 7
server/action/comanies.js

@@ -7,30 +7,30 @@ const companies = [{
     "priceLastChange": "10/8",
     "industry": "Manufacturing",
     "desc": "In hac habitasse platea dictumst. Etiam faucibus cursus urna. Ut tellus.\n\nNulla ut erat id mauris vulputate elementum. Nullam varius. Nulla facilisi.\n\nCras non velit nec nisi vulputate nonummy. Maecenas tincidunt lacus at velit. Vivamus vel nulla eget eros elementum pellentesque.",
-    "priceChangePct": 2.11
+    "priceChangePct": 1.23
 }, {
     "id": 2,
-    "name": "Voomm",
+    "name": "Roodel",
     "phone": "662-254-4213",
     "price": 41.31,
-    "priceChange": 2.64,
+    "priceChange": 1.23,
     "priceLastChange": "10/18",
     "industry": "Services",
     "desc": "Curabitur at ipsum ac tellus semper interdum. Mauris ullamcorper purus sit amet nulla. Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.",
-    "priceChangePct": 6.83
+    "priceChangePct": 1.23
 }, {
     "id": 3,
-    "name": "Dabvine",
+    "name": "Roodel",
     "phone": "745-225-8364",
     "price": 29.94,
-    "priceChange": 3.55,
+    "priceChange": 1.23,
     "priceLastChange": "10/11",
     "industry": "Finance",
     "desc": "Nullam sit amet turpis elementum ligula vehicula consequat. Morbi a ipsum. Integer a nibh.",
     "priceChangePct": 13.45
 }, {
     "id": 4,
-    "name": "Twitterbeat",
+    "name": "Roodel",
     "phone": "862-540-4332",
     "price": 89.96,
     "priceChange": -3.82,