✨ Introducing new features. 更新积木报表前端

This commit is contained in:
aeizzz committed 2022-12-15 15:17:56 +08:00
1 parent a3f6d74ca2
commit d84ba2dcc1
26 files changed
+368 -102

No files matched your search

@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=v=1.0.7">
<#assign CACHE_VERSION = "v=1.0.13">
<!DOCTYPE html>
<html>
<head>
@@ -1,11 +1,17 @@
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.type = 'text/javascript';
hm.async = true;
hm.src = "https://hm.baidu.com/hm.js?5819d05c0869771ff6e6a81cdec5b2e8";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
//https://blog.csdn.net/aizou6838/article/details/101664336
function async_load(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = "https://hm.baidu.com/hm.js?5819d05c0869771ff6e6a81cdec5b2e8";
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
if (window.attachEvent)
window.attachEvent('onload', async_load);
else
window.addEventListener('load', async_load, false);
})();
</script>
@@ -816,10 +816,10 @@
}
}
).change((cdata) => {
console.log(cdata);
console.log(xs.validate());
// console.log(cdata);
// console.log(xs.validate());
var str = JSON.stringify(cdata)
console.log(str);
// console.log(str);
});
}
</script>
@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=1.0.7">
<#assign CACHE_VERSION = "v=1.0.13">
<#assign config_id = "${id!''}">
<!DOCTYPE html>
<html>
@@ -32,6 +32,14 @@
token = window.localStorage.getItem('JmReport-Access-Token');
}
window.localStorage.setItem('JmReport-Access-Token',token);
//update-begin---author:wangshuai ---date:20220708 for:[JMREP-2661]多租户权限集成------------
let tenantId = getRequestUrl().tenantId;
if("" == tenantId || null == tenantId){
tenantId = window.localStorage.getItem('JmReport-Tenant-Id');
}
window.localStorage.setItem('JmReport-Tenant-Id',tenantId);
//update-end---author:wangshuai ---date:20220708 for:[JMREP-2661]多租户权限集成------------
</script>
<!--引入公共资源-->
<#include "./common/resource.ftl">
@@ -801,6 +809,8 @@
<j-match-setting style="border-bottom: inset 1px;" v-if="graphSettings ||gaugeSettings ||funnelSettings || pieSettings || isMultiChart || selectedChartType.indexOf('multi')!=-1 || selectedChartType == 'radar.basic'" :chart-options="chartOptions" :data-settings="dataSettings" ></j-match-setting>
<!-- 背景设置-->
<j-background-setting @change="chartBackgroundChange" @upload-success="chartBackgroundUploadSuccess" @remove="removeChartBackground" :settings="chartBackground"></j-background-setting>
<!-- 柱形图系列类型设计-->
<#--<j-bar-series-setting style="border-bottom: inset 1px;" :chart-options="chartOptions" :data-settings="dataSettings" v-if="selectedChartType == 'bar.multi' || selectedChartType == 'line.multi' "></j-bar-series-setting>-->
</i-menu>
</tab-pane>
@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=v=1.0.7">
<#assign CACHE_VERSION = "v=1.0.13">
<!DOCTYPE html>
<html>
<head>
@@ -26,6 +26,14 @@
token = window.localStorage.getItem('JmReport-Access-Token');
}
window.localStorage.setItem('JmReport-Access-Token',token);
//update-begin---author:wangshuai ---date:20220708 for:[JMREP-2661]多租户权限集成------------
let tenantId = getRequestUrl().tenantId;
if("" == tenantId || null == tenantId){
tenantId = window.localStorage.getItem('JmReport-Tenant-Id');
}
window.localStorage.setItem('JmReport-Tenant-Id',tenantId);
//update-end---author:wangshuai ---date:20220708 for:[JMREP-2661]多租户权限集成------------
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
@@ -467,7 +475,7 @@
slot: 'action',
className: 'table-background',
fixed:'right'
}
}
],//列表的列
},
computed: {
@@ -592,7 +600,7 @@
/**
* 为路径拼接token
* @param url 需要拼接的路径
* @return 拼接后的token
* @return 拼接后的token
*/
splicingToken(url){
if(this.token && "null" != this.token){
@@ -669,7 +677,7 @@
//报表设计和模板案例点击事件
tabsClick(name){
this.name=""
this.loadData(name)
this.loadData(name)
},
//回车搜索事件
enterSearchClick(){
@@ -735,7 +743,9 @@
if(result.status=='0'){
let protocol = window.location.protocol;
let host = window.location.host;
let url = protocol+"//"+host+base;
//update-begin---author:wangshuai ---date:20221118 for:[issues/1383]yml中设置了项目前缀,分享链接地址有误------------
let url = protocol+"//"+host+BASE_URL;
//update-end---author:wangshuai ---date:20221118 for:[issues/1383]yml中设置了项目前缀,分享链接地址有误------------
result.previewUrl = url+result.previewUrl;
this.$refs.jurisdiction.jurisdictionData = result;
this.$refs.jurisdiction.shareUrlModal = true
@@ -100,8 +100,8 @@
},
//图片上传文件大小
handleMaxSize(file, size){
console.log("file===>", file)
console.log("size===>", size)
// console.log("file===>", file)
// console.log("size===>", size)
this.$Notice.warning({
title: '超出文件大小限制',
desc: '文件 ' + file.name + ' 太大,请上传' + size + 'M以内图片',
@@ -0,0 +1,75 @@
<script type="text/x-template" id="bar-series-template">
<Submenu name="6" style="border-bottom: inset 1px;" class="rightFontSize dataSourceForm">
<template slot="title">
<span>类型设置</span>
</template>
<div class="blockDiv" style="padding-bottom: 10px">
<Row class="ivurow" v-for="(item,index) in seriesData">
<Tooltip :content="item.name" placement="top">
<p class="text-width">
{{item.name}}&nbsp;&nbsp;
</p>
</Tooltip>
<i-select size="small" class="iSelect" v-model="item.type" @on-change="onSeriesChange">
<i-option class="rightFontSize" value="bar">bar</i-option>
<i-option class="rightFontSize" value="line">line</i-option>
</i-select>
</Row>
</div>
</Submenu>
</script>
<script>
Vue.component('j-bar-series-setting', {
template: '#bar-series-template',
props: {
chartOptions: {
type: Object,
default: () => {
}
},
dataSettings: {
type: [Object, String],
default: () => {
}
}
},
data() {
return {
seriesData: {}
}
},
watch: {
chartOptions: {
deep: true,
immediate: true,
handler: function () {
this.initData()
}
}
},
methods: {
initData: function () {
if (this.chartOptions && this.chartOptions.series) {
this.seriesData = this.chartOptions.series;
}
},
onSeriesChange(value) {
this.chartOptions.series = this.seriesData
let id = this.dataSettings.id;
xs.updateChart(id, this.chartOptions);
}
}
})
</script>
<style scoped>
.text-width {
width: 50px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
position: relative;
top: 6px;
}
</style>
@@ -337,7 +337,7 @@
url: api.getLinkageChartInfo,
data: param,
success: (result) => {
console.log(112,result)
// console.log(112,result)
// 设置被联动图表的参数接收
handleLinkageParams.call(this, result.paramList)
// 设置当前图表的字段字典信息
@@ -391,7 +391,7 @@
},
// 参数选中改变事件
handleClParamSelected(selections){
console.log('selections', selections)
// console.log('selections', selections)
let arr = []
selections.map(k=>{
arr.push(k.index)
@@ -40,14 +40,14 @@
deep: true,
immediate: true,
handler: function (){
console.log("我进来了")
// console.log("我进来了")
this.initData()
}
}
},
methods: {
initData: function (){
console.log(this.centralPoint,"我进来了")
// console.log(this.centralPoint,"我进来了")
if (this.settings){
this.centralPoint = Object.assign(this.centralPoint, this.settings)
}
@@ -298,7 +298,7 @@
url: api.getLinkageChartInfo,
data: param,
success: (result) => {
console.log(112,result)
// console.log(112,result)
// 设置被联动图表的参数接收
handleLinkageParams.call(this, result.paramList)
// 设置当前图表的字段字典信息
@@ -26,7 +26,7 @@
</form-item>
</i-col>
<i-col span="4" style="margin-left: 20px">
<i-button type="primary" @click="loadData">查询</i-button>
<i-button type="primary" @click="loadData(1)">查询</i-button>
<i-button @click="resetParam">清空</i-button>
</i-col>
</row>
@@ -122,7 +122,7 @@
<#--回收站 end-->
<#--end字典-->
<#--字典配置页面 begin-->
<Drawer :transfer="true" class="dictDrawer" width="500" title="字典类表" v-model="itemDrawer">
<Drawer :transfer="true" class="dictDrawer" width="500" title="字典列表" v-model="itemDrawer">
<div style="margin-top: 10px">
<i-button type="primary" @click="dictItemClick">添加</i-button>
</div>
@@ -362,11 +362,17 @@
},
},
methods: {
loadData() {
loadData(arg) {
//加载数据列表
let that = this;
let data = {}
data.pageNo = that.dictData.page.page
//update-begin---author:wangshuai ---date:20220720 for:[VUEN-1657]积木报表的字典查询,不好使输入 sex 或者性别都查不到数据------------
if(arg){
data.pageNo = arg
}else{
data.pageNo = that.dictData.page.page
}
//update-end---author:wangshuai ---date:20220720 for:[VUEN-1657]积木报表的字典查询,不好使输入 sex 或者性别都查不到数据--------------
data.pageSize = that.dictData.page.size
if(this.queryParam.dictCode){
data.dictCode=this.queryParam.dictCode
@@ -386,7 +392,9 @@
},
resetParam(){
this.queryParam={}
this.loadData()
//update-begin---author:wangshuai ---date:20220720 for:[VUEN-1657]积木报表的字典查询,不好使输入 sex 或者性别都查不到数据------------
this.loadData(1)
//update-end---author:wangshuai ---date:20220720 for:[VUEN-1657]积木报表的字典查询,不好使输入 sex 或者性别都查不到数据------------
},
loadItemData() {
//加载数据列表
@@ -152,8 +152,8 @@
<div style="font-size: 10px;">
<p style="margin-left: 14px">
<ul>
<li>如果id字段为字符串类型则需要加单引号:http://127.0.0.1:8080/jeecg-boot/jimureport/test?id=${"'$"}${"{id}'"}。</li>
<li>您可以编写${"'#"}${"{sysDateTime}'"}做为一个系统变量,这里sysDateTime是当前系统时间。例如:http://127.0.0.1:8080/jeecg-boot/jimureport/test?riqi=${"'#"}${"{sysDateTime}'"}。</li>
<li>如果id字段为字符串类型则需要加单引号:http://127.0.0.1:8080/jeecg-boot/jimureport/test?id=${"$"}${"{id}"}。</li>
<li>您可以编写${"#"}${"{sysDateTime}"}做为一个系统变量,这里sysDateTime是当前系统时间。例如:http://127.0.0.1:8080/jeecg-boot/jimureport/test?riqi=${"#"}${"{sysDateTime}"}。</li>
<li>您可以简写访问路径,如:{ { domainURL } }/jimureport/test。
<Tooltip content="数据源用法文档" placement="top">
<a class="jimu-table-tip help-color" href="http://report.jeecg.com/2384069" target="_blank" style="font-size: 14px"><Icon size="14" type="ios-help-circle-outline" style="margin-top: 2px"/></a>
@@ -392,7 +392,6 @@
{value: 'dm',label: '达梦'},
{value: 'kingbase8',label: '人大金仓'},
{value: 'oscar',label: '神通'},
{value: 'SQLite',label: 'SQLite'},
{value: 'DB2',label: 'DB2'},
{value: 'Hsqldb',label: 'Hsqldb'},
{value: 'Derby',label: 'Derby'},
@@ -533,7 +532,7 @@
},
on: {
'on-change': (value) => {
console.log(this.tab1.data)
// console.log(this.tab1.data)
this.tab1.data[params.index].searchMode = value;
// this.tab1.data
}
@@ -1039,7 +1038,7 @@
editById(dbId){
this.tabValue="1";
$http.get({url:api.loadDbData(dbId),success:(result)=>{
console.log('result=====',result);
// console.log('result=====',result);
let reportResult = result;
if(!reportResult){
return;
@@ -1122,7 +1121,7 @@
},
getReport(){
$http.get({url:api.getReport(excel_config_id),success:(result)=>{
console.log("result====>",result)
// console.log("result====>",result)
if (result){
this.$emit('cancelback',result)
this.designerObj = result;
@@ -1182,7 +1181,7 @@
success:(result)=>{
this.tab3Loading=false;
this.spinShow=false;
console.log("loadTableData====>result",result)
// console.log("loadTableData====>result",result)
this.tab3.data=result.records;
this.tab3.page.total=result.total;
},
@@ -295,7 +295,7 @@
},
on: {
'on-change': (value) => {
console.log(this.tab1.data)
// console.log(this.tab1.data)
this.tab1.data[params.index].searchMode = value;
// this.tab1.data
}
@@ -593,7 +593,7 @@
}
data.fieldList = this.tab1.data; //解析出表字段
data.paramList = this.tab2.data; //动态表单参数
console.log(123, data)
// console.log(123, data)
$http.post({
url: api.saveDb,
contentType:'json',
@@ -640,7 +640,7 @@
this.clearData();
$http.get({url:api.loadDbData(dbId),
success:(result)=>{
console.log('result=====',result);
// console.log('result=====',result);
if(!result){
return;
}
@@ -759,7 +759,7 @@
getReport(){
$http.get({url:api.getReport(excel_config_id),success:(result)=>{
console.log("result====>",result)
// console.log("result====>",result)
if (result){
this.$emit('cancelback',result)
this.designerObj = result;
@@ -805,7 +805,7 @@
success:(result)=>{
this.tab3Loading=false;
this.spinShow=false;
console.log("loadTableData====>result",result)
// console.log("loadTableData====>result",result)
this.tab3.data=result.records;
this.tab3.page.total=result.total;
},
@@ -1116,7 +1116,7 @@
},
//放大确定事件
extJsonOk(){
console.log(this.paramConfigData)
// console.log(this.paramConfigData)
if(this.tableType == 0){
this.tab1.data[this.tableIndex].extJson = this.paramConfigData
}else if(this.tableType == 1){
@@ -144,7 +144,7 @@
jurisdictionData.id= this.jurisdictionData.id
jurisdictionData.status= '1'
jurisdictionData.reportId= this.jurisdictionData.reportId
console.log("我进来了")
// console.log("我进来了")
$http.post({
contentType:'json',
url: api.addAndEdit,
@@ -52,7 +52,7 @@
<Row class="ivurow">
<p>上边距&nbsp;&nbsp;</p>
<slider v-model="legendOptions.padding[0]" @on-change="onLegendChange" :tip-format="formatTop" style="margin-top: -9px;width: 148px;margin-left: 5px;"></slider>
<slider :disabled="legendOptions.top!=='top'" v-model="paddingTop" @on-change="onLegendTopChange" :tip-format="formatTop" style="margin-top: -9px;width: 148px;margin-left: 5px;"></slider>
</Row>
</div>
</Submenu>
@@ -77,7 +77,8 @@
left:"left",
orient:"horizontal",
textStyle_fontSize:""
}
},
paddingTop:'' //边距单独提出来
}
},
watch: {
@@ -93,13 +94,18 @@
initData: function (){
if (this.settings){
this.legendOptions = Object.assign(this.legendOptions, this.settings)
//update-begin---author:wangshuai ---date:20220628 for:[issues/I58YJG]图表中图例设置-纵向位置如果设置为底部,在挪动上边距的话那个图例就会跑到顶部去------------
this.paddingTop = this.legendOptions.padding[0]
//update-end---author:wangshuai ---date:20220628 for:[issues/I58YJG]图表中图例设置-纵向位置如果设置为底部,在挪动上边距的话那个图例就会跑到顶部去--------------
}
},
onLegendChange (){
console.log("我进来了")
console.log(this.legendOptions)
this.$emit('change','legend',this.legendOptions)
},
onLegendTopChange(){
this.legendOptions.padding[0] = this.paddingTop;
this.onLegendChange()
},
formatTop(val){
return val
},
@@ -334,7 +334,7 @@
token:this.token
},
success:(result)=>{
console.log('result',result)
// console.log('result',result)
let records=result.records;
that.page.total = result.total
that.$nextTick(()=>{
@@ -119,7 +119,7 @@
methods: {
//渲染button
renderColorButton(h, params, key, type){
console.log('params', params)
// console.log('params', params)
if (key == 'action'){
return h('div', {style: {display: 'flex'}}, [
h('i-button', {
@@ -190,7 +190,7 @@
},
initData: function (){
if (this.chartOptions){
console.info("########", JSON.stringify(this.dataSettings))
// console.info("########", JSON.stringify(this.dataSettings))
this.selectedChartType = this.dataSettings.chartType;
let colorArr = [];
let seriesList = []
@@ -244,7 +244,7 @@
}
}
})
console.info("自定义颜色", colorArr)
// console.info("自定义颜色", colorArr)
//已设置的颜色配置
this.colorMatchData = colorArr
//系列下拉框数据
@@ -264,8 +264,8 @@
this.colorMatch={name:'',color:'',edgeColor:"",opacity:1,lineColor:''};
},
onColorChange(){
console.log('this.colorMatchData==>',JSON.stringify(this.colorMatchData));
console.log('this.seriesTypeData==>',JSON.stringify(this.seriesTypeData));
// console.log('this.colorMatchData==>',JSON.stringify(this.colorMatchData));
// console.log('this.seriesTypeData==>',JSON.stringify(this.seriesTypeData));
if(!this.colorMatchData){
return;
}
@@ -278,7 +278,7 @@
}else{
arr = this.chartOptions['series']
}
console.log('this.arr==>',JSON.stringify(arr));
// console.log('this.arr==>',JSON.stringify(arr));
let seriesArray = []
let i = 0;
for(let item of arr){
@@ -364,7 +364,7 @@
let arr= [[0.2, c1], [0.8, c2], [1, c3]];
this.chartOptions['series'][0]['axisLine']['lineStyle'].color =arr
}
console.info("this.chartOptions",JSON.stringify(this.chartOptions))
// console.info("this.chartOptions",JSON.stringify(this.chartOptions))
let id = this.dataSettings.id;
xs.updateChart(id , this.chartOptions);
},
@@ -107,8 +107,8 @@
},
//图片上传文件大小
handleMaxSize (file,size) {
console.log("file===>",file)
console.log("size===>",size)
// console.log("file===>",file)
// console.log("size===>",size)
this.$Notice.warning({
title: '超出文件大小限制',
desc: '文件 ' + file.name + ' 太大,请上传'+size+'M以内图片',
@@ -1,6 +1,6 @@
<script type="text/x-template" id="print-setting-template">
<div>
<Modal :loading="true" v-model="show" :width="500" @on-ok="onPrintSettingSave" @on-cancel="onPrintSettingCancel" class="expression">
<Modal :loading="true" v-model="show" :width="500" @on-ok="onPrintSettingSave" @on-cancel="onPrintSettingCancel" class="print-setting expression">
<p slot="header">
<span>打印设置
<Tooltip :transfer="true" content="打印文档" placement="top">
@@ -69,6 +69,16 @@
<slider :min="1" :max="10" v-model="definition"></slider>
</i-col>
</Row>
<Row style="margin-top: 8px">
<i-col span="6">
<span>回调接口:</span>
</i-col>
<i-col span="18">
<i-input v-model="printCallBackUrl" style="width: 100%"></i-input>
</i-col>
</Row>
</i-form>
</Modal>
</div>
@@ -117,7 +127,8 @@
pxHeight: '',
marginX: 10,
marginY: 10,
layout: 'portrait'
layout: 'portrait',
printCallBackUrl: ''
}
},
created(){
@@ -157,7 +168,8 @@
isBackend: this.isBackend,
marginX: this.marginX || 0,
marginY: this.marginY || 0,
layout: this.layout
layout: this.layout,
printCallBackUrl: this.printCallBackUrl
}
},
// 纸张大小改变事件
@@ -234,6 +246,7 @@
if(param.isBackend===true || param.isBackend===false){
this.isBackend = param.isBackend
}
this.printCallBackUrl = param.printCallBackUrl || ''
}
},
// 重置宽高px的值
@@ -291,4 +304,11 @@
}
})
</script>
</script>
<style>
.print-setting .ivu-col-span-6>span{
display: inline-block;
height: 32px;
line-height: 32px;
}
</style>
@@ -7,9 +7,9 @@ index:下标-->
<div class="ivu-select ivu-select-multiple ivu-select-small" style="width: 100%">
<div class="ivu-select-selection" @click="handleClick">
<span class="select-dict-text" v-if="dictText!=''">{{dictText}}</span>
<span v-else class="ivu-select-input" style="color: rgb(197,201,203)">{{'请选择'+dataList.name}}</span>
<span v-else class="ivu-select-input" style="color: rgb(197,201,203)">{{'请选择'+dataList.title}}</span>
</div>
<i class="ivu-icon ivu-icon-md-close icon-position" @click="handleIconClick"></i>
<i class="ivu-icon ivu-icon-md-close ivu-select-arrow" @click="handleIconClick"></i>
</div>
<div class="scroll-class" v-if="scrollShow">
<Scroll :class="noData == true?'no-loading':''" :height="dictHeight" :on-reach-bottom="handleReachBottom"
@@ -269,7 +269,9 @@ index:下标-->
this.getDictData(1);
}else{
//前台进行搜索
if(this.dictText){
//update-begin---author:wangshuai ---date:20221117 for:[issues/1316]查询栏 下拉多选搜索无效------------
if(this.searchText){
//update-end---author:wangshuai ---date:20221117 for:[issues/1316]查询栏 下拉多选搜索无效--------------
this.searchDictByText();
}else{
this.dictList = this.copyDictList
@@ -339,7 +341,10 @@ index:下标-->
}else{
for (let i = 0; i <dictList.length; i++) {
let value = dictList[i].value;
if(value.indexOf(searchText) >= 0 || value == searchText){
let text = dictList[i].text;
if(value.indexOf(searchText) >= 0 || value === searchText){
newDictList.push(dictList[i])
}else if(text.indexOf(searchText) >= 0 || text ===searchText){
newDictList.push(dictList[i])
}
}
@@ -3,9 +3,12 @@ item:传递的参数,包含字典code,查询key
value:view组件传递的值 v-model-->
<script type="text/x-template" id="select-scroll-radio-template">
<div>
<input ref="clickInput" class="ivu-input ivu-input-default" v-model="dictText"
:placeholder="'请选择'+dataList.name" @blur="clickBlur"
@click="handleClick" style="cursor: pointer"/>
<div style="display: flex">
<input ref="clickInput" class="ivu-input ivu-input-default" v-model="dictText"
:placeholder="'请选择'+dataList.title" @blur="clickBlur"
@click="handleClick" style="cursor: pointer"/>
<i class="ivu-icon ivu-icon-md-close ivu-select-arrow" @click="handleIconClick" v-if="dictText"></i>
</div>
<div class="scoll-class" v-if="scollShow">
<Scroll :class="noData == true?'no-loading':''" :height="dictHeight" :on-reach-bottom="handleReachBottom"
:distance-to-edge="1">
@@ -230,7 +233,10 @@ value:view组件传递的值 v-model-->
let newDictList = [];
for (let i = 0; i < dictList.length; i++) {
let value = dictList[i].value;
if (value.indexOf(dictText) >= 0 || value == dictText) {
let text = dictList[i].text;
if (value.indexOf(dictText) >= 0 || value === dictText) {
newDictList.push(dictList[i])
}else if(text.indexOf(dictText) >= 0 || text === dictText){
newDictList.push(dictList[i])
}
}
@@ -238,7 +244,14 @@ value:view组件传递的值 v-model-->
//update-begin---author:wangshuai ---date:20220315 for:下拉单选样式出现混乱--------
this.dictHeight = this.dictList.length > 6 ? 200 : this.dictList.length * 32 + 50
//update-end---author:wangshuai ---date:20220315 for:下拉单选样式出现混乱--------
}
},
/**
* 点击叉数据清空
*/
handleIconClick(){
this.dictText=""
this.handleOnChange()
}
}
})
</script>
@@ -39,6 +39,11 @@
</i-option>
</i-select>
</Row>
<Row class="ivurow rightFontSize">
<p style="margin-bottom: 10px;">数值旋转&nbsp;&nbsp;</p>
<input-number :max="90" :min="-90" size="small" v-model="seriesOption.rotate" @on-change="onSeriesLabelChange"/>
</i-select>
</Row>
<Row class="ivurow rightFontSize">
<p style="margin-bottom: 10px;">是否显示数值&nbsp;&nbsp;</p>
<i-switch size="small" style="margin-left: 6px;" v-model="izShowNumber" @on-change="onSeriesFormatterChange"/>
@@ -65,7 +70,9 @@
textStyle_fontSize:'',
textStyle_fontWeight:'',
position:'',
formatter:''
formatter:'',
rotate:0,
type:''
},
labelPositions:[],
izShowNumber:false
@@ -84,13 +91,28 @@
initData: function (){
if (this.settings){
this.seriesOption = Object.assign(this.seriesOption, this.settings)
//update-begin---author:wangshuai ---date:20220407 for:[issues/I50IKB]饼图 如何直接在图上显示各分类对应的数值------------
if(this.seriesOption.formatter && "{b}"!=this.seriesOption.formatter){
this.izShowNumber = true;
//update-begin---author:wangshuai ---date:20220626 for:[JMREP-2655]图表数值倾斜度设置后,数值不显示了/[issues/I5CO1P、issues/1100 、issues/1086]图表的数值显示,会连轴名称一起显示 ------------
//显示名称,没有显示数值
let type = this.seriesOption.type;
if(type === 'pie' || type === 'funnel' || type === 'scatter' || type === 'graph'){
//update-begin---author:wangshuai ---date:20220407 for:[issues/I50IKB]饼图 如何直接在图上显示各分类对应的数值------------
if(this.seriesOption.formatter && "{b}"!==this.seriesOption.formatter){
this.izShowNumber = true;
}else{
this.izShowNumber = false;
}
//update-end---author:wangshuai ---date:20220407 for:[issues/I50IKB]饼图 如何直接在图上显示各分类对应的数值------------
}else{
this.izShowNumber = false;
//只显示数值,如formatter值不为' ',则显示数值,否则不显示
if(this.seriesOption.formatter === " "){
this.izShowNumber = false
}else{
this.seriesOption.formatter="{c}"
this.izShowNumber = true
}
}
//update-end---author:wangshuai ---date:20220407 for:[issues/I50IKB]饼图 如何直接在图上显示各分类对应的数值------------
//update-end---author:wangshuai ---date:20220626 for:[JMREP-2655]图表数值倾斜度设置后,数值不显示了/[issues/I5CO1P、issues/1100 、issues/1086]图表的数值显示,会连轴名称一起显示 --------------
}
},
onSeriesLabelChange(){
@@ -101,11 +123,24 @@
* 图表设置格式化
*/
onSeriesFormatterChange(){
if(this.izShowNumber){
this.seriesOption.formatter="{b}\n{c}"
}else{
this.seriesOption.formatter="{b}"
}
//update-begin---author:wangshuai ---date:20220626 for:[JMREP-2655]图表数值倾斜度设置后,数值不显示了/[issues/I5CO1P、issues/1100 、issues/1086]图表的数值显示,会连轴名称一起显示 ------------
let type = this.seriesOption.type;
if(type === 'pie' || type === 'funnel' || type === 'scatter' || type === 'graph'){
//如果是选中数值状态
if(this.izShowNumber){
this.seriesOption.formatter="{b}\n{c}"
}else{
this.seriesOption.formatter="{b}"
}
}else{
//如果是选中数值状态,并且初始值为数值
if(this.izShowNumber){
this.seriesOption.formatter="{c}"
}else{
this.seriesOption.formatter=" "
}
}
//update-end---author:wangshuai ---date:20220626 for:[JMREP-2655]图表数值倾斜度设置后,数值不显示了/[issues/I5CO1P、issues/1100 、issues/1086]图表的数值显示,会连轴名称一起显示 ------------
let {labelPositionArray,...otherOptions}=this.seriesOption;
this.$emit('change', otherOptions,'label')
}
@@ -37,7 +37,7 @@
+{{ multipleShowVal.length - 2 }}
</span>
<span v-if="multipleHideVal.length === 0" class="ivu-select-placeholder">请选择</span>
<span v-if="multipleShowVal.length === 0" class="ivu-select-placeholder">请选择</span>
<span class="" style="display: none;"></span>
</div>
<i :class="'ivu-icon ivu-icon-' +iconVal+ ' ivu-select-arrow'" @click="clickIcon"></i>
@@ -76,7 +76,10 @@
},
url: {
type: String
}
},
loadtreeurl: {
type: String
}
},
data(){
return {
@@ -94,6 +97,7 @@
queryData: [],
inputOver: false,
treeOver: false,
initValues:[] //初始化value值
}
},
@@ -122,6 +126,14 @@
})
}
}
//update-begin---author:wangshuai ---date:20220627 for:[issues/965]报表下钻时返回上一页下拉树参数回显有问题------------
//如果没有配置通过value值获取树集合,那么就不走孩子选中时间
if(this.loadtreeurl){
this.checkChildTreeData(arr,this.initValues)
}
//update-end---author:wangshuai ---date:20220627 for:[issues/965]报表下钻时返回上一页下拉树参数回显有问题--------------
if(callback){
callback(arr)
}else{
@@ -135,9 +147,9 @@
},
// 加载子节点
loadData(item, callback){
console.log("====")
console.log("loadData")
console.log("====")
// console.log("====")
// console.log("loadData")
// console.log("====")
let params = {
params: {pid: item.id}
}
@@ -149,9 +161,9 @@
},
// 加载数据
loadRoot(){
console.log("====")
console.log("loadRoot")
console.log("====")
// console.log("====")
// console.log("loadRoot")
// console.log("====")
$http.metaGet(this.url).then((res) => {
this.combineTreeData(res.data)
}).catch(function (error){
@@ -160,7 +172,7 @@
},
initTreeSelected(){
// 如果有默认值 需要设置该方法
console.log('initTreeSelected', this.value)
// console.log('initTreeSelected', this.value)
if(!this.value){
let arr = this.queryData;
this.clearTreeSelect(arr)
@@ -168,6 +180,13 @@
this.multipleHideVal = []
// 勾选状态去不掉
this.queryData = JSON.parse(JSON.stringify(arr))
}else{
//update-begin---author:wangshuai ---date:20220627 for:[issues/965]报表下钻时返回上一页下拉树参数回显有问题------------
//如果没有配置通过值获取数集合,那么就不走请求接口,兼容老数据
if(this.loadtreeurl){
this.getTreeName(this.value);
}
//update-end---author:wangshuai ---date:20220627 for:[issues/965]报表下钻时返回上一页下拉树参数回显有问题------------
}
},
clearTreeSelect(arr){
@@ -256,7 +275,7 @@
}
},
clearVal () {
console.log('clearVal')
// console.log('clearVal')
/* if (this.clearable && !this.multiple && this.iconVal === 'ios-close-circle') {
this.pickTree(this.hideValue)
this.queryVal = ''
@@ -339,6 +358,65 @@
let emitString = this.multipleHideVal.join(',')
this.$emit('input', emitString)
this.$emit('on-change', emitString)
},
/**
* 获取树名称
* @param value
*/
getTreeName(value){
let params = {
params: {value: value}
}
$http.metaGet(this.loadtreeurl, params).then((res) => {
if(res.data && res.data.length> 0){
let initValues = [];
for (let i = 0; i < res.data.length; i++) {
if(res.data[i].value){
if(this.multipleShowVal.indexOf(res.data[i].title) === -1){
this.multipleShowVal.push(res.data[i].title)
}
initValues.push(res.data[i].value)
}
}
//如果有值默认选中
this.setChecked(initValues);
this.initValues = initValues
}
}).catch(function (error){
console.log('获取树名称失败', error)
});
},
/**
* 设置选中值
* @param children
* @param removeValue
*/
setChecked(values){
let arr = this.queryData;
for (let i = 0; i < arr.length; i++) {
if (values.indexOf(arr[i].value)!==-1 && !values.checked) {
Vue.set(arr[i],"checked",true)
} else {
Vue.set(arr[i],"checked",false)
}
}
},
/**
* 子级设置选中值
* @param children
* @param checkedValue
*/
checkChildTreeData(children, checkedValue) {
for (let i = 0; i < children.length; i++) {
if (checkedValue.indexOf(children[i].value)!==-1 && !checkedValue.checked) {
Vue.set(children[i],"checked",true)
}else{
Vue.set(children[i],"checked",false)
}
}
}
}
@@ -169,7 +169,7 @@
this.$emit('change', false)
},
handleClickToolbarBtn(item){
console.log('handleClickToolbarBtn', item)
// console.log('handleClickToolbarBtn', item)
let index = item.index;
let position = this.selectedIndexList.indexOf(index)
if(position>=0){
@@ -31,4 +31,5 @@
<#include "components/chart_linkage.ftl">
<#include "components/cell_linkage.ftl">
<#include "components/primary_sub_report.ftl">
<#include "components/sql_function_replace.ftl">
<#include "components/sql_function_replace.ftl">
<#include "components/bar_series_setting.ftl">
@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=v=1.0.7">
<#assign CACHE_VERSION = "v=1.0.13">
<#assign config_id = "${id!''}">
<#assign shareView = "${shareView}">
<!DOCTYPE html>
@@ -158,7 +158,7 @@ function getLocalRequestUrl() {
<div id="app" style="overflow: hidden" v-cloak>
<!-- 查询条件 -begin -->
<div v-if="configQueryList && configQueryList.length>0">
<Collapse class="jm-query-collapse" @on-change="onQueryAreaSwitch">
<Collapse class="jm-query-collapse" @on-change="onQueryAreaSwitch" v-model="queryPanel">
<Panel name="1">
<span style="color: #000000;" title="点击展开显示查询信息">查 询 栏</span>
<div slot="content">
@@ -196,7 +196,7 @@ function getLocalRequestUrl() {
<!-- 下拉树 -->
<template v-else-if="item.mode==6">
<j-tree-select :ref="item.key" :url="item.loadTree" v-model="queryInfo[item.key]"></j-tree-select>
<j-tree-select :ref="item.key" :url="item.loadTree" :loadtreeurl="item.loadTreeByValue" v-model="queryInfo[item.key]"></j-tree-select>
</template>
<!-- 自定义下拉框 -->
@@ -219,20 +219,20 @@ function getLocalRequestUrl() {
<template v-else-if="item.type=='number'">
<Row v-if="item.mode==2">
<i-col span="11">
<i-input :ref="item.key+'_begin'" class="jm-select-box" v-model="queryInfo[item.key+'_begin']" type="number" :placeholder="'请输入起始值'"></i-input>
<i-input :ref="item.key+'_begin'" class="jm-select-box" v-model="queryInfo[item.key+'_begin']" type="number" :placeholder="'请输入起始值'" clearable></i-input>
</i-col>
<i-col span="2" style="text-align: center">&nbsp;~</i-col>
<i-col span="11">
<i-input :ref="item.key+'_end'" class="jm-select-box" v-model="queryInfo[item.key+'_end']" type="number" :placeholder="'请输入结束值'"></i-input>
<i-input :ref="item.key+'_end'" class="jm-select-box" v-model="queryInfo[item.key+'_end']" type="number" :placeholder="'请输入结束值'" clearable></i-input>
</i-col>
</Row>
<i-input v-else :ref="item.key" class="jm-select-box" type="number" v-model="queryInfo[item.key]" :placeholder="'请输入'+item.title"></i-input>
<i-input v-else :ref="item.key" class="jm-select-box" type="number" v-model="queryInfo[item.key]" :placeholder="'请输入'+item.title" clearable></i-input>
</template>
<!-- 默认输入框 模糊查询参数加* -->
<template v-else>
<i-input v-if="item.mode==5" :ref="item.key" @on-change="(e)=>handleLikeQueryChange(e, item.key)" class="jm-select-box" v-model="queryInfo['onlyshow_'+item.key]" :placeholder="'请输入'+item.title"></i-input>
<i-input v-else :ref="item.key" class="jm-select-box" v-model="queryInfo[item.key]" :placeholder="'请输入'+item.title"></i-input>
<i-input v-if="item.mode==5" :ref="item.key" @on-change="(e)=>handleLikeQueryChange(e, item.key)" class="jm-select-box" v-model="queryInfo['onlyshow_'+item.key]" :placeholder="'请输入'+item.title" clearable></i-input>
<i-input v-else :ref="item.key" class="jm-select-box" v-model="queryInfo[item.key]" :placeholder="'请输入'+item.title" clearable></i-input>
</template>
</template>
</form-item>
@@ -298,8 +298,8 @@ function getLocalRequestUrl() {
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/js/biz/row.cycle.js?${CACHE_VERSION}"></script>
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/cdn/vue/xss-0.3.3.min.js?${CACHE_VERSION}"></script>
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/js/biz/view.js?${CACHE_VERSION}"></script>
<#include "./common/tj.ftl">
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/cdn/vue/md5.min.js?${CACHE_VERSION}"></script>
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/js/biz/SignMd5Util.js?${CACHE_VERSION}"></script>
<#include "./common/tj.ftl">
</body>
</html>