rsbi 4 سال پیش
والد
کامیت
cedd7a08fa

+ 48 - 28
src/view/portal/LayoutView.vue

@@ -26,42 +26,56 @@ export default {
       type: Object,
       required: true,
       default:{}
+    },
+    selfAdaption:{  //布局自适应
+      type:Boolean,
+      default:false
     }
   },
   render(h) {
     var json = this.pageInfo.body || {};
     var trs = [];
-    for (var i = 1; true; i++) {
-      var tr = json["tr" + i];
-      if (!tr || tr == null) {
-        break;
+    let width = $(window).width();
+    if(this.selfAdaption == true && width <= 450){
+      let comps = utils.findAllComps(this.pageInfo);
+      let tds = [];
+      for(let comp of comps){
+        tds.push(this.renderComp(comp, h, "1"));
       }
-      var tds = [];
-      for (var j = 0; j < tr.length; j++) {
-        var td = tr[j];
-        
-        let cmps = [];
-        if(td.children){
-          for(var k=0; k<td.children.length; k++){
-            var comp = td.children[k];
-            cmps.push(this.renderComp(comp, h, td.id));
-          }
+      trs.push(h('tr', tds));
+    }else{
+      for (var i = 1; true; i++) {
+        var tr = json["tr" + i];
+        if (!tr || tr == null) {
+          break;
         }
+        var tds = [];
+        for (var j = 0; j < tr.length; j++) {
+          var td = tr[j];
+          
+          let cmps = [];
+          if(td.children){
+            for(var k=0; k<td.children.length; k++){
+              var comp = td.children[k];
+              cmps.push(this.renderComp(comp, h, td.id));
+            }
+          }
 
-        tds.push(
-          h("td", {
-            attrs: {
-              class: "laytd",
-              id:"layout_" + td.id,
-              height: td.height + "%",
-              width: td.width + "%",
-              colspan: td.colspan,
-              rowspan: td.rowspan,
-            },
-          }, cmps)
-        );
+          tds.push(
+            h("td", {
+              attrs: {
+                class: "laytd",
+                id:"layout_" + td.id,
+                height: td.height + "%",
+                width: td.width + "%",
+                colspan: td.colspan,
+                rowspan: td.rowspan,
+              },
+            }, cmps)
+          );
+        }
+        trs.push(h('tr', {}, tds));
       }
-      trs.push(h('tr', {}, tds));
     }
     let table = h('table', {attrs:{border:"0", cellspacing:"0", cellpadding:"0", class:"r_layout", id:"layout_table"}}, [h('tbody', trs)]);
     return h("div", {attrs:{id:"optarea", class:"layout-center-body", align:"center"}}, 
@@ -76,7 +90,13 @@ export default {
     };
   },
   mounted() {
-    $(window).resize(()=>this.resizeChart());
+    $(window).resize(()=>{
+       this.resizeChart();
+       if(this.selfAdaption == true){
+         this.$forceUpdate();
+       }
+      }
+    );
   },
   beforeDestroy(){
     $(window).unbind("resize");

+ 5 - 1
src/view/portal/PortalPushView.vue

@@ -3,7 +3,9 @@
     <el-menu @select="handleSelect" class="el-menu-demo" background-color="#f6f8f8" text-color="#777" mode="horizontal">
 			<el-submenu index="3">
 				<template slot="title"><i class="fa fa-file-excel-o"></i> 导出</template>
+        <!--
 				<el-menu-item index="html">HTML</el-menu-item>
+        -->
 				<el-menu-item index="csv">CSV</el-menu-item>
 				<el-menu-item index="excel">EXCEL</el-menu-item>
 				<el-menu-item index="word">WORD</el-menu-item>
@@ -96,7 +98,9 @@ export default {
     getReportId:{  //监控参数变化
       handler(val){
         this.reportId = val;
-        this.getCfg();
+        if(val){
+          this.getCfg();
+        }
       },
       immediate: true
     }

+ 14 - 3
src/view/portal/PortalShare.vue

@@ -90,19 +90,30 @@ export default {
           url:"frame/menu/save.action",
           success:(resp)=>{
              this.$notify.success({ title: '推送成功。', offset: 50});
+             this.show = false;
           }
         }, this);
-        this.show = false;
+        
       }else if(this.activeName==='url'){  //推送URL
         ajax({
           type:"POST",
           data:{yxq:this.form.yxq, reportId:this.reportId, islogin:0},
           url:"portal/copyUrl.action",
           success:(resp)=>{
-            this.$notify.success({ title: '分享成功。', offset: 50});
+            let base = window.location.href.split("#")[0];
+            let u = base + '#' + "/portal/ShareView?token=" + resp.rows;
+            window.setTimeout(()=>{
+              this.$alert('<a target="_blank" href="'+u+'">'+u+'</a><br/><img src="portal/generateqrcode.action?url='+escape(u)+'">','生成URL成功', {
+                center: true,
+                confirmButtonText: '确定',
+                dangerouslyUseHTMLString: true
+              });
+            }, 200);
+           
+            this.show = false;
           }
         }, this);
-        this.show = false;
+        
       }
       
     },

+ 5 - 3
src/view/portal/PortalShareView.vue

@@ -3,7 +3,7 @@
      <!-- 参数区域 -->
     <portal-param-view ref="paramViewForm" :showSearchBtn="true" :pms="pms"></portal-param-view>
     <!-- 组件区域 -->
-    <layout-view ref="optarea" :pageInfo="pageInfo"></layout-view>
+    <layout-view ref="optarea" :selfAdaption="true" :pageInfo="pageInfo"></layout-view>
    
   </div>
 </template>
@@ -27,6 +27,7 @@ export default {
   data() {
     return {
       token:null,
+      reportId:null,
       pageInfo:{},
       pms:[]
     }
@@ -35,11 +36,12 @@ export default {
   methods: {
     getCfg(){
       ajax({
-        url:"portal/get.action",
+        url:"portal/share/get.action",
         data:{token:this.token},
         type:"get",
         success:(resp)=>{
           this.pageInfo = JSON.parse(resp.rows);
+          this.reportId = this.pageInfo.id;
           this.getReport();
         }
       }, this);
@@ -47,7 +49,7 @@ export default {
     getReport(){
       let loadingInstance = Loading.service({fullscreen:false, target:document.querySelector('.wrapper-content-nomargin')});
       ajax({
-        url:"portal/view.action",
+        url:"portal/share/view.action",
         type:"GET",
         data:{token:this.token},
         success:(resp)=>{

+ 2 - 0
src/view/portal/PortalView.vue

@@ -5,7 +5,9 @@
       <el-menu-item index="2"><i class="fa fa-edit"></i> 定制</el-menu-item>
 			<el-submenu index="3">
 				<template slot="title"><i class="fa fa-file-excel-o"></i> 导出</template>
+        <!--
 				<el-menu-item index="html">HTML</el-menu-item>
+        -->
 				<el-menu-item index="csv">CSV</el-menu-item>
 				<el-menu-item index="excel">EXCEL</el-menu-item>
 				<el-menu-item index="word">WORD</el-menu-item>

+ 3 - 0
src/view/portal/Utils.js

@@ -136,6 +136,9 @@ export const findLayoutById = (layoutId, pageInfo)=>{
 //查询布局器中所以组件
 export const findAllComps = (pageInfo)=>{
 	let ret = [];
+	if(!pageInfo.body){
+		return ret;
+	}
 	for(var i=1; true; i++){
 		var tr = pageInfo.body["tr"+i];
 		if(!tr || tr == null){