Commit ab4625f5 authored by wanli's avatar wanli

feat: 前端增加代码显示

parent d3e4a593
...@@ -55,6 +55,7 @@ backend/backupData.json ...@@ -55,6 +55,7 @@ backend/backupData.json
config.ini config.ini
*.epk *.epk
*.bc *.bc
*.lock
tools/build_out/application/config.py tools/build_out/application/config.py
tools/build_out/logs tools/build_out/logs
......
...@@ -39,13 +39,28 @@ def get_encoding(file): ...@@ -39,13 +39,28 @@ def get_encoding(file):
data = f.read() data = f.read()
return chardet.detect(data)['encoding'] return chardet.detect(data)['encoding']
def stopApp(): @api.route("/system/getFileContent", methods=["POST"])
fpath = os.sep.join([os.getcwd(), "restart.json"]) def get_file_content():
with open(fpath, "w+") as f: params = request.json
ret = json.loads(f.read()) if not params or not params.get("file", None):
ret["count"] = ret["count"] + 1 return response_result(ResponseCode.REQUEST_ERROR, msg="parameter file is null")
f.write(json.dumps(ret, indent=4))
return ret # 获取文件路径
fpath = Path(config.get("UPLOAD_PATH")).joinpath(params["file"])
# 判断文件是否存在
if not fpath.exists():
return response_result(ResponseCode.REQUEST_ERROR, msg="file not found")
# 存在则读取文件内容
encode_type = get_encoding(fpath.resolve().as_posix())
result = ""
with open(fpath.resolve().as_posix(), "r", encoding=encode_type) as f:
result = f.read()
# 判断文件类型
# 将内容以字符串形式返回给前端
return response_result(ResponseCode.OK, data=result)
@api.route("/evm", methods=['GET','POST']) @api.route("/evm", methods=['GET','POST'])
def hello_evm(): def hello_evm():
...@@ -123,7 +138,6 @@ def get_app_info(uuid): ...@@ -123,7 +138,6 @@ def get_app_info(uuid):
res = item res = item
break break
print(res)
return response_result(ResponseCode.OK, data=res) return response_result(ResponseCode.OK, data=res)
@api.route("/store/downloadEpk/<uuid>", methods=['GET', 'POST']) @api.route("/store/downloadEpk/<uuid>", methods=['GET', 'POST'])
...@@ -142,14 +156,12 @@ def download_epk(uuid): ...@@ -142,14 +156,12 @@ def download_epk(uuid):
'status': 0, 'status': 0,
'time': int(time.time()) 'time': int(time.time())
}) })
print(res)
return response_result(ResponseCode.OK, data=res) return response_result(ResponseCode.OK, data=res)
@api.route("/opqcp", methods=['POST']) @api.route("/opqcp", methods=['POST'])
def action_opqcp(): def action_opqcp():
params = request.json params = request.json
result, message = signalManager.actionOpqcp.emit(params) result, message = signalManager.actionOpqcp.emit(params)
print(result)
return response_result(ResponseCode.OK, msg=message) return response_result(ResponseCode.OK, msg=message)
...@@ -210,7 +222,6 @@ def action_build(): ...@@ -210,7 +222,6 @@ def action_build():
fd.write(text) fd.write(text)
result = subprocess.call("./utils/executable -c {file}".format(file=file), shell=True) result = subprocess.call("./utils/executable -c {file}".format(file=file), shell=True)
print(result)
# new_name = "{}.{}".format(Path(file).name, "bc") # new_name = "{}.{}".format(Path(file).name, "bc")
# os.rename(os.sep.join([os.getcwd(), "executable.bc"]), os.sep.join([os.getcwd(), new_name])) # os.rename(os.sep.join([os.getcwd(), "executable.bc"]), os.sep.join([os.getcwd(), new_name]))
# dst_files.append(Path(os.getcwd()).joinpath(new_name)) # dst_files.append(Path(os.getcwd()).joinpath(new_name))
...@@ -378,10 +389,17 @@ def parse_header_files(): ...@@ -378,10 +389,17 @@ def parse_header_files():
# 如果有错误,则向前端提示错误 # 如果有错误,则向前端提示错误
# 如果没有错误,则向前端返回下载地址。最终需要打包成压缩文件,放到nginx负载的公网目录下 # 如果没有错误,则向前端返回下载地址。最终需要打包成压缩文件,放到nginx负载的公网目录下
params = request.form
if not params:
params = {}
if params.get("type", None) and params.get("type") not in ["evm", "cffi"]:
return response_result(ResponseCode.REQUEST_ERROR, msg="type value is invaild")
if len(request.files.getlist('binfile')) < 0: if len(request.files.getlist('binfile')) < 0:
return response_result(ResponseCode.REQUEST_ERROR, msg="nothing upload") return response_result(ResponseCode.REQUEST_ERROR, msg="nothing upload")
target_path = Path(config.get("UPLOAD_PATH")).joinpath(config.get("UPLOAD_DIR")) target_path = Path(config.get("UPLOAD_PATH")).joinpath(config.get("TEMP_DIR"))
if not target_path.exists(): if not target_path.exists():
target_path.mkdir() target_path.mkdir()
...@@ -394,13 +412,15 @@ def parse_header_files(): ...@@ -394,13 +412,15 @@ def parse_header_files():
return response_result(ResponseCode.REQUEST_ERROR, msg="nothing upload...") return response_result(ResponseCode.REQUEST_ERROR, msg="nothing upload...")
files = [] files = []
source_file_list = []
for f in request.files.getlist('binfile'): for f in request.files.getlist('binfile'):
target = target_path.joinpath(f.filename) target = target_path.joinpath(f.filename)
if target.suffix not in [".h"]: if target.suffix not in [".h", ".hpp", ".c", ".cpp"]:
continue continue
with open(target.resolve().as_posix(), "wb+") as fd: with open(target.resolve().as_posix(), "wb+") as fd:
fd.write(f.stream.read()) fd.write(f.stream.read())
files.append(target) files.append(target)
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
# 加载系统内置类型映射文件 # 加载系统内置类型映射文件
config_file = "typeconfig.json" config_file = "typeconfig.json"
...@@ -418,23 +438,41 @@ def parse_header_files(): ...@@ -418,23 +438,41 @@ def parse_header_files():
error_tips = [] error_tips = []
result_list = [] result_list = []
for file in files: for file in files:
result = parse_header_file(file.resolve().as_posix(), undefined_type, error_tips) result = parse_header_file(file.resolve().as_posix(), undefined_type, error_tips, target_path.resolve().as_posix())
if result != None: if result != None:
target = target_path.joinpath("analyze.{}.json".format(file.name))
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
target = target_path.joinpath("generate.{}.json".format(file.name))
with open(target.resolve().as_posix(), "w+", encoding="utf-8") as f:
f.write(json.dumps(result, indent=2))
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
target = target_path.joinpath("{}.json".format(file.name)) target = target_path.joinpath("{}.json".format(file.name))
with open(target.resolve().as_posix(), "w+", encoding="utf-8") as f: with open(target.resolve().as_posix(), "w+", encoding="utf-8") as f:
f.write(json.dumps(result)) f.write(json.dumps(result))
if params.get("name", None) != None and len(files) <= 1:
result["name"] = params.get("name")
result_list.append(result) result_list.append(result)
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
target_dir = Path(config.get("UPLOAD_PATH")).joinpath(config.get("TEMP_DIR")).resolve().as_posix() target_dir = target_path.parent
if len(result_list) > 0: if len(result_list) > 0:
path_list = generate_from_list(result_list) path_list = generate_from_list(result_list, params["type"], target_path.resolve().as_posix())
target_file = compress_files(path_list, target_dir) target_file = compress_files(path_list, target_dir.resolve().as_posix())
for file in path_list:
source_file_list.append(Path(file["c"]).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
source_file_list.append(Path(file["h"]).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
source_file_list.append(Path(file["j"]).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
if len(undefined_type) > 0: # 说明有用户自定义的类型,需要用户标注这些类型 if len(undefined_type) > 0: # 说明有用户自定义的类型,需要用户标注这些类型
return response_result(ResponseCode.REQUEST_ERROR, data={ 'undefined_type': undefined_type, 'dir': target_path.name }, msg=error_tips) return response_result(ResponseCode.REQUEST_ERROR, data={ 'undefined_type': undefined_type, 'dir': target_path.name }, msg=error_tips)
else: # 没啥问题,返回下载地址给前端 else: # 没啥问题,返回下载地址给前端
target_file = Path(target_file).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix() target_file = Path(target_file).relative_to(Path(config.get("UPLOAD_PATH")))
return response_result(ResponseCode.OK, data={ "filename": os.path.basename(target_file), "url": target_file }) data = { "file": target_file.name, "url": target_file.as_posix(), "parent": target_path.relative_to(target_dir.parent).as_posix(), "sources": source_file_list }
return response_result(ResponseCode.OK, data=data)
except Exception as e: except Exception as e:
traceback.print_exc() traceback.print_exc()
logger.error(str(e)) logger.error(str(e))
...@@ -453,6 +491,9 @@ def process_parse(): ...@@ -453,6 +491,9 @@ def process_parse():
if len(params) <= 0: if len(params) <= 0:
return response_result(ResponseCode.PARAMETER_NULL) return response_result(ResponseCode.PARAMETER_NULL)
if params.get("module", None) and params.get("module") not in ["evm", "cffi"]:
return response_result(ResponseCode.REQUEST_ERROR, msg="module value is invaild")
target_dir = Path(config.get("UPLOAD_PATH")).joinpath(config.get("TEMP_DIR")).joinpath(params["dir"]) target_dir = Path(config.get("UPLOAD_PATH")).joinpath(config.get("TEMP_DIR")).joinpath(params["dir"])
if not target_dir.exists(): if not target_dir.exists():
return response_result(ResponseCode.INVAILD_REQUEST, msg="target directory not exists") return response_result(ResponseCode.INVAILD_REQUEST, msg="target directory not exists")
...@@ -480,26 +521,45 @@ def process_parse(): ...@@ -480,26 +521,45 @@ def process_parse():
undefined_type = [] undefined_type = []
error_tips = [] error_tips = []
result_list = [] result_list = []
source_file_list = []
for root, dirs, files in os.walk(target_dir.resolve().as_posix()): for root, dirs, files in os.walk(target_dir.resolve().as_posix()):
target_file = Path(root) target_path = Path(root)
for file in files: for file in files:
target_file = target_file.joinpath(file) target_file = target_path.joinpath(file)
if target_file.exists(): if target_file.exists():
result = parse_header_file(target_file.resolve().as_posix(), undefined_type, error_tips) result = parse_header_file(target_file.resolve().as_posix(), undefined_type, error_tips, root)
if result != None: if result != None:
target = target_path.joinpath("analyze.{}.json".format(file.name))
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
target = target_path.joinpath("generate.{}.json".format(file.name))
with open(target.resolve().as_posix(), "w+", encoding="utf-8") as f:
f.write(json.dumps(result, indent=2))
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
target = target_file.parent.joinpath("{}.json".format(target_file.name)) target = target_file.parent.joinpath("{}.json".format(target_file.name))
with open(target.resolve().as_posix(), "w+", encoding="utf-8") as f: with open(target.resolve().as_posix(), "w+", encoding="utf-8") as f:
f.write(json.dumps(result)) f.write(json.dumps(result))
if params.get("name", None) and len(files) <= 1:
result["name"] = params.get("name")
result_list.append(result) result_list.append(result)
source_file_list.append(target.relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
source_file_list.append(file)
target_dir = Path(config.get("UPLOAD_PATH")).joinpath(config.get("UPLOAD_DIR")).resolve().as_posix()
if len(result_list) > 0: if len(result_list) > 0:
path_list = generate_from_list(result_list) path_list = generate_from_list(result_list, params["module"], target_dir.resolve().as_posix())
target_dir = Path(config.get("UPLOAD_PATH")).joinpath(config.get("UPLOAD_DIR")).resolve().as_posix()
target_file = compress_files(path_list, target_dir) target_file = compress_files(path_list, target_dir)
for file in path_list:
source_file_list.append(Path(file["c"]).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
source_file_list.append(Path(file["h"]).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
source_file_list.append(Path(file["j"]).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix())
if len(undefined_type) <= 0: if len(undefined_type) <= 0:
target_file = Path(target_file).relative_to(Path(config.get("UPLOAD_PATH"))).as_posix() target_file = Path(target_file).relative_to(Path(config.get("UPLOAD_PATH")))
return response_result(ResponseCode.OK, data={ "filename": os.path.basename(target_file), "url": target_file }) return response_result(ResponseCode.OK, data={ "file": target_file.name, "url": target_file.as_posix(), "parent": target_file.resolve().as_posix(), "sources": source_file_list })
else: else:
return response_result(ResponseCode.REQUEST_ERROR, data={ 'undefined_type': undefined_type, 'dir': params["dir"] }, msg=error_tips) return response_result(ResponseCode.REQUEST_ERROR, data={ 'undefined_type': undefined_type, 'dir': params["dir"] }, msg=error_tips)
except Exception as e: except Exception as e:
......
Subproject commit 0ec1baa3d93da20ef57c3dd937c19ac80bf9abad Subproject commit 55b1249c57b4912e8fe706d87620889b3f97bdc2
...@@ -2113,11 +2113,6 @@ ...@@ -2113,11 +2113,6 @@
"@hapi/hoek": "^8.3.0" "@hapi/hoek": "^8.3.0"
} }
}, },
"@interactjs/types": {
"version": "1.9.22",
"resolved": "https://registry.npm.taobao.org/@interactjs/types/download/@interactjs/types-1.9.22.tgz",
"integrity": "sha512-GMMMCYE+FPrKCOOOqQ/ImpqLyinb6e8psw9MR9ymTJxnkmJMKrY/GDC/187PVxpWdtSqW+GibkeRfUCOv6vFjg=="
},
"@intervolga/optimize-cssnano-plugin": { "@intervolga/optimize-cssnano-plugin": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz",
...@@ -2738,16 +2733,6 @@ ...@@ -2738,16 +2733,6 @@
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true "dev": true
}, },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"cacache": { "cacache": {
"version": "13.0.1", "version": "13.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/cacache/-/cacache-13.0.1.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/cacache/-/cacache-13.0.1.tgz",
...@@ -2785,23 +2770,6 @@ ...@@ -2785,23 +2770,6 @@
"wrap-ansi": "^6.2.0" "wrap-ansi": "^6.2.0"
} }
}, },
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"css-loader": { "css-loader": {
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
...@@ -2823,13 +2791,6 @@ ...@@ -2823,13 +2791,6 @@
"semver": "^6.3.0" "semver": "^6.3.0"
} }
}, },
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
"optional": true
},
"fast-deep-equal": { "fast-deep-equal": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
...@@ -2931,60 +2892,6 @@ ...@@ -2931,60 +2892,6 @@
"terser": "^4.6.12", "terser": "^4.6.12",
"webpack-sources": "^1.4.3" "webpack-sources": "^1.4.3"
} }
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.1.2",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz",
"integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
} }
} }
}, },
...@@ -3939,11 +3846,6 @@ ...@@ -3939,11 +3846,6 @@
"integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
"dev": true "dev": true
}, },
"batch-processor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
"integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg="
},
"bcrypt-pbkdf": { "bcrypt-pbkdf": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
...@@ -4852,7 +4754,6 @@ ...@@ -4852,7 +4754,6 @@
"component-emitter": { "component-emitter": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz",
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
"dev": true "dev": true
}, },
"compressible": { "compressible": {
...@@ -6128,14 +6029,6 @@ ...@@ -6128,14 +6029,6 @@
"safer-buffer": "^2.1.0" "safer-buffer": "^2.1.0"
} }
}, },
"echarts": {
"version": "4.8.0",
"resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.8.0.tgz",
"integrity": "sha1-ssHPuSKbE9No7hBPyO6mALV01MQ=",
"requires": {
"zrender": "4.3.1"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz",
...@@ -6171,14 +6064,6 @@ ...@@ -6171,14 +6064,6 @@
"integrity": "sha512-bsVCsONiVX1abkWdH7KtpuDAhsQ3N3bjPYhROSAXE78roJKet0Y5wznA14JE9pzbwSZmSMAW6KiKYf1RvbTJkA==", "integrity": "sha512-bsVCsONiVX1abkWdH7KtpuDAhsQ3N3bjPYhROSAXE78roJKet0Y5wznA14JE9pzbwSZmSMAW6KiKYf1RvbTJkA==",
"dev": true "dev": true
}, },
"element-resize-detector": {
"version": "1.2.1",
"resolved": "https://registry.npm.taobao.org/element-resize-detector/download/element-resize-detector-1.2.1.tgz",
"integrity": "sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw==",
"requires": {
"batch-processor": "1.0.0"
}
},
"element-ui": { "element-ui": {
"version": "2.13.0", "version": "2.13.0",
"resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.13.0.tgz", "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.13.0.tgz",
...@@ -7131,11 +7016,6 @@ ...@@ -7131,11 +7016,6 @@
"schema-utils": "^2.5.0" "schema-utils": "^2.5.0"
} }
}, },
"file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"file-uri-to-path": { "file-uri-to-path": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
...@@ -8030,11 +7910,6 @@ ...@@ -8030,11 +7910,6 @@
"integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
"dev": true "dev": true
}, },
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"import-cwd": { "import-cwd": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/import-cwd/-/import-cwd-2.1.0.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/import-cwd/-/import-cwd-2.1.0.tgz",
...@@ -8250,14 +8125,6 @@ ...@@ -8250,14 +8125,6 @@
} }
} }
}, },
"interactjs": {
"version": "1.9.22",
"resolved": "https://registry.npm.taobao.org/interactjs/download/interactjs-1.9.22.tgz",
"integrity": "sha512-zUQefYtYJTazWKqDCSYV0vMJPFWp/PKXwpA3v75fD3+4+4J3/ItjlO7K3L1CpNWYU6s8uoEmwwOD6uDy6OoI/w==",
"requires": {
"@interactjs/types": "1.9.22"
}
},
"internal-ip": { "internal-ip": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/internal-ip/-/internal-ip-4.3.0.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/internal-ip/-/internal-ip-4.3.0.tgz",
...@@ -8605,8 +8472,7 @@ ...@@ -8605,8 +8472,7 @@
}, },
"isobject": { "isobject": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz"
"integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
}, },
"isstream": { "isstream": {
"version": "0.1.2", "version": "0.1.2",
...@@ -8656,11 +8522,6 @@ ...@@ -8656,11 +8522,6 @@
"resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz?cache=0&sync_timestamp=1576061496440&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-cookie%2Fdownload%2Fjs-cookie-2.2.1.tgz", "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz?cache=0&sync_timestamp=1576061496440&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-cookie%2Fdownload%2Fjs-cookie-2.2.1.tgz",
"integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg=" "integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg="
}, },
"js-md5": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
"integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
},
"js-message": { "js-message": {
"version": "1.0.7", "version": "1.0.7",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/js-message/-/js-message-1.0.7.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-message/-/js-message-1.0.7.tgz",
...@@ -8771,17 +8632,6 @@ ...@@ -8771,17 +8632,6 @@
"verror": "1.10.0" "verror": "1.10.0"
} }
}, },
"jszip": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz",
"integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==",
"requires": {
"lie": "~3.3.0",
"pako": "~1.0.2",
"readable-stream": "~2.3.6",
"set-immediate-shim": "~1.0.1"
}
},
"killable": { "killable": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/killable/-/killable-1.0.1.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/killable/-/killable-1.0.1.tgz",
...@@ -8937,14 +8787,6 @@ ...@@ -8937,14 +8787,6 @@
"type-check": "~0.4.0" "type-check": "~0.4.0"
} }
}, },
"lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"requires": {
"immediate": "~3.0.5"
}
},
"lines-and-columns": { "lines-and-columns": {
"version": "1.1.6", "version": "1.1.6",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
...@@ -9461,7 +9303,6 @@ ...@@ -9461,7 +9303,6 @@
"mixin-deep": { "mixin-deep": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz", "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz",
"integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
"dev": true, "dev": true,
"requires": { "requires": {
"for-in": "^1.0.2", "for-in": "^1.0.2",
...@@ -9500,6 +9341,11 @@ ...@@ -9500,6 +9341,11 @@
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
}, },
"monaco-editor": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.30.1.tgz",
"integrity": "sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg=="
},
"move-concurrently": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/move-concurrently/-/move-concurrently-1.0.1.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/move-concurrently/-/move-concurrently-1.0.1.tgz",
...@@ -10226,7 +10072,8 @@ ...@@ -10226,7 +10072,8 @@
"pako": { "pako": {
"version": "1.0.11", "version": "1.0.11",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/pako/-/pako-1.0.11.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
}, },
"parallel-transform": { "parallel-transform": {
"version": "1.2.0", "version": "1.2.0",
...@@ -10322,7 +10169,6 @@ ...@@ -10322,7 +10169,6 @@
"pascalcase": { "pascalcase": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz", "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz",
"integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
"dev": true "dev": true
}, },
"path-browserify": { "path-browserify": {
...@@ -10405,11 +10251,6 @@ ...@@ -10405,11 +10251,6 @@
"resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
}, },
"photoswipe": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/photoswipe/-/photoswipe-4.1.3.tgz",
"integrity": "sha512-89Z43IRUyw7ycTolo+AaiDn3W1EEIfox54hERmm9bI12IB9cvRfHSHez3XhAyU8XW2EAFrC+2sKMhh7SJwn0bA=="
},
"picomatch": { "picomatch": {
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.2.2.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.2.2.tgz",
...@@ -10485,7 +10326,7 @@ ...@@ -10485,7 +10326,7 @@
"version": "github:sampotts/plyr#028be22dec323b23727315ef0c34682192991488", "version": "github:sampotts/plyr#028be22dec323b23727315ef0c34682192991488",
"from": "github:sampotts/plyr#develop", "from": "github:sampotts/plyr#develop",
"requires": { "requires": {
"core-js": "^3.8.1", "core-js": "^3.10.1",
"custom-event-polyfill": "^1.0.7", "custom-event-polyfill": "^1.0.7",
"loadjs": "^4.2.0", "loadjs": "^4.2.0",
"rangetouch": "^2.0.1", "rangetouch": "^2.0.1",
...@@ -12471,11 +12312,6 @@ ...@@ -12471,11 +12312,6 @@
"resolved": "http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", "resolved": "http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
}, },
"set-immediate-shim": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
"integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
},
"set-value": { "set-value": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz", "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz",
...@@ -13592,7 +13428,6 @@ ...@@ -13592,7 +13428,6 @@
"tapable": { "tapable": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz",
"integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
"dev": true "dev": true
}, },
"tar": { "tar": {
...@@ -13790,7 +13625,6 @@ ...@@ -13790,7 +13625,6 @@
"to-fast-properties": { "to-fast-properties": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true "dev": true
}, },
"to-object-path": { "to-object-path": {
...@@ -14323,15 +14157,6 @@ ...@@ -14323,15 +14157,6 @@
} }
} }
}, },
"vue-grid-layout": {
"version": "2.3.8",
"resolved": "https://registry.npm.taobao.org/vue-grid-layout/download/vue-grid-layout-2.3.8.tgz",
"integrity": "sha1-R+SowW3548kX+MFC+G+3BZToazw=",
"requires": {
"element-resize-detector": "^1.1.15",
"interactjs": "^1.6.3"
}
},
"vue-hot-reload-api": { "vue-hot-reload-api": {
"version": "2.3.4", "version": "2.3.4",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
...@@ -14359,6 +14184,94 @@ ...@@ -14359,6 +14184,94 @@
} }
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-plyr": { "vue-plyr": {
"version": "7.0.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/vue-plyr/-/vue-plyr-7.0.0.tgz", "resolved": "https://registry.npmjs.org/vue-plyr/-/vue-plyr-7.0.0.tgz",
...@@ -15241,11 +15154,6 @@ ...@@ -15241,11 +15154,6 @@
"dev": true "dev": true
} }
} }
},
"zrender": {
"version": "4.3.1",
"resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.3.1.tgz",
"integrity": "sha1-uviqbcgYei+BlpLX1fm+36K5D6M="
} }
} }
} }
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
"local-storage": "^2.0.0", "local-storage": "^2.0.0",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"moment": "^2.29.1", "moment": "^2.29.1",
"monaco-editor": "^0.30.1",
"node-sass": "^4.14.1", "node-sass": "^4.14.1",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
...@@ -30,6 +31,7 @@ ...@@ -30,6 +31,7 @@
"vue-count-to": "^1.0.13", "vue-count-to": "^1.0.13",
"vue-grid-layout": "^2.3.12", "vue-grid-layout": "^2.3.12",
"vue-loading-spinner": "^1.0.11", "vue-loading-spinner": "^1.0.11",
"vue-monaco-editor": "^0.0.19",
"vue-plyr": "^7.0.0", "vue-plyr": "^7.0.0",
"vue-router": "^3.1.3", "vue-router": "^3.1.3",
"vue-star-rating": "^1.7.0", "vue-star-rating": "^1.7.0",
......
...@@ -32,6 +32,14 @@ export function postByteCodeFile(data) { ...@@ -32,6 +32,14 @@ export function postByteCodeFile(data) {
}); });
} }
export function getFileContent(data) {
return request({
url: "/api/v1/evm_store/system/getFileContent",
method: "post",
data
});
}
export function postCHeaderFile(data) { export function postCHeaderFile(data) {
return request({ return request({
url: "/api/v1/evm_store/system/parseCHeader", url: "/api/v1/evm_store/system/parseCHeader",
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
</div> </div>
<el-tabs v-model="activeName" type="border-card"> <el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="解析文件" name="first"> <el-tab-pane label="解析文件" name="first">
<el-row :gutter="20">
<el-col :span="8">
<div style="margin: 10px 0px"> <div style="margin: 10px 0px">
<el-form> <el-form>
<el-form-item> <el-form-item>
...@@ -28,11 +30,60 @@ ...@@ -28,11 +30,60 @@
<div class="el-upload__tip" slot="tip">请选择C头文件</div> <div class="el-upload__tip" slot="tip">请选择C头文件</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="模块名称">
<el-input
v-model="form.name"
placeholder="请输入模块名称,不填则以文件名为准"
></el-input>
</el-form-item>
<el-form-item label="注册类型">
<el-select v-model="form.type" placeholder="请选择">
<el-option
v-for="item in optionList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button @click="uploadFile">开始上传</el-button> <el-button @click="uploadFile">开始上传</el-button>
<el-button @click="handleDownloadFile">下载文件</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</el-col>
<el-col :span="16">
<div style="margin: 10px">
<el-select
v-model="form.file"
placeholder="请选择文件"
@change="onFileChange"
>
<el-option
v-for="(item, index) in newFileList"
:key="index"
:label="item"
:value="item"
></el-option>
</el-select>
</div>
<MonacoEditor
height="600"
width="100%"
class="vs"
style="text-align: left; background-color: #fff"
:language="lang"
:key="randomkey"
:code="code"
:editorOptions="options"
@mounted="onMounted"
@codeChange="onCodeChange"
>
</MonacoEditor>
</el-col>
</el-row>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="类型管理" name="second"> <el-tab-pane label="类型管理" name="second">
<el-table :data="markType" size="medium" style="width: 50%"> <el-table :data="markType" size="medium" style="width: 50%">
...@@ -120,14 +171,32 @@ import { ...@@ -120,14 +171,32 @@ import {
processCHeaderFile, processCHeaderFile,
getMarkType, getMarkType,
updateMarkType, updateMarkType,
getFileContent,
} from "@/api/store"; } from "@/api/store";
import MonacoEditor from "vue-monaco-editor";
export default { export default {
name: "EvmModule", name: "EvmModule",
data() { data() {
return { return {
code: 'function evm() {\t\n\tconsole.log("Hello world!");\n}',
editor: null,
randomkey: 1231231,
lang: "javascript",
options: {
theme: "vs",
selectOnLineNumbers: true,
roundedSelection: false,
readOnly: false,
automaticLayout: true,
glyphMargin: true,
showFoldingControls: "always",
formatOnPaste: true,
formatOnType: true,
folding: true,
},
activeName: "first", activeName: "first",
fileList: [],
page: "evm-module-tool.vue", page: "evm-module-tool.vue",
dir: null, dir: null,
baseType: [ baseType: [
...@@ -138,13 +207,43 @@ export default { ...@@ -138,13 +207,43 @@ export default {
{ label: "指针", value: "void *" }, { label: "指针", value: "void *" },
{ label: "void", value: "void" }, { label: "void", value: "void" },
], ],
optionList: [
{ label: "EVM注册", value: "evm" },
{ label: "CFFI注册", value: "cffi" },
],
form: {
type: "evm",
name: null,
file: null,
},
fileList: [],
newFileList: [],
typeList: ["evm", "cffi"],
undefined_type: [], undefined_type: [],
error_tips: [], error_tips: [],
dialogVisible: false, dialogVisible: false,
markType: [], markType: [],
result: null,
}; };
}, },
components: {
MonacoEditor,
},
methods: { methods: {
createRamdomKey() {
return Math.floor(Math.random() * (10, 1000000012313));
},
onMounted(editor) {
this.editor = editor;
},
onCodeChange(editor) {
console.log(editor);
},
onFileChange(file) {
console.log(file, this.form.file);
if (!this.result) return;
this.getFileContent(file);
},
createFile(content, filename) { createFile(content, filename) {
const a = document.createElement("a"); const a = document.createElement("a");
const blob = new Blob([content]); const blob = new Blob([content]);
...@@ -156,7 +255,7 @@ export default { ...@@ -156,7 +255,7 @@ export default {
}, },
handleUploaded(response) { handleUploaded(response) {
if (response.code === 200) { if (response.code === 200) {
this.downloadFile(response); this.downloadFile(response.data);
} else { } else {
this.$message.warning(response.message); this.$message.warning(response.message);
} }
...@@ -164,6 +263,9 @@ export default { ...@@ -164,6 +263,9 @@ export default {
handleUploadFile(file) { handleUploadFile(file) {
this.fileList.push(file); this.fileList.push(file);
}, },
handleDownloadFile() {
this.downloadFile(this.result);
},
handleUploadRemove(file, fileList) { handleUploadRemove(file, fileList) {
console.log(fileList); console.log(fileList);
for (let i = 0; i < this.fileList.length; i++) { for (let i = 0; i < this.fileList.length; i++) {
...@@ -173,10 +275,25 @@ export default { ...@@ -173,10 +275,25 @@ export default {
} }
} }
}, },
getFileContent(file) {
getFileContent({ file: file })
.then((res) => {
this.code = res.data;
this.lang = "c";
this.randomkey = this.createRamdomKey();
this.$message.success(res.message);
})
.catch((err) => {
console.log(err);
this.$message.error(err.message);
});
},
downloadFile(result) { downloadFile(result) {
if (!this.result) return;
const a = document.createElement("a"); const a = document.createElement("a");
a.download = result.data.filename; a.download = result.file;
a.href = result.data.url; a.href = result.url;
a.target = ""; a.target = "";
a.click(); a.click();
}, },
...@@ -203,12 +320,16 @@ export default { ...@@ -203,12 +320,16 @@ export default {
uploadFile() { uploadFile() {
this.$refs.upload.submit(); this.$refs.upload.submit();
let formData = new FormData(); let formData = new FormData();
formData.append("type", this.form.type);
formData.append("name", this.form.name);
this.fileList.forEach((item) => { this.fileList.forEach((item) => {
formData.append("binfile", item.file); formData.append("binfile", item.file);
}); });
postCHeaderFile(formData) postCHeaderFile(formData)
.then((res) => { .then((res) => {
this.downloadFile(res); this.result = res.data;
this.newFileList = res.data.sources;
if (res.data.sources.length) this.getFileContent(res.data.sources[0]);
}) })
.catch((err) => { .catch((err) => {
if (err.code == 400) { if (err.code == 400) {
...@@ -230,10 +351,11 @@ export default { ...@@ -230,10 +351,11 @@ export default {
this.error_tips.forEach((item) => { this.error_tips.forEach((item) => {
types[item.type] = item.mark; types[item.type] = item.mark;
}); });
processCHeaderFile({ dir: this.dir, type: types, module: this.form.type })
processCHeaderFile({ dir: this.dir, type: types })
.then((res) => { .then((res) => {
this.downloadFile(res); this.result = res.data;
this.newFileList = res.data.sources;
if (res.data.sources.length) this.getFileContent(res.data.sources[0]);
}) })
.catch((err) => { .catch((err) => {
if (err.code == 400) { if (err.code == 400) {
...@@ -251,7 +373,12 @@ export default { ...@@ -251,7 +373,12 @@ export default {
}); });
}, },
}, },
mounted() {}, mounted() {
setTimeout(() => {
this.code = "console.log(123456)";
console.log(this.code);
}, 2000);
},
created() { created() {
this.getMarkType(); this.getMarkType();
}, },
......
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