rsbi преди 4 години
родител
ревизия
7e725e62ce

+ 70 - 10
src/view/bireport/ParamFilter.vue

@@ -1,17 +1,59 @@
 <template>
-  	<el-dialog :title="title" :visible.sync="show">
+  	<el-dialog :title="title" :visible.sync="show" :close-on-click-modal="false" custom-class="nopadding">
+
 		<template v-if="param.type === 'frd'">
-			<el-checkbox-group v-model="checkList">
-				<template v-for="(item) in dimValus">
-					<div :key="item.id">
-						<el-checkbox name="vls" :key="item.id" :label="item.id">{{item.name}}</el-checkbox> 
-					</div>
-				</template>
-			</el-checkbox-group>
+			<el-input v-model="search"	size="mini" placeholder="输入关键字搜索">
+				<el-button slot="append" icon="el-icon-search" @click="searchme"></el-button>
+			</el-input>
+			<div class="el-dialog-div">
+				<el-checkbox-group v-model="checkList">
+					<template v-for="(item) in dimValus">
+						<div :key="item.id">
+							<el-checkbox name="vls" :key="item.id" :label="item.id">{{item.name}}</el-checkbox> 
+						</div>
+					</template>
+				</el-checkbox-group>
+			</div>
 		</template>
 		<template v-if="param.type === 'month'">
+			<div class="el-dialog-div">
+			<div class="block">
+				<span class="demonstration">开始月份</span>
+				<el-date-picker
+				v-model="st"
+				type="month"
+				placeholder="选择月份">
+				</el-date-picker>
+			</div>
+			<div class="block">
+				<span class="demonstration">结束月份</span>
+				<el-date-picker
+				v-model="end"
+				type="month"
+				placeholder="选择月份">
+				</el-date-picker>
+			</div>
+			</div>
 		</template>
 		<template v-if="param.type === 'day'">
+			<div class="el-dialog-div">
+			<div class="block">
+				<span class="demonstration">开始日期</span>
+				<el-date-picker
+				v-model="st"
+				type="date"
+				placeholder="选择日期">
+				</el-date-picker>
+			</div>
+			<div class="block">
+				<span class="demonstration">结束日期</span>
+				<el-date-picker
+				v-model="end"
+				type="date"
+				placeholder="选择日期">
+				</el-date-picker>
+			</div>
+			</div>
 		</template>
 		<div slot="footer" class="dialog-footer">
 			<el-button type="primary" @click="save()">确 定</el-button>
@@ -23,6 +65,7 @@
 <script>
 	import {ajax} from '@/common/biConfig'
 	import $ from 'jquery'
