rsbi 4 år sedan
förälder
incheckning
7dc7c88409

+ 1 - 0
src/view/portal/LayoutParamAdd.vue

@@ -214,6 +214,7 @@ export default {
           this.param.dtformat = p.dtformat;
           this.param.minval = p.minval;
           this.param.maxval = p.maxval;
+          this.selectcube();
        }
      },
      save(){

+ 10 - 4
src/view/portal/PortalIndex.vue

@@ -17,13 +17,16 @@
             </div>
             <div class="btn-group optbtncls" role="group">
             <button type="button" class="btn btn-outline btn-default" title="查看" @click="viewReport(false)">
-              <i class="glyphicon glyphicon-file" aria-hidden="true"></i>
+              <i class="glyphicon glyphicon-file" aria-hidden="true"></i>查看
             </button>
             <button type="button" class="btn btn-outline btn-default" title="定制" @click="customization()">
-              <i class="glyphicon glyphicon-cog" aria-hidden="true"></i>
+              <i class="glyphicon glyphicon-cog" aria-hidden="true"></i>定制
             </button>
             <button type="button" class="btn btn-outline btn-default" title="删除" @click="deleteReport()">
-              <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
+              <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>删除
+            </button>
+            <button type="button" class="btn btn-outline btn-default" title="分享" @click="shareReport()">
+              <i class="glyphicon glyphicon-share" aria-hidden="true"></i>分享
             </button>
           </div>
           <el-table :data="tableData" @row-click="selectme" border style="width: 100%" header-row-class-name="tableHeadbg">
@@ -87,7 +90,10 @@ export default {
     },
     selectme:function(a, b){
 				this.checked = a.pageId;
-		},
+    },
+    shareReport(){
+      
+    },
     loadDatas(){
       let ts = this;
       ajax({

+ 19 - 12
src/view/portal/PortalParamView.vue

@@ -6,25 +6,25 @@
           <div class="ibox reportParams" style="margin:5px;">
               <div class="row">
                 <div class="ibox-content" style="padding:5px;border:none;">
-                    <template v-for="item in pms">
+                    <template v-for="item in pms.filter(m=>m.type != 'hidden')">
                       <div class="col-sm-3" :key="item.id">
                             <el-form-item :label="item.desc" label-width="80px">
-                              <template v-if="item.type==='text'">
+                              <template v-if="item.inputType==='text'">
                                 <el-input v-model="reportParam[item.id]" placeholder="请录入"></el-input>
                               </template>
-                              <template v-if="item.type==='select'">
+                              <template v-if="item.inputType==='select'">
                                 <el-select v-model="reportParam[item.id]" clearable placeholder="请选择" style="width:100%">
                                   <el-option v-for="item in item.options" :key="item.value" :label="item.text" :value="item.value">
                                   </el-option>
                                 </el-select>
                               </template>
-                              <template v-if="item.type==='mselect'">
+                              <template v-if="item.inputType==='mselect'">
                                 <el-select v-model="reportParam[item.id]" multiple clearable placeholder="请选择" style="width:100%">
                                   <el-option v-for="item in item.options" :key="item.value" :label="item.text" :value="item.value">
                                   </el-option>
                                 </el-select>
                               </template>
-                              <template v-if="item.type === 'dateSelect'">
+                              <template v-if="item.inputType === 'dateSelect'">
                                 <el-date-picker v-model="reportParam[item.id]" :format="item.dateFormat" 
                                 style="width:100%" :type="item.dateType" placeholder="选择日期" :value-format="item.dateFormat"></el-date-picker>
                               </template>
@@ -74,19 +74,26 @@ export default {
         this.reportParam[b.id] = null;
       });
     },
-    search(){
+    /**
+     * 获取参数值
+     */
+    getParamValues(){
       let dt = JSON.parse(JSON.stringify(this.reportParam));
-      let reportId = this.$parent.reportId;
-      dt['serviceid'] = "ext.sys.tab.ajax";
-      dt['t_from_id'] = "mv_" + reportId;
-      dt['mvid'] = "mv_" + reportId;
       //处理多选参数
       $(this.pms).each((a, b)=>{
-        if(b.type === 'mselect' && dt[b.id]){
+        if(b.inputType === 'mselect' && dt[b.id]){
           dt[b.id] = dt[b.id].join(",");
         }
       });
-
+      return dt;
+    },
+    search(){
+      let dt = this.getParamValues();
+      let reportId = this.$parent.reportId;
+      dt['serviceid'] = "ext.sys.tab.ajax";
+      dt['t_from_id'] = "mv_" + reportId;
+      dt['mvid'] = "mv_" + reportId;
+     
       let loadingInstance = Loading.service({fullscreen:false, target:document.querySelector('.wrapper-content-nomargin')});
       ajax({
         url:"control/extControl",

+ 39 - 1
src/view/portal/Utils.js

@@ -1,5 +1,6 @@
 import $ from 'jquery'
-import { Message } from 'element-ui'
+import { Message, Loading } from 'element-ui'
+import {baseUrl, ajax} from '@/common/biConfig'
 
 //默认5种布局
 export const layout = {
@@ -181,3 +182,40 @@ export const findCompById = (pageInfo, compId, remove)=>{
 	}
 	return ret;
 }
+/**
+ * 组件事件调用,目前只支持图形,交叉表
+ * @param {*} link 
+ */
+export const compFireEvent = (link, ts, paramName, value)=>{
+	let target = link.target;
+	let types = link.type.split(",");
+	$(target.split(",")).each((a, b)=>{
+		let loadingInstance = Loading.service({fullscreen:false, target:document.querySelector('#c_'+b+" div.ccctx")});
+		let dt = ts.$parent.$parent.$refs['paramViewForm'].getParamValues(); // 获取参数
+		let tp = types[a];
+		if(tp === 'chart'){
+		  dt['serviceid'] = "ext.sys.chart.rebuild";
+		}else if(tp ==='table'){
+		  dt['serviceid'] = "ext.sys.cross.rebuild";
+		}
+		dt['t_from_id'] = "mv_" + ts.$parent.pageInfo.id;
+		dt['id'] = b;
+		dt[paramName] = value;
+		ajax({
+		  url:"control/extControl",
+		  type:"POST",
+		  data:dt,
+		  success:(resp)=>{
+			loadingInstance.close();
+			if(tp === 'chart'){
+			  //更新图形
+			  let c = ts.$parent.$refs['mv_'+b];
+			  c.data = resp.rows;
+			  c.$nextTick(()=>c.showChart());
+			}else if(tp === 'table'){
+
+			}
+		  }
+		}, ts, loadingInstance);
+	});
+}

+ 6 - 0
src/view/portal/view/Chart.vue

@@ -101,6 +101,12 @@ export default {
           myChart.off("click").on('click', function(params){
             ts.$parent.$refs['ChartSeriesColorForm'].showDailog(comp, params);
           });
+      }else{  //浏览模式,设置图形点击事件
+        if(comp.chartJson.link && comp.chartJson.link.target && comp.chartJson.link.target.length > 0){
+          myChart.off("click").on('click', function(params){
+              utils.compFireEvent(comp.chartJson.link, ts, comp.chartJson.link.paramName, params.name);
+          });
+        }
       }
     }
   },

+ 17 - 3
src/view/portal/view/Table.vue

@@ -46,11 +46,21 @@ export default {
 
 			let tbodytrs = [];
 			$(this.data.datas).each((a, b)=>{
-				let tds = [];
+        let tds = [];
+        let curRowValue = null;
 				$(b).each((c, d)=>{
           tds.push(h('td', {attrs:{class:"lockgrid-td",colspan:d.colSpan, rowspan:d.rowSpan, align:d.isRow==true?"left":"right"}}, [h('div', {class:"dg-cell"}, d.value)]));
-				});
-				tbodytrs.push(h('tr', tds));
+          if(d.isRow === true){
+            curRowValue = d.value;
+          }
+        });
+        if(this.editor == false && comp.link && comp.link.target.length > 0){  //在浏览模式下有联动事件
+          tbodytrs.push(h('tr',{style:{cursor:"pointer"},on:{click:()=>{
+              ts.tableEvent(curRowValue);
+            }}}, tds));
+        }else{
+	        tbodytrs.push(h('tr', tds));
+        }
       });
       let table2 = h('table', {class:"lockgrid"}, [h('thead', tbodytrs)]);
 
@@ -89,6 +99,10 @@ export default {
         $("#"+comp.id+" .lock-dg-header").css("margin-left", "-"+left+"px");
       });
     },
+    tableEvent(val){
+      let comp = this.comp;
+      utils.compFireEvent(comp.link, this, comp.link.paramName, val);
+    },
     tableView(){
       let ts = this;
       let comp = this.comp;