⬆️ up JimuReport v1.5.0-beta

This commit is contained in:
付绪壮 committed 2022-04-19 15:51:34 +08:00
1 parent cc5e314c2b
commit 08625b668a
13 files changed
+582 -33

No files matched your search

@@ -6,7 +6,7 @@ server:
db:
num: 1
user: ${MYSQL_USER:root}
password: ${MYSQL_PWD:root}
password: ${MYSQL_PWD:127255}
url:
0: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=1.0.33">
<#assign CACHE_VERSION = "v=v=1.0.7">
<!DOCTYPE html>
<html>
<head>
@@ -1,11 +1,11 @@
<#assign CACHE_VERSION = "v=1.0.5">
<#assign CACHE_VERSION = "v=1.0.7">
<#assign config_id = "${id!''}">
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>报表设计器 - 积木报表, 免费可视化报表工具!</title>
<title>积木报表—免费可视化Web报表工具</title>
<script>
let base = "${base}";
@@ -1058,7 +1058,7 @@
}
const options = {
"domain": 'http://localhost:8080/jeecg-boot',
"viewLocalImage":"/jmreport/img",//预览本地图片方法
"viewLocalImage":JM_VIEW_IMG_URL,//预览本地图片方法
"uploadUrl":"/jmreport/upload", //统一上传地址
"uploadExcelUrl":"/jmreport/importExcel?token="+token,//上传excel方法
pageSize: viewPageSize, //分页条数
@@ -1299,6 +1299,8 @@
</script>
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/js/util.js?${CACHE_VERSION}"></script>
<script type="text/javascript" src="${base}${customPrePath}/jmreport/desreport_/js/biz/design.js?${CACHE_VERSION}"></script>
<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>
<script>
window.onbeforeunload = function(event){
return '您可能有数据没有保存';
@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=1.0.5">
<#assign CACHE_VERSION = "v=v=1.0.7">
<!DOCTYPE html>
<html>
<head>
@@ -116,10 +116,10 @@
<#include "./template/list.ftl">
<div id="app" style="padding-left: 30px">
<div class="layout" style="margin-left: -30px;margin-top: -10px;">
<#-- <div style="background-color: #1890FF;height: 47px">-->
<#-- <span class="aui-logo"></span>-->
<#-- <span class="jimu-header">欢迎进入积木报表工作台 </span>-->
<#-- </div>-->
<div style="background-color: #1890FF;height: 47px">
<span class="aui-logo"></span>
<span class="jimu-header">欢迎进入积木报表工作台 </span>
</div>
<Layout>
<Sider breakpoint="md" collapsible :collapsed-width="78" v-model="isCollapsed">
<i-menu theme="primary" width="auto" :class="menuitemClasses" active-name="datainfo" :open-names="['sub']" @on-select="onMenuSelect">
@@ -467,7 +467,7 @@
slot: 'action',
className: 'table-background',
fixed:'right'
}
}
],//列表的列
},
computed: {
@@ -592,7 +592,7 @@
/**
* 为路径拼接token
* @param url 需要拼接的路径
* @return 拼接后的token
* @return 拼接后的token
*/
splicingToken(url){
if(this.token && "null" != this.token){
@@ -669,7 +669,7 @@
//报表设计和模板案例点击事件
tabsClick(name){
this.name=""
this.loadData(name)
this.loadData(name)
},
//回车搜索事件
enterSearchClick(){
@@ -742,7 +742,7 @@
}else{
//update-begin---author:wangshuai ---date:20220315 for:[issues/I4WWKE]分享链接的预览密码能否忽略------------
//兼容老数据没有是否显示密码的情况下;
// 0没有密码 1有密码;原来取消分享后的默认应该是1
//previewLockStatus 密码锁状态(0不存在密码锁,1存在密码锁);原来取消分享后的默认应该是1
if(!result.previewLockStatus){
result.previewLockStatus = "1"
}
@@ -765,7 +765,7 @@
if(item.thumb.indexOf('http')==0){
return item.thumb
}else{
return "${base}"+"${customPrePath}"+"/jmreport/img/"+item.thumb
return "${base}"+"${customPrePath}"+JM_VIEW_IMG_URL+"/"+item.thumb
}
}
}
@@ -1170,10 +1170,15 @@
//update-end---author:wangshuai ---date:20220221 for:[issues/I4OXTC]SQL数据集里数据预览报错
//update-end--Author:wangshuai--Date:20211014--for:参数为空不传递
this.tab3Loading=true;
//update-begin-author:taoyan date:20220324 for: JMREP-2518【安全】动态执行sql的接口,加上签名check,参考jeecgboot
let header = SignMd5Util.getHeader(api.loadTableData, data)
$http.post({
url:api.loadTableData,
data:data,
timeout:10000,
contentType: 'json',
header: header,
//update-end-author:taoyan date:20220324 for: JMREP-2518【安全】动态执行sql的接口,加上签名check,参考jeecgboot
success:(result)=>{
this.tab3Loading=false;
this.spinShow=false;
@@ -1453,11 +1458,15 @@
reqData['paramArray'] = JSON.stringify(this.tab2.data);
}
//update-end--Author:liusq Date:20210812 for:mongodb数据源传递报表参数--------------------
//update-begin-author:taoyan date:20220324 for: JMREP-2518【安全】动态执行sql的接口,加上签名check,参考jeecgboot
let header = SignMd5Util.getHeader(api.queryFieldBySql, reqData)
let dataStr = JSON.stringify(reqData);
$http.post({
url: api.queryFieldBySql,
contentType: 'json',
data: dataStr,
header: header,
//update-end-author:taoyan date:20220324 for: JMREP-2518【安全】动态执行sql的接口,加上签名check,参考jeecgboot
success:(result)=>{
let message = result['message'];
if(message){
@@ -170,7 +170,7 @@
//update-begin---author:wangshuai ---date:20220315 for:[issues/I4WWKE]分享链接的预览密码能否忽略------------
textarea.value = "预览地址: "+previewUrl+" \n"
//兼容老数据,如果是否分享密码为空的话,也得需要加上预览密码
//0没有密码 1有密码
//previewLockStatus 密码锁状态(0不存在密码锁,1存在密码锁)
if("0" != this.jurisdictionData.previewLockStatus){
textarea.value = textarea.value + "预览密码: "+previewLock+"\n"
}
@@ -33,7 +33,9 @@
</div>
</Row>
<Row class="ivurow" v-if="mapOption.mapType=='1' || mapOption.mapType=='2' || mapOption.mapType=='3'">
<p>地图级别&nbsp;&nbsp;</p>
<p v-if="mapOption.mapType=='1'">选择省份&nbsp;&nbsp;</p>
<p v-if="mapOption.mapType=='2'">选择城市&nbsp;&nbsp;</p>
<p v-if="mapOption.mapType=='3'">选择区域&nbsp;&nbsp;</p>
<div class="iSelect">
<Cascader v-if="mapOption.mapType=='1' " clearable transfer="true" :data="provinceData" size="small" @on-change="(value, selectedData) => provinceChange(value, selectedData)" v-model="mapOption.mapCode"></Cascader>
<Cascader v-if="mapOption.mapType=='2' " clearable transfer="true" :data="cityData" size="small" @on-change="(value, selectedData) => provinceChange(value, selectedData)" v-model="mapOption.mapCode"></Cascader>
@@ -285,7 +287,7 @@
"label": "市级",
"value": "2"
}, {
"label": "县级",
"label": "区级",
"value": "3"
}],//地图级别集合
mapUrl:"/jmreport/desreport_/regionaljson/", //请求路径
@@ -495,7 +497,9 @@
//type 1 省的json 2省市的json 3省市区的json
loadMapData(url,type) {
$http.get({
url:"${base}"+this.mapUrl+url,
//update-begin---author:wangshuai ---date:20220412 for:[issues/890]微服务下customPrePath不起作用------------
url:"${base}"+"${customPrePath}"+this.mapUrl+url,
//update-end---author:wangshuai ---date:20220412 for:[issues/890]微服务下customPrePath不起作用--------------
fail:(res)=>{
if(type == 1){
this.provinceData = res.data
@@ -0,0 +1,491 @@
<#--多选组件,用于远程搜索查询
item:传递的参数,包含字典code,查询key
value:view组件传递的值 v-model
index:下标-->
<script type="text/x-template" id="select-scroll-multiple-template">
<div :id="'click'+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>
</div>
<i class="ivu-icon ivu-icon-md-close icon-position" @click="handleIconClick"></i>
</div>
<div class="scroll-class" v-if="scrollShow">
<Scroll :class="noData == true?'no-loading':''" :height="dictHeight" :on-reach-bottom="handleReachBottom"
:distance-to-edge="1">
<input v-model="searchText" type="text" placeholder="请输入查询条件" class="ivu-select-input bottom-border" />
<ul v-for="(item,index) in dictList" :key="index" @mousedown="scrollListClick(item,index)"
class="scroll-list-class">
<li :class="item.active == true?'select-item-selected':''"><span>{{ item.text }}</span></li>
</ul>
<ul class="no-more-data" v-if="noData">
<li style="font-size: 12px;text-align: center;margin-top:5px">暂无更多数据</li>
</ul>
</Scroll>
</div>
</div>
</script>
<script>
Vue.component('j-select-scroll-multiple', {
template: '#select-scroll-multiple-template',
props: {
item: {
type: Object,
default: () => []
},
value: {
type: String,
default: () => ""
},
index: {
type: Number
}
},
data() {
return {
// 表格高度
dictHeight: 200,
// 数据总数
tableCount: 0,
//下拉框数据
dataList: {},
dictList: [],
//字典文本
dictText: "",
// 是否加载中
tableLoading: false,
//滚动组件是否显示
scrollShow: false,
userpage: 1,
noData: false,
//初始字典text
initText:"",
//是否初始值
initValue:true,
//复制一份字典集合
copyDictList:[],
//搜索的文本
searchText:"",
//字典值
dictValue:""
}
},
create() {
},
watch: {
item: {
deep: true,
immediate: true,
handler: function () {
this.dictData();
}
},
value: {
immediate: true,
handler: function () {
this.setDictText();
}
},
searchText(){
this.handleOnChange();
}
},
mounted() {
//页面初始化监听click事件
document.addEventListener("click", e => {
this.closeScroll(e);
});
},
beforeDestroy() {
//页面销毁移除监听事件
document.removeEventListener("click", this.closeScroll);
},
methods: {
/**
* 关闭滚动弹窗
*/
closeScroll(e) {
let self = this;
let click = document.getElementById("click"+this.index);
if (click && !click.contains(e.target)) {
if (self.scrollShow == true){
self.scrollShow = false;
}
}
},
/**
* 获取字典数据
*/
dictData() {
if (this.item) {
this.dataList = JSON.parse(this.item)
if (this.dataList) {
this.dictList = this.dataList.dictList
this.copyDictList = this.dataList.dictList
//目前只有不勾选复选框并且不是select的时候才会分页,api和普通的字典不用去后台查数据
if(this.dataList.dictCode && this.dataList.dictCode.indexOf("select") ==-1 || this.dataList.dictList.length<7) {
this.noData = true
}
}
this.dictHeight = this.dictList.length>6?200:this.dictList.length*32+82
}
},
/**
*为字典值赋值
*/
setDictText() {
if (this.value.length == 0) {
this.dictText = "";
this.searchText = ""
//重置选中事件
this.restActive();
}else{
this.loopData(this.dictList);
}
},
/**
*赋值字典集合及是否选中
* @param dictList 字典集合
*/
loopData(dictList){
//初始化的时候才赋默认值
let dictText = this.dictText
let values = this.value
for (let i = 0; i <dictList.length ; i++) {
let value = dictList[i].value;
if(values.indexOf(value)!=-1){
//字典文本不为空,得判断时候包含此文本
if(dictText && dictText.indexOf(dictText) != 0){
dictText = dictText + dictList[i].text +","
}
//字典文本是空,直接相等即可
if(!dictText){
dictText = dictList[i].text;
}
dictList[i].active = true
}
}
if(dictText && dictText.charAt(dictText.length-1) == ","){
dictText = dictText.substring(0,dictText.length-1)
}
this.dictText = dictText
this.dictList = dictList
},
/**
* 重置选中状态
*/
restActive(){
let dictList = this.dictList
for (let i = 0; i <dictList.length ; i++) {
if(dictList[i].active){
dictList[i].active = false
}
}
},
/**
* 列表点击事件
* @param val 字典对象(value,text)
* @param index 当前循环的到第几个
*/
scrollListClick(val,index) {
if(this.dictText){
let dictTextArray = this.dictText.split(",");
let dictValueArray = this.value
//是否是已删除的
let remove = false
for (let i = 0; i < dictTextArray.length; i++) {
if(dictTextArray[i]==val.text){
dictTextArray.splice(i,1)
dictValueArray.splice(i,1)
remove =true
}
}
if(!remove){
dictTextArray.push(val.text)
dictValueArray.push(val.value)
}
if(dictTextArray.length>0){
this.dictText = dictTextArray.toString()
this.value = dictValueArray
}else{
this.dictText = ""
this.value = []
}
}else{
this.dictText = val.text
let valueArray = [];
valueArray.push(val.value)
this.value =valueArray
}
this.scollShow = true;
let active = this.dictList[index].active;
this.dictList[index].active = !active;
//返回值
this.returnDictValue(val.value);
},
/**
*输入框点击事件
*/
handleClick() {
this.scrollShow = !this.scrollShow;
},
/**
*滚动条无限加载
*/
handleReachBottom() {
if (!this.noData) {
return new Promise(resolve => {
if (this.noData) {
resolve();
}
this.userpage = this.userpage + 1;
setTimeout(() => {
if(!this.dataList.dictCode || this.dataList.dictCode.indexOf("select") !=-1) {
this.getDictData(0);
}else{
//前台进行搜索
if(this.dictText){
this.searchDictByText();
}else{
this.dictList = this.copyDictList
}
}
resolve();
}, 500);
});
}
},
/**
*值发生改变请求后台
*/
handleOnChange() {
this.userpage = 1;
this.scrollShow = true
//字典为空或者包含select语句才会后台搜索,否则直接在前台搜索
if(!this.dataList.dictCode || this.dataList.dictCode.indexOf("select") !=-1) {
//后台进行搜索
this.getDictData(1);
}else{
//前台进行搜索
if(this.dictText){
this.searchDictByText();
}else{
this.dictList = this.copyDictList
}
this.dictHeight = this.dictList.length>6?200:this.dictList.length*32+82
}
},
/**
* 查询字典数据
* @param type 字典值需要拼接还是直接替换 0拼接 1 替换
*/
getDictData(type) {
let paramSearch = this.dataList.paramSearch
let dbKey = this.dataList.dbCode + "__" + this.dataList.name
let params = getRequestUrlParam();
let dataStr = {
"reportId": configId,
"text": this.searchText,
"key": dbKey,
"paramSearch": paramSearch,
"params": params,
"pageNo": this.userpage
}
$http.get({
url: api.dictCodeSearch,
data: dataStr,
success: (res) => {
if (res && res.length > 0) {
let dictList = this.dictList;
//滚动条无限加载中直接push
if (type == 0) {
for (let i = 0; i < res.length; i++) {
dictList.push(res[i])
}
} else {
//查询直接赋值给字典数组
dictList = res
}
//循环数据赋是否已点击
this.loopData(dictList);
//判断长度,是否有数据
if(res.length<7){
this.noData = true
}else{
this.noData = false
}
} else {
if (type == 1) {
this.dictList = []
}
this.noData = true
}
//为下拉框设置高度
this.dictHeight = this.dictList.length>6?200:this.dictList.length*32+82
}
})
},
/**
*前台搜索
*/
searchDictByText(){
let dictList = this.dictList
let searchText = this.searchText
let newDictList = [];
if(!this.searchText){
this.dictList = this.copyDictList;
}else{
for (let i = 0; i <dictList.length; i++) {
let value = dictList[i].value;
if(value.indexOf(searchText) >= 0 || value == searchText){
newDictList.push(dictList[i])
}
}
if(newDictList.length>0){
this.dictList = newDictList;
}
}
this.dictHeight = this.dictList.length>6?150:this.dictList.length*32+82
},
/**
*返回父组件的值
*/
returnDictValue() {
let val = {};
val.value = this.value
val.key = this.dataList.key;
this.$emit('dictmultipleok', val)
},
/**
* 图标点击事件
*/
handleIconClick(){
this.dictText = ""
this.value = []
let val = {};
val.value = []
val.key = this.dataList.key;
this.$emit('dictmultipleok', val)
this.scollShow = false
}
}
})
</script>
<style scoped>
::-webkit-scrollbar {
width: 6px;
height: 16px;
background-color: #F5F5F5;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track {
border-radius: 3px;
background-color: #f5f7f9;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 3px;
background-color: #ccc;
}
.scroll-class {
position: absolute;
background: white;
z-index: 9999;
overflow: hidden;
border: 1px solid #dddee1;
border-radius: 4px;
top: 35px;
-webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
}
.scroll-list-class {
cursor: pointer;
z-index: 9999;
list-style-type: none;
}
.scroll-list-class li span {
margin-left: 15px;
font-size: 14px;
}
.scroll-list-class :hover {
background: #f3f3f3;
}
.no-more-data {
border-top: 1px solid #f0f0f0;
}
.no-loading .ivu-spin-text {
display: none;
}
.no-loading .ivu-scroll-content-loading {
opacity: 1;
}
.ivu-scroll-loader {
margin-top: -5px;
}
.select-item-selected{
color:rgba(45,140,240,.9);
position:relative;
}
.select-item-selected :after{
display: inline-block;
font-family: Ionicons, serif;
speak: none;
font-style: normal;
font-weight: 400;
font-variant: normal;
text-transform: none;
text-rendering: optimizeLegibility;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
vertical-align: -0.125em;
text-align: center;
font-size: 24px;
content: "\F171";
color: rgba(45,140,240,.9);
position: absolute;
top: 2px;
right: 8px;
}
.select-dict-text{
display:inline;
float: left;
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
white-space:nowrap;
margin-left: 5px;
max-width:80%;
position:relative;
}
.bottom-border{
border-bottom:1px solid #f0f0f0;
}
.ivu-select-input{
display: inline;
height: 32px;
line-height: 32px;
width: 190px;
font-size: 14px;
outline: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #515a6e;
position: relative;
cursor: pointer;
padding-left: 16px;
}
.ivu-select-multiple .ivu-select-selection{
padding: 0 0 0 4px;
float: left;
}
.icon-position{
position: relative;
right: 25px;
top: 6px;
cursor: pointer;
}
</style>
@@ -5,7 +5,7 @@ value:view组件传递的值 v-model-->
<div>
<input ref="clickInput" class="ivu-input ivu-input-default" v-model="dictText"
:placeholder="'请选择'+dataList.name" @blur="clickBlur"
@click="handleClick"/>
@click="handleClick" style="cursor: pointer"/>
<div class="scoll-class" v-if="scollShow">
<Scroll :class="noData == true?'no-loading':''" :height="dictHeight" :on-reach-bottom="handleReachBottom"
:distance-to-edge="1">
@@ -75,8 +75,11 @@ value:view组件传递的值 v-model-->
this.setDictText();
}
},
dictText(val) {
this.handleOnChange()
dictText:{
immediate: true,
handler: function () {
this.handleOnChange()
}
}
},
methods: {
@@ -111,6 +114,9 @@ value:view组件传递的值 v-model-->
this.dictText = dict[0].text
this.initText = dict[0].text
}
//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:下拉单选样式出现混乱--------
}
},
//无限加载中的事件
@@ -146,7 +152,13 @@ value:view组件传递的值 v-model-->
handleOnChange() {
let val = {}
val.key = this.dataList.key
val.value = this.dictText
//update-begin---author:wangshuai ---date:20220315 for:[JMREP-2552]下拉单选重置就出不来了--------
if(!this.dictText){
val.value = ""
}else{
val.value = this.value
}
//update-end---author:wangshuai ---date:20220315 for:[JMREP-2552]下拉单选重置就出不来了--------
this.$emit('dictok', val)
this.searchLocalOrApi();
},
@@ -162,7 +174,9 @@ value:view组件传递的值 v-model-->
this.searchDictByText();
} else {
this.dictList = this.copyDictList
this.dictHeight = this.dictList.length > 6 ? 200 : this.dictList.length * 30 + 20
//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:下拉单选样式出现混乱--------
}
}
},
@@ -221,7 +235,9 @@ value:view组件传递的值 v-model-->
}
}
this.dictList = newDictList;
this.dictHeight = this.dictList.length > 6 ? 200 : this.dictList.length * 30 + 20
//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:下拉单选样式出现混乱--------
}
}
})
@@ -39,6 +39,11 @@
</i-option>
</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"/>
</i-select>
</Row>
</div>
</Submenu>
</script>
@@ -59,9 +64,11 @@
textStyle_color:'',
textStyle_fontSize:'',
textStyle_fontWeight:'',
position:''
position:'',
formatter:''
},
labelPositions:[]
labelPositions:[],
izShowNumber:false
}
},
watch: {
@@ -77,11 +84,30 @@
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;
}else{
this.izShowNumber = false;
}
//update-end---author:wangshuai ---date:20220407 for:[issues/I50IKB]饼图 如何直接在图上显示各分类对应的数值------------
}
},
onSeriesLabelChange(){
let {labelPositionArray,...otherOptions}=this.seriesOption;
this.$emit('change', otherOptions,'label')
},
/**
* 图表设置格式化
*/
onSeriesFormatterChange(){
if(this.izShowNumber){
this.seriesOption.formatter="{b}\n{c}"
}else{
this.seriesOption.formatter="{b}"
}
let {labelPositionArray,...otherOptions}=this.seriesOption;
this.$emit('change', otherOptions,'label')
}
}
})
@@ -1 +1,2 @@
<#include "components/select_scroll_radio.ftl">
<#include "components/select_scroll_radio.ftl">
<#include "components/select_scroll_multiple.ftl">
@@ -1,4 +1,4 @@
<#assign CACHE_VERSION = "v=1.0.5">
<#assign CACHE_VERSION = "v=v=1.0.7">
<#assign config_id = "${id!''}">
<#assign shareView = "${shareView}">
<!DOCTYPE html>
@@ -209,9 +209,7 @@ function getLocalRequestUrl() {
<template v-else>
<template v-if="item.dictList && item.dictList.length>0 && (item.mode==4 ||item.mode==3)">
<!-- 多选 -->
<i-select size="small" :ref="item.key" v-if="item.mode==3" :remote-method="(query)=>{dictCodeSearch(query,item)}" class="jm-select-box" filterable :transfer="true" v-model="queryInfo['onlyshow_'+item.key]" multiple :max-tag-count="1" @on-change="(arr)=>handleQueryMultiSelectChange(arr, item.key)" :placeholder="'请选择'+item.title">
<i-option v-for="(dict, dIndex) in item.dictList" :key="dIndex" :index="index" :value="dict.value">{{ dict.text }}</i-option>
</i-select>
<j-select-scroll-multiple v-if="item.mode==3" v-model="queryInfo['onlyshow_'+item.key]" :item="JSON.stringify(item)" @dictmultipleok="handleDictMultipleOk" :index="index"></j-select-scroll-multiple>
<!-- 单选 -->
<j-select-scroll-radio v-if="item.mode==4" v-model="queryInfo[item.key]" :item="JSON.stringify(item)" @dictok="handleDictOk"></j-select-scroll-radio>
@@ -301,5 +299,7 @@ function getLocalRequestUrl() {
<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>
</body>
</html>
+1 -1
View File
@@ -53,7 +53,7 @@
<jasypt.version>3.0.3</jasypt.version>
<ttl.version>2.11.4</ttl.version>
<ureport.version>2.2.9</ureport.version>
<jimu.version>1.4.4-beta</jimu.version>
<jimu.version>1.5.0-beta</jimu.version>
<aws.version>1.11.543</aws.version>
<xxl.job.version>2.3.0</xxl.job.version>
<activiti.version>5.22.0</activiti.version>