+	import { Loading } from "element-ui"
 	import {findParamById} from '@/view/bireport/bireportUtils'
 
 	export default {
@@ -38,7 +81,10 @@
 				title:"",
 				param:{},
 				checkList:[],
-				dimValus:[]
+				dimValus:[],
+				st:"",  //日期/月份的开始日期
+				end:"",	//日期/月份的结束日期,
+				search:""
 			}
 		},
 		mounted(){
@@ -53,13 +99,16 @@
 				this.param = p;
 				this.dimValus = [];
 				this.checkList = p.vals || [];
+				this.st = [];
+				this.end = [];
+				let load = Loading.service({ fullscreen: true });
 				ajax({
 					url:"bireport/paramFilter.action",
 					data:{id:p.id, cubeId:p.cubeId, dsid:p.dsid},
 					success:(resp)=>{
 						this.dimValus = resp.rows.datas;
 					}
-				}, this);
+				}, this, load);
 			},
 			save(){
 				this.param.vals = this.checkList;
@@ -72,6 +121,17 @@
 				this.show = false;
 				//刷新组件
 				this.$parent.$refs['paramForm'].$forceUpdate();
+			},
+			searchme(){
+				let load = Loading.service({ fullscreen: true });
+				let p = this.param;
+				ajax({
+					url:"bireport/paramFilter.action",
+					data:{id:p.id, cubeId:p.cubeId, keyword:this.search, dsid:p.dsid},
+					success:(resp)=>{
+						this.dimValus = resp.rows.datas;
+					}
+				}, this, load);
 			}
 		},
 		watch: {

+ 6 - 0
src/view/bireport/ReportChart.vue

@@ -12,6 +12,12 @@
 	    data(){
 			
 		},
+		props: {
+			pageInfo: {
+			type: Object,
+			required: true,
+			},
+		},
 		mounted(){
 		},
 		computed: {

+ 16 - 3
src/view/bireport/ReportDesign.vue

@@ -37,10 +37,10 @@
 					
 					<el-tabs v-model="showtype" type="border-card">
 						<el-tab-pane label="表格" name="table">
-							<reportTable ref="tableForm"></reportTable>
+							<reportTable :pageInfo="pageInfo" ref="tableForm"></reportTable>
 						</el-tab-pane>
 						<el-tab-pane label="图形" name="chart">
-							<report-chart ref="chartForm"></report-chart>
+							<report-chart :pageInfo="pageInfo" ref="chartForm"></report-chart>
 						</el-tab-pane>
 					</el-tabs>
 					<div class="clearbtn">
@@ -68,6 +68,7 @@
 	import 'jquery-ui-dist/jquery-ui'
 
 	export default {
+		name:"reportDesign",
 	    data(){
 			return {
 				activeIndex:"1",
@@ -78,7 +79,8 @@
 						{"name":"表格组件","id":1, "type":"table"},
 						{"name":"","id":2, "type":"chart",chartJson:{type:"line",params:[]},kpiJson:[]}], 
 					params:[]
-				}  //多维分析的配置对象
+				},  //多维分析的配置对象
+				isupdate:false  //是否发生了变动
 			}
 		},
 		components: {
@@ -150,6 +152,9 @@
 			},
 			cleanData(){
 
+			},
+			setIsUpdate(){
+				this.isupdate = true;
 			}
 		},
 		watch: {
@@ -187,4 +192,12 @@
 	right:20px;
 	top:73px;
 }
+/**固定弹出窗口的高度 */
+ .el-dialog-div{
+    height: 60vh;
+    overflow: auto;
+ }
+ .el-tabs--border-card>.el-tabs__content {
+	 padding: 5px;
+ }
 </style>

+ 1 - 1
src/view/bireport/ReportParam.vue

@@ -4,7 +4,7 @@
 			<div class="ptabhelpr">拖拽维度到此处作为筛选条件</div>
 			<template v-for="(p) in pageInfo.params">
 				<span :key="p.id" class="pppp">
-					<span title="筛选" @click="paramFilter(p.id, p.type, p.name)" class="text">{{p.name}}({{p.valStrs?p.valStrs.join(","):"无"}})</span>
+					<span title="筛选" @click="paramFilter(p.id, p.type, p.name)" class="text">{{p.name}}({{p.valStrs&&p.valStrs.length>0?p.valStrs.join(","):"无"}})</span>
 					<button class="btn btn-default btn-xs" title="删除" @click.stop="deleteParam(p.id)"><i class="fa fa-remove"></i></button>
 				</span>
 			</template>

Файловите разлики са ограничени, защото са твърде много
+ 196 - 24
src/view/bireport/ReportTable.vue


+ 4 - 3
src/view/bireport/SelectCube.vue

@@ -1,8 +1,9 @@
 <template>
-  	<el-dialog title="选择数据模型" :visible.sync="show">
+  	<el-dialog title="选择数据模型" :visible.sync="show" :close-on-click-modal="false" custom-class="nopadding">
 		<el-input v-model="search"	size="mini" placeholder="输入关键字搜索">
 			<el-button slot="append" icon="el-icon-search" @click="searchme"></el-button>
 		</el-input>
+		<div class="el-dialog-div">
 			<el-table :data="tableData" @row-click="selectme" border style="width: 100%" header-row-class-name="tableHeadbg">
 				<el-table-column label="" width="45">
 					<template slot-scope="scope">
@@ -18,7 +19,7 @@
 				layout="prev, pager, next"
 				:total="total">
 			</el-pagination>
