rsbi 4 年之前
父節點
當前提交
57e0ead753
共有 3 個文件被更改,包括 133 次插入3 次删除
  1. 1 0
      src/view/bireport/ReportDesign.vue
  2. 27 3
      src/view/bireport/ReportTable.vue
  3. 105 0
      src/view/bireport/ReportTableDailog.vue

+ 1 - 0
src/view/bireport/ReportDesign.vue

@@ -63,6 +63,7 @@
 	import reportTable from "@/view/bireport/ReportTable";
 	import reportChart from "@/view/bireport/ReportChart";
 	import paramFilter from "@/view/bireport/ParamFilter";
+	import reportTableDailog from "@/view/bireport/ReportTableDailog";
 	import "jstree";
 	import "jstree/dist/themes/default/style.min.css";
 	import 'jquery-ui-dist/jquery-ui'

+ 27 - 3
src/view/bireport/ReportTable.vue

@@ -5,6 +5,8 @@ import $ from "jquery";
 import * as tools from '@/view/bireport/bireportUtils'
 import * as tableUtils from '@/view/bireport/tableUtils'
 import { Loading } from "element-ui";
+import reportTableDailog from '@/view/bireport/ReportTableDailog'
+
 
 export default {
   name:"reportTable",
@@ -20,6 +22,9 @@ export default {
       required: true,
     },
   },
+  components:{
+	reportTableDailog
+  },
   render(h){
 	  let tdborder = "1px solid #dee5e7";
 	  //一个 table, 2个tr, 一个 tr 里 2个td
@@ -30,7 +35,7 @@ export default {
 	  let tr = [h('tr', [trtd1, trtd2])];
 	  let tr2 = [h('tr', [tr2td1, tr2td2])];
 	  let table = h('table', {class:"d_table"}, [h('tbody', [tr, tr2])]);
-	  return h('div', {attrs:{tp:"table", class:"comp_table", id:"T"+this.tableId}}, [table]);
+	  return h('div', {attrs:{tp:"table", class:"comp_table", id:"T"+this.tableId}}, [table, h('reportTableDailog',{ref:"tableDailog"}, '')]);
   },
   mounted() {
 	  this.bindDropEvent(this.tableId);
@@ -149,6 +154,7 @@ export default {
 	    */
 	   renderKpisList(h){
 		   let ret = [];
+		   let ts = this;
 		   if(this.datas){
 				let trs = [];
 				$(this.datas.datas).each((a, b)=>{
@@ -157,7 +163,14 @@ export default {
 						if(d.isRow === true){
 							return true;
 						}
-						ths.push(h('td', {attrs:{class: (a%2===0?"kpiData1":"kpiData2")+ " grid5-td", align:"right"}},[h('span', {class:"kpiValue"}, d.value)]));
+						ths.push(h('td', {attrs:{class: (a%2===0?"kpiData1":"kpiData2")+ " grid5-td", align:"right"}},[h('span', {attrs:{class:"kpiValue"}}, [h('a', {
+							attrs:{href:"javascript:;"},
+							on:{
+								click:()=>{
+									ts.linkDetail(d);
+								}
+							}
+						}, d.value)])]));
 					});
 					trs.push(h('tr', ths));
 				});
@@ -167,6 +180,10 @@ export default {
 		   }
 		   return [h("div", {attrs:{id:"d_kpi"}}, ret)];
 	   },
+	   linkDetail(dt){
+		   console.log(dt);
+		   alert(dt.value);
+	   },
 	 bindDropEvent(id){
 		var ischg = false;
 		const ts = this;
@@ -360,7 +377,14 @@ export default {
 					}else if(key == "filter"){
 						ts.$parent.$parent.$parent.$refs['paramFilterForm'].createDimFilter(dim, comp);
 					}else if(key == "aggre"){
-						aggreDim();
+						if(dim.issum === 'y'){
+							dim.issum = 'n';
+							delete dim.aggre;
+							ts.tableView();
+							ts.setUpdate();
+							return;
+						}
+						ts.$refs['tableDailog'].dimAggre(dim, comp);
 					}else if(key == "top"){
 						getDimTop('table');
 					}else if(key == "remove"){

+ 105 - 0
src/view/bireport/ReportTableDailog.vue

@@ -0,0 +1,105 @@
+<!-- 表格对话框都放这里面 -->
+<template>
+  	<el-dialog :title="title" :visible.sync="show" :close-on-click-modal="false" custom-class="nopadding">
+		  <el-form :model="val" ref="valForm">
+			<template v-if="type === 'dimAggre'">
+				<el-form-item label="聚合方式" label-width="100px">
+					<el-select v-model="val.aggreType" style="width:100%" placeholder="请选择">
+						<el-option
+						v-for="item in opt.aggres"
+						:key="item.value"
+						:label="item.name"
+						:value="item.value">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label-width="100px">
+					<button type="button" class="btn btn-danger btn-rounded btn-outline btn-xs" @click="clearAggre()">清除聚合</button>
+				</el-form-item>
+			</template>
+		  </el-form>
+		<div slot="footer" class="dialog-footer">
+			<el-button type="primary" @click="save()">确 定</el-button>
+			<el-button @click="show = false">取 消</el-button>
+		</div>
+  </el-dialog>
+</template>
+
+<script>
+	import {ajax} from '@/common/biConfig'
+	import $ from 'jquery'
+	import {findParamById,msginfo} from '@/view/bireport/bireportUtils'
+
+	export default {
+		props:{
+			pageInfo:{
+				type:Object,
+				required:true
+			}
+		},
+	    data(){
+			return {
+				show:false,
+				title:"",
+				type:"",
+				comp:null,
+				dim:null,
+				kpi:null,
+				opt:{
+					aggres:[
+						{name:"求和",value:"sum"},
+						{name:"计数",value:"count"},
+						{name:"平均",value:"avg"},
+						{name:"最大",value:"max"},
+						{name:"最小",value:"min"},
+						{name:"方差",value:"var"},
+						{name:"标准差",value:"sd"},
+						{name:"中位数",value:"middle"}
+					]
+				},
+				val:{
+					aggreType:""
+				}
+			}
+		},
+		mounted(){
+		},
+		computed: {
+		},
+		methods: {	
+			dimAggre(dim, comp){
+				this.title = "维度聚合";
+				this.type = "dimAggre";
+				this.show = true;
+				this.dim = dim;
+				if(this.type === 'dimAggre'){
+					this.val.aggreType = dim.aggre;
+				}
+			},
+			save(){
+				if(this.type === 'dimAggre'){
+					let dim = this.dim;
+					if(dim.issum == 'y'){
+						dim.issum = "n";
+						delete dim.aggre;
+					}else{
+						dim.issum = 'y';
+						dim.aggre = this.val.aggreType;
+					}
+					this.show = false;
+					let o = this.$parent;
+					o.setUpdate();
+					o.tableView();
+				}
+			},
+			clearAggre(){
+				this.val.aggreType = null;
+			}
+		},
+		watch: {
+		}
+	}
+</script>
+
+<style lang="css" scoped>
+</style>