You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

419 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>绘鸭AI相机演示效果图</title>
<link rel="stylesheet" href="./component/layui/css/layui.css" media="all">
<style>
.gallery-item {
display: inline-block;
vertical-align: top;
text-align: center;
}
img {
margin: 0 5px; /* 上下0像素左右5像素 */
}
.layui-card-body img {
width: 150px; /* 缩略图的宽度 */
height: auto;
cursor: pointer;
}
.model-name,
.model-star,
.model-memo {
font-size: 20px;
font-weight: bold;
}
.layui-layer-photos img {
max-width: 100%; /* 确保图片不会超出弹出窗口的宽度 */
max-height: 100%; /* 确保图片不会超出弹出窗口的高度 */
}
.image-container {
position: relative;
display: inline-block;
}
.image-container img {
display: block; /* 使图片宽度自动适应容器宽度 */
width: 100%; /* 或者指定具体宽度,如 max-width: 300px; */
max-width: 100%; /* 确保图片不会超出容器 */
height: auto;
}
.delete-button {
position: absolute; /* 绝对定位相对于.image-container */
top: 2px; /* 距离图片顶部10px */
right: 2px; /* 距离图片右侧10px */
cursor: pointer;
background-color: red;
color: white;
border: none;
border-radius: 5px;
padding: 5px 10px;
font-size: 14px;
}
.delete-button:hover {
background-color: darkred;
}
.cover-button {
position: absolute; /* 绝对定位相对于.image-container */
top: 2px; /* 距离图片顶部10px */
right: 60px; /* 距离图片右侧10px */
cursor: pointer;
background-color: burlywood;
color: white;
border: none;
border-radius: 5px;
padding: 5px 10px;
font-size: 14px;
}
.cover-selected-button {
position: absolute; /* 绝对定位相对于.image-container */
top: 2px; /* 距离图片顶部10px */
right: 60px; /* 距离图片右侧10px */
cursor: pointer;
background-color: greenyellow;
color: white;
border: none;
border-radius: 5px;
padding: 5px 10px;
font-size: 14px;
}
.cover-button:hover {
background-color: darkorange;
}
.addTask-button {
top: 2px; /* 距离图片顶部10px */
right: 2px; /* 距离图片右侧10px */
cursor: pointer;
background-color: orange;
color: white;
border: none;
border-radius: 5px;
padding: 5px 10px;
font-size: 14px;
}
.addTask-button:hover {
background-color: darkorange;
}
</style>
<!--引用Jquery-->
<script src="./component/jquery-3.5.1.min.js"></script>
</head>
<body>
<div class="layui-container" id="galleryContainer">
</div>
<script src="./component/layui/layui.js" charset="utf-8"></script>
<script>
const params = new URLSearchParams(window.location.search);
var source_img_url = params.get('img_url'); // 获取 param1 的值
//系统用户默认图像
if (source_img_url == null) {
source_img_url = "http://hzkc.oss-cn-beijing.aliyuncs.com/Images/Upload/mote.png";
}
// 系统用户ID
var user_id = "16380C30-B1EA-4BFF-B5E6-4F3928CE36F3";
// 用户的分类代号
var task_type_code = "System"
//用户分类的ID
var task_type_id = 1;
//生成一张
function addImage(model_id, count) {
$.ajax({
type: "POST",
url: "/QingLong/HuiYa/AdminAddImage",
dataType: 'json',
data: {
"model_id": model_id,
"user_id": user_id,
"source_img_url": source_img_url,
"count": count,
"task_type_id": task_type_id,
"task_type_code": task_type_code
},
async: false,
success: function (res) {
layer.msg('任务创建成功!', {icon: 1, time: 2000}, function () {
location.reload(true);
});
}
});
}
//删除图片
function deleteImage(button, id) {
// 找到按钮所在的图片容器
var container = button.parentNode;
// 调用layer.confirm创建确认框
layer.confirm('您确定要删除掉这张图片吗?', {
title: '删除确认',
btn: ['确定', '取消'], // 按钮
icon: 3, // 弹层中图标,这里使用了一个问号图标
}, function (index) {
// 确定按钮的回调函数
layer.close(index); // 关闭确认框
// 从DOM中移除图片容器
container.remove();
//删除
$.ajax({
type: "POST",
url: "/QingLong/HuiYa/AdminDeleteImage",
dataType: 'json',
data: {
"id": id
},
async: false,
success: function (res) {
// 假设删除成功后可以在这里做一些UI上的反馈如提示用户删除成功
layer.msg('删除成功!', {icon: 1},function (){
// 刷新本页面
location.reload(true);
});
}
});
}, function (index) {
// 取消按钮的回调函数
layer.close(index); // 关闭确认框
});
}
//设置封面
function setCover(button, id) {
// 调用layer.confirm创建确认框
layer.confirm('您确定要设置这张图片成为此模型封面吗?', {
title: '确认',
btn: ['确定', '取消'], // 按钮
icon: 3, // 弹层中图标,这里使用了一个问号图标
}, function (index) {
// 确定按钮的回调函数
layer.close(index); // 关闭确认框
// 从DOM中移除图片容器
// container.remove();
// 设置封面
$.ajax({
type: "POST",
url: "/QingLong/HuiYa/AdminSetCover",
dataType: 'json',
data: {
"id": id
},
async: false,
success: function (res) {
// 假设成功后可以在这里做一些UI上的反馈如提示用户删除成功
layer.msg('设置成功!', {icon: 1},function (){
// 刷新本页面
location.reload(true);
});
}
});
}, function (index) {
// 取消按钮的回调函数
layer.close(index); // 关闭确认框
});
}
layui.use(['laytpl', 'layer'], function () {
var laytpl = layui.laytpl;
var $ = layui.$;
var layer = layui.layer;
var data;
function render() {
// 模拟从服务器获取数据
$.ajax({
type: "GET",
url: "/QingLong/HuiYa/AdminGetData?page=1&limit=100&source_img_url=" + source_img_url,
async: false,
success: function (res) {
data = res.data;
var row = {};
//第一行
row['model_id'] = 0;
row['update_time'] = "2024-05-13 00:00:00";
row['model_name'] = "模拟用户上传人像";
row['star'] = 0;
row['img_count'] = 0;
row['memo'] = "【半身】";
row['img_list'] = [];
var record = {};
record['img_url'] = source_img_url;
record['img_url_preview'] = source_img_url + "?x-oss-process=image/resize,w_362,limit_0";
record['sort_id'] = 0;
record['id'] = 0;
record['hidden'] = 1;
row['img_list'].push(record);
data.unshift(row);
renderGallery(data);
}
});
}
render();
function renderGallery(items) {
var galleryHtml = '<div class="gallery-row">'; // 开始新的一行
galleryHtml += items.map(renderImages).join('');
galleryHtml += '</div>'; // 结束这一行
$('#galleryContainer').html(galleryHtml);
bindImgClickEvent();
}
function renderImages(item) {
var imgListHtml = item.img_list.map(function (img) {
if (img.img_url == undefined || img.img_url == null || img.img_url.length == 0) {
img.img_url = 'http://hzkc.oss-cn-beijing.aliyuncs.com/Images/System/loading.png';
img.img_url_preview = 'http://hzkc.oss-cn-beijing.aliyuncs.com/Images/System/loading.png?x-oss-process=image/resize,w_362,limit_0';
}
if (item.model_id > 0) {
if (img.is_cover == 0) {
return `<div class="image-container">
<img src="${img.img_url_preview}" alt="Image" data-full="${img.img_url}" />
<button class="cover-button" onclick="setCover(this,'${img.id}')">封面</button>
<button class="delete-button" onclick="deleteImage(this,'${img.id}')">删除</button>
</div>
`;
} else {
return `<div class="image-container">
<img src="${img.img_url_preview}" alt="Image" data-full="${img.img_url}" />
<button class="cover-selected-button" onclick="setCover(this,'${img.id}')">封面</button>
<button class="delete-button" onclick="deleteImage(this,'${img.id}')">删除</button>
</div>
`;
}
} else {
return `<div class="image-container">
<img src="${img.img_url_preview}" alt="Image" data-full="${img.img_url}" />
</div>
`;
}
}).join('');
if (item.model_id > 0) {
if (item.model_type_id == 1) {
item.mode_type_name = 'WEBUI';
return `
<div class="gallery-item">
<div class="layui-card">
<div class="layui-card-header">
<span class="model-name">编号:${item.model_id}</span>
<span class="model-name">名称:${item.model_name}</span>
<span class="model-star">星值:${item.star}</span>
<span class="model-name">类型:${item.mode_type_name}</span>
<button class="addTask-button" onclick="addImage(${item.model_id},1)">生成1张</button>
<button class="addTask-button" onclick="addImage(${item.model_id},2)">生成2张</button>
<button class="addTask-button" onclick="addImage(${item.model_id},3)">生成3张</button>
</div>
<div class="layui-card-body">
${imgListHtml}
</div>
</div>
</div>
`;
} else {
if (item.model_type_id == 2) {
item.mode_type_name = 'ComfyUI';
}
if (item.model_type_id == 3) {
item.mode_type_name = 'Midjourney';
}
return `
<div class="gallery-item">
<div class="layui-card">
<div class="layui-card-header">
<span class="model-name">编号:${item.model_id}</span>
<span class="model-name">名称:${item.model_name}</span>
<span class="model-star">星值:${item.star}</span>
<span class="model-name">类型:${item.mode_type_name}</span>
<button class="addTask-button" onclick="addImage(${item.model_id},1)">生成1张</button>
</div>
<div class="layui-card-body">
${imgListHtml}
</div>
</div>
</div>
`;
}
} else {
return `
<div class="gallery-item">
<div class="layui-card">
<div class="layui-card-header">
<span class="model-name">模板:${item.model_name}</span>
<span class="model-star">星值:${item.star}</span>
</div>
<div class="layui-card-body">
${imgListHtml}
</div>
</div>
</div>
`;
}
}
function lookPicture(resourcesUrl) {
// resourcesUrl接受的图片地址resourcesType之前定义的数据类型可省略
if (resourcesUrl == "") {
layer.msg("没有发现图片!");
return;
}
var img = new Image();
img.onload = function () {//避免图片还未加载完成无法获取到图片的大小。
//避免图片太大,导致弹出展示超出了网页显示访问,所以图片大于浏览器时下窗口可视区域时,进行等比例缩小。
var max_height = $(window).height() - 100;
var max_width = $(window).width();
//rate1rate2rate3 三个比例中取最小的。
var rate1 = max_height / img.height;
var rate2 = max_width / img.width;
var rate3 = 1;
var rate = Math.min(rate1, rate2, rate3);
//等比例缩放
var imgHeight = img.height * rate; //获取图片高度
var imgWidth = img.width * rate; //获取图片宽度
var imgHtml = "<img src='" + resourcesUrl + "' width='" + imgWidth + "px' height='" + imgHeight + "px'/>";
//弹出层
layer.open({
type: 1,//可传入的值有0信息框默认1页面层2iframe层3加载层4tips层
shade: 0.6,
maxmin: true,
anim: 1,
title: '图片预览',
area: ['auto', 'auto'],
// skin: 'layui-layer-nobg', //没有背景色
shadeClose: true,
content: imgHtml
});
}
img.src = resourcesUrl;
}
// 绑定缩略图的点击事件
function bindImgClickEvent() {
$('.gallery-item img').on('click', function () {
var fullImgSrc = $(this).data('full');
lookPicture(fullImgSrc);
});
}
});
</script>
</body>
</html>