From 116e04e3bf75df0413b814dca650fc83a516db10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Sat, 27 Jul 2019 00:47:46 +0800 Subject: [PATCH] =?UTF-8?q?es=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/entity/EsDatasource.java | 131 ++++++++++++++++++ .../manage/mapper/EsDatasourceMapper.java | 16 +++ .../support/generator/CodeGenerator.java | 3 +- .../service/manage/EsDatasourceService.java | 16 +++ .../manage/impl/EsDatasourceServiceImpl.java | 20 +++ .../mapper/manage/EsDatasourceMapper.xml | 5 + .../controller/EsDatasourceController.java | 70 ++++++++++ .../sql/zyplayer_doc_manage.1.0.3.sql | 18 +++ zyplayer-doc-ui/es-ui/src/App.vue | 7 + .../es-ui/src/assets/img/elasticsearch.png | Bin 0 -> 4632 bytes .../es-ui/src/common/config/apilist.js | 4 +- .../es-ui/src/views/data/DatasourceManage.vue | 33 ++--- .../es-ui/src/views/index/Executer.vue | 13 +- 13 files changed, 305 insertions(+), 31 deletions(-) create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/EsDatasource.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/EsDatasourceMapper.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/EsDatasourceService.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/EsDatasourceServiceImpl.java create mode 100644 zyplayer-doc-data/src/main/resources/mapper/manage/EsDatasourceMapper.xml create mode 100644 zyplayer-doc-es/src/main/java/com/zyplayer/doc/elasticsearch/controller/EsDatasourceController.java create mode 100644 zyplayer-doc-ui/es-ui/src/assets/img/elasticsearch.png diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/EsDatasource.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/EsDatasource.java new file mode 100644 index 00000000..6fe0fce3 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/EsDatasource.java @@ -0,0 +1,131 @@ +package com.zyplayer.doc.data.repository.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 暮光:城中城 + * @since 2019-07-27 + */ +public class EsDatasource implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 数据源名称 + */ + private String name; + + /** + * 地址和端口 + */ + private String hostPort; + + /** + * scheme,http或其他 + */ + private String scheme; + + /** + * 创建人ID + */ + private Long createUserId; + + /** + * 创建人名字 + */ + private String createUserName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 是否有效 0=无效 1=有效 + */ + private Integer yn; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + public String getHostPort() { + return hostPort; + } + + public void setHostPort(String hostPort) { + this.hostPort = hostPort; + } + public String getScheme() { + return scheme; + } + + public void setScheme(String scheme) { + this.scheme = scheme; + } + public Long getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Long createUserId) { + this.createUserId = createUserId; + } + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + @Override + public String toString() { + return "EsDatasource{" + + "id=" + id + + ", name=" + name + + ", hostPort=" + hostPort + + ", scheme=" + scheme + + ", createUserId=" + createUserId + + ", createUserName=" + createUserName + + ", createTime=" + createTime + + ", yn=" + yn + + "}"; + } +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/EsDatasourceMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/EsDatasourceMapper.java new file mode 100644 index 00000000..7763d182 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/EsDatasourceMapper.java @@ -0,0 +1,16 @@ +package com.zyplayer.doc.data.repository.manage.mapper; + +import com.zyplayer.doc.data.repository.manage.entity.EsDatasource; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 暮光:城中城 + * @since 2019-07-27 + */ +public interface EsDatasourceMapper extends BaseMapper { + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java index 79f1d0ef..c7930008 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java @@ -19,7 +19,8 @@ public class CodeGenerator { final String moduleName = "manage"; // final String[] tableName = { "zyplayer_storage", "auth_info", "user_auth", "user_info", "db_datasource" }; // final String[] tableName = { "wiki_space", "wiki_page", "wiki_page_content", "wiki_page_file", "wiki_page_comment", "wiki_page_zan" }; - final String[] tableName = { "db_datasource" }; +// final String[] tableName = { "db_datasource" }; + final String[] tableName = { "es_datasource" }; // 代码生成器 AutoGenerator mpg = new AutoGenerator(); diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/EsDatasourceService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/EsDatasourceService.java new file mode 100644 index 00000000..3fe0989f --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/EsDatasourceService.java @@ -0,0 +1,16 @@ +package com.zyplayer.doc.data.service.manage; + +import com.zyplayer.doc.data.repository.manage.entity.EsDatasource; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 暮光:城中城 + * @since 2019-07-27 + */ +public interface EsDatasourceService extends IService { + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/EsDatasourceServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/EsDatasourceServiceImpl.java new file mode 100644 index 00000000..202a1682 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/EsDatasourceServiceImpl.java @@ -0,0 +1,20 @@ +package com.zyplayer.doc.data.service.manage.impl; + +import com.zyplayer.doc.data.repository.manage.entity.EsDatasource; +import com.zyplayer.doc.data.repository.manage.mapper.EsDatasourceMapper; +import com.zyplayer.doc.data.service.manage.EsDatasourceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 暮光:城中城 + * @since 2019-07-27 + */ +@Service +public class EsDatasourceServiceImpl extends ServiceImpl implements EsDatasourceService { + +} diff --git a/zyplayer-doc-data/src/main/resources/mapper/manage/EsDatasourceMapper.xml b/zyplayer-doc-data/src/main/resources/mapper/manage/EsDatasourceMapper.xml new file mode 100644 index 00000000..0adbf19c --- /dev/null +++ b/zyplayer-doc-data/src/main/resources/mapper/manage/EsDatasourceMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/zyplayer-doc-es/src/main/java/com/zyplayer/doc/elasticsearch/controller/EsDatasourceController.java b/zyplayer-doc-es/src/main/java/com/zyplayer/doc/elasticsearch/controller/EsDatasourceController.java new file mode 100644 index 00000000..fadd8d63 --- /dev/null +++ b/zyplayer-doc-es/src/main/java/com/zyplayer/doc/elasticsearch/controller/EsDatasourceController.java @@ -0,0 +1,70 @@ +package com.zyplayer.doc.elasticsearch.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zyplayer.doc.core.annotation.AuthMan; +import com.zyplayer.doc.core.json.DocResponseJson; +import com.zyplayer.doc.core.json.ResponseJson; +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.config.security.DocUserUtil; +import com.zyplayer.doc.data.repository.manage.entity.EsDatasource; +import com.zyplayer.doc.data.service.manage.EsDatasourceService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Optional; + +/** + * 数据源控制器 + * + * @author 暮光:城中城 + * @since 2019年7月27日 + */ +@AuthMan("ES_DATASOURCE_MANAGE") +@RestController +@RequestMapping("/zyplayer-doc-es/datasource") +public class EsDatasourceController { + + @Resource + EsDatasourceService esDatasourceService; + + @PostMapping(value = "/list") + public ResponseJson list() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("yn", 1); + List datasourceList = esDatasourceService.list(wrapper); + return DocResponseJson.ok(datasourceList); + } + + @PostMapping(value = "/update") + public ResponseJson update(EsDatasource esDatasource) { + if (StringUtils.isBlank(esDatasource.getName())) { + return DocResponseJson.warn("名字必填"); + } else if (StringUtils.isBlank(esDatasource.getHostPort())) { + return DocResponseJson.warn("地址端口必选"); + } else if (StringUtils.isBlank(esDatasource.getScheme())) { + return DocResponseJson.warn("scheme必填"); + } + Long sourceId = Optional.ofNullable(esDatasource.getId()).orElse(0L); + if (sourceId > 0) { + // 这三项不需要修改 + esDatasource.setCreateTime(null); + esDatasource.setCreateUserId(null); + esDatasource.setCreateUserName(null); + esDatasourceService.updateById(esDatasource); + } else { + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + esDatasource.setCreateTime(new Date()); + esDatasource.setCreateUserId(currentUser.getUserId()); + esDatasource.setCreateUserName(currentUser.getUsername()); + esDatasource.setYn(1); + esDatasourceService.save(esDatasource); + } + return DocResponseJson.ok(); + } +} + diff --git a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.3.sql b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.3.sql index f4909f04..0a6e7d3d 100644 --- a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.3.sql +++ b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.3.sql @@ -23,6 +23,9 @@ CREATE TABLE `db_datasource` ( INSERT INTO `auth_info`(`auth_name`, `auth_desc`, `can_edit`, `create_uid`, `creation_time`, `auth_type`) VALUES ( 'DB_DATASOURCE_MANAGE', '数据源管理权', 0, 1, '2019-06-29 13:01:20', 1); +INSERT INTO `auth_info`(`auth_name`, `auth_desc`, `can_edit`, `create_uid`, `creation_time`, `auth_type`) +VALUES ( 'ES_DATASOURCE_MANAGE', 'ES数据源管理权', 0, 1, '2019-07-27 00:39:20', 1); + insert into user_auth(`user_id`, `auth_id`, `create_uid`, `del_flag`, `creation_time`) select a.id, b.id, a.id, 0, now() from user_info a,auth_info b where a.user_no='zyplayer' and b.auth_name='DB_DATASOURCE_MANAGE'; @@ -31,6 +34,21 @@ ALTER TABLE `wiki_page_content` MODIFY COLUMN `preview` varchar(16000) CHARACTER -- alter table `db_datasource` add `name` varchar(50) DEFAULT NULL COMMENT '数据源名称'; +CREATE TABLE `es_datasource` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键自增ID', + `name` varchar(50) DEFAULT NULL COMMENT '数据源名称', + `host_port` varchar(512) DEFAULT NULL COMMENT '地址和端口', + `scheme` varchar(512) DEFAULT NULL COMMENT 'scheme,http或其他', + `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID', + `create_user_name` varchar(20) DEFAULT NULL COMMENT '创建人名字', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `yn` tinyint(4) DEFAULT NULL COMMENT '是否有效 0=无效 1=有效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + + + -- ------------------------全新的库:------------------------ diff --git a/zyplayer-doc-ui/es-ui/src/App.vue b/zyplayer-doc-ui/es-ui/src/App.vue index d4928ebb..701ac645 100644 --- a/zyplayer-doc-ui/es-ui/src/App.vue +++ b/zyplayer-doc-ui/es-ui/src/App.vue @@ -15,6 +15,13 @@ 数据源管理 + + + 数据查询 + k5$RK__NbB8PK#R6s-jkcB4%T@c5SV;D7uWOT_QrL z)mkMsp`}GhPbim6E$rm)nFry5og!Tunl*_m(TVNsrNTy}M3*8kb4dy-8_555 zueih$u?3z%e^zD#UoI+GPZx1jpA{NA4gEx8)?d#@@MZvP&YB;t#2jx&#h>hFlGaax zgWTO(xwN_Jz`MuKj|aZ=H}a%k&_@vHxj1gRL@Z8FoSDE1gzK|ndGtw1{||M4$%4R< z{bu5&-T)bJT1G~2!Ab8yCQ>Wr*Md>|9E>he{E_lSymWjVXbVB^lmIC9pQW`hKafygkRFruN97p0~Joik)A)9uFxmB zy=UA@_%tOhPEIuyWIeZID5>a%ok$`#MRNcZ0X_&dRsJVYw#de~mr@3+x7s8D90cAX z*eYDd{%0=>@E>|2L0h9Q(&MFb>8d6a8>J`T=;r%@8X2-|2tr9grjH&2cIrz@gO~|V zoNMbuLCZ4-e!M{V0{i;J81UwH7xyt^`=S_=0v1FC|E?I-Pyjy@1TmQLYPVpVNRsrM zNv6WSvv!;46@b7jRX`JhjZYzouwv7%I|Bp3S0Qs8On8H1)%Vf9dv1fFeWkc0JnQQLQ^78W=v_vPthz4s2Rx81B2^KrJZRusiS zOciWYX%%oBs${%-4R~t_LU`d0vHw|Fks>7zy~}wHyPaBJ08Zz}pi|qw?Yxh?Tou;a zi;iYFOZOl7I^mK;Uac0pj`>k8jPE%;iehgh$x(p8BroM@)nI=nTNr9_T8Y}0uDZ+fhEhc|<$LeuIEf@99&IA#g|7LxW&G-9lbW_unTOzXr6wn3f(wLyiF$?)7smC-64aUS0j&r315SIBdt`e) z2%D3#(_%f|;9A7CUmDRM+RZ_Qd?p1$S;VdM@ zbLP)4hL5yp4p@lHzE%K;j|3Jy0-`21P*dk(=9-Zd2=-$Q8+M~v5E~^3gwq#DYEmbv zMAB++RDfc{=sYZlg_)-;lnHxZebRa^DgYUVkQ6?@cWE(8BP!zqU|5_NZQFs$TTH0h_M|Io{pdNl3d;lWBJGK zetuHdMHWwcflEe!aE+x6X6x0#Zi)KFG>{YqPBTM-CvKW`(gDpqSQI7wLvThRP!cB%@5gHT2- zxd)j=9u8&hmM}95q5&xhH-H#gnjHUA___A_WzD0;OO`?e)Tfl3qB<8|Q<>ka z%=+d?v$kVGYKnG9ltyF4HWDim;?}GUedD;t%N?unHYDBBB=gHDi>AbCT$I-zsl1H2 zGh(s7B9RI{{Js`Ihej(-eX@_tZlV45l;o-a2(l~qpg}N5lDp>7M&mg9aGQ^>uE)#x zn)!(IffSFOHA|z9tAimPcKc%Z(k~+YloCf)?+meyv{}VHN{^x(R*nlO5qs$2qpS; zXrXF|+zX%Lgz9gC_)ksrd~!uGP~QNi`Z(S(?AnBWhE(Z$HXvBu@>AdgOfO!;Dese%X2Os&Tv+F=#0sLw5>Dpaa zHPoFzzi$w2O2b2$cdL_tZ}Td<4-f)&@q%ZqArT5s(zaoCY@rVq#rvo#?&oLMqm*%; zBj~wmAntEE^6Bhk#Z^QO6+Eb+s`){0>(RMVPkGBLj%=HWYGkl|*XQO&c9Sigs!vr= zUCxUU=u_;eo|rO5#$#uQZ=EW%aZtW5n)fOkdi8u;3)t_N7s;j$C{HrcE8hK#Vc%uk z*q`=>Hdmq9*{&*s4x#n6eD$UYtjxO#OA|e}RN`KXm!-v?t>S5-fy|*|PBimvwqg5* zzys|i78KLU>v=NsHEvrDGLrizLp_-hFkEJszQ%>EPTbB!^mxUT7A`4{RLlK}x_=lK z6E@%?y1A#Ffg9_1#ifltKkdLh*8kU~)4OU^o0N1nnJ3%7*a_+vgi-ia@%*RR21#rI z6b>8{Tw}yRsLi3hByT}?1-yl8~Z5U zGxVFgK%_@>I=ai}BOfzCph5nppc9wn zU&Ou?4c}Tq*P3xH7siPOrZ8_uJx5+kUxLry_tK_ z%g58ELHH3v3%^#rj!oRvR|jNXQEHv%R_9McwfOcxUl$u*@_EnCUBi?wL))hjCm$bH zGdWhYhAE#K20@>mUOPf{c?N2^(teaE#;uOe-L%L+Ou;|$bpU76hd7bsHBsc-RlN(D z>34)2yACcHaF6|;lneDNEqt_je_^!tstHwn$J_hwknE+JXVb%Bx;Sdc|-_=Z2Z(g19mqIcnThMO=*3>(zj6K-CD^@2&v)xb8CyBh?>K3}F;(VLGY%P}&Cjgcg>AdL<@P4kl zW6k^R``tp#Za;QRNQ5vETTvA*_&{rfov_`#F~^xmXx@s@M~z-bf@Z(ws#dj8$yY%M zpVr#L9OF7z!c`vy)U1)S27Z2%aLjuZrcM4(cM`bbPO7^bvCz(1jQ>Y#dz8nEG1ruw z)pos3_2<+Iyk)BcJHmk$b8ne4U+1~jFlFUUtg3$XQT)T{i3Way8CNDq- z&V}1vf8M^tzT-vmJar)KIbEin%)S-33tzY-(a>*9S_a|nmjhEk2E2h?sMnNXP4#bW%;v=EUizcEa{bd}w^@kAPCE!;JQqnMU;Eg{cI zKm^aR3l@(krnQ)a1INsC?;^3mZdpSdr>+^x-@!Hm ztyP#XKwMTa+9X0K!;lHw;*nnp6rTshV7D!jmHy~OMp!7-Ir}|zsI@5HycdbpqDqJx z%{423g(u|Ou4&H+t1hmbBN?`*5`$MVpPC-5Qn;JY?>{My7sR?g-*M*y`TQw`Xddy7 zXsBeBho_>Z&YG>AYw_HjZXM9O!O;d*E{X1k1E=ckUXfH#ZQ&0Pn@Ij459q$I7rysB#1F1xk*KCZ#6Yexhv)(ydNoqu?_bm$U1 z8w+g>14C8K7HLHl=dXE$yW#2xK3gxbh{GL`Q^I#3H?5O=ZsFkH8RW70w5IC zP<^G6mv%BO6TjdiQ=o{pdbpU&OduuQ`jIYFwz<1*xrBW=73j$qmjjcgf>A%(`Tuq! z`&1OiZT(&MIiEqsHp0eYdt?Pd+|$Gua;kDjb?-X{9F-f>BdfKcd6SdyB#Db&kynoV zmfo($Sjo=sh-_8JCTs4lt^13w$(QZG1di7CrfDq92^*iSeI%&ae6;8zZ{4ToX#X0> z$<3k%azN1?nbsQBC?F%&MS>w4&(kxdk6if~)DPz1Y{gixiEqSrGEl#LuKD`UdT#oS z)L?U8XKj?BRkNuuZ3wZ3QX*ve?ndiYSp0(7_Alf_Cg0y~0Hc~yI<&y2-H#$s zDuW<=go7>0;P|X$oPIMwipwKPP)!96PjaXte{%r}V27O0fOi$I?cA^YvhXX)DWEpK zDd%P=eHt$L?fS;j**u{rZPNlMOP8Qjz~Cj%)RzAs{cAl72Rh@1s6RY}vM*ZDUiB2x y`g1^XAk_czAmUWR|K&j#5cdf$H*f7JCm_qJ?cJKs2qSv~09-dTH>lLV6a63UhSLH7 literal 0 HcmV?d00001 diff --git a/zyplayer-doc-ui/es-ui/src/common/config/apilist.js b/zyplayer-doc-ui/es-ui/src/common/config/apilist.js index 61884a88..ae6694b9 100644 --- a/zyplayer-doc-ui/es-ui/src/common/config/apilist.js +++ b/zyplayer-doc-ui/es-ui/src/common/config/apilist.js @@ -11,8 +11,8 @@ var URL = { updateTableDesc: '/zyplayer-doc-db/doc-db/updateTableDesc', updateTableColumnDesc: '/zyplayer-doc-db/doc-db/updateTableColumnDesc', - manageDatasourceList: '/zyplayer-doc-db/datasource/list', - manageUpdateDatasource: '/zyplayer-doc-db/datasource/update', + manageDatasourceList: '/zyplayer-doc-es/datasource/list', + manageUpdateDatasource: '/zyplayer-doc-es/datasource/update', esMappings: '/zyplayer-doc-es/es-mapping/mappings', esExecuter: '/zyplayer-doc-es/es-mapping/execute', diff --git a/zyplayer-doc-ui/es-ui/src/views/data/DatasourceManage.vue b/zyplayer-doc-ui/es-ui/src/views/data/DatasourceManage.vue index 46ad82bf..f09e324e 100644 --- a/zyplayer-doc-ui/es-ui/src/views/data/DatasourceManage.vue +++ b/zyplayer-doc-ui/es-ui/src/views/data/DatasourceManage.vue @@ -8,10 +8,9 @@ 新增 - - - - + + +