ReportParam.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <div class="ibox" style="margin-bottom:20px;">
  3. <div class="ibox-content" id="p_param" style="padding:5px;">
  4. <div class="ptabhelpr">拖拽维度到此处作为筛选条件</div>
  5. <template v-for="(p) in pageInfo.params">
  6. <span :key="p.id" class="pppp">
  7. <span title="筛选" @click="paramFilter(p.id, p.type, p.name)" class="text">{{p.name}}({{ paramsDisp(p) }})</span>
  8. <button class="btn btn-default btn-xs" title="删除" @click.stop="deleteParam(p.id)"><i class="fa fa-remove"></i></button>
  9. </span>
  10. </template>
  11. </div>
  12. </div>
  13. </template>
  14. <script>
  15. import {ajax} from '@/common/biConfig'
  16. import $ from 'jquery'
  17. import {findParamById} from '@/view/bireport/bireportUtils'
  18. export default {
  19. data(){
  20. return {
  21. }
  22. },
  23. props:{
  24. pageInfo:{
  25. type:Object,
  26. required:true
  27. }
  28. },
  29. mounted(){
  30. this.paramDrop();
  31. },
  32. computed: {
  33. //ccc: {
  34. // get:function(){
  35. //return "abc";
  36. // }
  37. //var s = p.valStrs&&p.valStrs.length>0?p.valStrs.join(","):"无";
  38. //return 'abc';
  39. // }
  40. },
  41. methods: {
  42. paramsDisp(p){
  43. if(p.type === 'day' || p.type === 'month'){
  44. if(p.st && p.end){
  45. return p.st + "至" + p.end
  46. }else{
  47. return "无";
  48. }
  49. }else{
  50. if(p.valStrs&&p.valStrs.length>0){
  51. return p.valStrs.join(",");
  52. }else{
  53. return "无";
  54. }
  55. }
  56. },
  57. /**
  58. * 参数接受拖拽事件
  59. */
  60. paramDrop(){
  61. const ts = this;
  62. const pageInfo = ts.pageInfo;
  63. $("#p_param").droppable({
  64. accept:"#datasettree .jstree-node",
  65. tolerance:"pointer",
  66. over:function(e,ui){
  67. var ref = $("#datasettree").jstree(true);
  68. var node = ref.get_node(ui.draggable[0]);
  69. var tp = node.li_attr.col_type;
  70. //对维度拖拽设置图标
  71. if(tp == 1 ){
  72. $(ui.helper[0]).find("span").removeClass("glyphicon-remove").addClass("glyphicon-ok");
  73. $(this).css("border", "1px solid #ff0000");
  74. }
  75. },
  76. out:function(e,ui){
  77. $(ui.helper[0]).find("span").removeClass("glyphicon-ok").addClass("glyphicon-remove");
  78. $(this).css("border", "1px solid #d3d3d3");
  79. },
  80. drop:function(e,ui){
  81. $(this).css("border", "1px solid #d3d3d3");
  82. var ref = $("#datasettree").jstree(true);
  83. var node = ref.get_node(ui.draggable[0]);
  84. var tp = node.li_attr.col_type;
  85. if(tp == 1){
  86. if(!pageInfo.params){
  87. pageInfo.params = [];
  88. }
  89. //判断是否存在
  90. if(findParamById(node.li_attr.col_id, ts.pageInfo.params) != null){
  91. ts.$notify.error({title: '您已经添加了该参数!',offset: 50});
  92. return;
  93. }
  94. var id = node.li_attr.col_id;
  95. var p = {"id":id, "name":node.text, "type":node.li_attr.dim_type, "colname":node.li_attr.col_name,"alias":node.li_attr.alias, "tname":node.li_attr.tname,"cubeId":node.li_attr.cubeId,"valType":node.li_attr.valType,"tableName":node.li_attr.tableName, "tableColKey":node.li_attr.tableColKey,"tableColName":node.li_attr.tableColName,"calc":node.li_attr.calc, "dimord":node.li_attr.dimord, "grouptype":node.li_attr.grouptype,"dateformat":(node.li_attr.dateformat==null?"":node.li_attr.dateformat),dsid:node.li_attr.dsid};
  96. pageInfo.params.push(p);
  97. var obj = $(this);
  98. obj.find("div.ptabhelpr").remove();
  99. if(obj.find("b").length == 0){
  100. obj.append("<b>参数: </b>");
  101. }
  102. //弹出筛选窗口
  103. ts.paramFilter(id, p.type, p.name);
  104. }
  105. }
  106. });
  107. },
  108. /**
  109. * 弹出筛选窗口
  110. */
  111. paramFilter(id, type, name){
  112. this.$parent.$refs['paramFilterForm'].create(id);
  113. },
  114. deleteParam(id){
  115. $(this.pageInfo.params).each((a,b)=>{
  116. if(b.id==id){
  117. this.pageInfo.params.splice(a, 1);
  118. return false;
  119. }
  120. });
  121. if(this.pageInfo.params.length === 0){
  122. $("#p_param").html("<div class=\"ptabhelpr\">拖拽维度到此处作为页面参数</div>");
  123. }
  124. this.$parent.$refs['tableForm'].tableView();
  125. this.$parent.$refs['chartForm'].chartView();
  126. }
  127. },
  128. watch: {
  129. }
  130. }
  131. </script>
  132. <style lang="css">
  133. #p_param .ptabhelpr{
  134. padding:5px;
  135. color: #999999;
  136. font-size: 14px;
  137. }
  138. #p_param span.pppp {
  139. background-color: #FFFFCC;
  140. border: 1px solid #CACACA;
  141. display: inline-block;
  142. padding: 3px;
  143. text-align: center;
  144. margin-right:3px;
  145. border-radius: 3px;
  146. }
  147. #p_param span.text {
  148. cursor:pointer;
  149. }
  150. #p_param span.pppp span.text {
  151. display:-moz-inline-box;
  152. white-space:nowrap;
  153. overflow:hidden;
  154. }
  155. </style>