-			
+		</div>
     <div slot="footer" class="dialog-footer">
       <el-button type="primary" @click="save()">确 定</el-button>
       <el-button @click="show = false">取 消</el-button>
@@ -95,7 +96,7 @@
 </script>
 
 <style lang="css">
-.el-dialog__body{
+.nopadding .el-dialog__body{
 	padding: 5px;
 }
 </style>

+ 65 - 0
src/view/bireport/bireportUtils.js

@@ -2,6 +2,7 @@
  * 多维分析的工具类
  */
 import $ from 'jquery'
+import { Message } from 'element-ui'
 
 /**
  * 根据ID查找参数
@@ -18,4 +19,68 @@ export const findParamById = (pid, params)=>{
         }
     }
     return ret;
+}
+
+export const findCompById = (id, pageInfo)=>{
+	var ret = null;
+	for(let i=0;i<pageInfo.comps.length; i++){
+		var t = pageInfo.comps[i];
+		if(t.id == id){
+			ret = t;
+			break;
+		}
+	}
+	return ret;
+}
+export const msginfo = (msg, type)=>{
+    if(!type){
+        Message.error({message:msg, type:"info",showClose: true });
+    }else{
+        Message.success({message:msg, type:"success",showClose: true});
+    }
+}
+
+export const kpiExist = (kpiId, kpis)=>{
+	var ret = false;
+	if(!kpis || kpis == null){
+		return ret;
+	}
+	for(var i=0; i<kpis.length; i++){
+		if(kpis[i].kpi_id == kpiId){
+			ret = true;
+			break;
+		}
+	}
+	return ret;
+}
+
+export const dimExist = (dimId, dims) => {
+	var ret = false;
+	if(!dims || dims == null){
+		return ret;
+	}
+	for(var i=0; i<dims.length; i++){
+		if(dims[i].id == dimId){
+			ret = true;
+			break;
+		}
+	}
+	return ret;
+}
+//查找维度分组
+export const findGroup = (dims, group, curNode)=>{
+	var ret = false;
+	if(!dims || dims == null){
+		return ret;
+	}
+	for(let m=0; m<dims.length; m++){
+		if(curNode && curNode == dims[m]){  //curNode存在表示忽略当前节点
+			continue; 
+		}
+		if(dims[m].grouptype == group){
+			ret = true;
+			break;
+		}
+	}
+	return ret;
 }

+ 2 - 0
src/view/model/CubeAdd.vue

@@ -162,6 +162,8 @@ export default {
         });
       }else{
         this.initRightTree();
+        //清空 leftTree
+        this.initLeftTree([]);
       }
     },
     saveCube(isupdate){

+ 1 - 3
src/view/model/DimkpiModify.vue

@@ -229,6 +229,7 @@ export default {
             node.li_attr.kpinote = ts.node.kpinote;
             node.li_attr.dispName = ts.node.dimname;
             node.li_attr.isupdate = "y";  //表示度量已经更改过了。
+            ref.rename_node(node, ts.node.kpiaggre+"("+ts.node.dimname+")");
           }
           ts.show = false;
        }
@@ -236,9 +237,6 @@ export default {
     },
     modify(selectNode, dset){
       this.show = true;
-      if(this.$refs['nodeForm']){
-        this.$refs['nodeForm'].resetFields();
-      }
       //维度的属性
       this.type = selectNode.li_attr.tp;
       this.node.col = selectNode.li_attr.col;

+ 2 - 2
src/view/model/DsourceAdd.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :title="dialogTitle" :visible.sync="show">
+  <el-dialog :title="dialogTitle" :visible.sync="show" :close-on-click-modal="false" custom-class="nopadding">
     <el-tabs v-model="active" type="card">
       <el-tab-pane label="JDBC" name="jdbc">
         <el-form :model="dsource" :rules="rules" ref="dsourceForm">
@@ -246,7 +246,7 @@ export default {
 </script>
 
 <style lang="css">
-.el-dialog__body {
+.nopadding .el-dialog__body{
   padding: 5px;
 }
 </style>