Commit 2ae9758b by yuwei

项目初始化

parent 5d583989
......@@ -11,7 +11,7 @@ public class DbTable {
private String tableName;
/**
* 表注释
* 表注释
*/
private String tableComment;
}
......@@ -2,6 +2,7 @@ package cn.datax.common.mybatis.config;
import cn.datax.common.core.DataConstant;
import cn.datax.common.utils.SecurityUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
......@@ -15,11 +16,12 @@ public class DataMetaObjectHandler implements MetaObjectHandler {
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "status", String.class, DataConstant.EnableState.ENABLE.getKey());
String userId = getUserId();
if (StrUtil.isNotBlank(userId)) {
this.strictInsertFill(metaObject, "createBy", String.class, userId);
this.strictInsertFill(metaObject, "updateBy", String.class, userId);
}
boolean bolCreateDept = metaObject.hasSetter("createDept");
if(bolCreateDept){
if (bolCreateDept) {
this.strictInsertFill(metaObject, "createDept", String.class, getUserDeptId());
}
}
......@@ -28,8 +30,10 @@ public class DataMetaObjectHandler implements MetaObjectHandler {
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
String userId = getUserId();
if (StrUtil.isNotBlank(userId)) {
this.strictUpdateFill(metaObject, "updateBy", String.class, userId);
}
}
private String getUserId() {
String userId = SecurityUtil.getUserId();
......
package cn.datax.commo.office.word;
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.aspose.words.SaveOptions;
import com.aspose.words.*;
import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.*;
import java.util.List;
import java.util.Map;
public class WordUtil {
......@@ -54,6 +48,24 @@ public class WordUtil {
}
/**
* 获取文档
*
* @return
*/
public Document getDocument() throws Exception {
return new Document();
}
/**
* 获取文档
*
* @return
*/
public Document getDocument(InputStream inputStream) throws Exception {
return new Document(inputStream);
}
/**
* 普通数据模板 返回缓冲输入流
*
* @param name
......@@ -147,18 +159,20 @@ public class WordUtil {
doc.save(destPath, SaveOptions.createSaveOptions(SaveFormat.DOCX));
}
public static void main(String[] args) throws Exception {
// public static void main(String[] args) throws Exception {
// Map<String, Object> map = new HashMap<>();
// map.put("companyName", "测试");
// map.put("totalSalary", new BigDecimal("12.34"));
// List<Map<String, Object>> list = new ArrayList<>();
// Map<String, Object> map1 = new HashMap<>();
// map1.put("id", "1");
// map1.put("name", "测试1");
// map1.put("age", 12);
// map1.put("sex", "男");
// map1.put("salary", new BigDecimal("5.0"));
// list.add(map1);
// Map<String, Object> map2 = new HashMap<>();
// map2.put("id", "2");
// map2.put("name", "测试2");
// map2.put("age", 14);
// map2.put("sex", "女");
......@@ -171,6 +185,51 @@ public class WordUtil {
// objects2.add(entry.getValue());
// }
// WordUtil.getInstance().fillWordListData(objects1.toArray(new String[objects1.size()]), objects2.toArray(new Object[objects2.size()]), "F:\\test\\模板.docx", "F:\\test\\123.docx", list, "workerList");
WordUtil.getInstance().word2pdf("F:\\test\\审批流提交.docx", "F:\\test\\20200420.pdf");
}
// WordUtil.getInstance().word2pdf("F:\\test\\审批流提交.docx", "F:\\test\\20200420.pdf");
// // 用户表(子表) TableStart:UserList TableEnd:UserList
// DataTable userTable = new DataTable("UserList");
// userTable.getColumns().add("id");
// userTable.getColumns().add("name");
// userTable.getColumns().add("age");
// userTable.getColumns().add("sex");
// userTable.getColumns().add("salary");
// for (int i = 1; i < 3; i++) {
// DataRow row = userTable.newRow();
// row.set(0, i);
// row.set(1, "name" + i);
// row.set(2, "age" + i);
// row.set(3, "sex" + i);
// row.set(4, "salary" + i);
// userTable.getRows().add(row);
// }
// // 分数表(子表) TableStart:ScoreList TableEnd:ScoreList
// DataTable scoreTable = new DataTable("ScoreList");
// scoreTable.getColumns().add("id");
// scoreTable.getColumns().add("uid");
// scoreTable.getColumns().add("score");
// for (int i = 1; i < 3; i++) {
// DataRow row = scoreTable.newRow();
// row.set(0, i);
// row.set(1, i);
// row.set(2, 10*i);
// scoreTable.getRows().add(row);
// }
// // 提供数据源
// DataSet dataSet = new DataSet();
// dataSet.getTables().add(userTable);
// dataSet.getTables().add(scoreTable);
// DataRelation dataRelation = new DataRelation("UserScoreRelation", userTable.getColumns().get("id"), scoreTable.getColumns().get("uid"));
// dataSet.getRelations().add(dataRelation);
// // 合并模版
// Document doc = new Document("F:\\test.docx");
// //提供数据源
// String[] fieldNames = new String[] {"name", "address"};
// Object[] fieldValues = new Object[] {"张三", "陕西咸阳"};
// //合并模版,相当于页面的渲染
// MailMerge mailMerge = doc.getMailMerge();
// mailMerge.execute(fieldNames, fieldValues);
// mailMerge.executeWithRegions(dataSet);
// doc.save("F:\\test_r.docx", SaveOptions.createSaveOptions(SaveFormat.DOCX));
// }
}
......@@ -18,4 +18,9 @@ public class DataSourceServiceFeignFallbackImpl implements DataSourceServiceFeig
log.error("feign 调用{}出错", id, cause);
return null;
}
@Override
public void updateDataSourceSyncById(String id) {
log.error("feign 调用{}出错", id, cause);
}
}
......@@ -29,4 +29,6 @@ public class DataMetadataTableDto implements Serializable {
private String sourceId;
@ApiModelProperty(value = "表名")
private String tableName;
@ApiModelProperty(value = "表注释")
private String tableComment;
}
package cn.datax.service.data.metadata.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import cn.datax.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 元数据信息表
......@@ -15,14 +17,19 @@ import lombok.experimental.Accessors;
* @since 2020-07-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("metadata_column")
public class DataMetadataColumnEntity extends BaseEntity {
public class DataMetadataColumnEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 所属数据源
*/
private String sourceId;
......
package cn.datax.service.data.metadata.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import cn.datax.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 数据库表信息表
......@@ -15,14 +17,19 @@ import lombok.experimental.Accessors;
* @since 2020-07-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("metadata_table")
public class DataMetadataTableEntity extends BaseEntity {
public class DataMetadataTableEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 所属数据源
*/
private String sourceId;
......@@ -31,4 +38,9 @@ public class DataMetadataTableEntity extends BaseEntity {
* 表名
*/
private String tableName;
/**
* 表注释
*/
private String tableComment;
}
package cn.datax.service.data.metadata.api.office;
import java.io.Serializable;
import java.util.List;
public class MetadataDatabase implements Serializable {
private static final long serialVersionUID=1L;
private String database;
private List<MetadataTable> tables;
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
public List<MetadataTable> getTables() {
return tables;
}
public void setTables(List<MetadataTable> tables) {
this.tables = tables;
}
@Override
public String toString() {
return "MetadataDatabase{" +
"database='" + database + '\'' +
", tables=" + tables +
'}';
}
public class MetadataTable implements Serializable {
private static final long serialVersionUID=1L;
private String tableName;
private String tableComment;
private List<MetadataColumn> columns;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getTableComment() {
return tableComment;
}
public void setTableComment(String tableComment) {
this.tableComment = tableComment;
}
public List<MetadataColumn> getColumns() {
return columns;
}
public void setColumns(List<MetadataColumn> columns) {
this.columns = columns;
}
@Override
public String toString() {
return "MetadataTable{" +
"tableName='" + tableName + '\'' +
", tableComment='" + tableComment + '\'' +
", columns=" + columns +
'}';
}
}
public class MetadataColumn implements Serializable {
private static final long serialVersionUID=1L;
private String columnPosition;
private String columnName;
private String dataType;
private String dataLength;
private String dataPrecision;
private String dataScale;
private String columnNullable;
private String columnKey;
private String dataDefault;
private String columnComment;
public String getColumnPosition() {
return columnPosition;
}
public void setColumnPosition(String columnPosition) {
this.columnPosition = columnPosition;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getDataLength() {
return dataLength;
}
public void setDataLength(String dataLength) {
this.dataLength = dataLength;
}
public String getDataPrecision() {
return dataPrecision;
}
public void setDataPrecision(String dataPrecision) {
this.dataPrecision = dataPrecision;
}
public String getDataScale() {
return dataScale;
}
public void setDataScale(String dataScale) {
this.dataScale = dataScale;
}
public String getColumnNullable() {
return columnNullable;
}
public void setColumnNullable(String columnNullable) {
this.columnNullable = columnNullable;
}
public String getColumnKey() {
return columnKey;
}
public void setColumnKey(String columnKey) {
this.columnKey = columnKey;
}
public String getDataDefault() {
return dataDefault;
}
public void setDataDefault(String dataDefault) {
this.dataDefault = dataDefault;
}
public String getColumnComment() {
return columnComment;
}
public void setColumnComment(String columnComment) {
this.columnComment = columnComment;
}
@Override
public String toString() {
return "MetadataColumn{" +
"columnPosition='" + columnPosition + '\'' +
", columnName='" + columnName + '\'' +
", dataType='" + dataType + '\'' +
", dataLength='" + dataLength + '\'' +
", dataPrecision='" + dataPrecision + '\'' +
", dataScale='" + dataScale + '\'' +
", columnNullable='" + columnNullable + '\'' +
", columnKey='" + columnKey + '\'' +
", dataDefault='" + dataDefault + '\'' +
", columnComment='" + columnComment + '\'' +
'}';
}
}
}
package cn.datax.service.data.metadata.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
......@@ -20,9 +18,6 @@ public class DataMetadataColumnVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private Integer status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
private String sourceId;
private String tableId;
private String columnName;
......
package cn.datax.service.data.metadata.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
......@@ -20,9 +18,7 @@ public class DataMetadataTableVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private Integer status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
private String sourceId;
private String tableName;
private String tableComment;
}
......@@ -79,6 +79,11 @@
<artifactId>data-factory-service-api</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>cn.datax</groupId>
<artifactId>datax-common-office</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
......
package cn.datax.service.data.metadata.async;
import cn.datax.common.database.DataSourceFactory;
import cn.datax.common.database.DbQuery;
import cn.datax.common.database.constants.DbQueryProperty;
import cn.datax.common.database.core.DbColumn;
import cn.datax.common.database.core.DbTable;
import cn.datax.service.data.factory.api.dto.DbSchema;
import cn.datax.service.data.factory.api.entity.DataSourceEntity;
import cn.datax.service.data.factory.api.feign.DataSourceServiceFeign;
import cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity;
import cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity;
import cn.datax.service.data.metadata.dao.DataMetadataColumnDao;
import cn.datax.service.data.metadata.dao.DataMetadataTableDao;
import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* 异步处理
*/
@Slf4j
@Component
public class AsyncTask {
@Autowired
private DataSourceFactory dataSourceFactory;
@Autowired
private DataSourceServiceFeign dataSourceServiceFeign;
@Autowired
private DataMetadataTableDao dataMetadataTableDao;
@Autowired
private DataMetadataColumnDao dataMetadataColumnDao;
@Async
public void doTask(DataSourceEntity dataSource) {
long start = System.currentTimeMillis();
DbSchema dbSchema = dataSource.getDbSchema();
DbQueryProperty dbQueryProperty = new DbQueryProperty(dataSource.getDbType(), dbSchema.getHost(),
dbSchema.getUsername(), dbSchema.getPassword(), dbSchema.getPort(), dbSchema.getDbName(), dbSchema.getSid());
DbQuery dbQuery = dataSourceFactory.createDbQuery(dbQueryProperty);
List<DbTable> tables = dbQuery.getTables(dbSchema.getDbName());
if (CollUtil.isNotEmpty(tables)) {
List<DataMetadataTableEntity> metadataTableEntityList = tables.stream().map(table -> {
DataMetadataTableEntity metadataTable = new DataMetadataTableEntity();
metadataTable.setSourceId(dataSource.getId());
metadataTable.setTableName(table.getTableName());
metadataTable.setTableComment(table.getTableComment());
return metadataTable;
}).collect(Collectors.toList());
if (CollUtil.isNotEmpty(metadataTableEntityList)) {
metadataTableEntityList.stream().forEach(table -> {
dataMetadataTableDao.insert(table);
List<DbColumn> columns = dbQuery.getTableColumns(dbSchema.getDbName(), table.getTableName());
if (CollUtil.isNotEmpty(columns)) {
List<DataMetadataColumnEntity> metadataColumnEntityList = columns.stream().map(column -> {
DataMetadataColumnEntity metadataColumn = new DataMetadataColumnEntity();
metadataColumn.setSourceId(dataSource.getId());
metadataColumn.setTableId(table.getId());
metadataColumn.setColumnName(column.getColName());
metadataColumn.setColumnComment(column.getColComment());
metadataColumn.setColumnKey(column.getColKey() ? "1" : "0");
metadataColumn.setColumnNullable(column.getNullable() ? "1" : "0");
metadataColumn.setColumnPosition(column.getColPosition().toString());
metadataColumn.setDataType(column.getDataType());
metadataColumn.setDataLength(column.getDataLength().toString());
metadataColumn.setDataPrecision(column.getDataPrecision().toString());
metadataColumn.setDataScale(column.getDataScale().toString());
metadataColumn.setDataDefault(column.getDataDefault());
return metadataColumn;
}).collect(Collectors.toList());
if (CollUtil.isNotEmpty(metadataColumnEntityList)) {
metadataColumnEntityList.stream().forEach(column -> dataMetadataColumnDao.insert(column));
}
}
});
}
}
dataSourceServiceFeign.updateDataSourceSyncById(dataSource.getId());
log.info("异步任务执行完成!耗时{}秒", (System.currentTimeMillis() - start / 1000));
}
}
\ No newline at end of file
......@@ -2,16 +2,24 @@ package cn.datax.service.data.metadata.controller;
import cn.datax.common.core.R;
import cn.datax.service.data.metadata.service.DataMetadataService;
import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
import com.aspose.words.SaveOptions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
@Api(tags = {"元数据"})
@RestController
@RequestMapping("/databases")
public class DataMetadataController {
@Autowired
......@@ -19,9 +27,26 @@ public class DataMetadataController {
@ApiOperation(value = "同步", notes = "根据url的id来指定同步对象")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@PostMapping("/databases/{id}")
@PostMapping("/sync/{id}")
public R syncMetadata(@PathVariable String id) {
dataMetadataService.syncMetadata(id);
return R.ok();
}
@ApiOperation(value = "数据库设计文档", notes = "根据url的id来指定生成数据库设计文档对象")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@PostMapping("/word/{id}")
public void wordMetadata(@PathVariable String id, HttpServletResponse response) throws Exception {
// 清空response
response.reset();
// 设置response的Header
response.setContentType("application/octet-stream;charset=utf-8");
// 设置content-disposition响应头控制浏览器以下载的形式打开文件
response.addHeader("Content-Disposition", "attachment;filename=" + new String("数据库设计文档.doc".getBytes()));
Document doc = dataMetadataService.wordMetadata(id);
OutputStream out = response.getOutputStream();
doc.save(out, SaveOptions.createSaveOptions(SaveFormat.DOC));
out.flush();
out.close();
}
}
package cn.datax.service.data.metadata.service;
import com.aspose.words.Document;
public interface DataMetadataService {
void syncMetadata(String id);
Document wordMetadata(String id) throws Exception;
}
......@@ -5,12 +5,6 @@
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.datax.service.data.metadata.api.entity.DataMetadataColumnEntity">
<result column="id" property="id" />
<result column="status" property="status" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="remark" property="remark" />
<result column="source_id" property="sourceId" />
<result column="table_id" property="tableId" />
<result column="column_name" property="columnName" />
......@@ -28,12 +22,6 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id,
status,
create_by,
create_time,
update_by,
update_time,
remark,
source_id, table_id, column_name, column_comment, column_key, column_nullable, column_position, data_type, data_length, data_precision, data_scale, data_default
</sql>
......
......@@ -5,26 +5,15 @@
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.datax.service.data.metadata.api.entity.DataMetadataTableEntity">
<result column="id" property="id" />
<result column="status" property="status" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="remark" property="remark" />
<result column="source_id" property="sourceId" />
<result column="table_name" property="tableName" />
<result column="table_comment" property="tableComment" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id,
status,
create_by,
create_time,
update_by,
update_time,
remark,
source_id, table_name
source_id, table_name, table_comment
</sql>
</mapper>
import request from '@/utils/request'
export function listDataColumn (data) {
return request({
url: '/data/metadata/columns/list',
method: 'get',
params: data
})
}
export function pageDataColumn (data) {
return request({
url: '/data/metadata/columns/page',
method: 'get',
params: data
})
}
export function getDataColumn (id) {
return request({
url: '/data/metadata/columns/' + id,
method: 'get'
})
}
export function delDataColumn (id) {
return request({
url: '/data/metadata/columns/' + id,
method: 'delete'
})
}
export function delDataColumns (ids) {
return request({
url: '/data/metadata/columns/batch/' + ids,
method: 'delete'
})
}
export function addDataColumn (data) {
return request({
url: '/data/metadata/columns',
method: 'post',
data: data
})
}
export function updateDataColumn (data) {
return request({
url: '/data/metadata/columns/' + data.id,
method: 'put',
data: data
})
}
import request from '@/utils/request'
export function sync (id) {
return request({
url: '/data/metadata/databases/sync/' + id,
method: 'post'
})
}
export function word (id) {
return request({
url: '/data/metadata/databases/word/' + id,
method: 'post',
responseType: 'blob'
})
}
......@@ -219,8 +219,6 @@ export default {
checkConnection(this.form).then(response => {
if (response.success) {
this.$message.success('连接成功')
} else {
this.$message.error('连接失败')
}
})
}
......
......@@ -4,6 +4,8 @@
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-coin" type="primary" round @click="handleSyncMetadata">元数据同步</el-button>
<el-button size="mini" icon="el-icon-coin" type="primary" round @click="handleWordMetadata">数据库文档</el-button>
<el-button size="mini" icon="el-icon-coin" type="primary" round @click="handleCheckConnection" v-if="active == 2">连通性检测</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
......@@ -81,6 +83,7 @@
<script>
import { getDataSource, checkConnection } from '@/api/factory/datasource'
import { listDataTheme } from '@/api/factory/datatheme'
import { sync, word } from '@/api/metadata/metadata'
export default {
name: 'DataSourceDetail',
......@@ -173,8 +176,36 @@ export default {
checkConnection(this.form).then(response => {
if (response.success) {
this.$message.success('连接成功')
}
})
},
/** 元数据同步 */
handleSyncMetadata () {
sync(this.data.id).then(response => {
if (response.success) {
this.$message.success('元数据正在后台同步中,请到元数据管理中查看结果')
}
})
},
/** 数据库文档 */
handleWordMetadata () {
word(this.data.id).then(response => {
const blob = new Blob([response])
const fileName = '数据库设计文档.doc'
if ('download' in document.createElement('a')) {
// 非IE下载
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
// 释放URL 对象
document.body.removeChild(elink)
} else {
this.$message.error('连接失败')
// IE10+下载
navigator.msSaveBlob(blob, fileName)
}
})
}
......
......@@ -217,8 +217,6 @@ export default {
checkConnection(this.form).then(response => {
if (response.success) {
this.$message.success('连接成功')
} else {
this.$message.error('连接失败')
}
})
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment