插件优化,增加FTP上传进度监控.
This commit is contained in:
@@ -4,24 +4,14 @@
|
||||
<meta charset="UTF-8">
|
||||
<!-- import CSS -->
|
||||
<link rel="stylesheet" href="./element-ui/index.css">
|
||||
<style>
|
||||
#app {
|
||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-align: center;
|
||||
color: #3646ea;
|
||||
background-color: #fafcfc;
|
||||
padding: 35px;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="./main.css">
|
||||
<title>热更新配置</title>
|
||||
</head>
|
||||
<body style="height: 1000px;">
|
||||
<div id="app">
|
||||
<el-tabs v-model="tabName">
|
||||
<el-tab-pane label="版本配置" name="versionConfig" style="height: 400px;">
|
||||
<el-form ref="version" :model="versionCfg" label-width="100px">
|
||||
<el-tab-pane label="版本配置" name="versionConfig" class="tab-content">
|
||||
<el-form ref="version" :model="versionCfg" label-width="80px">
|
||||
<el-tooltip effect="dark" :content="tip.versionCode" open-delay=500 placement="top">
|
||||
<el-form-item label="新版本号:">
|
||||
<el-input type="number" v-model="versionCfg.versionCode" placeholder="1"></el-input>
|
||||
@@ -38,6 +28,21 @@
|
||||
<el-input v-model="versionCfg.versionType" placeholder="dev"></el-input>
|
||||
</el-form-item>
|
||||
</el-tooltip>
|
||||
<!--<el-form-item label="其他设置:">-->
|
||||
<!--<el-tooltip content="开启时将强制更新用户端版本" placement="top">-->
|
||||
<!--<el-switch v-model="versionCfg.forceUpdate"-->
|
||||
<!--:active-text="versionCfg.forceUpdate?'强制静默更新':'用户决定更新'"-->
|
||||
<!--active-color="#13ce66" inactive-color="#ff4949"-->
|
||||
<!--style="margin-right: 20px;"></el-switch>-->
|
||||
<!--</el-tooltip>-->
|
||||
|
||||
<!--<el-tooltip placement="top">-->
|
||||
<!--<div slot="content">开启时将在每次启动时直接请求更新信息<br/>否则将在进入游戏后才请求更新信息</div>-->
|
||||
<!--<el-switch v-model="versionCfg.updateMoment"-->
|
||||
<!--:active-text="versionCfg.updateMoment?'每次启动时更新':'二次启动时更新'"-->
|
||||
<!--active-color="#13ce66" inactive-color="#ff4949"></el-switch>-->
|
||||
<!--</el-tooltip>-->
|
||||
<!--</el-form-item>-->
|
||||
<el-tooltip effect="dark" :content="tip.baseUrl" open-delay=500 placement="top">
|
||||
<el-form-item label="热更地址:">
|
||||
<el-input v-model="versionCfg.baseUrl"
|
||||
@@ -52,8 +57,8 @@
|
||||
</el-tooltip>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="上传配置" name="ftpConfig" style="height: 400px;">
|
||||
<el-form ref="ftpCfg" :model="ftpCfg" label-width="100px">
|
||||
<el-tab-pane label="上传配置" name="ftpConfig" class="tab-content">
|
||||
<el-form ref="ftpCfg" :model="ftpCfg" label-width="80px">
|
||||
<el-tooltip effect="dark" :content="tip.ip" placement="top" open-delay=500>
|
||||
<el-form-item label="IP:">
|
||||
<el-col :span="15">
|
||||
@@ -103,27 +108,72 @@
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="使用帮助" name="help" style="height: 400px;">
|
||||
<div style="height: 300px;">
|
||||
<el-alert :closable="false"
|
||||
title="如不需要发布新版本,可无需做任何操作,以正常步骤打包发布即可"
|
||||
type="info">
|
||||
</el-alert>
|
||||
<el-divider content-position="left"></el-divider>
|
||||
<el-steps direction="vertical" :active="1" space="100px">
|
||||
<el-step title="版本配置"
|
||||
description="使用前需要先配置版本信息,并点击保存配置."></el-step>
|
||||
<el-step title="构建版本"
|
||||
description="开始构建版本,构建完成后会在构建目录中生成remote文件夹以及update-dev.json更新描述文件
|
||||
<el-tab-pane label="使用帮助" name="help" class="tab-content">
|
||||
<el-alert :closable="false"
|
||||
title="如不需要发布新版本,可无需做任何操作,以正常步骤打包发布即可"
|
||||
type="info">
|
||||
</el-alert>
|
||||
<el-divider content-position="left"></el-divider>
|
||||
<el-steps direction="vertical" :active="1" space="100px">
|
||||
<el-step title="版本配置"
|
||||
description="使用前需要先配置版本信息,并点击保存配置."></el-step>
|
||||
<el-step title="构建版本"
|
||||
description="开始构建版本,构建完成后会在构建目录中生成remote文件夹以及update-dev.json更新描述文件
|
||||
注:不需要设置Bundle为远程包,插件将自动调整远程包设置"></el-step>
|
||||
<el-step title="上传更新包"
|
||||
description="构建完成时,如需发布新版本,则需要点击[上传更新包],更新包会向游戏代码中注入热更逻辑."></el-step>
|
||||
</el-steps>
|
||||
</div>
|
||||
<el-step title="上传更新包"
|
||||
description="构建完成时,如需发布新版本,则需要点击[上传更新包],更新包会向游戏代码中注入热更逻辑."></el-step>
|
||||
</el-steps>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="任务状态" name="states" class="tab-content">
|
||||
<template v-if="states.length>0">
|
||||
<el-row :gutter="10">
|
||||
<el-col v-for="(value,index) in states" :key="index" :span="24" style="margin-bottom:10px">
|
||||
<el-card :body-style="{ padding: '0px' }">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-col :span="16">
|
||||
<h3 style="line-height: 5px;">{{index+1}}-线程:{{value.name}}</h3>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-button :loading="!value.idle" size="small"
|
||||
:type="value.idle?'success':'danger'">
|
||||
{{value.idle?"空闲中":"正忙"}}
|
||||
</el-button>
|
||||
<el-tooltip effect="dark" content="如果任务长时间卡住,点击重试即可" placement="top" open-delay=500>
|
||||
<el-button icon="el-icon-refresh-right" size="small" circle type="warning"
|
||||
@click="onRestart(value.name)"></el-button>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
</div>
|
||||
<el-form label-position="right" label-width="80px">
|
||||
<el-form-item label="剩余任务:" style="margin-bottom: 5px;">
|
||||
<span>{{value.totalTasks-value.remain}}/{{value.totalTasks}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否异常:" style="margin-bottom: 5px;">
|
||||
<span>{{value.hasError?"正在重试中...":"线程正常"}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="当前上传:" style="margin-bottom: 5px;">
|
||||
<span>{{value.curTaskPath?value.curTaskPath.dst.substring(value.curTaskPath.dst.length>>1):"无目标"}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="上传用时:" style="margin-bottom: 5px;">
|
||||
<span>{{(!value.idle && value.taskStartTime)? Math.floor(new Date().getTime()-value.taskStartTime):0}} 毫秒</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务进度:" style="margin-bottom: 5px;">
|
||||
<el-progress :text-inside="true" :stroke-width="22"
|
||||
style="width: 90%; line-height: unset;"
|
||||
:percentage="value.progress" :color="customColors"></el-progress>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<template v-else>
|
||||
<h1 style="text-align: center; vertical-align: center;line-height: 15;">无任务</h1>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<el-row>
|
||||
<el-row style="margin-top: 20px;">
|
||||
<el-col :span="8">
|
||||
<el-button type="success" @click="onSave">保存配置信息</el-button>
|
||||
</el-col>
|
||||
@@ -138,6 +188,7 @@
|
||||
</body>
|
||||
<!-- import Vue before Element -->
|
||||
<script src="../js/vue.2.5.16.js"></script>
|
||||
<script src="../js/logger.js"></script>
|
||||
<!-- import JavaScript -->
|
||||
<script src="./element-ui/index.js"></script>
|
||||
<script>
|
||||
@@ -155,7 +206,9 @@
|
||||
versionName: "1.0.0",
|
||||
versionType: "dev",
|
||||
versionLog: "",
|
||||
baseUrl: ""
|
||||
baseUrl: "",
|
||||
// forceUpdate: true, // 强制静默更新.
|
||||
// updateMoment: true // 启动时直接请求更新.
|
||||
},
|
||||
ftpCfg: {
|
||||
host: "127.0.0.1",
|
||||
@@ -177,7 +230,10 @@
|
||||
port: "FTP端口号,默认21",
|
||||
user: "FTP登录验证帐号及密码",
|
||||
rootPath: "FTP文件上传根目录"
|
||||
}
|
||||
},
|
||||
states: [],
|
||||
refreshTimer: 0,
|
||||
uploadState: false
|
||||
};
|
||||
},
|
||||
created: function () {
|
||||
@@ -192,8 +248,25 @@
|
||||
self.projectPath = arg;
|
||||
});
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.refreshTimer = setInterval(this.checkThreads.bind(this), 200);
|
||||
},
|
||||
destroyed() {
|
||||
if (this.refreshTimer) {
|
||||
clearInterval(this.refreshTimer);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
customColors(p) {
|
||||
return `#${this.getR(0x90, 0x67, p)}${this.getR(0x93, 0xc2, p)}${this.getR(0x99, 0x3a, p)}`;
|
||||
},
|
||||
getR(from, to, percent) {
|
||||
return Math.floor(from + (to - from) * percent / 100).toString(16)
|
||||
},
|
||||
|
||||
onRestart(id) {
|
||||
Editor.Ipc.sendToMain('update-manager:restartThread', id);
|
||||
},
|
||||
onSave() {
|
||||
if (!this.versionCfg.baseUrl.endsWith('/') && this.versionCfg.baseUrl.length > 0) {
|
||||
this.versionCfg.baseUrl += "/";
|
||||
@@ -207,7 +280,14 @@
|
||||
this.$message({message: "配置保存成功!", type: "success"});
|
||||
},
|
||||
onUpload() {
|
||||
Editor.info("准备上传更新包");
|
||||
if (this.uploadState) {
|
||||
this.$message('上传正在进行中,请勿重复点击哦~');
|
||||
logger.warn('上传正在进行中,请勿重复点击哦~');
|
||||
return;
|
||||
}
|
||||
this.uploadState = true;
|
||||
|
||||
logger.info("准备上传更新包");
|
||||
this.$message("准备上传更新包");
|
||||
if (!this.versionCfg.baseUrl.endsWith('/') && this.versionCfg.baseUrl.length > 0) {
|
||||
this.versionCfg.baseUrl += "/";
|
||||
@@ -226,7 +306,7 @@
|
||||
}
|
||||
|
||||
if (this.ftpCfg.onlyJson) {
|
||||
Editor.warn('当前仅上传JSON文件,请手动上传remote目录');
|
||||
logger.warn('当前仅上传JSON文件,请手动上传remote目录');
|
||||
return;
|
||||
}
|
||||
// 上传更新描述文件.
|
||||
@@ -241,6 +321,16 @@
|
||||
onStopUpload() {
|
||||
Editor.Ipc.sendToMain('update-manager:uploadStop');
|
||||
},
|
||||
checkThreads() {
|
||||
const self = this;
|
||||
Editor.Ipc.sendToMain('update-manager:checkThreads', function (args) {
|
||||
self.states = args;
|
||||
});
|
||||
// 检测是否空闲中.
|
||||
Editor.Ipc.sendToMain('update-manager:queryThreadStates', function (args) {
|
||||
self.uploadState = !args;
|
||||
});
|
||||
},
|
||||
notifyMainJs(updateUrl, serverUrl) {
|
||||
this.$message.info("notifyMainJs");
|
||||
const filePath = path.join(this.projectPath, 'build/jsb-link/main.js');
|
||||
|
Reference in New Issue
Block a user