mirror of
https://gitee.com/ulthon/ulthon_information.git
synced 2026-07-01 18:22:49 +08:00
feat(output_view): 导出页面重构 - 长图卡片化展示、缩略图增大、预览优化、纯图片页原图保存
- output_view.html: 长图改为固定高度卡片(70px),Blob URL查看,缩略图minmax(280px,1fr), 竖图预览优先填充视口高度,下载功能完整保留 - phone-image.js: renderPureImageToCanvas()使用naturalWidth/naturalHeight保持原图分辨率, 新增长图生成和保存功能 - Post.php: 新增outputView()方法提供导出页面渲染数据 - PhoneImage.php: 图片数据改为DB存储,新增saveLongImage()方法 - phone_image.html: 添加导出页面入口按钮 - 新增数据库迁移: post_output_file表添加image_data字段
This commit is contained in:
@@ -138,18 +138,19 @@
|
||||
<div class="page-header-right">
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" id="btn-settings"><i
|
||||
class="layui-icon layui-icon-set"></i> 设置</button>
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-warm" id="btn-render"><i
|
||||
class="layui-icon layui-icon-refresh"></i> 生成</button>
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" id="btn-save"><i
|
||||
class="layui-icon layui-icon-ok"></i> 保存</button>
|
||||
<button type="button" class="layui-btn layui-btn-sm" id="btn-generate"><i
|
||||
class="layui-icon layui-icon-picture"></i> 生成并保存</button>
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" id="btn-export-page"><i
|
||||
class="layui-icon layui-icon-upload-circle"></i> 导出页面</button>
|
||||
<div class="more-dropdown-wrapper" style="position:relative;display:inline-block;">
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" id="btn-more"><i
|
||||
class="layui-icon layui-icon-more"></i></button>
|
||||
<ul class="more-dropdown-menu" id="more-dropdown-menu" style="display:none;position:absolute;right:0;top:100%;margin-top:4px;background:#fff;border:1px solid #e8e8e8;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,0.12);z-index:9999;min-width:130px;padding:4px 0;list-style:none;">
|
||||
<li data-action="history" style="padding:8px 16px;cursor:pointer;font-size:13px;white-space:nowrap;">历史记录</li>
|
||||
<li data-action="rerender" style="padding:8px 16px;cursor:pointer;font-size:13px;white-space:nowrap;">重新生成</li>
|
||||
<li data-action="download" style="padding:8px 16px;cursor:pointer;font-size:13px;white-space:nowrap;">打包下载</li>
|
||||
<li data-action="exportLong" style="padding:8px 16px;cursor:pointer;font-size:13px;white-space:nowrap;">导出长图</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -184,8 +185,9 @@
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
|
||||
var lastOutputId = null;
|
||||
var lastOutputId = <?php echo $lastOutputId ? (int) $lastOutputId : 'null'; ?>;
|
||||
var downloadBaseUrl = '{:url("post/downloadPostOutputZip", ["id" => 0])}';
|
||||
var outputViewUrl = '{:url("post/outputView", ["id" => 0])}';
|
||||
var saveConfigUrl = '{:url("post/savePostOutputConfig")}';
|
||||
var historyListUrl = '{:url("post/getOutputListJson", ["id" => $post->id])}';
|
||||
var loadConfigUrl = '{:url("post/loadPostOutputConfig")}';
|
||||
@@ -395,6 +397,21 @@
|
||||
}, 300);
|
||||
}
|
||||
|
||||
// ========== 生成按钮 ==========
|
||||
$('#btn-render').click(function () {
|
||||
doRender();
|
||||
});
|
||||
|
||||
// ========== 导出页面按钮 ==========
|
||||
$('#btn-export-page').click(function () {
|
||||
if (!lastOutputId) {
|
||||
layer.msg('请先生成并保存');
|
||||
return;
|
||||
}
|
||||
var url = outputViewUrl.replace('id=0', 'id=' + lastOutputId);
|
||||
window.open(url);
|
||||
});
|
||||
|
||||
// ========== 更多下拉菜单(纯JS实现) ==========
|
||||
var $menu = $('#more-dropdown-menu');
|
||||
$('#btn-more').on('click', function(e) {
|
||||
@@ -408,15 +425,6 @@
|
||||
case 'history':
|
||||
$('#btn-history').trigger('click');
|
||||
break;
|
||||
case 'rerender':
|
||||
doRender();
|
||||
break;
|
||||
case 'download':
|
||||
$('#btn-download-hidden').trigger('click');
|
||||
break;
|
||||
case 'exportLong':
|
||||
$('#btn-export-long-hidden').trigger('click');
|
||||
break;
|
||||
}
|
||||
});
|
||||
// 点击外部关闭
|
||||
@@ -505,40 +513,10 @@
|
||||
});
|
||||
});
|
||||
|
||||
// ========== 打包下载(隐藏按钮,由更多菜单触发) ==========
|
||||
var downloadBtn = $('<button type="button" id="btn-download-hidden" style="display:none;"></button>');
|
||||
$('body').append(downloadBtn);
|
||||
downloadBtn.on('click', function () {
|
||||
if (!lastOutputId) {
|
||||
layer.msg('请先生成并保存图片');
|
||||
return;
|
||||
}
|
||||
var url = downloadBaseUrl.replace('/0/', '/' + lastOutputId + '/');
|
||||
window.open(url);
|
||||
});
|
||||
|
||||
// ========== 导出长图(隐藏按钮,由更多菜单触发) ==========
|
||||
var exportLongBtn = $('<button type="button" id="btn-export-long-hidden" style="display:none;"></button>');
|
||||
$('body').append(exportLongBtn);
|
||||
exportLongBtn.on('click', function () {
|
||||
PhoneImageEngine.exportLongImage().then(function () {
|
||||
layer.msg('长图已导出');
|
||||
}).catch(function (err) {
|
||||
layer.msg('导出失败: ' + err);
|
||||
});
|
||||
});
|
||||
|
||||
// ========== 历史记录(隐藏按钮,由更多菜单和设置旁入口触发) ==========
|
||||
var historyBtn = $('<button type="button" id="btn-history" style="display:none;"></button>');
|
||||
$('body').append(historyBtn);
|
||||
|
||||
// 重新生成(隐藏按钮,由更多菜单触发)
|
||||
var rerenderBtn = $('<button type="button" id="btn-rerender" style="display:none;"></button>');
|
||||
$('body').append(rerenderBtn);
|
||||
rerenderBtn.on('click', function () {
|
||||
doRender();
|
||||
});
|
||||
|
||||
historyBtn.on('click', function () {
|
||||
var loadIdx = layer.load();
|
||||
$.get(historyListUrl, function (res) {
|
||||
|
||||
Reference in New Issue
Block a user