mirror of
https://github.com/dataease/dataease.git
synced 2025-03-03 01:42:52 +08:00
commit
60d1caedb1
@ -44,9 +44,9 @@ public class ShiroServiceImpl implements ShiroService {
|
||||
|
||||
//验证链接
|
||||
filterChainDefinitionMap.put("/api/link/validate**", ANON);
|
||||
filterChainDefinitionMap.put("/api/map/areaEntitys/**", ANON);
|
||||
|
||||
|
||||
|
||||
filterChainDefinitionMap.put("/**/*.json", ANON);
|
||||
filterChainDefinitionMap.put("/system/ui/**", ANON);
|
||||
filterChainDefinitionMap.put("/**/*.js", ANON);
|
||||
filterChainDefinitionMap.put("/**/*.css", ANON);
|
||||
|
@ -13,12 +13,14 @@ public class Datasource implements Serializable {
|
||||
|
||||
private String type;
|
||||
|
||||
private String createBy;
|
||||
|
||||
private Long createTime;
|
||||
|
||||
private Long updateTime;
|
||||
|
||||
private String createBy;
|
||||
|
||||
private String status;
|
||||
|
||||
private String configuration;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -384,76 +384,6 @@ public class DatasourceExample {
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByIsNull() {
|
||||
addCriterion("create_by is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByIsNotNull() {
|
||||
addCriterion("create_by is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByEqualTo(String value) {
|
||||
addCriterion("create_by =", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotEqualTo(String value) {
|
||||
addCriterion("create_by <>", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByGreaterThan(String value) {
|
||||
addCriterion("create_by >", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("create_by >=", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByLessThan(String value) {
|
||||
addCriterion("create_by <", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByLessThanOrEqualTo(String value) {
|
||||
addCriterion("create_by <=", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByLike(String value) {
|
||||
addCriterion("create_by like", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotLike(String value) {
|
||||
addCriterion("create_by not like", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByIn(List<String> values) {
|
||||
addCriterion("create_by in", values, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotIn(List<String> values) {
|
||||
addCriterion("create_by not in", values, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByBetween(String value1, String value2) {
|
||||
addCriterion("create_by between", value1, value2, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotBetween(String value1, String value2) {
|
||||
addCriterion("create_by not between", value1, value2, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateTimeIsNull() {
|
||||
addCriterion("create_time is null");
|
||||
return (Criteria) this;
|
||||
@ -573,6 +503,146 @@ public class DatasourceExample {
|
||||
addCriterion("update_time not between", value1, value2, "updateTime");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByIsNull() {
|
||||
addCriterion("create_by is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByIsNotNull() {
|
||||
addCriterion("create_by is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByEqualTo(String value) {
|
||||
addCriterion("create_by =", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotEqualTo(String value) {
|
||||
addCriterion("create_by <>", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByGreaterThan(String value) {
|
||||
addCriterion("create_by >", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("create_by >=", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByLessThan(String value) {
|
||||
addCriterion("create_by <", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByLessThanOrEqualTo(String value) {
|
||||
addCriterion("create_by <=", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByLike(String value) {
|
||||
addCriterion("create_by like", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotLike(String value) {
|
||||
addCriterion("create_by not like", value, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByIn(List<String> values) {
|
||||
addCriterion("create_by in", values, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotIn(List<String> values) {
|
||||
addCriterion("create_by not in", values, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByBetween(String value1, String value2) {
|
||||
addCriterion("create_by between", value1, value2, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andCreateByNotBetween(String value1, String value2) {
|
||||
addCriterion("create_by not between", value1, value2, "createBy");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusIsNull() {
|
||||
addCriterion("`status` is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusIsNotNull() {
|
||||
addCriterion("`status` is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusEqualTo(String value) {
|
||||
addCriterion("`status` =", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusNotEqualTo(String value) {
|
||||
addCriterion("`status` <>", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusGreaterThan(String value) {
|
||||
addCriterion("`status` >", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("`status` >=", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusLessThan(String value) {
|
||||
addCriterion("`status` <", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusLessThanOrEqualTo(String value) {
|
||||
addCriterion("`status` <=", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusLike(String value) {
|
||||
addCriterion("`status` like", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusNotLike(String value) {
|
||||
addCriterion("`status` not like", value, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusIn(List<String> values) {
|
||||
addCriterion("`status` in", values, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusNotIn(List<String> values) {
|
||||
addCriterion("`status` not in", values, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusBetween(String value1, String value2) {
|
||||
addCriterion("`status` between", value1, value2, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andStatusNotBetween(String value1, String value2) {
|
||||
addCriterion("`status` not between", value1, value2, "status");
|
||||
return (Criteria) this;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Criteria extends GeneratedCriteria {
|
||||
|
@ -6,9 +6,10 @@
|
||||
<result column="name" jdbcType="VARCHAR" property="name" />
|
||||
<result column="desc" jdbcType="VARCHAR" property="desc" />
|
||||
<result column="type" jdbcType="VARCHAR" property="type" />
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
||||
<result column="create_time" jdbcType="BIGINT" property="createTime" />
|
||||
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
||||
<result column="status" jdbcType="VARCHAR" property="status" />
|
||||
</resultMap>
|
||||
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.dataease.base.domain.Datasource">
|
||||
<result column="configuration" jdbcType="LONGVARCHAR" property="configuration" />
|
||||
@ -72,7 +73,7 @@
|
||||
</where>
|
||||
</sql>
|
||||
<sql id="Base_Column_List">
|
||||
id, `name`, `desc`, `type`, create_by, create_time, update_time
|
||||
id, `name`, `desc`, `type`, create_time, update_time, create_by, `status`
|
||||
</sql>
|
||||
<sql id="Blob_Column_List">
|
||||
configuration
|
||||
@ -127,11 +128,13 @@
|
||||
</delete>
|
||||
<insert id="insert" parameterType="io.dataease.base.domain.Datasource">
|
||||
insert into datasource (id, `name`, `desc`,
|
||||
`type`, create_by, create_time,
|
||||
update_time, configuration)
|
||||
`type`, create_time, update_time,
|
||||
create_by, `status`, configuration
|
||||
)
|
||||
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR},
|
||||
#{type,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT},
|
||||
#{updateTime,jdbcType=BIGINT}, #{configuration,jdbcType=LONGVARCHAR})
|
||||
#{type,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
|
||||
#{createBy,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{configuration,jdbcType=LONGVARCHAR}
|
||||
)
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="io.dataease.base.domain.Datasource">
|
||||
insert into datasource
|
||||
@ -148,15 +151,18 @@
|
||||
<if test="type != null">
|
||||
`type`,
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by,
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by,
|
||||
</if>
|
||||
<if test="status != null">
|
||||
`status`,
|
||||
</if>
|
||||
<if test="configuration != null">
|
||||
configuration,
|
||||
</if>
|
||||
@ -174,15 +180,18 @@
|
||||
<if test="type != null">
|
||||
#{type,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
#{createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
#{createTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
#{createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
#{status,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="configuration != null">
|
||||
#{configuration,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
@ -209,15 +218,18 @@
|
||||
<if test="record.type != null">
|
||||
`type` = #{record.type,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.createBy != null">
|
||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.createTime != null">
|
||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="record.updateTime != null">
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="record.createBy != null">
|
||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.status != null">
|
||||
`status` = #{record.status,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.configuration != null">
|
||||
configuration = #{record.configuration,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
@ -232,9 +244,10 @@
|
||||
`name` = #{record.name,jdbcType=VARCHAR},
|
||||
`desc` = #{record.desc,jdbcType=VARCHAR},
|
||||
`type` = #{record.type,jdbcType=VARCHAR},
|
||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||
`status` = #{record.status,jdbcType=VARCHAR},
|
||||
configuration = #{record.configuration,jdbcType=LONGVARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
@ -246,9 +259,10 @@
|
||||
`name` = #{record.name,jdbcType=VARCHAR},
|
||||
`desc` = #{record.desc,jdbcType=VARCHAR},
|
||||
`type` = #{record.type,jdbcType=VARCHAR},
|
||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT}
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||
`status` = #{record.status,jdbcType=VARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
@ -265,15 +279,18 @@
|
||||
<if test="type != null">
|
||||
`type` = #{type,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time = #{createTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
`status` = #{status,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="configuration != null">
|
||||
configuration = #{configuration,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
@ -285,9 +302,10 @@
|
||||
set `name` = #{name,jdbcType=VARCHAR},
|
||||
`desc` = #{desc,jdbcType=VARCHAR},
|
||||
`type` = #{type,jdbcType=VARCHAR},
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
create_time = #{createTime,jdbcType=BIGINT},
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
`status` = #{status,jdbcType=VARCHAR},
|
||||
configuration = #{configuration,jdbcType=LONGVARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
@ -296,9 +314,10 @@
|
||||
set `name` = #{name,jdbcType=VARCHAR},
|
||||
`desc` = #{desc,jdbcType=VARCHAR},
|
||||
`type` = #{type,jdbcType=VARCHAR},
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
create_time = #{createTime,jdbcType=BIGINT},
|
||||
update_time = #{updateTime,jdbcType=BIGINT}
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
`status` = #{status,jdbcType=VARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
</mapper>
|
@ -24,7 +24,7 @@
|
||||
</select>
|
||||
|
||||
<select id="queryUnion" resultMap="BaseResultMapDTO">
|
||||
select id , name , `desc` ,`type` , configuration ,create_time ,update_time,
|
||||
select id , name , `desc` ,`type` , configuration ,create_time ,update_time, status,
|
||||
get_auths(id,'link',#{userId}) as `privileges`
|
||||
from (select GET_V_AUTH_MODEL_ID_P_USE (#{userId}, 'link') cids) t,datasource
|
||||
<where>
|
||||
|
@ -34,9 +34,16 @@
|
||||
|
||||
|
||||
<select id="query" parameterType="io.dataease.base.mapper.ext.query.GridExample" resultMap="BaseResultMap">
|
||||
select u.*,u.user_id as id, d.pid, d.name as dept_name
|
||||
from sys_user u
|
||||
left join sys_dept d on d.dept_id = u.dept_id
|
||||
SELECT DISTINCT
|
||||
u.*,
|
||||
u.user_id AS id,
|
||||
d.pid,
|
||||
d.NAME AS dept_name
|
||||
FROM
|
||||
sys_user u
|
||||
LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
|
||||
LEFT JOIN sys_users_roles sur ON sur.user_id = u.user_id
|
||||
LEFT JOIN sys_role r ON r.role_id = sur.role_id
|
||||
|
||||
<if test="_parameter != null">
|
||||
<include refid="io.dataease.base.mapper.ext.query.GridSql.gridCondition" />
|
||||
|
@ -46,21 +46,24 @@ public class ExcelReaderUtil {
|
||||
ExcelXlsReader excelXls=new ExcelXlsReader();
|
||||
excelXls.process(inputStream);
|
||||
System.out.println(excelXls.totalSheets.size());
|
||||
System.out.println(excelXls.totalSheets.get(0).getSheetName());
|
||||
System.out.println(excelXls.totalSheets.get(0).getExcelLable());
|
||||
for (TableFiled field : excelXls.totalSheets.get(0).getFields()) {
|
||||
System.out.println(new Gson().toJson(field));
|
||||
}
|
||||
System.out.println(excelXls.totalSheets.get(0).getData().get(0));
|
||||
|
||||
System.out.println(excelXls.totalSheets.get(0).getData().get(1));
|
||||
System.out.println(excelXls.totalSheets.get(0).getData().get(2));
|
||||
} else if (fileName.endsWith(EXCEL07_EXTENSION)) {//处理excel2007文件
|
||||
ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader();
|
||||
excelXlsxReader.process(inputStream);
|
||||
System.out.println(excelXlsxReader.totalSheets.size());
|
||||
System.out.println(excelXlsxReader.totalSheets.get(0).getSheetName());
|
||||
for (TableFiled field : excelXlsxReader.totalSheets.get(0).getFields()) {
|
||||
System.out.println(excelXlsxReader.totalSheets.get(1).getExcelLable());
|
||||
for (TableFiled field : excelXlsxReader.totalSheets.get(1).getFields()) {
|
||||
System.out.println(new Gson().toJson(field));
|
||||
}
|
||||
System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(0));
|
||||
System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(1));
|
||||
System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(2));
|
||||
|
||||
} else {
|
||||
throw new Exception("文件格式错误,fileName的扩展名只能是xls或xlsx。");
|
||||
@ -68,7 +71,7 @@ public class ExcelReaderUtil {
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
String file ="下单渠道.xlsx";
|
||||
String file ="赤收管理 2.xlsx";
|
||||
ExcelReaderUtil.readExcel(file, new FileInputStream("/Users/taojinlong/Desktop/" + file));
|
||||
}
|
||||
}
|
||||
|
@ -300,9 +300,9 @@ public class ExcelXlsReader implements HSSFListener {
|
||||
}
|
||||
lastColumnNumber = -1;
|
||||
|
||||
if(!totalSheets.stream().map(ExcelSheetData::getSheetName).collect(Collectors.toList()).contains(sheetName)){
|
||||
if(!totalSheets.stream().map(ExcelSheetData::getExcelLable).collect(Collectors.toList()).contains(sheetName)){
|
||||
ExcelSheetData excelSheetData = new ExcelSheetData();
|
||||
excelSheetData.setSheetName(sheetName);
|
||||
excelSheetData.setExcelLable(sheetName);
|
||||
excelSheetData.setData(new ArrayList<>());
|
||||
excelSheetData.setFields(new ArrayList<>());
|
||||
totalSheets.add(excelSheetData);
|
||||
@ -322,10 +322,10 @@ public class ExcelXlsReader implements HSSFListener {
|
||||
|
||||
|
||||
if (flag && curRow != 0) { //该行不为空行且该行不是第一行,发送(第一行为列名,不需要)
|
||||
if(!totalSheets.stream().map(ExcelSheetData::getSheetName).collect(Collectors.toList()).contains(sheetName)){
|
||||
if(!totalSheets.stream().map(ExcelSheetData::getExcelLable).collect(Collectors.toList()).contains(sheetName)){
|
||||
ExcelSheetData excelSheetData = new ExcelSheetData();
|
||||
excelSheetData.setData(new ArrayList<>(data));
|
||||
excelSheetData.setSheetName(sheetName);
|
||||
excelSheetData.setExcelLable(sheetName);
|
||||
excelSheetData.setFields(new ArrayList<>(fields));
|
||||
List<String> tmp = new ArrayList<>(cellList);
|
||||
excelSheetData.getData().add(tmp);
|
||||
@ -333,7 +333,7 @@ public class ExcelXlsReader implements HSSFListener {
|
||||
totalSheets.add(excelSheetData);
|
||||
}else {
|
||||
List<String> tmp = new ArrayList<>(cellList);
|
||||
totalSheets.stream().filter(s->s.getSheetName().equalsIgnoreCase(sheetName)).collect(Collectors.toList()).get(0).getData().add(tmp);
|
||||
totalSheets.stream().filter(s->s.getExcelLable().equalsIgnoreCase(sheetName)).collect(Collectors.toList()).get(0).getData().add(tmp);
|
||||
totalRows++;
|
||||
}
|
||||
}
|
||||
|
@ -19,8 +19,6 @@ import org.xml.sax.helpers.XMLReaderFactory;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author y
|
||||
@ -148,6 +146,7 @@ public class ExcelXlsxReader extends DefaultHandler {
|
||||
parser.setContentHandler(this);
|
||||
XSSFReader.SheetIterator sheets = (XSSFReader.SheetIterator) xssfReader.getSheetsData();
|
||||
while (sheets.hasNext()) { //遍历sheet
|
||||
|
||||
curRow = 1; //标记初始行为第一行
|
||||
fields.clear();
|
||||
data.clear();
|
||||
@ -157,7 +156,7 @@ public class ExcelXlsxReader extends DefaultHandler {
|
||||
|
||||
ExcelSheetData excelSheetData = new ExcelSheetData();
|
||||
excelSheetData.setData(new ArrayList<>(data));
|
||||
excelSheetData.setSheetName(sheets.getSheetName());
|
||||
excelSheetData.setExcelLable(sheets.getSheetName());
|
||||
excelSheetData.setFields(new ArrayList<>(fields));
|
||||
totalSheets.add(excelSheetData);
|
||||
|
||||
@ -248,17 +247,14 @@ public class ExcelXlsxReader extends DefaultHandler {
|
||||
} else if ("v".equals(name)) {
|
||||
//v => 单元格的值,如果单元格是字符串,则v标签的值为该字符串在SST中的索引
|
||||
String value = this.getDataValue(lastIndex.trim(), "");//根据索引值获取对应的单元格值
|
||||
|
||||
if (preRef == null) {
|
||||
String regEx="[^0-9]";
|
||||
Pattern p = Pattern.compile(regEx);
|
||||
Matcher m = p.matcher(ref);
|
||||
if(curCol < Integer.valueOf(m.replaceAll("").trim()) -1 ){
|
||||
preRef = "A" + curRow;
|
||||
if(!preRef.equalsIgnoreCase(ref)){
|
||||
cellList.add(curCol, "");
|
||||
curCol++;
|
||||
}
|
||||
preRef = ref;
|
||||
}
|
||||
|
||||
//补全单元格之间的空单元格
|
||||
if (!"A".equals(preRef.substring(0, 1)) && curRow==1 && preRef.equalsIgnoreCase(ref)) {
|
||||
throw new RuntimeException(Translator.get("i18n_excel_empty_column"));
|
||||
@ -288,14 +284,6 @@ public class ExcelXlsxReader extends DefaultHandler {
|
||||
if (curRow == 1) {
|
||||
maxRef = ref;
|
||||
}
|
||||
//补全一行尾部可能缺失的单元格
|
||||
if (maxRef != null) {
|
||||
int len = countNullCell(maxRef, ref);
|
||||
for (int i = 0; i <= len; i++) {
|
||||
cellList.add(curCol, "");
|
||||
curCol++;
|
||||
}
|
||||
}
|
||||
if(curRow>1){
|
||||
List<String> tmp = new ArrayList<>(cellList);
|
||||
this.getData().add(tmp);
|
||||
|
@ -7,6 +7,7 @@ import io.dataease.base.domain.DatasetTableIncrementalConfig;
|
||||
import io.dataease.controller.request.dataset.DataSetTableRequest;
|
||||
import io.dataease.datasource.dto.TableFiled;
|
||||
import io.dataease.dto.dataset.DataSetTableDTO;
|
||||
import io.dataease.dto.dataset.ExcelFileData;
|
||||
import io.dataease.service.dataset.DataSetTableService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@ -37,8 +38,12 @@ public class DataSetTableController {
|
||||
|
||||
@ApiOperation("更新")
|
||||
@PostMapping("update")
|
||||
public DatasetTable save(@RequestBody DataSetTableRequest datasetTable) throws Exception {
|
||||
return dataSetTableService.save(datasetTable);
|
||||
public void save(@RequestBody DataSetTableRequest datasetTable) throws Exception {
|
||||
if(datasetTable.getType().equalsIgnoreCase("excel")){
|
||||
dataSetTableService.saveExcel(datasetTable);
|
||||
}else {
|
||||
dataSetTableService.save(datasetTable);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation("删除")
|
||||
@ -121,8 +126,8 @@ public class DataSetTableController {
|
||||
|
||||
@ApiOperation("excel上传")
|
||||
@PostMapping("excel/upload")
|
||||
public Map<String, Object> excelUpload(@RequestParam("file") MultipartFile file, @RequestParam("tableId") String tableId) throws Exception {
|
||||
return dataSetTableService.excelSaveAndParse(file, tableId);
|
||||
public ExcelFileData excelUpload(@RequestParam("file") MultipartFile file, @RequestParam("tableId") String tableId, @RequestParam("editType") Integer editType ) throws Exception {
|
||||
return dataSetTableService.excelSaveAndParse(file, tableId, editType);
|
||||
}
|
||||
|
||||
@ApiOperation("检测doris")
|
||||
|
@ -2,6 +2,7 @@ package io.dataease.controller.request.dataset;
|
||||
|
||||
import io.dataease.base.domain.DatasetTable;
|
||||
import io.dataease.datasource.dto.TableFiled;
|
||||
import io.dataease.dto.dataset.ExcelSheetData;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -23,4 +24,6 @@ public class DataSetTableRequest extends DatasetTable {
|
||||
private Boolean isRename;
|
||||
private List<String> typeFilter;
|
||||
private List<TableFiled> fields;
|
||||
private List<ExcelSheetData> sheets;
|
||||
private boolean mergeSheet = false;
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ public class DatasourceService {
|
||||
datasource.setCreateBy(String.valueOf(AuthUtils.getUser().getUsername()));
|
||||
datasourceMapper.insertSelective(datasource);
|
||||
handleConnectionPool(datasource, "add");
|
||||
checkAndUpdateDatasourceStatus(datasource);
|
||||
return datasource;
|
||||
}
|
||||
|
||||
@ -111,6 +112,7 @@ public class DatasourceService {
|
||||
datasource.setUpdateTime(System.currentTimeMillis());
|
||||
datasourceMapper.updateByPrimaryKeySelective(datasource);
|
||||
handleConnectionPool(datasource, "edit");
|
||||
checkAndUpdateDatasourceStatus(datasource);
|
||||
}
|
||||
|
||||
public void validate(Datasource datasource) throws Exception {
|
||||
@ -200,4 +202,25 @@ public class DatasourceService {
|
||||
DEException.throwException(Translator.get("i18n_ds_name_exists"));
|
||||
}
|
||||
}
|
||||
|
||||
public void updateDatasourceStatus(){
|
||||
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
|
||||
datasources.forEach(datasource -> {
|
||||
checkAndUpdateDatasourceStatus(datasource);
|
||||
});
|
||||
}
|
||||
|
||||
private void checkAndUpdateDatasourceStatus(Datasource datasource){
|
||||
try {
|
||||
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(datasource);
|
||||
datasourceProvider.checkStatus(datasourceRequest);
|
||||
datasource.setStatus("Success");
|
||||
datasourceMapper.updateByPrimaryKeySelective(datasource);
|
||||
} catch (Exception e) {
|
||||
datasource.setStatus("Error");
|
||||
datasourceMapper.updateByPrimaryKeySelective(datasource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import java.util.List;
|
||||
public class DataTableInfoDTO {
|
||||
private String table;
|
||||
private String sql;
|
||||
private List<String> sheets;
|
||||
private List<ExcelSheetData> excelSheetDataList;
|
||||
private String data;// file path
|
||||
private List<DataTableInfoCustomUnion> list;
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
package io.dataease.dto.dataset;
|
||||
|
||||
import io.dataease.datasource.dto.TableFiled;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class ExcelFileData {
|
||||
private String excelId;
|
||||
private String excelLable;
|
||||
private List<ExcelSheetData> sheets;
|
||||
private String path;
|
||||
private boolean isSheet = false;
|
||||
}
|
@ -4,10 +4,18 @@ import io.dataease.datasource.dto.TableFiled;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class ExcelSheetData {
|
||||
private String sheetName;
|
||||
private String excelLable;
|
||||
private List<List<String>> data;
|
||||
private List<TableFiled> fields;
|
||||
private boolean isSheet = true;
|
||||
private List<Map<String, Object>> jsonArray;
|
||||
private String datasetName;
|
||||
private String sheetExcelId;
|
||||
private String sheetId;
|
||||
private String path;
|
||||
private String fieldsMd5;
|
||||
}
|
||||
|
@ -34,7 +34,8 @@ public class MapUtils {
|
||||
|
||||
|
||||
public static String formatCode(String code) {
|
||||
return code.substring(3);
|
||||
// return code.substring(3);
|
||||
return code;
|
||||
}
|
||||
|
||||
/*public static List<Map<String, Object>> readCodeList( ) {
|
||||
@ -68,7 +69,7 @@ public class MapUtils {
|
||||
|
||||
AreaEntity china = root();
|
||||
|
||||
maps.parallelStream().forEach(map -> {
|
||||
maps.stream().forEach(map -> {
|
||||
// maps.stream().forEach(map -> {
|
||||
String province_code = map.get(Constants.PROVINCE_CODE).toString();
|
||||
String city_code = map.get(Constants.CITY_CODE).toString();
|
||||
|
@ -696,11 +696,15 @@ public class ChartViewService {
|
||||
String stackColumn = row[xAxis.size()];
|
||||
if (StringUtils.equals(ss.getName(), stackColumn)) {
|
||||
StringBuilder a = new StringBuilder();
|
||||
for (int j = 0; j < xAxis.size(); j++) {
|
||||
if (j == xAxis.size() - 1) {
|
||||
a.append(row[j]);
|
||||
} else {
|
||||
a.append(row[j]).append("\n");
|
||||
if (isDrill) {
|
||||
a.append(row[xAxis.size() - 1]);
|
||||
} else {
|
||||
for (int j = 0; j < xAxis.size(); j++) {
|
||||
if (j == xAxis.size() - 1) {
|
||||
a.append(row[j]);
|
||||
} else {
|
||||
a.append(row[j]).append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.equals(a.toString(), x.get(i))) {
|
||||
|
@ -100,13 +100,7 @@ public class DataSetTableService {
|
||||
}
|
||||
|
||||
private void extractData(DataSetTableRequest datasetTable) throws Exception {
|
||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "初始导入");
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isNotEmpty(datasetTable.getSyncType()) && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) {
|
||||
if (datasetTable.getMode() == 1 && StringUtils.isNotEmpty(datasetTable.getSyncType()) && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) {
|
||||
DataSetTaskRequest dataSetTaskRequest = new DataSetTaskRequest();
|
||||
DatasetTableTask datasetTableTask = new DatasetTableTask();
|
||||
datasetTableTask.setTableId(datasetTable.getId());
|
||||
@ -121,6 +115,109 @@ public class DataSetTableService {
|
||||
}
|
||||
}
|
||||
|
||||
public void saveExcel(DataSetTableRequest datasetTable)throws Exception {
|
||||
if (StringUtils.isEmpty(datasetTable.getId())) {
|
||||
if(datasetTable.isMergeSheet()){
|
||||
Map<String, List<ExcelSheetData>> map = datasetTable.getSheets().stream().collect(Collectors.groupingBy(ExcelSheetData::getFieldsMd5));
|
||||
for (String s : map.keySet()) {
|
||||
DataSetTableRequest sheetTable = new DataSetTableRequest();
|
||||
BeanUtils.copyBean(sheetTable, datasetTable);
|
||||
sheetTable.setId(UUID.randomUUID().toString());
|
||||
sheetTable.setCreateBy(AuthUtils.getUser().getUsername());
|
||||
sheetTable.setCreateTime(System.currentTimeMillis());
|
||||
List<ExcelSheetData> excelSheetDataList = map.get(s);
|
||||
sheetTable.setName(excelSheetDataList.get(0).getDatasetName());
|
||||
checkName(sheetTable);
|
||||
excelSheetDataList.forEach(excelSheetData -> {
|
||||
String[] fieldArray = excelSheetData.getFields().stream().map(TableFiled::getFieldName).toArray(String[]::new);
|
||||
if (checkIsRepeat(fieldArray)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat"));
|
||||
}
|
||||
excelSheetData.setData(null);
|
||||
excelSheetData.setJsonArray(null);
|
||||
});
|
||||
DataTableInfoDTO info = new DataTableInfoDTO();
|
||||
info.setExcelSheetDataList(excelSheetDataList);
|
||||
sheetTable.setInfo(new Gson().toJson(info));
|
||||
int insert = datasetTableMapper.insert(sheetTable);
|
||||
if (insert == 1) {
|
||||
saveExcelTableField(sheetTable.getId(), excelSheetDataList.get(0).getFields(), true);
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null);
|
||||
});
|
||||
}
|
||||
}
|
||||
}else {
|
||||
for (ExcelSheetData sheet : datasetTable.getSheets()) {
|
||||
String[] fieldArray = sheet.getFields().stream().map(TableFiled::getFieldName).toArray(String[]::new);
|
||||
if (checkIsRepeat(fieldArray)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat"));
|
||||
}
|
||||
DataSetTableRequest sheetTable = new DataSetTableRequest();
|
||||
BeanUtils.copyBean(sheetTable, datasetTable);
|
||||
sheetTable.setId(UUID.randomUUID().toString());
|
||||
sheetTable.setCreateBy(AuthUtils.getUser().getUsername());
|
||||
sheetTable.setCreateTime(System.currentTimeMillis());
|
||||
sheetTable.setName(sheet.getDatasetName());
|
||||
checkName(sheetTable);
|
||||
sheet.setData(null);
|
||||
sheet.setJsonArray(null);
|
||||
List<ExcelSheetData> excelSheetDataList = new ArrayList<>();
|
||||
excelSheetDataList.add(sheet);
|
||||
DataTableInfoDTO info = new DataTableInfoDTO();
|
||||
info.setExcelSheetDataList(excelSheetDataList);
|
||||
sheetTable.setInfo(new Gson().toJson(info));
|
||||
int insert = datasetTableMapper.insert(sheetTable);
|
||||
if (insert == 1) {
|
||||
saveExcelTableField(sheetTable.getId(), sheet.getFields(), true);
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
List<ExcelSheetData> excelSheetDataList = new ArrayList<>();
|
||||
List<String> oldFields = datasetTable.getSheets().get(0).getFields().stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
||||
for (ExcelSheetData sheet : datasetTable.getSheets()) {
|
||||
//替换时,
|
||||
if(datasetTable.getEditType() == 0){
|
||||
List<String> newFields = sheet.getFields().stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
||||
if (!oldFields.equals(newFields)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_colume_change"));
|
||||
}
|
||||
oldFields = newFields;
|
||||
}
|
||||
|
||||
String[] fieldArray = sheet.getFields().stream().map(TableFiled::getFieldName).toArray(String[]::new);
|
||||
if (checkIsRepeat(fieldArray)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat"));
|
||||
}
|
||||
sheet.setData(null);
|
||||
sheet.setJsonArray(null);
|
||||
excelSheetDataList.add(sheet);
|
||||
}
|
||||
DataTableInfoDTO info = new DataTableInfoDTO();
|
||||
info.setExcelSheetDataList(excelSheetDataList);
|
||||
datasetTable.setInfo(new Gson().toJson(info));
|
||||
int update = datasetTableMapper.updateByPrimaryKeySelective(datasetTable);
|
||||
// 替換時,先不刪除旧字段;同步成功后再删除
|
||||
|
||||
if (update == 1) {
|
||||
if (datasetTable.getEditType() == 0) {
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false));
|
||||
});
|
||||
} else if (datasetTable.getEditType() == 1) {
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DatasetTable save(DataSetTableRequest datasetTable) throws Exception {
|
||||
checkName(datasetTable);
|
||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
|
||||
@ -143,22 +240,11 @@ public class DataSetTableService {
|
||||
if (datasetTable.getIsRename() == null || !datasetTable.getIsRename()) {
|
||||
// 更新数据和字段
|
||||
if (update == 1) {
|
||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql") || StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql") || StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom") ) {
|
||||
// 删除所有字段,重新抽象
|
||||
dataSetTableFieldsService.deleteByTableId(datasetTable.getId());
|
||||
saveTableField(datasetTable);
|
||||
}
|
||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
||||
if (datasetTable.getEditType() == 0) {
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换");
|
||||
});
|
||||
} else if (datasetTable.getEditType() == 1) {
|
||||
commonThreadPool.addTask(() -> {
|
||||
extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -810,6 +896,34 @@ public class DataSetTableService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<DatasetTableField> saveExcelTableField(String datasetTableId, List<TableFiled> fields, boolean insert){
|
||||
List<DatasetTableField> datasetTableFields = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(fields)) {
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
TableFiled filed = fields.get(i);
|
||||
DatasetTableField datasetTableField = DatasetTableField.builder().build();
|
||||
datasetTableField.setTableId(datasetTableId);
|
||||
datasetTableField.setOriginName(filed.getFieldName());
|
||||
datasetTableField.setName(filed.getRemarks());
|
||||
datasetTableField.setDataeaseName(DorisTableUtils.columnName(filed.getFieldName()));
|
||||
datasetTableField.setType(filed.getFieldType());
|
||||
datasetTableField.setDeType(transFieldType(filed.getFieldType()));
|
||||
datasetTableField.setDeExtractType(transFieldType(filed.getFieldType()));
|
||||
datasetTableField.setSize(filed.getFieldSize());
|
||||
datasetTableField.setChecked(true);
|
||||
datasetTableField.setColumnIndex(i);
|
||||
datasetTableField.setLastSyncTime(System.currentTimeMillis());
|
||||
datasetTableField.setExtField(0);
|
||||
datasetTableField.setGroupType(datasetTableField.getDeType() < 2 ? "d" : "q");
|
||||
if(insert){
|
||||
dataSetTableFieldsService.save(datasetTableField);
|
||||
}
|
||||
datasetTableFields.add(datasetTableField);
|
||||
}
|
||||
}
|
||||
return datasetTableFields;
|
||||
}
|
||||
|
||||
public void saveTableField(DatasetTable datasetTable) throws Exception {
|
||||
Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId());
|
||||
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
|
||||
@ -828,11 +942,6 @@ public class DataSetTableService {
|
||||
datasourceRequest.setQuery(sqlAsTable);
|
||||
fields = datasourceProvider.fetchResultField(datasourceRequest);
|
||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
||||
/*DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||
String path = dataTableInfoDTO.getData();
|
||||
File file = new File(path);
|
||||
Map<String, Object> map = parseExcel(path.substring(path.lastIndexOf("/") + 1), new FileInputStream(file), false);
|
||||
fields = (List<TableFiled>) map.get("fields");*/
|
||||
fields = dataSetTableRequest.getFields();
|
||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
||||
if (datasetTable.getMode() == 1) {
|
||||
@ -1038,9 +1147,6 @@ public class DataSetTableService {
|
||||
}
|
||||
|
||||
private void checkName(DatasetTable datasetTable) {
|
||||
// if (StringUtils.isEmpty(datasetTable.getId()) && StringUtils.equalsIgnoreCase("db", datasetTable.getType())) {
|
||||
// return;
|
||||
// }
|
||||
DatasetTableExample datasetTableExample = new DatasetTableExample();
|
||||
DatasetTableExample.Criteria criteria = datasetTableExample.createCriteria();
|
||||
if (StringUtils.isNotEmpty(datasetTable.getId())) {
|
||||
@ -1069,11 +1175,13 @@ public class DataSetTableService {
|
||||
return map;
|
||||
}
|
||||
|
||||
public Map<String, Object> excelSaveAndParse(MultipartFile file, String tableId) throws Exception {
|
||||
public ExcelFileData excelSaveAndParse(MultipartFile file, String tableId, Integer editType) throws Exception {
|
||||
String filename = file.getOriginalFilename();
|
||||
// parse file
|
||||
Map<String, Object> fileMap = parseExcel2(filename, file.getInputStream(), true);
|
||||
if (StringUtils.isNotEmpty(tableId)) {
|
||||
List<ExcelSheetData> excelSheetDataList = parseExcel2(filename, file.getInputStream(), true);
|
||||
List<ExcelSheetData> retrunSheetDataList = new ArrayList<>();
|
||||
|
||||
if (StringUtils.isNotEmpty(tableId) && editType == 1 ) {
|
||||
List<DatasetTableField> datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(tableId);
|
||||
datasetTableFields.sort((o1, o2) -> {
|
||||
if (o1.getColumnIndex() == null) {
|
||||
@ -1084,64 +1192,80 @@ public class DataSetTableService {
|
||||
}
|
||||
return o1.getColumnIndex().compareTo(o2.getColumnIndex());
|
||||
});
|
||||
List<TableFiled> fields = (List<TableFiled>) fileMap.get("fields");
|
||||
List<String> newFields = fields.stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
||||
List<String> oldFields = datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList());
|
||||
if (!oldFields.equals(newFields)) {
|
||||
for (ExcelSheetData excelSheetData : excelSheetDataList) {
|
||||
List<TableFiled> fields = excelSheetData.getFields();
|
||||
List<String> newFields = fields.stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
||||
if (oldFields.equals(newFields)) {
|
||||
retrunSheetDataList.add(excelSheetData);
|
||||
}
|
||||
}
|
||||
|
||||
if (retrunSheetDataList.size() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_colume_change"));
|
||||
}
|
||||
}else {
|
||||
retrunSheetDataList = excelSheetDataList;
|
||||
}
|
||||
|
||||
// save file
|
||||
String filePath = saveFile(file);
|
||||
Map<String, Object> map = new HashMap<>(fileMap);
|
||||
map.put("path", filePath);
|
||||
return map;
|
||||
String excelId = UUID.randomUUID().toString();
|
||||
String filePath = saveFile(file, excelId);
|
||||
ExcelFileData excelFileData = new ExcelFileData();
|
||||
excelFileData.setExcelLable(filename);
|
||||
excelFileData.setExcelId(excelId);
|
||||
excelFileData.setPath(filePath);
|
||||
|
||||
filename = filename.substring(0, filename.lastIndexOf('.'));
|
||||
if(retrunSheetDataList.size() == 1){
|
||||
retrunSheetDataList.get(0).setDatasetName(filename);
|
||||
retrunSheetDataList.get(0).setSheetExcelId(excelId);
|
||||
retrunSheetDataList.get(0).setSheetId(UUID.randomUUID().toString());
|
||||
retrunSheetDataList.get(0).setPath(filePath);
|
||||
}else {
|
||||
for (ExcelSheetData excelSheetData : retrunSheetDataList) {
|
||||
excelSheetData.setDatasetName(filename + "-" + excelSheetData.getExcelLable());
|
||||
excelSheetData.setSheetExcelId(excelId);
|
||||
excelSheetData.setSheetId(UUID.randomUUID().toString());
|
||||
excelSheetData.setPath(filePath);
|
||||
}
|
||||
}
|
||||
excelFileData.setSheets(retrunSheetDataList);
|
||||
return excelFileData;
|
||||
}
|
||||
|
||||
private Map<String, Object> parseExcel2(String filename, InputStream inputStream, boolean isPreview) throws Exception {
|
||||
private List<ExcelSheetData> parseExcel2(String filename, InputStream inputStream, boolean isPreview) throws Exception {
|
||||
List<ExcelSheetData> excelSheetDataList = new ArrayList<>();
|
||||
String suffix = filename.substring(filename.lastIndexOf(".") + 1);
|
||||
List<TableFiled> fields = new ArrayList<>();
|
||||
List<List<String>> data = new ArrayList<>();
|
||||
List<Map<String, Object>> jsonArray = new ArrayList<>();
|
||||
List<String> sheets = new ArrayList<>();
|
||||
if (StringUtils.equalsIgnoreCase(suffix, "xls")) {
|
||||
ExcelXlsReader excelXlsReader = new ExcelXlsReader();
|
||||
excelXlsReader.process(inputStream);
|
||||
fields = excelXlsReader.totalSheets.get(0).getFields();
|
||||
data = excelXlsReader.totalSheets.get(0).getData();
|
||||
sheets = excelXlsReader.totalSheets.stream().map(ExcelSheetData::getSheetName).collect(Collectors.toList());
|
||||
excelSheetDataList = excelXlsReader.totalSheets;
|
||||
}
|
||||
if (StringUtils.equalsIgnoreCase(suffix, "xlsx")) {
|
||||
ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader();
|
||||
excelXlsxReader.process(inputStream);
|
||||
fields = excelXlsxReader.totalSheets.get(0).getFields();
|
||||
data = excelXlsxReader.totalSheets.get(0).getData();
|
||||
sheets = excelXlsxReader.totalSheets.stream().map(ExcelSheetData::getSheetName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
String[] fieldArray = fields.stream().map(TableFiled::getFieldName).toArray(String[]::new);
|
||||
|
||||
// 校验excel字段是否重名
|
||||
if (checkIsRepeat(fieldArray)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat"));
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(data)) {
|
||||
jsonArray = data.stream().map(ele -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
for (int i = 0; i < ele.size(); i++) {
|
||||
map.put(fieldArray[i], ele.get(i));
|
||||
}
|
||||
return map;
|
||||
}).collect(Collectors.toList());
|
||||
excelSheetDataList = excelXlsxReader.totalSheets;
|
||||
}
|
||||
inputStream.close();
|
||||
excelSheetDataList.forEach(excelSheetData -> {
|
||||
List<List<String>> data = excelSheetData.getData();
|
||||
String[] fieldArray = excelSheetData.getFields().stream().map(TableFiled::getFieldName).toArray(String[]::new);
|
||||
List<Map<String, Object>> jsonArray = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(data)) {
|
||||
jsonArray = data.stream().map(ele -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
for (int i = 0; i < ele.size(); i++) {
|
||||
map.put(fieldArray[i], ele.get(i));
|
||||
}
|
||||
return map;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
excelSheetData.setFieldsMd5(Md5Utils.md5(StringUtils.join(fieldArray, ",")));
|
||||
excelSheetData.setJsonArray(jsonArray);
|
||||
});
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("fields", fields);
|
||||
map.put("data", jsonArray);
|
||||
map.put("sheets", sheets);
|
||||
return map;
|
||||
return excelSheetDataList;
|
||||
}
|
||||
|
||||
private Map<String, Object> parseExcel(String filename, InputStream inputStream, boolean isPreview) throws Exception {
|
||||
@ -1387,16 +1511,15 @@ public class DataSetTableService {
|
||||
return "";
|
||||
}
|
||||
|
||||
private String saveFile(MultipartFile file) throws Exception {
|
||||
private String saveFile(MultipartFile file, String fileNameUUID) throws Exception {
|
||||
String filename = file.getOriginalFilename();
|
||||
String suffix = filename.substring(filename.lastIndexOf(".") + 1);
|
||||
filename = Md5Utils.md5(filename.substring(0, filename.length() - suffix.length()));
|
||||
String dirPath = path + AuthUtils.getUser().getUsername() + "/";
|
||||
File p = new File(dirPath);
|
||||
if (!p.exists()) {
|
||||
p.mkdirs();
|
||||
}
|
||||
String filePath = dirPath + filename + "." + suffix;
|
||||
String filePath = dirPath + fileNameUUID + "." + suffix;
|
||||
File f = new File(filePath);
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(f);
|
||||
fileOutputStream.write(file.getBytes());
|
||||
@ -1419,7 +1542,6 @@ public class DataSetTableService {
|
||||
@Resource
|
||||
private UtilMapper utilMapper;
|
||||
|
||||
@QuartzScheduled(cron = "0 0/3 * * * ?")
|
||||
public void updateDatasetTableStatus() {
|
||||
List<QrtzSchedulerState> qrtzSchedulerStates = qrtzSchedulerStateMapper.selectByExample(null);
|
||||
List<String> activeQrtzInstances = qrtzSchedulerStates.stream().filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime() + qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp()).map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList());
|
||||
|
@ -17,6 +17,7 @@ import io.dataease.datasource.provider.ProviderFactory;
|
||||
import io.dataease.datasource.request.DatasourceRequest;
|
||||
import io.dataease.datasource.service.DatasourceService;
|
||||
import io.dataease.dto.dataset.DataTableInfoDTO;
|
||||
import io.dataease.dto.dataset.ExcelSheetData;
|
||||
import io.dataease.exception.DataEaseException;
|
||||
import io.dataease.listener.util.CacheUtils;
|
||||
import io.dataease.provider.QueryProvider;
|
||||
@ -150,7 +151,7 @@ public class ExtractDataService {
|
||||
}
|
||||
}
|
||||
|
||||
public void extractExcelData(String datasetTableId, String type, String ops) {
|
||||
public void extractExcelData(String datasetTableId, String type, String ops, List<DatasetTableField> datasetTableFields) {
|
||||
Datasource datasource = new Datasource();
|
||||
datasource.setType("excel");
|
||||
DatasetTable datasetTable = getDatasetTable(datasetTableId);
|
||||
@ -160,7 +161,9 @@ public class ExtractDataService {
|
||||
}
|
||||
UpdateType updateType = UpdateType.valueOf(type);
|
||||
DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog();
|
||||
List<DatasetTableField> datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build());
|
||||
if(datasetTableFields == null){
|
||||
datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build());
|
||||
}
|
||||
datasetTableFields.sort((o1, o2) -> {
|
||||
if (o1.getColumnIndex() == null) {
|
||||
return -1;
|
||||
@ -185,6 +188,12 @@ public class ExtractDataService {
|
||||
saveSucessLog(datasetTableTaskLog);
|
||||
// sendWebMsg(datasetTable, null, true);
|
||||
updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, execTime);
|
||||
if(ops.equalsIgnoreCase("替换")){
|
||||
dataSetTableFieldsService.deleteByTableId(datasetTable.getId());
|
||||
datasetTableFields.forEach(datasetTableField -> {
|
||||
dataSetTableFieldsService.save(datasetTableField);
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
saveErrorLog(datasetTableId, null, e);
|
||||
// sendWebMsg(datasetTable, null, false);
|
||||
@ -192,7 +201,9 @@ public class ExtractDataService {
|
||||
dropDorisTable(DorisTableUtils.dorisTmpName(DorisTableUtils.dorisName(datasetTableId)));
|
||||
} finally {
|
||||
deleteFile("all_scope", datasetTableId);
|
||||
// deleteFile(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getData());
|
||||
for (ExcelSheetData excelSheetData : new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getExcelSheetDataList()) {
|
||||
deleteFile(excelSheetData.getPath());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -213,6 +224,9 @@ public class ExtractDataService {
|
||||
} finally {
|
||||
deleteFile("incremental_add", datasetTableId);
|
||||
deleteFile("incremental_delete", datasetTableId);
|
||||
for (ExcelSheetData excelSheetData : new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getExcelSheetDataList()) {
|
||||
deleteFile(excelSheetData.getPath());
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -831,18 +845,30 @@ public class ExtractDataService {
|
||||
|
||||
private StepMeta excelInputStep(String Info, List<DatasetTableField> datasetTableFields){
|
||||
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(Info, DataTableInfoDTO.class);
|
||||
String suffix = dataTableInfoDTO.getData().substring(dataTableInfoDTO.getData().lastIndexOf(".") + 1);
|
||||
List<ExcelSheetData> excelSheetDataList = dataTableInfoDTO.getExcelSheetDataList();
|
||||
String suffix = excelSheetDataList.get(0).getPath().substring(excelSheetDataList.get(0).getPath().lastIndexOf(".") + 1);
|
||||
ExcelInputMeta excelInputMeta = new ExcelInputMeta();
|
||||
|
||||
List<String> sheetNames = new ArrayList<>();
|
||||
List<String> files = new ArrayList<>();
|
||||
for (ExcelSheetData excelSheetData : excelSheetDataList) {
|
||||
if(!sheetNames.contains(excelSheetData.getExcelLable())){
|
||||
sheetNames.add(excelSheetData.getExcelLable());
|
||||
}
|
||||
if(!files.contains(excelSheetData.getPath())){
|
||||
files.add(excelSheetData.getPath());
|
||||
}
|
||||
}
|
||||
if (StringUtils.equalsIgnoreCase(suffix, "xlsx")) {
|
||||
excelInputMeta.setSpreadSheetType(SpreadSheetType.SAX_POI);
|
||||
excelInputMeta.setSheetName(new String[]{dataTableInfoDTO.getSheets().get(0)});
|
||||
excelInputMeta.setSheetName(sheetNames.toArray(new String[sheetNames.size()]));
|
||||
}
|
||||
if (StringUtils.equalsIgnoreCase(suffix, "xls")) {
|
||||
excelInputMeta.setSpreadSheetType(SpreadSheetType.JXL);
|
||||
excelInputMeta.setSheetName(new String[]{dataTableInfoDTO.getSheets().get(0)});
|
||||
excelInputMeta.setSheetName(sheetNames.toArray(new String[sheetNames.size()]));
|
||||
}
|
||||
excelInputMeta.setPassword("Encrypted");
|
||||
excelInputMeta.setFileName(new String[]{dataTableInfoDTO.getData()});
|
||||
excelInputMeta.setFileName( files.toArray(new String[files.size()]));
|
||||
excelInputMeta.setStartsWithHeader(true);
|
||||
excelInputMeta.setIgnoreEmptyRows(true);
|
||||
ExcelInputField[] fields = new ExcelInputField[datasetTableFields.size()];
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,174 @@
|
||||
|
||||
DROP VIEW
|
||||
IF
|
||||
EXISTS `v_auth_model`;
|
||||
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `v_auth_model` AS SELECT
|
||||
`sys_user`.`user_id` AS `id`,
|
||||
`sys_user`.`username` AS `name`,
|
||||
`sys_user`.`username` AS `label`,
|
||||
'0' AS `pid`,
|
||||
'leaf' AS `node_type`,
|
||||
'user' AS `model_type`,
|
||||
'user' AS `model_inner_type`,
|
||||
'target' AS `auth_type`,
|
||||
`sys_user`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`sys_user`
|
||||
WHERE
|
||||
( `sys_user`.`is_admin` <> 1 )
|
||||
UNION ALL
|
||||
SELECT
|
||||
`sys_role`.`role_id` AS `id`,
|
||||
`sys_role`.`name` AS `name`,
|
||||
`sys_role`.`name` AS `label`,
|
||||
'0' AS `pid`,
|
||||
'leaf' AS `node_type`,
|
||||
'role' AS `model_type`,
|
||||
'role' AS `model_inner_type`,
|
||||
'target' AS `auth_type`,
|
||||
`sys_role`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`sys_role` UNION ALL
|
||||
SELECT
|
||||
`sys_dept`.`dept_id` AS `id`,
|
||||
`sys_dept`.`name` AS `name`,
|
||||
`sys_dept`.`name` AS `lable`,
|
||||
cast( `sys_dept`.`pid` AS CHAR charset utf8mb4 ) AS `pid`,
|
||||
IF
|
||||
(( `sys_dept`.`sub_count` = 0 ), 'leaf', 'spine' ) AS `node_type`,
|
||||
'dept' AS `model_type`,
|
||||
'dept' AS `model_inner_type`,
|
||||
'target' AS `auth_type`,
|
||||
`sys_dept`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`sys_dept` UNION ALL
|
||||
SELECT
|
||||
`datasource`.`id` AS `id`,
|
||||
`datasource`.`name` AS `NAME`,
|
||||
`datasource`.`name` AS `label`,
|
||||
'0' AS `pid`,
|
||||
'leaf' AS `node_type`,
|
||||
'link' AS `model_type`,
|
||||
`datasource`.`type` AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`datasource`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`datasource` UNION ALL
|
||||
SELECT
|
||||
`dataset_group`.`id` AS `id`,
|
||||
`dataset_group`.`name` AS `NAME`,
|
||||
`dataset_group`.`name` AS `lable`,
|
||||
IF
|
||||
( isnull( `dataset_group`.`pid` ), '0', `dataset_group`.`pid` ) AS `pid`,
|
||||
'spine' AS `node_type`,
|
||||
'dataset' AS `model_type`,
|
||||
`dataset_group`.`type` AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`dataset_group`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`dataset_group` UNION ALL
|
||||
SELECT
|
||||
`dataset_table`.`id` AS `id`,
|
||||
`dataset_table`.`name` AS `NAME`,
|
||||
`dataset_table`.`name` AS `lable`,
|
||||
`dataset_table`.`scene_id` AS `pid`,
|
||||
'leaf' AS `node_type`,
|
||||
'dataset' AS `model_type`,
|
||||
`dataset_table`.`type` AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`dataset_table`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`dataset_table` UNION ALL
|
||||
SELECT
|
||||
`chart_group`.`id` AS `id`,
|
||||
`chart_group`.`name` AS `name`,
|
||||
`chart_group`.`name` AS `label`,
|
||||
IF
|
||||
( isnull( `chart_group`.`pid` ), '0', `chart_group`.`pid` ) AS `pid`,
|
||||
'spine' AS `node_type`,
|
||||
'chart' AS `model_type`,
|
||||
`chart_group`.`type` AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`chart_group`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`chart_group` UNION ALL
|
||||
SELECT
|
||||
`chart_view`.`id` AS `id`,
|
||||
`chart_view`.`name` AS `name`,
|
||||
`chart_view`.`name` AS `label`,
|
||||
`chart_view`.`scene_id` AS `pid`,
|
||||
'leaf' AS `node_type`,
|
||||
'chart' AS `model_type`,
|
||||
`chart_view`.`type` AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`chart_view`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`chart_view` UNION ALL
|
||||
SELECT
|
||||
`panel_group`.`id` AS `id`,
|
||||
`panel_group`.`name` AS `NAME`,
|
||||
`panel_group`.`name` AS `label`,(
|
||||
CASE
|
||||
`panel_group`.`id`
|
||||
WHEN 'panel_list' THEN
|
||||
'0'
|
||||
WHEN 'default_panel' THEN
|
||||
'0' ELSE `panel_group`.`pid`
|
||||
END
|
||||
) AS `pid`,
|
||||
IF
|
||||
(( `panel_group`.`node_type` = 'folder' ), 'spine', 'leaf' ) AS `node_type`,
|
||||
'panel' AS `model_type`,
|
||||
`panel_group`.`panel_type` AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`panel_group`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`panel_group` UNION ALL
|
||||
SELECT
|
||||
`sys_menu`.`menu_id` AS `menu_id`,
|
||||
`sys_menu`.`title` AS `name`,
|
||||
`sys_menu`.`title` AS `label`,
|
||||
`sys_menu`.`pid` AS `pid`,
|
||||
IF
|
||||
(( `sys_menu`.`sub_count` > 0 ), 'spine', 'leaf' ) AS `node_type`,
|
||||
'menu' AS `model_type`,(
|
||||
CASE
|
||||
`sys_menu`.`type`
|
||||
WHEN 0 THEN
|
||||
'folder'
|
||||
WHEN 1 THEN
|
||||
'menu'
|
||||
WHEN 2 THEN
|
||||
'button'
|
||||
END
|
||||
) AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`sys_menu`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`sys_menu`
|
||||
WHERE
|
||||
(sys_menu.i_frame !=1 or sys_menu.i_frame is null) UNION ALL
|
||||
SELECT
|
||||
`plugin_sys_menu`.`menu_id` AS `menu_id`,
|
||||
`plugin_sys_menu`.`title` AS `name`,
|
||||
`plugin_sys_menu`.`title` AS `label`,
|
||||
`plugin_sys_menu`.`pid` AS `pid`,
|
||||
IF
|
||||
(( `plugin_sys_menu`.`sub_count` > 0 ), 'spine', 'leaf' ) AS `node_type`,
|
||||
'menu' AS `model_type`,(
|
||||
CASE
|
||||
`plugin_sys_menu`.`type`
|
||||
WHEN 0 THEN
|
||||
'folder'
|
||||
WHEN 1 THEN
|
||||
'menu'
|
||||
WHEN 2 THEN
|
||||
'button'
|
||||
END
|
||||
) AS `model_inner_type`,
|
||||
'source' AS `auth_type`,
|
||||
`plugin_sys_menu`.`create_by` AS `create_by`
|
||||
FROM
|
||||
`plugin_sys_menu`
|
||||
WHERE
|
||||
(plugin_sys_menu.i_frame !=1 or plugin_sys_menu.i_frame is null);
|
@ -64,7 +64,7 @@
|
||||
|
||||
<!--要生成的数据库表 -->
|
||||
|
||||
<table tableName="chart_view"/>
|
||||
<table tableName="datasource"/>
|
||||
<!-- <table tableName="sys_dict_item"/>-->
|
||||
<!-- <table tableName="dataset_table_field"/>-->
|
||||
<!-- <table tableName="v_chart">-->
|
||||
|
@ -1155,7 +1155,9 @@ export default {
|
||||
this.resizing = false
|
||||
await this.conflictCheck()
|
||||
this.$emit('refLineParams', refLine)
|
||||
this.$emit('resizestop', this.left, this.top, this.width, this.height)
|
||||
// this.$emit('resizestop', this.left, this.top, this.width, this.height)
|
||||
// private
|
||||
// this.$emit('resizestop')
|
||||
}
|
||||
if (this.dragging) {
|
||||
this.dragging = false
|
||||
@ -1484,6 +1486,12 @@ export default {
|
||||
style.rotate = this.rotate
|
||||
// this.hasMove = true
|
||||
this.$store.commit('setShapeStyle', style)
|
||||
|
||||
// resize
|
||||
const self = this
|
||||
setTimeout(function() {
|
||||
self.$emit('resizestop')
|
||||
}, 200)
|
||||
},
|
||||
mountedFunction() {
|
||||
// private 冲突检测 和水平设计值保持一致
|
||||
|
@ -7,6 +7,8 @@
|
||||
import Preview from './Preview'
|
||||
import { uuid } from 'vue-uuid'
|
||||
import { findOne } from '@/api/panel/panel'
|
||||
import { getPanelAllLinkageInfo } from '@/api/panel/linkage'
|
||||
|
||||
|
||||
export default {
|
||||
components: { Preview },
|
||||
@ -24,6 +26,10 @@ export default {
|
||||
id: response.data.id,
|
||||
name: response.data.name
|
||||
}
|
||||
// 刷新联动信息
|
||||
getPanelAllLinkageInfo(this.panelId).then(rsp => {
|
||||
this.$store.commit('setNowPanelTrackInfo', rsp.data)
|
||||
})
|
||||
this.$store.dispatch('panel/setPanelInfo', data)
|
||||
})
|
||||
},
|
||||
|
@ -11,7 +11,7 @@
|
||||
<el-dropdown-item icon="el-icon-download" @click.native="bottomComponent">{{ $t('panel.bottomComponent') }}</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-arrow-up" @click.native="upComponent">{{ $t('panel.upComponent') }}</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-arrow-down" @click.native="downComponent">{{ $t('panel.downComponent') }}</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-link" @click.native="linkageSetting">联动设置</el-dropdown-item>
|
||||
<el-dropdown-item v-if="'view'===curComponent.type" icon="el-icon-link" @click.native="linkageSetting">{{ $t('panel.linkage_setting') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
|
@ -37,6 +37,7 @@
|
||||
:linkage-active="linkageSettingStatus&&item===curLinkageView"
|
||||
@refLineParams="getRefLineParams"
|
||||
@showViewDetails="showViewDetails(index)"
|
||||
@resizestop="resizestop(index,item)"
|
||||
>
|
||||
<component
|
||||
:is="item.component"
|
||||
@ -620,6 +621,11 @@ export default {
|
||||
},
|
||||
showViewDetails(index) {
|
||||
this.$refs.wrapperChild[index].openChartDetailsDialog()
|
||||
},
|
||||
resizestop(index, item) {
|
||||
if (item.type === 'view') {
|
||||
this.$refs.wrapperChild[index].chartResize()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,9 +16,10 @@
|
||||
{{ $t('chart.chart_error_tips') }}
|
||||
</div>
|
||||
</div>
|
||||
<chart-component v-if="requestStatus==='success'&&chart.type && !chart.type.includes('table') && !chart.type.includes('text')" :ref="element.propValue.id" class="chart-class" :chart="chart" :track-menu="trackMenu" @onChartClick="chartClick" />
|
||||
<table-normal v-if="requestStatus==='success'&&chart.type && chart.type.includes('table')" :ref="element.propValue.id" :chart="chart" class="table-class" />
|
||||
<label-normal v-if="requestStatus==='success'&&chart.type && chart.type.includes('text')" :ref="element.propValue.id" :chart="chart" class="table-class" />
|
||||
<chart-component v-if="httpRequest.status &&chart.type && !chart.type.includes('table') && !chart.type.includes('text')" :ref="element.propValue.id" class="chart-class" :chart="chart" :track-menu="trackMenu" @onChartClick="chartClick" />
|
||||
<!-- <chart-component :ref="element.propValue.id" class="chart-class" :chart="chart" :track-menu="trackMenu" @onChartClick="chartClick" />-->
|
||||
<table-normal v-if="httpRequest.status &&chart.type && chart.type.includes('table')" :ref="element.propValue.id" :chart="chart" class="table-class" />
|
||||
<label-normal v-if="httpRequest.status && chart.type && chart.type.includes('text')" :ref="element.propValue.id" :chart="chart" class="table-class" />
|
||||
<div style="position: absolute;left: 20px;bottom:14px;">
|
||||
<drill-path :drill-filters="drillFilters" @onDrillJump="drillJump" />
|
||||
</div>
|
||||
@ -41,7 +42,7 @@ import eventBus from '@/components/canvas/utils/eventBus'
|
||||
import { deepCopy } from '@/components/canvas/utils/utils'
|
||||
import { getToken, getLinkToken } from '@/utils/auth'
|
||||
import DrillPath from '@/views/chart/view/DrillPath'
|
||||
|
||||
import { areaMapping } from '@/api/map/map'
|
||||
export default {
|
||||
name: 'UserView',
|
||||
components: { ChartComponent, TableNormal, LabelNormal, DrillPath },
|
||||
@ -85,7 +86,12 @@ export default {
|
||||
message: null,
|
||||
drillClickDimensionList: [],
|
||||
drillFilters: [],
|
||||
drillFields: []
|
||||
drillFields: [],
|
||||
places: [],
|
||||
httpRequest: {
|
||||
status: true,
|
||||
msg: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@ -111,7 +117,7 @@ export default {
|
||||
trackMenu() {
|
||||
const trackMenuInfo = []
|
||||
let linkageCount = 0
|
||||
this.chart.data.fields && this.chart.data.fields.forEach(item => {
|
||||
this.chart.data && this.chart.data.fields && this.chart.data.fields.forEach(item => {
|
||||
const sourceInfo = this.chart.id + '#' + item.id
|
||||
if (this.nowPanelTrackInfo[sourceInfo]) {
|
||||
linkageCount++
|
||||
@ -122,6 +128,9 @@ export default {
|
||||
console.log('trackMenuInfo' + JSON.stringify(trackMenuInfo))
|
||||
return trackMenuInfo
|
||||
},
|
||||
chartType() {
|
||||
return this.chart.type
|
||||
},
|
||||
...mapState([
|
||||
'canvasStyleData',
|
||||
'nowPanelTrackInfo'
|
||||
@ -135,8 +144,13 @@ export default {
|
||||
},
|
||||
linkageFilters: {
|
||||
handler(newVal, oldVal) {
|
||||
debugger
|
||||
isChange(newVal, oldVal) && this.getData(this.element.propValue.viewId)
|
||||
// isChange(newVal, oldVal) && this.getData(this.element.propValue.viewId)
|
||||
if (isChange(newVal, oldVal)) {
|
||||
// if (this.chart.type === 'map') {
|
||||
// this.doMapLink(newVal)
|
||||
// }
|
||||
this.getData(this.element.propValue.viewId)
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
@ -148,12 +162,13 @@ export default {
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
// 监听外部的样式变化
|
||||
// 监听外部的样式变化 (非实时性要求)
|
||||
outStyle: {
|
||||
handler(newVal, oldVla) {
|
||||
if (this.$refs[this.element.propValue.id]) {
|
||||
this.$refs[this.element.propValue.id].chartResize()
|
||||
}
|
||||
//
|
||||
// if (this.$refs[this.element.propValue.id]) {
|
||||
// this.$refs[this.element.propValue.id].chartResize()
|
||||
// }
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
@ -162,6 +177,11 @@ export default {
|
||||
if (val1 > 0) {
|
||||
this.getData(this.element.propValue.viewId)
|
||||
}
|
||||
},
|
||||
'chartType': function(newVal, oldVal) {
|
||||
if (newVal === 'map' && newVal !== oldVal) {
|
||||
this.initAreas()
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -169,6 +189,7 @@ export default {
|
||||
this.refId = uuid.v1
|
||||
// this.filter.filter = this.$store.getters.conditions
|
||||
this.getData(this.element.propValue.viewId)
|
||||
// this.initAreas()
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
@ -207,7 +228,9 @@ export default {
|
||||
|
||||
// 增加判断 仪表板公共连接中使用viewInfo 正常使用viewData
|
||||
let method = viewData
|
||||
if (!getToken() && getLinkToken()) {
|
||||
const token = this.$store.getters.token || getToken()
|
||||
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||
if (!token && linkToken) {
|
||||
method = viewInfo
|
||||
}
|
||||
|
||||
@ -216,7 +239,6 @@ export default {
|
||||
if (response.success) {
|
||||
this.chart = response.data
|
||||
this.chart.drillFields = this.chart.drillFields ? JSON.parse(this.chart.drillFields) : []
|
||||
debugger
|
||||
if (!response.data.drill) {
|
||||
this.drillClickDimensionList.splice(this.drillClickDimensionList.length - 1, 1)
|
||||
}
|
||||
@ -225,12 +247,15 @@ export default {
|
||||
this.requestStatus = 'merging'
|
||||
this.mergeStyle()
|
||||
this.requestStatus = 'success'
|
||||
this.httpRequest.status = true
|
||||
} else {
|
||||
this.requestStatus = 'error'
|
||||
this.message = response.message
|
||||
}
|
||||
return true
|
||||
}).catch(err => {
|
||||
this.httpRequest.status = err.response.data.success
|
||||
this.httpRequest.msg = err.response.data.message
|
||||
this.requestStatus = 'error'
|
||||
if (err && err.response && err.response.data) {
|
||||
this.message = err.response.data.message
|
||||
@ -259,19 +284,117 @@ export default {
|
||||
},
|
||||
|
||||
chartClick(param) {
|
||||
debugger
|
||||
if (this.drillClickDimensionList.length < this.chart.drillFields.length - 1) {
|
||||
this.chart.type === 'map' && this.sendToChildren(param)
|
||||
this.drillClickDimensionList.push({ dimensionList: param.data.dimensionList })
|
||||
this.getData(this.element.propValue.viewId)
|
||||
}
|
||||
},
|
||||
|
||||
resetDrill() {
|
||||
const length = this.drillClickDimensionList.length
|
||||
this.drillClickDimensionList = []
|
||||
if (this.chart.type === 'map') {
|
||||
this.backToParent(0, length)
|
||||
}
|
||||
},
|
||||
|
||||
drillJump(index) {
|
||||
const length = this.drillClickDimensionList.length
|
||||
this.drillClickDimensionList = this.drillClickDimensionList.slice(0, index)
|
||||
if (this.chart.type === 'map') {
|
||||
this.backToParent(index, length)
|
||||
}
|
||||
this.getData(this.element.propValue.viewId)
|
||||
},
|
||||
// 回到父级地图
|
||||
backToParent(index, length) {
|
||||
if (length <= 0) return
|
||||
const times = length - 1 - index
|
||||
|
||||
let temp = times
|
||||
let tempNode = this.currentAcreaNode
|
||||
while (temp >= 0) {
|
||||
tempNode = this.findEntityByCode(tempNode.pcode, this.places)
|
||||
temp--
|
||||
}
|
||||
|
||||
this.currentAcreaNode = tempNode
|
||||
const current = this.$refs[this.element.propValue.id]
|
||||
current && current.registerDynamicMap && current.registerDynamicMap(this.currentAcreaNode.code)
|
||||
// this.$refs.dynamicChart && this.$refs.dynamicChart.registerDynamicMap && this.$refs.dynamicChart.registerDynamicMap(this.currentAcreaNode.code)
|
||||
},
|
||||
|
||||
// 切换下一级地图
|
||||
sendToChildren(param) {
|
||||
const length = param.data.dimensionList.length
|
||||
const name = param.data.dimensionList[length - 1].value
|
||||
let aCode = null
|
||||
if (this.currentAcreaNode) {
|
||||
aCode = this.currentAcreaNode.code
|
||||
}
|
||||
// const aCode = this.currentAcreaNode ? this.currentAcreaNode.code : null
|
||||
const customAttr = JSON.parse(this.chart.customAttr)
|
||||
const currentNode = this.findEntityByCode(aCode || customAttr.areaCode, this.places)
|
||||
if (currentNode && currentNode.children && currentNode.children.length > 0) {
|
||||
const nextNode = currentNode.children.find(item => item.name === name)
|
||||
// this.view.customAttr.areaCode = nextNode.code
|
||||
this.currentAcreaNode = nextNode
|
||||
const current = this.$refs[this.element.propValue.id]
|
||||
current && current.registerDynamicMap && current.registerDynamicMap(nextNode.code)
|
||||
}
|
||||
},
|
||||
|
||||
findEntityByCode(code, array) {
|
||||
if (array === null || array.length === 0) array = this.places
|
||||
for (let index = 0; index < array.length; index++) {
|
||||
const node = array[index]
|
||||
if (node.code === code) return node
|
||||
if (node.children && node.children.length > 0) {
|
||||
const temp = this.findEntityByCode(code, node.children)
|
||||
if (temp) return temp
|
||||
}
|
||||
}
|
||||
},
|
||||
initAreas() {
|
||||
// let mapping
|
||||
// if ((mapping = localStorage.getItem('areaMapping')) !== null) {
|
||||
// this.places = JSON.parse(mapping)
|
||||
// return
|
||||
// }
|
||||
Object.keys(this.places).length === 0 && areaMapping().then(res => {
|
||||
this.places = res.data
|
||||
// localStorage.setItem('areaMapping', JSON.stringify(res.data))
|
||||
})
|
||||
},
|
||||
doMapLink(linkFilters) {
|
||||
if (!linkFilters && linkFilters.length === 0) return
|
||||
const value = linkFilters[0].value
|
||||
if (!value && value.length === 0) return
|
||||
const name = value[0]
|
||||
if (!name) return
|
||||
const areaNode = this.findEntityByname(name, [])
|
||||
if (!areaNode) return
|
||||
const current = this.$refs[this.element.propValue.id]
|
||||
current && current.registerDynamicMap && current.registerDynamicMap(areaNode.code)
|
||||
},
|
||||
// 根据地名获取areaCode
|
||||
findEntityByname(name, array) {
|
||||
if (array === null || array.length === 0) array = this.places
|
||||
for (let index = 0; index < array.length; index++) {
|
||||
const node = array[index]
|
||||
if (node.name === name) return node
|
||||
if (node.children && node.children.length > 0) {
|
||||
const temp = this.findEntityByname(name, node.children)
|
||||
if (temp) return temp
|
||||
}
|
||||
}
|
||||
},
|
||||
// chart
|
||||
chartResize() {
|
||||
if (this.$refs[this.element.propValue.id]) {
|
||||
this.$refs[this.element.propValue.id].chartResize()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,10 +4,6 @@
|
||||
class="ms-aside-container"
|
||||
:style="{'margin-left': !asideHidden ? 0 : '-' + width}"
|
||||
>
|
||||
<!--<div v-if="enableAsideHidden" class="hiddenBottom" @click="asideHidden = !asideHidden">-->
|
||||
<!--<i v-if="!asideHidden" class="el-icon-arrow-left"/>-->
|
||||
<!--<i v-if="asideHidden" class="el-icon-arrow-right"/>-->
|
||||
<!--</div>-->
|
||||
<slot />
|
||||
<de-horizontal-drag-bar v-if="showDragBar" />
|
||||
</el-aside>
|
||||
|
@ -1006,7 +1006,12 @@ export default {
|
||||
field_manage: 'Field Manage',
|
||||
edit_calc_field: 'Edit calc field',
|
||||
calc_field: 'Calc Field',
|
||||
show_sql: 'Show SQL'
|
||||
show_sql: 'Show SQL',
|
||||
ple_select_excel: 'Please select excel file to import',
|
||||
merge: 'Merge',
|
||||
no_merge: 'Dont Merge',
|
||||
merge_msg: 'If the fields in the data table are consistent, merge them into one data set?',
|
||||
merge_title: 'Merge data'
|
||||
},
|
||||
datasource: {
|
||||
datasource: 'Data Source',
|
||||
@ -1038,7 +1043,8 @@ export default {
|
||||
oracle_service_name: 'Service Name',
|
||||
get_schema: 'Get Schema',
|
||||
schema: 'Database Schema',
|
||||
please_choose_schema: 'Please select Schema'
|
||||
please_choose_schema: 'Please select Schema',
|
||||
in_valid: 'Invalid datasource'
|
||||
},
|
||||
pblink: {
|
||||
key_pwd: 'Please enter the password to open the link',
|
||||
@ -1139,6 +1145,7 @@ export default {
|
||||
bottomComponent: 'Bottom Component',
|
||||
upComponent: 'Up One Level',
|
||||
downComponent: 'Down One Level',
|
||||
linkage_setting: 'Linkage Setting',
|
||||
open_aided_design: 'Open Component Aided Design',
|
||||
close_aided_design: 'Close Component Aided Design',
|
||||
open_style_design: 'Open Style Design',
|
||||
|
@ -1006,7 +1006,12 @@ export default {
|
||||
field_manage: '字段管理',
|
||||
edit_calc_field: '編輯計算字段',
|
||||
calc_field: '計算字段',
|
||||
show_sql: '顯示SQL'
|
||||
show_sql: '顯示SQL',
|
||||
ple_select_excel: '請選擇要導入的 Excel',
|
||||
merge: '合併',
|
||||
no_merge: '不合併',
|
||||
merge_msg: '數據表中存在自斷一直的情況,是否合併到一個數據集中?',
|
||||
merge_title: '合併數據'
|
||||
},
|
||||
datasource: {
|
||||
datasource: '數據源',
|
||||
@ -1038,7 +1043,8 @@ export default {
|
||||
oracle_service_name: '服務名',
|
||||
get_schema: '獲取 Schema',
|
||||
schema: '數據庫 Schema',
|
||||
please_choose_schema: '請選擇數據庫 Schema'
|
||||
please_choose_schema: '請選擇數據庫 Schema',
|
||||
in_valid: '無效數據源'
|
||||
},
|
||||
pblink: {
|
||||
key_pwd: '請輸入密碼打開鏈接',
|
||||
@ -1139,6 +1145,7 @@ export default {
|
||||
bottomComponent: '置底',
|
||||
upComponent: '上移',
|
||||
downComponent: '下移',
|
||||
linkage_setting: '联动设置',
|
||||
open_aided_design: '打開組件輔助設計',
|
||||
close_aided_design: '關閉組件輔助設計',
|
||||
open_style_design: '打開樣式設計',
|
||||
|
@ -1006,7 +1006,12 @@ export default {
|
||||
field_manage: '字段管理',
|
||||
edit_calc_field: '编辑计算字段',
|
||||
calc_field: '计算字段',
|
||||
show_sql: '显示SQL'
|
||||
show_sql: '显示SQL',
|
||||
ple_select_excel: '请选择要导入的 Excel',
|
||||
merge: '合并',
|
||||
no_merge: '不合并',
|
||||
merge_msg: '数据表中存在字段一致的情况,是否合并到一个数据集中?',
|
||||
merge_title: '合并数据'
|
||||
},
|
||||
datasource: {
|
||||
datasource: '数据源',
|
||||
@ -1040,7 +1045,8 @@ export default {
|
||||
get_schema: '获取 Schema',
|
||||
schema: '数据库 Schema',
|
||||
please_choose_schema: '请选择数据库 Schema',
|
||||
edit_datasource_msg: '修改数据源信息,可能会导致改数据源下的数据集不可用,确认修改?'
|
||||
edit_datasource_msg: '修改数据源信息,可能会导致改数据源下的数据集不可用,确认修改?',
|
||||
in_valid: '无效数据源'
|
||||
},
|
||||
pblink: {
|
||||
key_pwd: '请输入密码打开链接',
|
||||
@ -1141,6 +1147,7 @@ export default {
|
||||
bottomComponent: '置底',
|
||||
upComponent: '上移',
|
||||
downComponent: '下移',
|
||||
linkage_setting: '联动设置',
|
||||
open_aided_design: '打开组件辅助设计',
|
||||
close_aided_design: '关闭组件辅助设计',
|
||||
open_style_design: '打开样式设计',
|
||||
|
@ -4,6 +4,7 @@ const getters = {
|
||||
size: state => state.app.size,
|
||||
device: state => state.app.device,
|
||||
token: state => state.user.token,
|
||||
linkToken: state => state.user.linkToken,
|
||||
avatar: state => state.user.avatar,
|
||||
name: state => state.user.name,
|
||||
introduction: state => state.user.introduction,
|
||||
|
@ -18,7 +18,8 @@ const getDefaultState = () => {
|
||||
// 当前用户拥有哪些资源权限
|
||||
permissions: [],
|
||||
language: getLanguage(),
|
||||
uiInfo: null
|
||||
uiInfo: null,
|
||||
linkToken: null
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +32,9 @@ const mutations = {
|
||||
SET_TOKEN: (state, token) => {
|
||||
state.token = token
|
||||
},
|
||||
SET_LINK_TOKEN: (state, linkToken) => {
|
||||
state.linkToken = linkToken
|
||||
},
|
||||
SET_NAME: (state, name) => {
|
||||
state.name = name
|
||||
},
|
||||
@ -165,6 +169,9 @@ const actions = {
|
||||
commit('SET_LANGUAGE', language)
|
||||
router.go(0)
|
||||
})
|
||||
},
|
||||
setLinkToken({ commit }, linkToken) {
|
||||
commit('SET_LINK_TOKEN', linkToken)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,10 @@ service.interceptors.request.use(
|
||||
if ((linkToken = getLinkToken()) !== null) {
|
||||
config.headers[LinkTokenKey] = linkToken
|
||||
}
|
||||
if (!linkToken) {
|
||||
linkToken = store.getters.linkToken
|
||||
config.headers[LinkTokenKey] = linkToken
|
||||
}
|
||||
|
||||
if (i18n.locale) {
|
||||
const lang = i18n.locale.replace('_', '-')
|
||||
@ -92,6 +96,7 @@ const checkAuth = response => {
|
||||
if (response.headers[LinkTokenKey.toLocaleLowerCase()] || (response.config.headers && response.config.headers[LinkTokenKey.toLocaleLowerCase()])) {
|
||||
const linkToken = response.headers[LinkTokenKey.toLocaleLowerCase()] || response.config.headers[LinkTokenKey.toLocaleLowerCase()]
|
||||
setLinkToken(linkToken)
|
||||
store.dispatch('user/setLinkToken', linkToken)
|
||||
}
|
||||
// 许可状态改变 刷新页面
|
||||
// if (response.headers['lic-status']) {
|
||||
|
@ -618,7 +618,8 @@ export const BASE_MAP = {
|
||||
calculable: true,
|
||||
inRange: {
|
||||
color: ['lightskyblue', 'yellow', 'orangered']
|
||||
}
|
||||
},
|
||||
right: 0
|
||||
},
|
||||
// legend: {},
|
||||
series: [
|
||||
|
@ -33,14 +33,24 @@ export function baseMapOption(chart_option, chart) {
|
||||
}
|
||||
// visualMap
|
||||
const valueArr = chart.data.series[0].data
|
||||
const values = []
|
||||
valueArr.forEach(function(ele) {
|
||||
values.push(ele.value)
|
||||
})
|
||||
chart_option.visualMap.min = Math.min(...values)
|
||||
chart_option.visualMap.max = Math.max(...values)
|
||||
if (valueArr && valueArr.length > 0) {
|
||||
const values = []
|
||||
valueArr.forEach(function(ele) {
|
||||
values.push(ele.value)
|
||||
})
|
||||
chart_option.visualMap.min = Math.min(...values)
|
||||
chart_option.visualMap.max = Math.max(...values)
|
||||
if (chart_option.visualMap.min === chart_option.visualMap.max) {
|
||||
chart_option.visualMap.min = 0
|
||||
}
|
||||
} else {
|
||||
chart_option.visualMap.min = 0
|
||||
chart_option.visualMap.max = 0
|
||||
}
|
||||
// color
|
||||
if (customAttr.color && customAttr.color.colors) {
|
||||
chart_option.visualMap.inRange.color = customAttr.color.colors
|
||||
chart_option.visualMap.inRange.colorAlpha = customAttr.color.alpha / 100
|
||||
}
|
||||
for (let i = 0; i < valueArr.length; i++) {
|
||||
// const y = {
|
||||
|
@ -55,7 +55,9 @@ export default {
|
||||
left: '0px',
|
||||
top: '0px'
|
||||
},
|
||||
pointParam: null
|
||||
pointParam: null,
|
||||
|
||||
downOrUp: false
|
||||
}
|
||||
},
|
||||
|
||||
@ -143,19 +145,13 @@ export default {
|
||||
const customAttr = JSON.parse(chart.customAttr)
|
||||
if (!customAttr.areaCode) return
|
||||
|
||||
if (this.currentGeoJson) {
|
||||
this.initMapChart(this.currentGeoJson, chart)
|
||||
return
|
||||
}
|
||||
|
||||
if (this.$store.getters.geoMap[customAttr.areaCode]) {
|
||||
this.currentGeoJson = this.$store.getters.geoMap[customAttr.areaCode]
|
||||
this.initMapChart(this.currentGeoJson, chart)
|
||||
const json = this.$store.getters.geoMap[customAttr.areaCode]
|
||||
this.initMapChart(json, chart)
|
||||
return
|
||||
}
|
||||
|
||||
geoJson(customAttr.areaCode).then(res => {
|
||||
// this.initMapChart(res.data, chart)
|
||||
this.initMapChart(res, chart)
|
||||
|
||||
this.$store.dispatch('map/setGeo', {
|
||||
@ -163,16 +159,38 @@ export default {
|
||||
value: res
|
||||
// value: res.data
|
||||
})
|
||||
// this.currentGeoJson = res.data
|
||||
this.currentGeoJson = res
|
||||
})
|
||||
return
|
||||
}
|
||||
this.myEcharts(chart_option)
|
||||
},
|
||||
registerDynamicMap(areaCode) {
|
||||
this.downOrUp = true
|
||||
if (this.$store.getters.geoMap[areaCode]) {
|
||||
const json = this.$store.getters.geoMap[areaCode]
|
||||
this.$echarts.registerMap('MAP', json)
|
||||
console.log('开始切换地图:' + areaCode)
|
||||
return
|
||||
}
|
||||
geoJson(areaCode).then(res => {
|
||||
this.$echarts.registerMap('MAP', res)
|
||||
console.log('开始切换地图:' + areaCode)
|
||||
this.$store.dispatch('map/setGeo', {
|
||||
key: areaCode,
|
||||
value: res
|
||||
})
|
||||
}).catch(() => {
|
||||
this.downOrUp = true
|
||||
})
|
||||
},
|
||||
|
||||
initMapChart(geoJson, chart) {
|
||||
// this.$echarts.registerMap('HK', geoJson)
|
||||
this.$echarts.getMap('MAP') || this.$echarts.registerMap('MAP', geoJson)
|
||||
if (!this.$echarts.getMap('MAP') || !this.downOrUp) {
|
||||
console.log('开始初始化地图:')
|
||||
this.$echarts.registerMap('MAP', geoJson)
|
||||
}
|
||||
// this.$echarts.getMap('MAP') || this.$echarts.registerMap('MAP', geoJson)
|
||||
const base_json = JSON.parse(JSON.stringify(BASE_MAP))
|
||||
const chart_option = baseMapOption(base_json, chart)
|
||||
this.myEcharts(chart_option)
|
||||
|
@ -10,26 +10,6 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="colorForm" :model="colorForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="colorForm.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeBackgroundStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.not_alpha')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="colorForm.alpha" show-input :show-input-controls="false" input-size="mini" @change="changeBackgroundStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" :disabled="param && !hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">{{ $t('chart.background') }}<i class="el-icon-setting el-icon--right" /></el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -47,71 +47,6 @@
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- v-model="isSetting"-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="legendForm" :model="legendForm" label-width="80px" size="mini">-->
|
||||
<!-- <!– <el-form-item :label="$t('chart.show')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="legendForm.show" @change="changeLegendStyle">{{ $t('chart.show') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <el-form-item :label="$t('chart.icon')" class="form-item">-->
|
||||
<!-- <el-select v-model="legendForm.icon" :placeholder="$t('chart.icon')" @change="changeLegendStyle">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in iconSymbolOptions"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.orient')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="legendForm.orient" size="mini" @change="changeLegendStyle">-->
|
||||
<!-- <el-radio-button label="horizontal">{{ $t('chart.horizontal') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="vertical">{{ $t('chart.vertical') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="legendForm.textStyle.fontSize" :placeholder="$t('chart.text_fontsize')" size="mini" @change="changeLegendStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="legendForm.textStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 999;border: solid 1px black" @change="changeLegendStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_h_position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="legendForm.hPosition" size="mini" @change="changeLegendStyle">-->
|
||||
<!-- <el-radio-button label="left">{{ $t('chart.text_pos_left') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="center">{{ $t('chart.text_pos_center') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="right">{{ $t('chart.text_pos_right') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_v_position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="legendForm.vPosition" size="mini" @change="changeLegendStyle">-->
|
||||
<!-- <el-radio-button label="top">{{ $t('chart.text_pos_top') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="center">{{ $t('chart.text_pos_center') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="bottom">{{ $t('chart.text_pos_bottom') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" size="mini" class="shape-item" :disabled="!legendForm.show || !hasDataPermission('manage',param.privileges)">-->
|
||||
<!-- {{ $t('chart.legend') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="legendForm.show"-->
|
||||
<!-- :disabled="!hasDataPermission('manage',param.privileges)"-->
|
||||
<!-- class="switch-style"-->
|
||||
<!-- @click.stop.native-->
|
||||
<!-- @change="changeLegendStyle"-->
|
||||
<!-- />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -41,59 +41,6 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="splitForm" :model="splitForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.name')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="splitForm.name.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="splitForm.name.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeSplitStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_fontsize')" class="form-item form-item-slider">-->
|
||||
<!-- <el-select v-model="splitForm.name.fontSize" :placeholder="$t('chart.text_fontsize')" @change="changeSplitStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_line')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="splitForm.axisLine.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="splitForm.axisLine.lineStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeSplitStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="splitForm.axisLabel.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="splitForm.axisLabel.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeSplitStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.label_fontsize')" class="form-item form-item-slider">-->
|
||||
<!-- <el-select v-model="splitForm.axisLabel.fontSize" :placeholder="$t('chart.label_fontsize')" @change="changeSplitStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.split_line')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="splitForm.splitLine.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.split_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="splitForm.splitLine.lineStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeSplitStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.shadow')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="splitForm.splitArea.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" :disabled="!hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">-->
|
||||
<!-- {{ $t('chart.split') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -45,69 +45,6 @@
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- v-model="isSetting"-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="titleForm" :model="titleForm" label-width="80px" size="mini">-->
|
||||
<!-- <!– <el-form-item :label="$t('chart.show')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="titleForm.show" @change="changeTitleStyle">{{ $t('chart.show') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <el-form-item :label="$t('chart.title')" class="form-item">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="titleForm.title"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- :placeholder="$t('chart.title')"-->
|
||||
<!-- clearable-->
|
||||
<!-- @blur="changeTitleStyle"-->
|
||||
<!-- @input="inputOnInput($event)"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="titleForm.fontSize" :placeholder="$t('chart.text_fontsize')" size="mini" @change="changeTitleStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="titleForm.color" style="margin-top: 6px;cursor: pointer;z-index: 999;border: solid 1px black" @change="changeTitleStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_h_position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="titleForm.hPosition" size="mini" @change="changeTitleStyle">-->
|
||||
<!-- <el-radio-button label="left">{{ $t('chart.text_pos_left') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="center">{{ $t('chart.text_pos_center') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="right">{{ $t('chart.text_pos_right') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item v-show="chart.type && !chart.type.includes('table')" :label="$t('chart.text_v_position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="titleForm.vPosition" size="mini" @change="changeTitleStyle">-->
|
||||
<!-- <el-radio-button label="top">{{ $t('chart.text_pos_top') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="center">{{ $t('chart.text_pos_center') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="bottom">{{ $t('chart.text_pos_bottom') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_style')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="titleForm.isItalic" @change="changeTitleStyle">{{ $t('chart.italic') }}</el-checkbox>-->
|
||||
<!-- <el-checkbox v-model="titleForm.isBolder" @change="changeTitleStyle">{{ $t('chart.bolder') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" size="mini" class="shape-item" :disabled="!titleForm.show || !hasDataPermission('manage',param.privileges)">-->
|
||||
<!-- {{ $t('chart.title') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="titleForm.show"-->
|
||||
<!-- :disabled="!hasDataPermission('manage',param.privileges)"-->
|
||||
<!-- class="switch-style"-->
|
||||
<!-- @click.stop.native-->
|
||||
<!-- @change="changeTitleStyle"-->
|
||||
<!-- />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -66,90 +66,6 @@
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- v-model="isSetting"-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">-->
|
||||
<!-- <!– <el-form-item :label="$t('chart.show')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="axisForm.show" @change="changeXAxisStyle">{{ $t('chart.show') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <el-form-item :label="$t('chart.position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="axisForm.position" size="mini" @change="changeXAxisStyle">-->
|
||||
<!-- <el-radio-button label="top">{{ $t('chart.text_pos_top') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="bottom">{{ $t('chart.text_pos_bottom') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.name')" class="form-item">-->
|
||||
<!-- <el-input v-model="axisForm.name" size="mini" @blur="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.rotate')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="axisForm.axisLabel.rotate" show-input :show-input-controls="false" :min="-90" :max="90" input-size="mini" @change="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_name_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="axisForm.nameTextStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_name_fontsize')" class="form-item form-item-slider">-->
|
||||
<!-- <el-select v-model="axisForm.nameTextStyle.fontSize" :placeholder="$t('chart.axis_name_fontsize')" @change="changeXAxisStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-divider />-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="axisForm.splitLine.show" @change="changeXAxisStyle">{{ $t('chart.axis_show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <span v-show="axisForm.splitLine.show">-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="axisForm.splitLine.lineStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_width')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="axisForm.splitLine.lineStyle.width" :min="1" :max="10" show-input :show-input-controls="false" input-size="mini" @change="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_type')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="axisForm.splitLine.lineStyle.type" size="mini" @change="changeXAxisStyle">-->
|
||||
<!-- <el-radio-button label="solid">{{ $t('chart.axis_type_solid') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="dashed">{{ $t('chart.axis_type_dashed') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="dotted">{{ $t('chart.axis_type_dotted') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-divider />-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="axisForm.axisLabel.show" @change="changeXAxisStyle">{{ $t('chart.axis_label_show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <span v-show="axisForm.axisLabel.show">-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="axisForm.axisLabel.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_fontsize')" class="form-item form-item-slider">-->
|
||||
<!-- <el-select v-model="axisForm.axisLabel.fontSize" :placeholder="$t('chart.axis_label_fontsize')" @change="changeXAxisStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-divider />-->
|
||||
<!-- <el-form-item :label="$t('chart.content_formatter')" class="form-item">-->
|
||||
<!-- <el-input v-model="axisForm.axisLabel.formatter" type="textarea" :autosize="{ minRows: 4, maxRows: 4}" @blur="changeXAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" size="mini" class="shape-item" :disabled="!axisForm.show || !hasDataPermission('manage',param.privileges)">-->
|
||||
<!-- {{ $t('chart.xAxis') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="axisForm.show"-->
|
||||
<!-- :disabled="!hasDataPermission('manage',param.privileges)"-->
|
||||
<!-- class="switch-style"-->
|
||||
<!-- @click.stop.native-->
|
||||
<!-- @change="changeXAxisStyle"-->
|
||||
<!-- />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -66,90 +66,6 @@
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- v-model="isSetting"-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">-->
|
||||
<!-- <!– <el-form-item :label="$t('chart.show')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <el-form-item :label="$t('chart.position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="axisForm.position" size="mini" @change="changeYAxisStyle">-->
|
||||
<!-- <el-radio-button label="left">{{ $t('chart.text_pos_left') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="right">{{ $t('chart.text_pos_right') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.name')" class="form-item">-->
|
||||
<!-- <el-input v-model="axisForm.name" size="mini" @blur="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.rotate')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="axisForm.axisLabel.rotate" show-input :show-input-controls="false" :min="-90" :max="90" input-size="mini" @change="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_name_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="axisForm.nameTextStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_name_fontsize')" class="form-item form-item-slider">-->
|
||||
<!-- <el-select v-model="axisForm.nameTextStyle.fontSize" :placeholder="$t('chart.axis_name_fontsize')" @change="changeYAxisStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-divider />-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="axisForm.splitLine.show" @change="changeYAxisStyle">{{ $t('chart.axis_show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <span v-show="axisForm.splitLine.show">-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="axisForm.splitLine.lineStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_width')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="axisForm.splitLine.lineStyle.width" :min="1" :max="10" show-input :show-input-controls="false" input-size="mini" @change="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_type')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="axisForm.splitLine.lineStyle.type" size="mini" @change="changeYAxisStyle">-->
|
||||
<!-- <el-radio-button label="solid">{{ $t('chart.axis_type_solid') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="dashed">{{ $t('chart.axis_type_dashed') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="dotted">{{ $t('chart.axis_type_dotted') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-divider />-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="axisForm.axisLabel.show" @change="changeYAxisStyle">{{ $t('chart.axis_label_show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <span v-show="axisForm.axisLabel.show">-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="axisForm.axisLabel.color" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.axis_label_fontsize')" class="form-item form-item-slider">-->
|
||||
<!-- <el-select v-model="axisForm.axisLabel.fontSize" :placeholder="$t('chart.axis_label_fontsize')" @change="changeYAxisStyle">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-divider />-->
|
||||
<!-- <el-form-item :label="$t('chart.content_formatter')" class="form-item">-->
|
||||
<!-- <el-input v-model="axisForm.axisLabel.formatter" type="textarea" :autosize="{ minRows: 4, maxRows: 4}" @blur="changeYAxisStyle" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" size="mini" class="shape-item" :disabled="!axisForm.show || !hasDataPermission('manage',param.privileges)">-->
|
||||
<!-- {{ $t('chart.yAxis') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="axisForm.show"-->
|
||||
<!-- :disabled="!hasDataPermission('manage',param.privileges)"-->
|
||||
<!-- class="switch-style"-->
|
||||
<!-- @click.stop.native-->
|
||||
<!-- @change="changeYAxisStyle"-->
|
||||
<!-- />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -42,58 +42,6 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="colorForm" :model="colorForm" label-width="80px" size="mini">-->
|
||||
<!-- <div v-if="sourceType==='view' || sourceType==='panelEchart'">-->
|
||||
<!-- <el-form-item v-show="chart.type && !chart.type.includes('table') && !chart.type.includes('text')" :label="$t('chart.color_case')" class="form-item">-->
|
||||
<!-- <el-select v-model="colorForm.value" :placeholder="$t('chart.pls_slc_color_case')" size="mini" @change="changeColorCase">-->
|
||||
<!-- <el-option v-for="option in colorCases" :key="option.value" :label="option.name" :value="option.value" style="display: flex;align-items: center;">-->
|
||||
<!-- <div style="float: left">-->
|
||||
<!-- <span v-for="(c,index) in option.colors" :key="index" :style="{width: '20px',height: '20px',float: 'left',backgroundColor: c}" />-->
|
||||
<!-- </div>-->
|
||||
<!-- <span style="margin-left: 4px;">{{ option.name }}</span>-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- <el-form-item v-show="(chart.type && chart.type.includes('text')) || sourceType==='panelTable'" :label="$t('chart.dimension_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="colorForm.dimensionColor" style="margin-top: 6px;cursor: pointer;z-index: 1003;border: solid 1px black" @change="changeColorCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item v-show="(chart.type && chart.type.includes('text')) || sourceType==='panelTable'" :label="$t('chart.quota_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="colorForm.quotaColor" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeColorCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div v-if="sourceType==='view' || sourceType==='panelTable'">-->
|
||||
<!-- <el-form-item v-show="(chart.type && chart.type.includes('table')) || sourceType==='panelTable'" :label="$t('chart.table_header_bg')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="colorForm.tableHeaderBgColor" style="margin-top: 6px;cursor: pointer;z-index: 1002;border: solid 1px black" @change="changeColorCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item v-show="(chart.type && chart.type.includes('table')) || sourceType==='panelTable'" :label="$t('chart.table_item_bg')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="colorForm.tableItemBgColor" style="margin-top: 6px;cursor: pointer;z-index: 1003;border: solid 1px black" @change="changeColorCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item v-show="(chart.type && chart.type.includes('table')) || sourceType==='panelTable'" :label="$t('chart.table_item_font_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="colorForm.tableFontColor" style="margin-top: 6px;cursor: pointer;z-index: 1004;border: solid 1px black" @change="changeColorCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <!– 暂时不支持该功能–>-->
|
||||
<!-- <!– <el-form-item v-show="(chart.type && chart.type.includes('table')) || sourceType==='panelTable'" :label="$t('chart.stripe')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="colorForm.tableStripe" @change="changeColorCase">{{ $t('chart.stripe') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- <el-form-item v-show="chart.type && !chart.type.includes('text')" :label="$t('chart.not_alpha')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="colorForm.alpha" show-input :show-input-controls="false" input-size="mini" @change="changeColorCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" :disabled="param && !hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">{{ $t('chart.color') }}<i class="el-icon-setting el-icon--right" /></el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -61,85 +61,6 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- v-model="isSetting"-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form v-show="chart.type && !chart.type.includes('gauge')" ref="labelForm" :model="labelForm" label-width="80px" size="mini">-->
|
||||
<!-- <!– <el-form-item :label="$t('chart.show')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="labelForm.show" @change="changeLabelAttr">{{ $t('chart.show') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <el-form-item :label="$t('chart.pie_label_line_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="labelForm.labelLine.show" @change="changeLabelAttr">{{ $t('chart.pie_label_line_show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="labelForm.fontSize" :placeholder="$t('chart.text_fontsize')" size="mini" @change="changeLabelAttr">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="labelForm.color" style="margin-top: 6px;cursor: pointer;z-index: 999;border: solid 1px black" @change="changeLabelAttr" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.label_position')" class="form-item">-->
|
||||
<!-- <el-select v-model="labelForm.position" :placeholder="$t('chart.label_position')" @change="changeLabelAttr">-->
|
||||
<!-- <el-option v-for="option in labelPosition" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item class="form-item">-->
|
||||
<!-- <span slot="label">-->
|
||||
<!-- <span class="span-box">-->
|
||||
<!-- <span>{{ $t('chart.content_formatter') }}</span>-->
|
||||
<!-- <el-tooltip class="item" effect="dark" placement="bottom">-->
|
||||
<!-- <div slot="content">-->
|
||||
<!-- 字符串模板 模板变量有:<br>{a}:系列名。<br>{b}:数据名。<br>{c}:数据值。<br>{d}:百分比(用于饼图等)。-->
|
||||
<!-- </div>-->
|
||||
<!-- <i class="el-icon-info" style="cursor: pointer;" />-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </span>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-input v-model="labelForm.formatter" type="textarea" :autosize="{ minRows: 4, maxRows: 4}" @blur="changeLabelAttr" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('gauge')" ref="labelForm" :model="labelForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="labelForm.show" @change="changeLabelAttr">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="labelForm.fontSize" :placeholder="$t('chart.text_fontsize')" size="mini" @change="changeLabelAttr">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="labelForm.color" style="margin-top: 6px;cursor: pointer;z-index: 999;border: solid 1px black" @change="changeLabelAttr" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item class="form-item">-->
|
||||
<!-- <span slot="label">-->
|
||||
<!-- <span class="span-box">-->
|
||||
<!-- <span>{{ $t('chart.content_formatter') }}</span>-->
|
||||
<!-- </span>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-input v-model="labelForm.gaugeFormatter" type="textarea" :autosize="{ minRows: 4, maxRows: 4}" @blur="changeLabelAttr" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" size="mini" class="shape-item" :disabled="!labelForm.show || !hasDataPermission('manage',param.privileges)">-->
|
||||
<!-- {{ $t('chart.label') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="labelForm.show"-->
|
||||
<!-- :disabled="!hasDataPermission('manage',param.privileges)"-->
|
||||
<!-- class="switch-style"-->
|
||||
<!-- @click.stop.native-->
|
||||
<!-- @change="changeLabelAttr"-->
|
||||
<!-- />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -161,150 +161,6 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <el-popover-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('bar')" ref="sizeFormBar" :model="sizeForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.adapt')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="sizeForm.barDefault" @change="changeBarSizeCase">{{ $t('chart.adapt') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.bar_width')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.barWidth" :disabled="sizeForm.barDefault" show-input :show-input-controls="false" input-size="mini" :min="1" :max="80" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.bar_gap')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.barGap" :disabled="sizeForm.barDefault" show-input :show-input-controls="false" input-size="mini" :min="0" :max="5" :step="0.1" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('line')" ref="sizeFormLine" :model="sizeForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.line_width')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.lineWidth" show-input :show-input-controls="false" input-size="mini" :min="0" :max="10" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.line_type')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="sizeForm.lineType" @change="changeBarSizeCase">-->
|
||||
<!-- <el-radio-button label="solid">{{ $t('chart.line_type_solid') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="dashed">{{ $t('chart.line_type_dashed') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.line_symbol')" class="form-item">-->
|
||||
<!-- <el-select v-model="sizeForm.lineSymbol" :placeholder="$t('chart.line_symbol')" @change="changeBarSizeCase">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in lineSymbolOptions"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.line_symbol_size')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.lineSymbolSize" show-input :show-input-controls="false" input-size="mini" :min="0" :max="20" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.line_smooth')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="sizeForm.lineSmooth" @change="changeBarSizeCase">{{ $t('chart.line_smooth') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.line_area')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="sizeForm.lineArea" @change="changeBarSizeCase">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('pie')" ref="sizeFormPie" :model="sizeForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.pie_inner_radius')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.pieInnerRadius" show-input :show-input-controls="false" input-size="mini" :min="0" :max="100" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.pie_outer_radius')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.pieOuterRadius" show-input :show-input-controls="false" input-size="mini" :min="0" :max="100" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- <span v-show="chart.type && chart.type.includes('pie-rose')">-->
|
||||
<!-- <el-form-item :label="$t('chart.rose_type')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="sizeForm.pieRoseType" size="mini" @change="changeBarSizeCase">-->
|
||||
<!-- <el-radio-button label="radius">{{ $t('chart.radius_mode') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="area">{{ $t('chart.area_mode') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.rose_radius')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.pieRoseRadius" show-input :show-input-controls="false" input-size="mini" :min="0" :max="100" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </span>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('funnel')" ref="sizeFormPie" :model="sizeForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.funnel_width')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.funnelWidth" show-input :show-input-controls="false" input-size="mini" :min="0" :max="100" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('radar')" ref="sizeFormPie" :model="sizeForm" label-width="80px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.shape')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="sizeForm.radarShape" size="mini" @change="changeBarSizeCase">-->
|
||||
<!-- <el-radio-button label="polygon">{{ $t('chart.polygon') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="circle">{{ $t('chart.circle') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('table')" ref="sizeFormPie" :model="sizeForm" label-width="100px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.table_title_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="sizeForm.tableTitleFontSize" :placeholder="$t('chart.table_title_fontsize')" @change="changeBarSizeCase">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.table_item_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="sizeForm.tableItemFontSize" :placeholder="$t('chart.table_item_fontsize')" @change="changeBarSizeCase">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.table_title_height')" class="form-item">-->
|
||||
<!-- <el-slider v-model="sizeForm.tableTitleHeight" :min="36" :max="100" show-input :show-input-controls="false" input-size="mini" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.table_item_height')" class="form-item">-->
|
||||
<!-- <el-slider v-model="sizeForm.tableItemHeight" :min="36" :max="100" show-input :show-input-controls="false" input-size="mini" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('gauge')" ref="sizeFormGauge" :model="sizeForm" label-width="100px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.min')" class="form-item form-item-slider">-->
|
||||
<!-- <el-input-number v-model="sizeForm.gaugeMin" size="mini" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.max')" class="form-item form-item-slider">-->
|
||||
<!-- <el-input-number v-model="sizeForm.gaugeMax" size="mini" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.start_angle')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.gaugeStartAngle" show-input :show-input-controls="false" input-size="mini" :min="-360" :max="360" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.end_angle')" class="form-item form-item-slider">-->
|
||||
<!-- <el-slider v-model="sizeForm.gaugeEndAngle" show-input :show-input-controls="false" input-size="mini" :min="-360" :max="360" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <el-form v-show="chart.type && chart.type.includes('text')" ref="sizeFormPie" :model="sizeForm" label-width="100px" size="mini">-->
|
||||
<!-- <el-form-item :label="$t('chart.dimension_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="sizeForm.dimensionShow" @change="changeBarSizeCase">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.dimension_font_size')" class="form-item">-->
|
||||
<!-- <el-select v-model="sizeForm.dimensionFontSize" :placeholder="$t('chart.dimension_font_size')" @change="changeBarSizeCase">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.quota_show')" class="form-item">-->
|
||||
<!-- <el-checkbox v-model="sizeForm.quotaShow" @change="changeBarSizeCase">{{ $t('chart.show') }}</el-checkbox>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.quota_font_size')" class="form-item">-->
|
||||
<!-- <el-select v-model="sizeForm.quotaFontSize" :placeholder="$t('chart.quota_font_size')" @change="changeBarSizeCase">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.space_split')" class="form-item">-->
|
||||
<!-- <el-input-number v-model="sizeForm.spaceSplit" size="mini" @change="changeBarSizeCase" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" :disabled="!hasDataPermission('manage',param.privileges)" size="mini" class="shape-item">{{ $t('chart.size') }}<i class="el-icon-setting el-icon--right" /></el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -49,73 +49,6 @@
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<!-- <div style="width: 100%">-->
|
||||
<!-- <el-popover-->
|
||||
<!-- v-model="isSetting"-->
|
||||
<!-- placement="right"-->
|
||||
<!-- width="400"-->
|
||||
<!-- trigger="click"-->
|
||||
<!-- >-->
|
||||
<!-- <el-col>-->
|
||||
<!-- <el-form ref="tooltipForm" :model="tooltipForm" label-width="80px" size="mini">-->
|
||||
<!-- <!– <el-form-item :label="$t('chart.show')" class="form-item">–>-->
|
||||
<!-- <!– <el-checkbox v-model="tooltipForm.show" @change="changeTooltipAttr">{{ $t('chart.show') }}</el-checkbox>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <el-form-item :label="$t('chart.trigger_position')" class="form-item">-->
|
||||
<!-- <el-radio-group v-model="tooltipForm.trigger" size="mini" @change="changeTooltipAttr">-->
|
||||
<!-- <el-radio-button label="item">{{ $t('chart.tooltip_item') }}</el-radio-button>-->
|
||||
<!-- <el-radio-button label="axis">{{ $t('chart.tooltip_axis') }}</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_fontsize')" class="form-item">-->
|
||||
<!-- <el-select v-model="tooltipForm.textStyle.fontSize" :placeholder="$t('chart.text_fontsize')" size="mini" @change="changeTooltipAttr">-->
|
||||
<!-- <el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item :label="$t('chart.text_color')" class="form-item">-->
|
||||
<!-- <colorPicker v-model="tooltipForm.textStyle.color" style="margin-top: 6px;cursor: pointer;z-index: 999;border: solid 1px black" @change="changeTooltipAttr" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item class="form-item">-->
|
||||
<!-- <span slot="label">-->
|
||||
<!-- <span class="span-box">-->
|
||||
<!-- <span>{{ $t('chart.content_formatter') }}</span>-->
|
||||
<!-- <el-tooltip class="item" effect="dark" placement="bottom">-->
|
||||
<!-- <div slot="content">-->
|
||||
<!-- 模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。-->
|
||||
<!-- <br>-->
|
||||
<!-- 在 trigger 为 'axis' 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。-->
|
||||
<!-- <br>-->
|
||||
<!-- 不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:-->
|
||||
<!-- <br><br>-->
|
||||
<!-- 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)-->
|
||||
<!-- <br>-->
|
||||
<!-- 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)-->
|
||||
<!-- <br>-->
|
||||
<!-- 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)-->
|
||||
<!-- <br>-->
|
||||
<!-- 饼图、仪表板、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)-->
|
||||
<!-- </div>-->
|
||||
<!-- <i class="el-icon-info" style="cursor: pointer;" />-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </span>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-input v-model="tooltipForm.formatter" type="textarea" :autosize="{ minRows: 4, maxRows: 4}" :placeholder="$t('chart.formatter_plc')" @blur="changeTooltipAttr" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </el-col>-->
|
||||
|
||||
<!-- <el-button slot="reference" size="mini" class="shape-item" :disabled="!tooltipForm.show || !hasDataPermission('manage',param.privileges)">-->
|
||||
<!-- {{ $t('chart.tooltip') }}<i class="el-icon-setting el-icon--right" />-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="tooltipForm.show"-->
|
||||
<!-- :disabled="!hasDataPermission('manage',param.privileges)"-->
|
||||
<!-- class="switch-style"-->
|
||||
<!-- @click.stop.native-->
|
||||
<!-- @change="changeTooltipAttr"-->
|
||||
<!-- />-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -483,7 +483,7 @@
|
||||
<el-col style="height: 100%;min-width: 500px;border-top: 1px solid #E6E6E6;">
|
||||
<el-row style="width: 100%;height: 100%;" class="padding-lr">
|
||||
<div ref="imageWrapper" style="height: 100%">
|
||||
<chart-component v-if="httpRequest.status && chart.type && !chart.type.includes('table') && !chart.type.includes('text')" :chart-id="chart.id" :chart="chart" class="chart-class" @onChartClick="chartClick" />
|
||||
<chart-component v-if="httpRequest.status && chart.type && !chart.type.includes('table') && !chart.type.includes('text')" ref="dynamicChart" :chart-id="chart.id" :chart="chart" class="chart-class" @onChartClick="chartClick" />
|
||||
<table-normal v-if="httpRequest.status && chart.type && chart.type.includes('table')" :chart="chart" class="table-class" />
|
||||
<label-normal v-if="httpRequest.status && chart.type && chart.type.includes('text')" :chart="chart" class="table-class" />
|
||||
<div v-if="!httpRequest.status" class="chart-error-class">
|
||||
@ -572,7 +572,7 @@
|
||||
<p style="margin-top: 10px;color:#F56C6C;font-size: 12px;">{{ $t('chart.change_ds_tip') }}</p>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button size="mini" @click="closeChangeChart">{{ $t('chart.cancel') }}</el-button>
|
||||
<el-button type="primary" size="mini" :disabled="!table || !table.id || !changeTable || !changeTable.id" @click="changeChart">{{ $t('chart.confirm') }}</el-button>
|
||||
<el-button type="primary" size="mini" :disabled="!changeTable || !changeTable.id" @click="changeChart">{{ $t('chart.confirm') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@ -711,7 +711,8 @@ export default {
|
||||
},
|
||||
moveId: -1,
|
||||
chart: {
|
||||
id: 'echart'
|
||||
id: 'echart',
|
||||
type: null
|
||||
},
|
||||
dimensionFilterEdit: false,
|
||||
dimensionItem: {},
|
||||
@ -754,23 +755,31 @@ export default {
|
||||
// this.getData(this.$store.state.chart.viewId)
|
||||
// return this.$store.state.chart.viewId
|
||||
// }
|
||||
chartType() {
|
||||
return this.chart.type
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'param': function() {
|
||||
this.resetDrill()
|
||||
if (this.param.optType === 'new') {
|
||||
//
|
||||
} else {
|
||||
this.resetDrill()
|
||||
this.getData(this.param.id)
|
||||
}
|
||||
},
|
||||
searchField(val) {
|
||||
this.fieldFilter(val)
|
||||
},
|
||||
'chartType': function(newVal, oldVal) {
|
||||
if (newVal === 'map' && newVal !== oldVal) {
|
||||
this.initAreas()
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// this.get(this.$store.state.chart.viewId);
|
||||
this.initAreas()
|
||||
// this.initAreas()
|
||||
},
|
||||
mounted() {
|
||||
// this.get(this.$store.state.chart.viewId);
|
||||
@ -821,6 +830,9 @@ export default {
|
||||
return
|
||||
}
|
||||
view.tableId = this.view.tableId
|
||||
if (view.type === 'map' && view.xaxis.length > 1) {
|
||||
view.xaxis = [view.xaxis[0]]
|
||||
}
|
||||
view.xaxis.forEach(function(ele) {
|
||||
// if (!ele.summary || ele.summary === '') {
|
||||
// ele.summary = 'sum'
|
||||
@ -838,6 +850,9 @@ export default {
|
||||
ele.filter = []
|
||||
}
|
||||
})
|
||||
if (view.type === 'map' && view.yaxis.length > 1) {
|
||||
view.yaxis = [view.yaxis[0]]
|
||||
}
|
||||
view.yaxis.forEach(function(ele) {
|
||||
if (!ele.summary || ele.summary === '') {
|
||||
if (ele.id === 'count' || ele.deType === 0 || ele.deType === 1) {
|
||||
@ -909,8 +924,8 @@ export default {
|
||||
// this.get(response.data.id);
|
||||
// this.getData(response.data.id)
|
||||
|
||||
this.resetDrill()
|
||||
if (getData) {
|
||||
this.resetDrill()
|
||||
this.getData(response.data.id)
|
||||
} else {
|
||||
this.getChart(response.data.id)
|
||||
@ -925,67 +940,6 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
// saveSnapshot() {
|
||||
// if (this.view.title && this.view.title.length > 50) {
|
||||
// this.$warning(this.$t('chart.title_limit'))
|
||||
// return
|
||||
// }
|
||||
// if (this.loading) {
|
||||
// return
|
||||
// }
|
||||
// this.loading = true
|
||||
// html2canvas(this.$refs.imageWrapper).then(canvas => {
|
||||
// const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.1是图片质量
|
||||
// if (snapshot !== '') {
|
||||
// const view = JSON.parse(JSON.stringify(this.view))
|
||||
// view.id = this.view.id
|
||||
// view.sceneId = this.view.sceneId
|
||||
// view.name = this.view.name ? this.view.name : this.table.name
|
||||
// view.tableId = this.view.tableId
|
||||
// view.xaxis.forEach(function(ele) {
|
||||
// // if (!ele.summary || ele.summary === '') {
|
||||
// // ele.summary = 'sum'
|
||||
// // }
|
||||
// if (!ele.sort || ele.sort === '') {
|
||||
// ele.sort = 'none'
|
||||
// }
|
||||
// if (!ele.filter) {
|
||||
// ele.filter = []
|
||||
// }
|
||||
// })
|
||||
// view.yaxis.forEach(function(ele) {
|
||||
// if (!ele.summary || ele.summary === '') {
|
||||
// if (ele.id === 'count') {
|
||||
// ele.summary = 'count'
|
||||
// } else {
|
||||
// ele.summary = 'sum'
|
||||
// }
|
||||
// }
|
||||
// if (!ele.sort || ele.sort === '') {
|
||||
// ele.sort = 'none'
|
||||
// }
|
||||
// if (!ele.filter) {
|
||||
// ele.filter = []
|
||||
// }
|
||||
// })
|
||||
// if (view.type.startsWith('pie') || view.type.startsWith('funnel') || view.type.startsWith('gauge')) {
|
||||
// if (view.yaxis.length > 1) {
|
||||
// view.yaxis.splice(1, view.yaxis.length)
|
||||
// }
|
||||
// }
|
||||
// view.xaxis = JSON.stringify(view.xaxis)
|
||||
// view.yaxis = JSON.stringify(view.yaxis)
|
||||
// view.customAttr = JSON.stringify(view.customAttr)
|
||||
// view.customStyle = JSON.stringify(view.customStyle)
|
||||
// view.customFilter = JSON.stringify(view.customFilter)
|
||||
// view.snapshot = snapshot
|
||||
// post('/chart/view/save', view).then(response => {
|
||||
// this.loading = false
|
||||
// this.$success(this.$t('commons.save_success'))
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
closeEdit() {
|
||||
if (this.view.title && this.view.title.length > 50) {
|
||||
this.$warning(this.$t('chart.title_limit'))
|
||||
@ -1023,7 +977,7 @@ export default {
|
||||
if (!response.data.drill) {
|
||||
this.drillClickDimensionList.splice(this.drillClickDimensionList.length - 1, 1)
|
||||
}
|
||||
this.drillFilters = JSON.parse(JSON.stringify(response.data.drillFilters))
|
||||
this.drillFilters = JSON.parse(JSON.stringify(response.data.drillFilters ? response.data.drillFilters : []))
|
||||
}).catch(err => {
|
||||
this.resetView()
|
||||
this.resetDrill()
|
||||
@ -1067,74 +1021,6 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
// 左边往右边拖动时的事件
|
||||
// start1(e) {
|
||||
// // console.log(e)
|
||||
// e.clone.className = 'item'
|
||||
// e.item.className = 'item'
|
||||
// },
|
||||
// end1(e) {
|
||||
// // console.log(e)
|
||||
// e.clone.className = 'item'
|
||||
// e.item.className = 'item'
|
||||
// this.refuseMove(e)
|
||||
// this.removeCheckedKey(e)
|
||||
// this.save(true)
|
||||
// },
|
||||
// 右边往左边拖动时的事件
|
||||
// start2(e) {
|
||||
// console.log(e)
|
||||
// },
|
||||
// end2(e) {
|
||||
// // console.log(e)
|
||||
// this.removeDuplicateKey(e)
|
||||
// this.save(true)
|
||||
// },
|
||||
// removeCheckedKey(e) {
|
||||
// const that = this
|
||||
// const xItems = this.view.xaxis.filter(function(m) {
|
||||
// return m.id === that.moveId
|
||||
// })
|
||||
// const yItems = this.view.yaxis.filter(function(m) {
|
||||
// return m.id === that.moveId
|
||||
// })
|
||||
// if (xItems && xItems.length > 1) {
|
||||
// this.view.xaxis.splice(e.newDraggableIndex, 1)
|
||||
// }
|
||||
// if (yItems && yItems.length > 1) {
|
||||
// this.view.yaxis.splice(e.newDraggableIndex, 1)
|
||||
// }
|
||||
// },
|
||||
// refuseMove(e) {
|
||||
// const that = this
|
||||
// const xItems = this.dimension.filter(function(m) {
|
||||
// return m.id === that.moveId
|
||||
// })
|
||||
// const yItems = this.quota.filter(function(m) {
|
||||
// return m.id === that.moveId
|
||||
// })
|
||||
// if (xItems && xItems.length > 1) {
|
||||
// this.dimension.splice(e.newDraggableIndex, 1)
|
||||
// }
|
||||
// if (yItems && yItems.length > 1) {
|
||||
// this.quota.splice(e.newDraggableIndex, 1)
|
||||
// }
|
||||
// },
|
||||
// removeDuplicateKey(e) {
|
||||
// const that = this
|
||||
// const xItems = this.dimension.filter(function(m) {
|
||||
// return m.id === that.moveId
|
||||
// })
|
||||
// const yItems = this.quota.filter(function(m) {
|
||||
// return m.id === that.moveId
|
||||
// })
|
||||
// if (xItems && xItems.length > 1) {
|
||||
// this.dimension.splice(e.newDraggableIndex, 1)
|
||||
// }
|
||||
// if (yItems && yItems.length > 1) {
|
||||
// this.quota.splice(e.newDraggableIndex, 1)
|
||||
// }
|
||||
// },
|
||||
// move回调方法
|
||||
onMove(e, originalEvent) {
|
||||
// console.log(e)
|
||||
@ -1368,6 +1254,7 @@ export default {
|
||||
this.view.customFilter = []
|
||||
this.view.extStack = []
|
||||
this.view.extBubble = []
|
||||
this.view.drillFields = []
|
||||
}
|
||||
this.save(true, 'chart', false)
|
||||
},
|
||||
@ -1411,11 +1298,17 @@ export default {
|
||||
}
|
||||
},
|
||||
addXaxis(e) {
|
||||
if (this.view.type === 'map' && this.view.xaxis.length > 1) {
|
||||
this.view.xaxis = [this.view.xaxis[0]]
|
||||
}
|
||||
this.dragCheckType(this.view.xaxis, 'd')
|
||||
this.dragMoveDuplicate(this.view.xaxis, e)
|
||||
this.save(true)
|
||||
},
|
||||
addYaxis(e) {
|
||||
if (this.view.type === 'map' && this.view.yaxis.length > 1) {
|
||||
this.view.yaxis = [this.view.yaxis[0]]
|
||||
}
|
||||
this.dragCheckType(this.view.yaxis, 'q')
|
||||
this.dragMoveDuplicate(this.view.yaxis, e)
|
||||
this.save(true)
|
||||
@ -1444,14 +1337,14 @@ export default {
|
||||
},
|
||||
|
||||
initAreas() {
|
||||
let mapping
|
||||
if ((mapping = localStorage.getItem('areaMapping')) !== null) {
|
||||
this.places = JSON.parse(mapping)
|
||||
return
|
||||
}
|
||||
// let mapping
|
||||
// if ((mapping = localStorage.getItem('areaMapping')) !== null) {
|
||||
// this.places = JSON.parse(mapping)
|
||||
// return
|
||||
// }
|
||||
Object.keys(this.places).length === 0 && areaMapping().then(res => {
|
||||
this.places = res.data
|
||||
localStorage.setItem('areaMapping', JSON.stringify(res.data))
|
||||
// localStorage.setItem('areaMapping', JSON.stringify(res.data))
|
||||
})
|
||||
},
|
||||
|
||||
@ -1513,18 +1406,95 @@ export default {
|
||||
|
||||
chartClick(param) {
|
||||
if (this.drillClickDimensionList.length < this.view.drillFields.length - 1) {
|
||||
this.drillClickDimensionList.push({ dimensionList: param.data.dimensionList })
|
||||
this.getData(this.param.id)
|
||||
// const isSwitch = (this.chart.type === 'map' && this.sendToChildren(param))
|
||||
if (this.chart.type === 'map') {
|
||||
if (this.sendToChildren(param)) {
|
||||
this.drillClickDimensionList.push({ dimensionList: param.data.dimensionList })
|
||||
this.getData(this.param.id)
|
||||
}
|
||||
} else {
|
||||
this.drillClickDimensionList.push({ dimensionList: param.data.dimensionList })
|
||||
this.getData(this.param.id)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
resetDrill() {
|
||||
const length = this.drillClickDimensionList.length
|
||||
this.drillClickDimensionList = []
|
||||
if (this.chart.type === 'map') {
|
||||
this.backToParent(0, length)
|
||||
this.currentAcreaNode = null
|
||||
}
|
||||
},
|
||||
drillJump(index) {
|
||||
const length = this.drillClickDimensionList.length
|
||||
this.drillClickDimensionList = this.drillClickDimensionList.slice(0, index)
|
||||
if (this.chart.type === 'map') {
|
||||
this.backToParent(index, length)
|
||||
}
|
||||
|
||||
this.getData(this.param.id)
|
||||
},
|
||||
// 回到父级地图
|
||||
backToParent(index, length) {
|
||||
if (length <= 0) return
|
||||
const times = length - 1 - index
|
||||
|
||||
let temp = times
|
||||
let tempNode = this.currentAcreaNode
|
||||
while (temp >= 0) {
|
||||
tempNode = this.findEntityByCode(tempNode.pcode, this.places)
|
||||
temp--
|
||||
}
|
||||
|
||||
this.currentAcreaNode = tempNode
|
||||
this.$refs.dynamicChart && this.$refs.dynamicChart.registerDynamicMap && this.$refs.dynamicChart.registerDynamicMap(this.currentAcreaNode.code)
|
||||
},
|
||||
|
||||
// 切换下一级地图
|
||||
sendToChildren(param) {
|
||||
const length = param.data.dimensionList.length
|
||||
const name = param.data.dimensionList[length - 1].value
|
||||
let aCode = null
|
||||
if (this.currentAcreaNode) {
|
||||
aCode = this.currentAcreaNode.code
|
||||
}
|
||||
// const aCode = this.currentAcreaNode ? this.currentAcreaNode.code : null
|
||||
const currentNode = this.findEntityByCode(aCode || this.view.customAttr.areaCode, this.places)
|
||||
if (currentNode && currentNode.children && currentNode.children.length > 0) {
|
||||
const nextNode = currentNode.children.find(item => item.name === name)
|
||||
if (!nextNode || !nextNode.code) return null
|
||||
// this.view.customAttr.areaCode = nextNode.code
|
||||
this.currentAcreaNode = nextNode
|
||||
this.$refs.dynamicChart && this.$refs.dynamicChart.registerDynamicMap && this.$refs.dynamicChart.registerDynamicMap(nextNode.code)
|
||||
return nextNode
|
||||
}
|
||||
},
|
||||
// 根据地名获取areaCode
|
||||
// findEntityByname(name, array) {
|
||||
// if (array === null || array.length === 0) array = this.places
|
||||
// for (let index = 0; index < array.length; index++) {
|
||||
// const node = array[index]
|
||||
// if (node.name === name) return node
|
||||
// if (node.children && node.children.length > 0) {
|
||||
// const temp = this.findEntityByname(name, node.children)
|
||||
// if (temp) return temp
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
findEntityByCode(code, array) {
|
||||
if (array === null || array.length === 0) array = this.places
|
||||
for (let index = 0; index < array.length; index++) {
|
||||
const node = array[index]
|
||||
if (node.code === code) return node
|
||||
if (node.children && node.children.length > 0) {
|
||||
const temp = this.findEntityByCode(code, node.children)
|
||||
if (temp) return temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -9,115 +9,132 @@
|
||||
<el-button size="mini" @click="cancel">
|
||||
{{ $t('dataset.cancel') }}
|
||||
</el-button>
|
||||
<el-button :disabled="!name || fileList.length === 0" size="mini" type="primary" @click="save">
|
||||
<el-button size="mini" type="primary" @click="save">
|
||||
{{ $t('dataset.confirm') }}
|
||||
</el-button>
|
||||
</el-row>
|
||||
</el-row>
|
||||
<el-divider />
|
||||
<el-row>
|
||||
<el-row>
|
||||
<el-col style="width: 500px;">
|
||||
<el-form :inline="true" size="mini" class="row-style">
|
||||
<el-form-item class="form-item">
|
||||
<el-input v-show="!param.tableId" v-model="name" :placeholder="$t('commons.name')" />
|
||||
</el-form-item>
|
||||
<el-form-item class="form-item">
|
||||
<el-upload
|
||||
:action="baseUrl+'dataset/table/excel/upload'"
|
||||
:multiple="false"
|
||||
:show-file-list="false"
|
||||
:file-list="fileList"
|
||||
:data="param"
|
||||
accept=".xls,.xlsx,"
|
||||
:before-upload="beforeUpload"
|
||||
:on-success="uploadSuccess"
|
||||
:on-error="uploadFail"
|
||||
name="file"
|
||||
:headers="headers"
|
||||
>
|
||||
<el-button size="mini" type="primary" :disabled="uploading">
|
||||
<span v-if="!uploading" style="font-size: 12px;">{{ $t('dataset.upload_file') }}</span>
|
||||
<span v-if="uploading" style="font-size: 12px;"><i class="el-icon-loading" /> {{ $t('dataset.uploading') }}</span>
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row style="margin-top: 10px;">
|
||||
<el-card class="box-card dataPreview" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{ $t('dataset.data_preview') }}</span>
|
||||
<span style="font-size: 12px;color: #3d4d66;">({{ $t('dataset.preview_100_data') }})</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<ux-grid
|
||||
ref="plxTable"
|
||||
size="mini"
|
||||
style="width: 100%;"
|
||||
:height="height"
|
||||
:checkbox-config="{highlight: true}"
|
||||
:width-resize="true"
|
||||
>
|
||||
<ux-table-column
|
||||
v-for="field in fields"
|
||||
:key="field.fieldName"
|
||||
min-width="200px"
|
||||
:field="field.fieldName"
|
||||
:title="field.remarks"
|
||||
:resizable="true"
|
||||
>
|
||||
<template slot="header" slot-scope="scope">
|
||||
<span v-if="!param.tableId" style="display: flex;align-items: center;">
|
||||
<span style="display: inline-block;font-size: 12px;">
|
||||
<div style="display: inline-block;">
|
||||
<el-select v-model="field.fieldType" size="mini" style="display: inline-block;width: 120px;">
|
||||
<el-option
|
||||
v-for="item in fieldOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
<span style="float: left">
|
||||
<svg-icon v-if="item.value === 'TEXT'" icon-class="field_text" class="field-icon-text" />
|
||||
<svg-icon v-if="item.value === 'DATETIME'" icon-class="field_time" class="field-icon-time" />
|
||||
<svg-icon v-if="item.value === 'LONG' || item.value === 'DOUBLE'" icon-class="field_value" class="field-icon-value" />
|
||||
</span>
|
||||
<span style="float: left; color: #8492a6; font-size: 12px">{{ item.label }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
<el-container>
|
||||
<el-aside width="200px" >
|
||||
<el-row>
|
||||
<el-col style="width: 200px;">
|
||||
<el-form :inline="true" size="mini" class="row-style">
|
||||
<el-form-item class="form-item">
|
||||
<el-upload
|
||||
:action="baseUrl+'dataset/table/excel/upload'"
|
||||
:multiple="false"
|
||||
:show-file-list="false"
|
||||
:file-list="fileList"
|
||||
:data="param"
|
||||
accept=".xls,.xlsx,"
|
||||
:before-upload="beforeUpload"
|
||||
:on-success="uploadSuccess"
|
||||
:on-error="uploadFail"
|
||||
name="file"
|
||||
:headers="headers"
|
||||
>
|
||||
<el-button size="mini" type="primary" :disabled="uploading">
|
||||
<span v-if="!uploading" style="font-size: 12px;">{{ $t('dataset.upload_file') }}</span>
|
||||
<span v-if="uploading" style="font-size: 12px;"><i class="el-icon-loading" /> {{ $t('dataset.uploading') }}</span>
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-tree ref="tree"
|
||||
:data="excelData"
|
||||
|
||||
node-key="excelId"
|
||||
:props="props"
|
||||
show-checkbox
|
||||
highlight-current
|
||||
@node-click="handleNodeClick"
|
||||
@check-change="handleCheckChange">
|
||||
</el-tree>
|
||||
|
||||
|
||||
</el-aside>
|
||||
|
||||
<el-container>
|
||||
<el-header style="text-align: left;" height="30px">
|
||||
<el-row>
|
||||
<el-col style="width: 500px;">
|
||||
<el-form :inline="true" size="mini" class="row-style">
|
||||
<el-form-item class="form-item" :label="$t('dataset.name')" v-show="!param.tableId">
|
||||
<el-input v-model="sheetObj.datasetName" :placeholder="$t('commons.name')" @change="changeDatasetName" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<div>
|
||||
<span>{{ $t('dataset.data_preview') }}</span>
|
||||
<span style="font-size: 12px;color: #3d4d66;">({{ $t('dataset.preview_100_data') }})</span>
|
||||
</div>
|
||||
<!-- <span style="margin-left: 8px;">-->
|
||||
<!-- <span v-if="field.fieldType === 'TEXT'">-->
|
||||
<!-- <svg-icon v-if="field.fieldType === 'TEXT'" icon-class="field_text" class="field-icon-text" />-->
|
||||
<!-- <span class="field-class">{{ $t('dataset.text') }}</span>-->
|
||||
<!-- </span>-->
|
||||
<!-- <span v-if="field.fieldType === 'DATETIME'">-->
|
||||
<!-- <svg-icon v-if="field.fieldType === 'DATETIME'" icon-class="field_time" class="field-icon-time" />-->
|
||||
<!-- <span class="field-class">{{ $t('dataset.time') }}</span>-->
|
||||
<!-- </span>-->
|
||||
<!-- <span v-if="field.fieldType === 'LONG' || field.fieldType === 'DOUBLE'">-->
|
||||
<!-- <svg-icon v-if="field.fieldType === 'LONG' || field.fieldType === 'DOUBLE'" icon-class="field_value" class="field-icon-value" />-->
|
||||
<!-- <span v-if="field.fieldType === 'LONG'" class="field-class">{{ $t('dataset.value') }}</span>-->
|
||||
<!-- <span v-if="field.fieldType === 'DOUBLE'" class="field-class">{{ $t('dataset.value') + '(' + $t('dataset.float') + ')' }}</span>-->
|
||||
<!-- </span>-->
|
||||
<!-- </span>-->
|
||||
</span>
|
||||
<span style="font-size: 12px;margin-left: 10px;">
|
||||
{{ field.remarks }}
|
||||
</span>
|
||||
</span>
|
||||
<span v-else style="font-size: 12px;">
|
||||
{{ field.remarks }}
|
||||
</span>
|
||||
</template>
|
||||
</ux-table-column>
|
||||
</ux-grid>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-header>
|
||||
<el-main>
|
||||
|
||||
<div class="text item" >
|
||||
<ux-grid
|
||||
ref="plxTable"
|
||||
size="mini"
|
||||
style="width: 100%;"
|
||||
:height="height"
|
||||
:checkbox-config="{highlight: true}"
|
||||
:width-resize="true"
|
||||
>
|
||||
<ux-table-column
|
||||
v-for="field in sheetObj.fields"
|
||||
:key="field.fieldName"
|
||||
min-width="200px"
|
||||
:field="field.fieldName"
|
||||
:title="field.remarks"
|
||||
:resizable="true"
|
||||
>
|
||||
<template slot="header" slot-scope="scope">
|
||||
<span style="display: flex;align-items: center;">
|
||||
<span style="display: inline-block;font-size: 12px;">
|
||||
<div style="display: inline-block;">
|
||||
<el-select v-model="field.fieldType" size="mini" style="display: inline-block;width: 120px;" @change="changeDatasetName">
|
||||
<el-option
|
||||
v-for="item in fieldOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
<span style="float: left">
|
||||
<svg-icon v-if="item.value === 'TEXT'" icon-class="field_text" class="field-icon-text" />
|
||||
<svg-icon v-if="item.value === 'DATETIME'" icon-class="field_time" class="field-icon-time" />
|
||||
<svg-icon v-if="item.value === 'LONG' || item.value === 'DOUBLE'" icon-class="field_value" class="field-icon-value" />
|
||||
</span>
|
||||
<span style="float: left; color: #8492a6; font-size: 12px">{{ item.label }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</span>
|
||||
<span style="font-size: 12px;margin-left: 10px;">
|
||||
{{ field.remarks }}
|
||||
</span>
|
||||
</span>
|
||||
<!-- <span v-else style="font-size: 12px;">-->
|
||||
<!-- {{ field.remarks }}-->
|
||||
<!-- </span>-->
|
||||
</template>
|
||||
</ux-table-column>
|
||||
</ux-grid>
|
||||
</div>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</el-container>
|
||||
</el-row>
|
||||
</el-row>
|
||||
</el-col>
|
||||
@ -140,12 +157,15 @@ export default {
|
||||
tableId: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
editType: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
name: '',
|
||||
fields: [],
|
||||
sheetObj: {datasetName: " ", fields: []},
|
||||
sheets: [],
|
||||
data: [],
|
||||
mode: '1',
|
||||
@ -160,13 +180,18 @@ export default {
|
||||
{ label: this.$t('dataset.time'), value: 'DATETIME' },
|
||||
{ label: this.$t('dataset.value'), value: 'LONG' },
|
||||
{ label: this.$t('dataset.value') + '(' + this.$t('dataset.float') + ')', value: 'DOUBLE' }
|
||||
]
|
||||
],
|
||||
props: {
|
||||
label: 'excelLable',
|
||||
children: 'sheets'
|
||||
},
|
||||
count: 1,
|
||||
excelData: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
},
|
||||
mounted() {
|
||||
// this.initDataSource()
|
||||
window.onresize = () => {
|
||||
this.calHeight()
|
||||
}
|
||||
@ -176,13 +201,33 @@ export default {
|
||||
if (!this.param.tableId) {
|
||||
this.param.tableId = ''
|
||||
}
|
||||
if (!this.param.editType) {
|
||||
this.param.editType = 0
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// initDataSource() {
|
||||
// listDatasource().then(response => {
|
||||
// this.options = response.data
|
||||
// })
|
||||
// },
|
||||
handleCheckChange(data, checked, indeterminate) {
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
if(data.sheet){
|
||||
this.sheetObj = data
|
||||
this.fields = data.fields
|
||||
this.jsonArray = data.jsonArray
|
||||
const datas = this.jsonArray
|
||||
this.$refs.plxTable.reloadData(datas)
|
||||
}
|
||||
},
|
||||
changeDatasetName(){
|
||||
for(var i=0;i<this.excelData.length;i++){
|
||||
if(this.excelData[i].excelId==this.sheetObj.sheetExcelId){
|
||||
for(var j=0;j<this.excelData[i].sheets.length;j++){
|
||||
if(this.excelData[i].sheets[j].excelId==this.sheetObj.sheetId){
|
||||
this.excelData[i].sheets[j] = this.sheetObj
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
calHeight() {
|
||||
const that = this
|
||||
setTimeout(function() {
|
||||
@ -204,7 +249,6 @@ export default {
|
||||
this.data = []
|
||||
const datas = this.data
|
||||
this.$refs.plxTable.reloadData(datas)
|
||||
this.name = ''
|
||||
this.fileList = []
|
||||
this.uploading = false
|
||||
this.$message({
|
||||
@ -214,52 +258,59 @@ export default {
|
||||
})
|
||||
},
|
||||
uploadSuccess(response, file, fileList) {
|
||||
this.path = response.data.path
|
||||
this.fields = response.data.fields
|
||||
this.sheets = response.data.sheets
|
||||
if (this.sheets.length > 1) {
|
||||
this.$warning(this.$t('dataset.sheet_warn'))
|
||||
}
|
||||
this.data = response.data.data
|
||||
const datas = this.data
|
||||
this.$refs.plxTable.reloadData(datas)
|
||||
|
||||
if (file.name.lastIndexOf('.') > 0) {
|
||||
this.name = file.name.substring(0, file.name.lastIndexOf('.'))
|
||||
}
|
||||
this.excelData.push(response.data)
|
||||
this.fileList = fileList
|
||||
this.uploading = false
|
||||
},
|
||||
|
||||
save() {
|
||||
if (!this.name || this.name === '') {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: this.$t('dataset.pls_input_name'),
|
||||
type: 'error'
|
||||
})
|
||||
|
||||
var validate = true;
|
||||
var selectedSheet = []
|
||||
var sheetFileMd5 = []
|
||||
var selectNode = this.$refs.tree.getCheckedNodes()
|
||||
for(var i=0;i<selectNode.length;i++){
|
||||
if(selectNode[i].sheet){
|
||||
if (!selectNode[i].datasetName || selectNode[i].datasetName === '') {
|
||||
validate = false
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: this.$t('dataset.pls_input_name'),
|
||||
type: 'error'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (selectNode[i].datasetName.length > 50) {
|
||||
validate = false
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: this.$t('dataset.char_can_not_more_50'),
|
||||
type: 'error'
|
||||
})
|
||||
return
|
||||
}
|
||||
selectedSheet.push(selectNode[i])
|
||||
sheetFileMd5.push(selectNode[i].fieldsMd5)
|
||||
}
|
||||
}
|
||||
if(selectedSheet.length == 0){
|
||||
this.$message.warning(this.$t('dataset.ple_select_excel'))
|
||||
return
|
||||
}
|
||||
if (this.name.length > 50) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: this.$t('dataset.char_can_not_more_50'),
|
||||
type: 'error'
|
||||
})
|
||||
return
|
||||
if(!validate){
|
||||
return;
|
||||
}
|
||||
|
||||
let table = {}
|
||||
if (!this.param.tableId) {
|
||||
table = {
|
||||
id: this.param.tableId,
|
||||
name: this.name,
|
||||
sceneId: this.param.id,
|
||||
dataSourceId: null,
|
||||
type: 'excel',
|
||||
sheets: selectedSheet,
|
||||
mode: parseInt(this.mode),
|
||||
// info: '{"data":"' + this.path + '"}',
|
||||
info: JSON.stringify({ data: this.path, sheets: [this.sheets[0]] }),
|
||||
fields: this.fields
|
||||
editType: 0
|
||||
}
|
||||
} else {
|
||||
table = {
|
||||
@ -268,22 +319,42 @@ export default {
|
||||
sceneId: this.param.id,
|
||||
dataSourceId: null,
|
||||
type: 'excel',
|
||||
sheets: selectedSheet,
|
||||
mode: parseInt(this.mode),
|
||||
// info: '{"data":"' + this.path + '"}',
|
||||
info: JSON.stringify({ data: this.path, sheets: [this.sheets[0]] }),
|
||||
editType: this.param.editType ? this.param.editType : 0
|
||||
}
|
||||
}
|
||||
post('/dataset/table/update', table).then(response => {
|
||||
// this.$store.dispatch('dataset/setSceneData', new Date().getTime())
|
||||
this.$emit('saveSuccess', table)
|
||||
this.cancel()
|
||||
})
|
||||
if(new Set(sheetFileMd5).size !== sheetFileMd5.length && !this.param.tableId){
|
||||
this.$confirm(this.$t('dataset.merge_msg'), this.$t('dataset.merge_title'), {
|
||||
confirmButtonText: this.$t('dataset.merge'),
|
||||
cancelButtonText: this.$t('dataset.no_merge'),
|
||||
type: 'info'
|
||||
}).then(() => {
|
||||
table.mergeSheet = true
|
||||
post('/dataset/table/update', table).then(response => {
|
||||
this.$emit('saveSuccess', table)
|
||||
this.cancel()
|
||||
})
|
||||
}).catch(action => {
|
||||
if(action == 'cancle'){
|
||||
return
|
||||
}
|
||||
table.mergeSheet = false
|
||||
post('/dataset/table/update', table).then(response => {
|
||||
this.$emit('saveSuccess', table)
|
||||
this.cancel()
|
||||
})
|
||||
});
|
||||
}else {
|
||||
post('/dataset/table/update', table).then(response => {
|
||||
this.$emit('saveSuccess', table)
|
||||
this.cancel()
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.dataReset()
|
||||
// this.$router.push('/dataset/home')
|
||||
if (this.param.tableId) {
|
||||
this.$emit('switchComponent', { name: 'ViewTable', param: this.param.table })
|
||||
} else {
|
||||
@ -337,4 +408,14 @@ export default {
|
||||
.dataPreview>>>.el-card__body{
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
.el-header {
|
||||
background-color: rgb(241, 243, 248);
|
||||
color: #333;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.el-main {
|
||||
padding: 0px
|
||||
}
|
||||
</style>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div style="height: 100%;">
|
||||
<link-error v-if="showIndex===0" :resource-id="resourceId" />
|
||||
<link-pwd v-if="showIndex===1" :resource-id="resourceId" />
|
||||
<link-pwd v-if="showIndex===1" :resource-id="resourceId" @fresh-token="refreshToken" />
|
||||
<link-view v-if="showIndex===2" :resource-id="resourceId" />
|
||||
</div>
|
||||
</template>
|
||||
@ -49,6 +49,9 @@ export default {
|
||||
this.showError()
|
||||
})
|
||||
},
|
||||
refreshToken() {
|
||||
this.loadInit()
|
||||
},
|
||||
|
||||
// 显示无效链接
|
||||
showError() {
|
||||
|
@ -96,7 +96,8 @@ export default {
|
||||
if (!res.data) {
|
||||
this.msg = this.$t('pblink.pwd_error')
|
||||
} else {
|
||||
window.location.reload()
|
||||
// window.location.reload()
|
||||
this.$emit('fresh-token')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
@ -8,6 +8,8 @@
|
||||
import { loadResource } from '@/api/link'
|
||||
import { uuid } from 'vue-uuid'
|
||||
import Preview from '@/components/canvas/components/Editor/Preview'
|
||||
import { getPanelAllLinkageInfo } from '@/api/panel/linkage'
|
||||
|
||||
export default {
|
||||
name: 'LinkView',
|
||||
components: { Preview },
|
||||
@ -29,6 +31,10 @@ export default {
|
||||
methods: {
|
||||
setPanelInfo() {
|
||||
loadResource(this.resourceId).then(res => {
|
||||
// 刷新联动信息
|
||||
getPanelAllLinkageInfo(this.resourceId).then(rsp => {
|
||||
this.$store.commit('setNowPanelTrackInfo', rsp.data)
|
||||
})
|
||||
this.$store.commit('setComponentData', this.resetID(JSON.parse(res.data.panelData)))
|
||||
// this.$store.commit('setComponentData', JSON.parse(res.data.panelData))
|
||||
this.$store.commit('setCanvasStyle', JSON.parse(res.data.panelStyle))
|
||||
|
@ -267,7 +267,7 @@ export default {
|
||||
height: 24px;
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
font-size: 24px;
|
||||
font-size: 24px!important;
|
||||
margin: auto;
|
||||
font-family: fineui;
|
||||
font-style: normal;
|
||||
|
@ -37,13 +37,22 @@
|
||||
>
|
||||
<span slot-scope="{ node, data }" class="custom-tree-node-list father">
|
||||
<span style="display: flex;flex: 1;width: 0;">
|
||||
<span v-if="data.type !== 'folder'">
|
||||
<span v-if="data.type !== 'folder' && data.status !== 'Error'">
|
||||
<svg-icon icon-class="datasource" class="ds-icon-scene" />
|
||||
</span>
|
||||
<span v-if="data.status === 'Error'">
|
||||
<svg-icon icon-class="exclamationmark" class="ds-icon-scene" />
|
||||
<el-tooltip v-if="data.status === 'Error'" style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;" effect="dark" :content="$t('datasource.in_valid')" placement="right">
|
||||
<el-button type="text" > {{ data.name }} </el-button>
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<span v-if="data.type === 'folder'">
|
||||
<i class="el-icon-folder" />
|
||||
</span>
|
||||
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
|
||||
<span v-if=" data.status !== 'Error'" style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">
|
||||
{{ data.name }}
|
||||
</span>
|
||||
|
||||
</span>
|
||||
<span class="child">
|
||||
<span v-if="data.type ==='folder'" @click.stop>
|
||||
@ -67,24 +76,6 @@
|
||||
@click="_handleDelete(data)"
|
||||
/>
|
||||
</span>
|
||||
<!-- <el-dropdown trigger="click" size="small" @command="clickFileMore">
|
||||
<span class="el-dropdown-link">
|
||||
<el-button
|
||||
icon="el-icon-more"
|
||||
type="text"
|
||||
size="small"
|
||||
/>
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item icon="el-icon-edit" :command="beforeClickFile('edit',data,node)">
|
||||
{{ $t('panel.edit') }}
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item icon="el-icon-delete" :command="beforeClickFile('delete',data,node)">
|
||||
{{ $t('panel.delete') }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown> -->
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
@ -208,8 +208,9 @@ export default {
|
||||
{ label: this.$t('commons.disable'), value: '0' }
|
||||
],
|
||||
multiple: false
|
||||
}
|
||||
// { field: 'deptId', label: '组织', component: conditionTable }
|
||||
},
|
||||
{ field: 'd.name', label: this.$t('commons.organization'), component: 'DeComplexInput' },
|
||||
{ field: 'r.name', label: this.$t('commons.role'), component: 'DeComplexInput' }
|
||||
]
|
||||
},
|
||||
paginationConfig: {
|
||||
|
Loading…
Reference in New Issue
Block a user