Commit 99c05d90 authored by panyf's avatar panyf
Browse files

[CP]初步完成编译代理工具,能够导入到docker中运行

parents
Pipeline #43 failed with stages
in 0 seconds
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'HomeView',
components: {
HelloWorld
}
}
</script>
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true
})
module.exports = {
outputDir: '../resources/static'
}
\ No newline at end of file
package com.example.compileproxyserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CompileproxyserverApplication {
public static void main(String[] args) {
SpringApplication.run(CompileproxyserverApplication.class, args);
}
}
package com.example.compileproxyserver;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.stream.Collectors;
@RestController
public class FileUploadController {
private static final String UPLOAD_DIR = "/home/blapapple/temp/devicemanager/programs";
private static final String TARGET_FILE = "Program.cs";
@PostMapping("/upload")
public ResponseEntity<Object> uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 创建上传目录
File uploadDir = new File(UPLOAD_DIR);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
// 保存上传的文件
Path targetFilePath = Paths.get(UPLOAD_DIR, TARGET_FILE);
File tempFile = File.createTempFile("temp-", ".cs");
file.transferTo(tempFile);
// 移动文件并替换已存在的文件
Files.move(tempFile.toPath(), targetFilePath, StandardCopyOption.REPLACE_EXISTING);
// 调用编译类进行编译
PublishResult result = publishProject(Paths.get(UPLOAD_DIR));
if (result.isSuccess()) {
// 找到发布后的 CxMesUploader.exe 文件
Path publishedFilePath = findPublishedFile(result.getPublishDirectory());
if (publishedFilePath != null) {
// 返回发布后的文件
Resource resource = new FileSystemResource(publishedFilePath.toFile());
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=CxMesUploader.exe");
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
}
// 编译失败,返回错误日志
return ResponseEntity.status(500)
.contentType(MediaType.TEXT_PLAIN)
.body(result.getErrorLog());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
return ResponseEntity.status(500)
.contentType(MediaType.TEXT_PLAIN)
.body(e.getMessage());
}
}
private PublishResult publishProject(Path projectDir) throws IOException, InterruptedException {
// 定义发布目录
Path publishDir = projectDir.resolve("build");
// 执行 rm -rf build && mkdir build
ProcessBuilder rmMkdirBuilder = new ProcessBuilder("bash", "-c", "rm -rf build && mkdir build");
rmMkdirBuilder.directory(projectDir.toFile());
Process rmMkdirProcess = rmMkdirBuilder.start();
int rmMkdirExitCode = rmMkdirProcess.waitFor();
if (rmMkdirExitCode != 0) {
// 获取错误流并读取错误信息
try (BufferedReader errorReader = new BufferedReader(new InputStreamReader(rmMkdirProcess.getErrorStream()))) {
String errorLog = errorReader.lines().collect(Collectors.joining("\n"));
return new PublishResult(false, errorLog, publishDir);
}
}
// 执行 cd build && cmake .. -DCMAKE_TOOLCHAIN_FILE=arm-toolchain.cmake && make -j && cd ..
ProcessBuilder cmakeMakeBuilder = new ProcessBuilder("bash", "-c", "cd build && cmake .. -DCMAKE_TOOLCHAIN_FILE=arm-toolchain.cmake && make -j && cd ..");
cmakeMakeBuilder.directory(projectDir.toFile());
Process cmakeMakeProcess = cmakeMakeBuilder.start();
int cmakeMakeExitCode = cmakeMakeProcess.waitFor();
String errorLog = "";
if (cmakeMakeExitCode != 0) {
// 获取错误流并读取错误信息
try (BufferedReader errorReader = new BufferedReader(new InputStreamReader(cmakeMakeProcess.getErrorStream()))) {
errorLog = errorReader.lines().collect(Collectors.joining("\n"));
}
}
return new PublishResult(cmakeMakeExitCode == 0, errorLog, publishDir);
}
private Path findPublishedFile(Path publishDir) {
File[] files = publishDir.toFile().listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile() && file.getName().equals("CxMesUploader.exe")) {
return file.toPath();
}
}
}
return null;
}
private static class PublishResult {
private final boolean success;
private final String errorLog;
private final Path publishDirectory;
public PublishResult(boolean success, String errorLog, Path publishDirectory) {
this.success = success;
this.errorLog = errorLog;
this.publishDirectory = publishDirectory;
}
public boolean isSuccess() {
return success;
}
public String getErrorLog() {
return errorLog;
}
public Path getPublishDirectory() {
return publishDirectory;
}
}
}
\ No newline at end of file
Manifest-Version: 1.0
Main-Class: com.example.compileproxyserver.CompileproxyserverApplication
spring.application.name=compileproxyserver
server.port=8081
\ No newline at end of file
.upload-container[data-v-f9a9c404]{display:flex;flex-direction:column;align-items:center}h3[data-v-ebbc34ee]{margin:40px 0 0}ul[data-v-ebbc34ee]{list-style-type:none;padding:0}li[data-v-ebbc34ee]{display:inline-block;margin:0 10px}a[data-v-ebbc34ee]{color:#42b983}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>frontend</title><script defer="defer" src="/js/chunk-vendors.620ce23d.js"></script><script defer="defer" src="/js/app.d72c73f1.js"></script><link href="/css/chunk-vendors.10dd4e95.css" rel="stylesheet"><link href="/css/app.8803a0e3.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but frontend doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file
"use strict";(self["webpackChunkfrontend"]=self["webpackChunkfrontend"]||[]).push([[594],{1417:function(n,t,u){u.r(t),u.d(t,{default:function(){return f}});var e=function(){var n=this;n._self._c;return n._m(0)},s=[function(){var n=this,t=n._self._c;return t("div",{staticClass:"about"},[t("h1",[n._v("This is an about page")])])}],r=u(1656),a={},l=(0,r.A)(a,e,s,!1,null,null,null),f=l.exports}}]);
//# sourceMappingURL=about.437a5a7d.js.map
\ No newline at end of file
{"version":3,"file":"js/about.437a5a7d.js","mappings":"4JAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAQD,EAAIE,MAAMC,GAAG,OAAOH,EAAII,GAAG,EAC1E,EACIC,EAAkB,CAAC,WAAY,IAAIL,EAAIC,KAAKE,EAAGH,EAAIE,MAAMC,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,SAAS,CAACH,EAAG,KAAK,CAACH,EAAIO,GAAG,4BACvH,G,UCFIC,EAAS,CAAC,EAKVC,GAAY,OACdD,EACAT,EACAM,GACA,EACA,KACA,KACA,MAIF,EAAeI,EAAiB,O","sources":["webpack://frontend/./src/views/AboutView.vue","webpack://frontend/./src/views/AboutView.vue?296c"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"about\"},[_c('h1',[_vm._v(\"This is an about page\")])])\n}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AboutView.vue?vue&type=template&id=48dedea6\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"names":["render","_vm","this","_self","_c","_m","staticRenderFns","staticClass","_v","script","component"],"sourceRoot":""}
\ No newline at end of file
(function(){"use strict";var t={3153:function(t){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd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"},8317:function(t,e,r){var n=r(5471),o=function(){var t=this,e=t._self._c;return e("div",{staticClass:"flex flex-col items-center justify-center h-screen",attrs:{id:"app"}},[e("div",{staticClass:"upload-container"},[e("el-upload",{ref:"uploadRef",attrs:{action:t.uploadUrl,"auto-upload":!1,"on-change":t.handleFileChange,"file-list":t.fileList,accept:".cs",multiple:!1},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("el-button",{attrs:{size:"small",type:"primary"}},[t._v("选取文件")])]},proxy:!0}])},[e("el-button",{staticStyle:{"margin-left":"10px"},attrs:{size:"small",type:"success"},on:{click:t.uploadFile}},[t._v("上传并发布")])],1),t.downloadUrl?e("el-link",{staticClass:"mt-4",attrs:{href:t.downloadUrl,download:t.downloadFileName,disabled:!t.downloadUrl}},[t._v(" 下载发布后的文件 ")]):t._e(),e("el-alert",{staticClass:"mt-4",attrs:{title:"发布错误信息",type:"error",visible:""!==t.errorMessage,closable:!1}},[t._v(" "+t._s(t.errorMessage)+" ")])],1)])},l=[],i=(r(4603),r(7566),r(8721),{data(){return{uploadUrl:"/upload",fileList:[],selectedFile:null,downloadUrl:null,downloadFileName:"CxMesUploader.exe",errorMessage:""}},methods:{handleFileChange(t){this.selectedFile=t.raw,this.fileList=[t]},async uploadFile(){if(!this.selectedFile)return void this.$message.error("请选择一个文件");const t=new FormData;t.append("file",this.selectedFile);try{const e=await fetch(this.uploadUrl,{method:"POST",body:t});if(e.ok){const t=await e.blob();this.downloadUrl=window.URL.createObjectURL(t),this.errorMessage=""}else this.errorMessage=await e.text(),this.$message.error("上传或发布失败"),this.downloadUrl=null}catch(e){console.error("发生错误:",e),this.errorMessage="发生错误,请重试",this.$message.error("发生错误,请重试"),this.downloadUrl=null}}}}),a=i,s=r(1656),u=(0,s.A)(a,o,l,!1,null,"f9a9c404",null),c=u.exports,d=r(173),h=function(){var t=this,e=t._self._c;return e("div",{staticClass:"home"},[e("img",{attrs:{alt:"Vue logo",src:r(3153)}}),e("HelloWorld",{attrs:{msg:"Welcome to Your Vue.js App"}})],1)},f=[],p=function(){var t=this,e=t._self._c;return e("div",{staticClass:"hello"},[e("h1",[t._v(t._s(t.msg))]),t._m(0),e("h3",[t._v("Installed CLI Plugins")]),t._m(1),e("h3",[t._v("Essential Links")]),t._m(2),e("h3",[t._v("Ecosystem")]),t._m(3)])},v=[function(){var t=this,e=t._self._c;return e("p",[t._v(" For a guide and recipes on how to configure / customize this project,"),e("br"),t._v(" check out the "),e("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vue-cli documentation")]),t._v(". ")])},function(){var t=this,e=t._self._c;return e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[t._v("babel")])]),e("li",[e("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router",target:"_blank",rel:"noopener"}},[t._v("router")])])])},function(){var t=this,e=t._self._c;return e("ul",[e("li",[e("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[t._v("Core Docs")])]),e("li",[e("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("Forum")])]),e("li",[e("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("Community Chat")])]),e("li",[e("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[t._v("Twitter")])]),e("li",[e("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("News")])])])},function(){var t=this,e=t._self._c;return e("ul",[e("li",[e("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vue-router")])]),e("li",[e("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vuex")])]),e("li",[e("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[t._v("vue-devtools")])]),e("li",[e("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[t._v("vue-loader")])]),e("li",[e("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[t._v("awesome-vue")])])])}],g={name:"HelloWorld",props:{msg:String}},b=g,m=(0,s.A)(b,p,v,!1,null,"ebbc34ee",null),k=m.exports,I={name:"HomeView",components:{HelloWorld:k}},y=I,w=(0,s.A)(y,h,f,!1,null,null,null),C=w.exports;n["default"].use(d.Ay);const R=[{path:"/",name:"home",component:C},{path:"/about",name:"about",component:()=>r.e(594).then(r.bind(r,1417))}],W=new d.Ay({mode:"history",base:"/",routes:R});var U=W,E=r(1052),N=r.n(E);n["default"].config.productionTip=!1,n["default"].use(N()),new n["default"]({router:U,render:t=>t(c)}).$mount("#app")}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var l=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(l.exports,l,l.exports,r),l.loaded=!0,l.exports}r.m=t,function(){r.amdO={}}(),function(){var t=[];r.O=function(e,n,o,l){if(!n){var i=1/0;for(c=0;c<t.length;c++){n=t[c][0],o=t[c][1],l=t[c][2];for(var a=!0,s=0;s<n.length;s++)(!1&l||i>=l)&&Object.keys(r.O).every((function(t){return r.O[t](n[s])}))?n.splice(s--,1):(a=!1,l<i&&(i=l));if(a){t.splice(c--,1);var u=o();void 0!==u&&(e=u)}}return e}l=l||0;for(var c=t.length;c>0&&t[c-1][2]>l;c--)t[c]=t[c-1];t[c]=[n,o,l]}}(),function(){r.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return r.d(e,{a:e}),e}}(),function(){r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})}}(),function(){r.f={},r.e=function(t){return Promise.all(Object.keys(r.f).reduce((function(e,n){return r.f[n](t,e),e}),[]))}}(),function(){r.u=function(t){return"js/about.437a5a7d.js"}}(),function(){r.miniCssF=function(t){}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="frontend:";r.l=function(n,o,l,i){if(t[n])t[n].push(o);else{var a,s;if(void 0!==l)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var d=u[c];if(d.getAttribute("src")==n||d.getAttribute("data-webpack")==e+l){a=d;break}}a||(s=!0,a=document.createElement("script"),a.charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",e+l),a.src=n),t[n]=[o];var h=function(e,r){a.onerror=a.onload=null,clearTimeout(f);var o=t[n];if(delete t[n],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((function(t){return t(r)})),e)return e(r)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),s&&document.head.appendChild(a)}}}(),function(){r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}}(),function(){r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t}}(),function(){r.p="/"}(),function(){var t={524:0};r.f.j=function(e,n){var o=r.o(t,e)?t[e]:void 0;if(0!==o)if(o)n.push(o[2]);else{var l=new Promise((function(r,n){o=t[e]=[r,n]}));n.push(o[2]=l);var i=r.p+r.u(e),a=new Error,s=function(n){if(r.o(t,e)&&(o=t[e],0!==o&&(t[e]=void 0),o)){var l=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;a.message="Loading chunk "+e+" failed.\n("+l+": "+i+")",a.name="ChunkLoadError",a.type=l,a.request=i,o[1](a)}};r.l(i,s,"chunk-"+e,e)}},r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,l,i=n[0],a=n[1],s=n[2],u=0;if(i.some((function(e){return 0!==t[e]}))){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(s)var c=s(r)}for(e&&e(n);u<i.length;u++)l=i[u],r.o(t,l)&&t[l]&&t[l][0](),t[l]=0;return r.O(c)},n=self["webpackChunkfrontend"]=self["webpackChunkfrontend"]||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var n=r.O(void 0,[504],(function(){return r(8317)}));n=r.O(n)})();
//# sourceMappingURL=app.d72c73f1.js.map
\ No newline at end of file
{"version":3,"file":"js/app.d72c73f1.js","mappings":"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","sources":["webpack://frontend/./src/App.vue","webpack://frontend/src/App.vue","webpack://frontend/./src/App.vue?c036","webpack://frontend/./src/App.vue?0e40","webpack://frontend/./src/views/HomeView.vue","webpack://frontend/./src/components/HelloWorld.vue","webpack://frontend/src/components/HelloWorld.vue","webpack://frontend/./src/components/HelloWorld.vue?e4fc","webpack://frontend/./src/components/HelloWorld.vue?541e","webpack://frontend/src/views/HomeView.vue","webpack://frontend/./src/views/HomeView.vue?5167","webpack://frontend/./src/views/HomeView.vue?aae2","webpack://frontend/./src/router/index.js","webpack://frontend/./src/main.js","webpack://frontend/webpack/bootstrap","webpack://frontend/webpack/runtime/amd options","webpack://frontend/webpack/runtime/chunk loaded","webpack://frontend/webpack/runtime/compat get default export","webpack://frontend/webpack/runtime/define property getters","webpack://frontend/webpack/runtime/ensure chunk","webpack://frontend/webpack/runtime/get javascript chunk filename","webpack://frontend/webpack/runtime/get mini-css chunk filename","webpack://frontend/webpack/runtime/global","webpack://frontend/webpack/runtime/hasOwnProperty shorthand","webpack://frontend/webpack/runtime/load script","webpack://frontend/webpack/runtime/make namespace object","webpack://frontend/webpack/runtime/node module decorator","webpack://frontend/webpack/runtime/publicPath","webpack://frontend/webpack/runtime/jsonp chunk loading","webpack://frontend/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"flex flex-col items-center justify-center h-screen\",attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"upload-container\"},[_c('el-upload',{ref:\"uploadRef\",attrs:{\"action\":_vm.uploadUrl,\"auto-upload\":false,\"on-change\":_vm.handleFileChange,\"file-list\":_vm.fileList,\"accept\":\".cs\",\"multiple\":false},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"选取文件\")])]},proxy:true}])},[_c('el-button',{staticStyle:{\"margin-left\":\"10px\"},attrs:{\"size\":\"small\",\"type\":\"success\"},on:{\"click\":_vm.uploadFile}},[_vm._v(\"上传并发布\")])],1),(_vm.downloadUrl)?_c('el-link',{staticClass:\"mt-4\",attrs:{\"href\":_vm.downloadUrl,\"download\":_vm.downloadFileName,\"disabled\":!_vm.downloadUrl}},[_vm._v(\" 下载发布后的文件 \")]):_vm._e(),_c('el-alert',{staticClass:\"mt-4\",attrs:{\"title\":\"发布错误信息\",\"type\":\"error\",\"visible\":_vm.errorMessage!== '',\"closable\":false}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div id=\"app\" class=\"flex flex-col items-center justify-center h-screen\">\n <div class=\"upload-container\">\n <el-upload\n ref=\"uploadRef\"\n :action=\"uploadUrl\"\n :auto-upload=\"false\"\n :on-change=\"handleFileChange\"\n :file-list=\"fileList\"\n accept=\".cs\"\n :multiple=\"false\"\n >\n <template #trigger>\n <el-button size=\"small\" type=\"primary\">选取文件</el-button>\n </template>\n <el-button style=\"margin-left: 10px;\" size=\"small\" type=\"success\" @click=\"uploadFile\">上传并发布</el-button>\n </el-upload>\n <el-link\n :href=\"downloadUrl\"\n v-if=\"downloadUrl\"\n :download=\"downloadFileName\"\n :disabled=\"!downloadUrl\"\n class=\"mt-4\"\n >\n 下载发布后的文件\n </el-link>\n <el-alert\n title=\"发布错误信息\"\n type=\"error\"\n :visible=\"errorMessage!== ''\"\n :closable=\"false\"\n class=\"mt-4\"\n >\n {{ errorMessage }}\n </el-alert>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n data() {\n return {\n uploadUrl: '/upload',\n fileList: [],\n selectedFile: null,\n downloadUrl: null,\n downloadFileName: 'CxMesUploader.exe',\n errorMessage: ''\n };\n },\n methods: {\n handleFileChange(file) {\n this.selectedFile = file.raw;\n this.fileList = [file];\n },\n async uploadFile() {\n if (!this.selectedFile) {\n this.$message.error('请选择一个文件');\n return;\n }\n const formData = new FormData();\n formData.append('file', this.selectedFile);\n try {\n const response = await fetch(this.uploadUrl, {\n method: 'POST',\n body: formData\n });\n if (response.ok) {\n const blob = await response.blob();\n this.downloadUrl = window.URL.createObjectURL(blob);\n this.errorMessage = '';\n } else {\n this.errorMessage = await response.text();\n this.$message.error('上传或发布失败');\n this.downloadUrl = null;\n }\n } catch (error) {\n console.error('发生错误:', error);\n this.errorMessage = '发生错误,请重试';\n this.$message.error('发生错误,请重试');\n this.downloadUrl = null;\n }\n }\n }\n};\n</script>\n\n<style scoped>\n.upload-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n</style>","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=f9a9c404&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=f9a9c404&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f9a9c404\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"home\"},[_c('img',{attrs:{\"alt\":\"Vue logo\",\"src\":require(\"../assets/logo.png\")}}),_c('HelloWorld',{attrs:{\"msg\":\"Welcome to Your Vue.js App\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"hello\"},[_c('h1',[_vm._v(_vm._s(_vm.msg))]),_vm._m(0),_c('h3',[_vm._v(\"Installed CLI Plugins\")]),_vm._m(1),_c('h3',[_vm._v(\"Essential Links\")]),_vm._m(2),_c('h3',[_vm._v(\"Ecosystem\")]),_vm._m(3)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',[_vm._v(\" For a guide and recipes on how to configure / customize this project,\"),_c('br'),_vm._v(\" check out the \"),_c('a',{attrs:{\"href\":\"https://cli.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-cli documentation\")]),_vm._v(\". \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"babel\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"router\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Core Docs\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://forum.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Forum\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://chat.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Community Chat\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://twitter.com/vuejs\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"Twitter\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://news.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"News\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://router.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-router\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://vuex.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vuex\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/vue-devtools#vue-devtools\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-devtools\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://vue-loader.vuejs.org\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"vue-loader\")])]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/awesome-vue\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(\"awesome-vue\")])])])\n}]\n\nexport { render, staticRenderFns }","<template>\n <div class=\"hello\">\n <h1>{{ msg }}</h1>\n <p>\n For a guide and recipes on how to configure / customize this project,<br>\n check out the\n <a href=\"https://cli.vuejs.org\" target=\"_blank\" rel=\"noopener\">vue-cli documentation</a>.\n </p>\n <h3>Installed CLI Plugins</h3>\n <ul>\n <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel\" target=\"_blank\" rel=\"noopener\">babel</a></li>\n <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router\" target=\"_blank\" rel=\"noopener\">router</a></li>\n </ul>\n <h3>Essential Links</h3>\n <ul>\n <li><a href=\"https://vuejs.org\" target=\"_blank\" rel=\"noopener\">Core Docs</a></li>\n <li><a href=\"https://forum.vuejs.org\" target=\"_blank\" rel=\"noopener\">Forum</a></li>\n <li><a href=\"https://chat.vuejs.org\" target=\"_blank\" rel=\"noopener\">Community Chat</a></li>\n <li><a href=\"https://twitter.com/vuejs\" target=\"_blank\" rel=\"noopener\">Twitter</a></li>\n <li><a href=\"https://news.vuejs.org\" target=\"_blank\" rel=\"noopener\">News</a></li>\n </ul>\n <h3>Ecosystem</h3>\n <ul>\n <li><a href=\"https://router.vuejs.org\" target=\"_blank\" rel=\"noopener\">vue-router</a></li>\n <li><a href=\"https://vuex.vuejs.org\" target=\"_blank\" rel=\"noopener\">vuex</a></li>\n <li><a href=\"https://github.com/vuejs/vue-devtools#vue-devtools\" target=\"_blank\" rel=\"noopener\">vue-devtools</a></li>\n <li><a href=\"https://vue-loader.vuejs.org\" target=\"_blank\" rel=\"noopener\">vue-loader</a></li>\n <li><a href=\"https://github.com/vuejs/awesome-vue\" target=\"_blank\" rel=\"noopener\">awesome-vue</a></li>\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'HelloWorld',\n props: {\n msg: String\n }\n}\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\nh3 {\n margin: 40px 0 0;\n}\nul {\n list-style-type: none;\n padding: 0;\n}\nli {\n display: inline-block;\n margin: 0 10px;\n}\na {\n color: #42b983;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=ebbc34ee&scoped=true\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js\"\nimport style0 from \"./HelloWorld.vue?vue&type=style&index=0&id=ebbc34ee&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ebbc34ee\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"home\">\n <img alt=\"Vue logo\" src=\"../assets/logo.png\">\n <HelloWorld msg=\"Welcome to Your Vue.js App\"/>\n </div>\n</template>\n\n<script>\n// @ is an alias to /src\nimport HelloWorld from '@/components/HelloWorld.vue'\n\nexport default {\n name: 'HomeView',\n components: {\n HelloWorld\n }\n}\n</script>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HomeView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HomeView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./HomeView.vue?vue&type=template&id=5eb1c3fc\"\nimport script from \"./HomeView.vue?vue&type=script&lang=js\"\nexport * from \"./HomeView.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport HomeView from '../views/HomeView.vue'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'home',\n component: HomeView\n },\n {\n path: '/about',\n name: 'about',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/AboutView.vue')\n }\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport ElementUI from 'element-ui';\r\nimport 'element-ui/lib/theme-chalk/index.css';\r\n\r\nVue.config.productionTip = false\r\nVue.use(ElementUI);\r\n\r\nnew Vue({\r\n router,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + \"about\" + \".\" + \"437a5a7d\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfrontend\"] = self[\"webpackChunkfrontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(8317); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","staticClass","attrs","ref","uploadUrl","handleFileChange","fileList","scopedSlots","_u","key","fn","_v","proxy","staticStyle","on","uploadFile","downloadUrl","downloadFileName","_e","errorMessage","_s","staticRenderFns","data","selectedFile","methods","file","raw","$message","error","formData","FormData","append","response","fetch","method","body","ok","blob","window","URL","createObjectURL","text","console","component","require","msg","_m","name","props","String","components","HelloWorld","Vue","use","VueRouter","routes","path","HomeView","router","mode","base","process","config","productionTip","ElementUI","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdO","deferred","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","p","installedChunks","installedChunkData","promise","resolve","reject","Error","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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