145 lines
7.6 KiB
HTML
145 lines
7.6 KiB
HTML
|
|
<div class="layui-card">
|
|
<div class="layui-card-header">主框架版本管理(升级服务器)</div>
|
|
<div class="layui-card-body">
|
|
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-bottom:12px;">
|
|
同一版本号可先后上传「整包」「增量补丁」「完整安装包」,三者共存于同一条版本记录;
|
|
客户端升级时自动择优(正好停在补丁基础版本走补丁,否则走整包),完整安装包供全新部署下载。重新上传任一包后需再次「发布」。
|
|
</blockquote>
|
|
<form class="layui-form" id="uploadForm">
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">版本号</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="version" placeholder="x.y.z" class="layui-input" required>
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">标题</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="title" placeholder="可选,如 安全修复" class="layui-input">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">类型</label>
|
|
<div class="layui-input-inline">
|
|
<select name="type" id="pkgType" class="layui-input">
|
|
<option value="0">整包(full)</option>
|
|
<option value="1">增量补丁(patch)</option>
|
|
<option value="2">完整安装包(install)</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">基础版本</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="from_version" id="fromVersion" placeholder="仅增量补丁需要,如 1.2.0" class="layui-input">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<button type="button" class="layui-btn" id="btnUpload">
|
|
<i class="layui-icon layui-icon-upload"></i> 上传核心包
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">更新日志</label>
|
|
<div class="layui-input-block">
|
|
<textarea name="changelog" class="layui-textarea" placeholder="更新内容..."></textarea>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script>
|
|
layui.use(['table', 'upload', 'jquery', 'layer'], function () {
|
|
var table = layui.table, upload = layui.upload, $ = layui.jquery, layer = layui.layer;
|
|
table.render({
|
|
elem: '#dataTable',
|
|
url: '{:url("/appmall/backend/framework/index")}',
|
|
page: true,
|
|
cols: [[
|
|
{field: 'id', title: 'ID', width: 70},
|
|
{field: 'version', title: '版本号', width: 120},
|
|
{title: '包', width: 200, templet: function (d) {
|
|
var h = '';
|
|
h += d.file_path ? '<span class="layui-badge layui-bg-blue">整包</span> '
|
|
: '<span class="layui-badge layui-bg-gray">无整包</span> ';
|
|
h += d.patch_path ? '<span class="layui-badge layui-bg-orange">补丁</span> ' : '';
|
|
h += d.install_path ? '<span class="layui-badge layui-bg-cyan">安装包</span>' : '';
|
|
return h;
|
|
}},
|
|
{field: 'patch_from', title: '补丁基础版本', width: 110, templet: function (d) {
|
|
return d.patch_from || d.from_version || '';
|
|
}},
|
|
{field: 'title', title: '标题'},
|
|
{field: 'changelog', title: '更新日志'},
|
|
{field: 'status', title: '状态', width: 90, templet: function (d) {
|
|
return d.status == 1
|
|
? '<span class="layui-badge layui-bg-green">已发布</span>'
|
|
: '<span class="layui-badge">草稿</span>';
|
|
}},
|
|
{field: 'download_count', title: '下载数', width: 90},
|
|
{title: '操作', width: 360, templet: function (d) {
|
|
var h = '';
|
|
if (d.status != 1) h += '<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="publish">发布</a>';
|
|
if (d.file_path) h += '<a class="layui-btn layui-btn-xs" lay-event="download">下载整包</a>';
|
|
if (d.patch_path) h += '<a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="downloadPatch">下载补丁</a>';
|
|
if (d.install_path) h += '<a class="layui-btn layui-btn-xs layui-bg-cyan" lay-event="downloadInstall">下载安装包</a>';
|
|
h += '<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>';
|
|
return h;
|
|
}}
|
|
]]
|
|
});
|
|
upload.render({
|
|
elem: '#btnUpload',
|
|
url: '{:url("/appmall/backend/framework/upload")}',
|
|
accept: 'file',
|
|
exts: 'zip',
|
|
before: function () {
|
|
if (!$('input[name="version"]').val()) {
|
|
layer.msg('请先填写版本号'); return false;
|
|
}
|
|
if ($('#pkgType').val() == '1' && !$('#fromVersion').val()) {
|
|
layer.msg('增量补丁必须填写基础版本'); return false;
|
|
}
|
|
},
|
|
data: {
|
|
version: function () { return $('input[name="version"]').val(); },
|
|
title: function () { return $('input[name="title"]').val(); },
|
|
changelog: function () { return $('textarea[name="changelog"]').val(); },
|
|
type: function () { return $('#pkgType').val(); },
|
|
from_version: function () { return $('#fromVersion').val(); }
|
|
},
|
|
done: function (res) {
|
|
layer.msg(res.message || '完成');
|
|
if (res.code === 0) table.reload('dataTable');
|
|
},
|
|
error: function () { layer.msg('上传失败'); }
|
|
});
|
|
table.on('tool(dataTable)', function (obj) {
|
|
var d = obj.data;
|
|
if (obj.event === 'publish') {
|
|
$.post('{:url("/appmall/backend/framework/publish")}', {id: d.id}, function (r) {
|
|
layer.msg(r.message); if (r.code === 0) table.reload('dataTable');
|
|
});
|
|
} else if (obj.event === 'download') {
|
|
location.href = '{:url("/appmall/backend/framework/download")}?id=' + d.id + '&type=full';
|
|
} else if (obj.event === 'downloadPatch') {
|
|
location.href = '{:url("/appmall/backend/framework/download")}?id=' + d.id + '&type=patch';
|
|
} else if (obj.event === 'downloadInstall') {
|
|
location.href = '{:url("/appmall/backend/framework/download")}?id=' + d.id + '&type=install';
|
|
} else if (obj.event === 'del') {
|
|
layer.confirm('确定删除该版本?', function () {
|
|
$.post('{:url("/appmall/backend/framework/delete")}', {id: d.id}, function (r) {
|
|
layer.msg(r.message); if (r.code === 0) table.reload('dataTable');
|
|
});
|
|
});
|
|
}
|
|
});
|
|
});
|
|
</script>
|