Files
Ai_Admin/templates/admin/add-article.html
Jane Doe 9992293b9f 2.0
2024-09-25 12:18:07 +08:00

263 lines
8.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>网站信息管理</title>
<link rel="stylesheet" href="https://file.guimiaokeji.com/layui/layui.css">
<script src="https://file.guimiaokeji.com/axios.js"></script>
<script src="https://file.guimiaokeji.com/qs.js"></script>
<style>
body {
background-color: #f5f5f5;
}
.layui-container {
background-color: #fff;
padding: 20px;
margin: 20px auto;
border-radius: 10px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
width: 100% !important;
}
.layui-col-md6 {
padding: 10px;
}
.layui-form-label {
width: auto;
font-weight: bold;
}
.layui-input-block {
margin-left: 150px;
}
.preview-img {
max-width: 200px;
margin-top: 10px;
}
.layui-form-item {
margin-bottom: 5px;
}
.layui-input-block {
background-color: #f3f3f3;
border-radius: 5px;
padding: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.layui-col-md6:nth-child(odd) .layui-input-block {
background-color: #e9f7f7;
}
.layui-col-md6:nth-child(even) .layui-input-block {
background-color: #e9f7f7;
}
textarea {
width: 100%;
height: 150px;
border: 1px solid #dcdcdc;
border-radius: 5px;
background-color: #fff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.layui-btn-container {
text-align: center;
margin-top: 20px;
}
/* 居中上传图片按钮和预览图片 */
.layui-input-block {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#preview_image {
margin-top: 10px;
display: block;
max-width: 200px;
border-radius: 5px;
}
#center{
position: relative;
left: 50%;
transform: translateX(-50%);
}
</style>
</head>
<body>
<div class="layui-container">
<form class="layui-form" action="" method="post">
{% csrf_token %}
<!-- 第一行 封面图片 -->
<div class="layui-row">
<div class="layui-col-md6" id="center">
<div class="layui-form-item">
<div class="layui-input-block">
<input type="text" name="image_url" class="layui-input" value="{{ article.image_url|default_if_none:'' }}" placeholder="请输入图片 URL 或点击上传图片">
{% if article.image_url %}
<img id="preview_image" src="{{ article.image_url }}" alt="封面图片" class="preview-img">
{% else %}
<img id="preview_image" style="display: none;" class="preview-img">
{% endif %}
<button type="button" class="layui-btn layui-btn-sm" id="upload_image">
<i class="layui-icon">&#xe67c;</i> 上传图片
</button>
</div>
</div>
</div>
</div>
<!-- 第二行 标题 -->
<div class="layui-row">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">english_title</label>
<div class="layui-input-block">
<input type="text" name="english_title" required lay-verify="required" placeholder="请输入英文标题" class="layui-input" value="{{ article.english_title }}">
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">中文标题</label>
<div class="layui-input-block">
<input type="text" name="chinese_title" required lay-verify="required" placeholder="请输入中文标题" class="layui-input" value="{{ article.chinese_title }}">
</div>
</div>
</div>
</div>
<!-- 第三行 关键词 -->
<div class="layui-row">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">english_keywords</label>
<div class="layui-input-block">
<input type="text" name="english_keywords" placeholder="请输入英文关键词" class="layui-input" value="{{ article.english_keywords }}">
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">中文关键词</label>
<div class="layui-input-block">
<input type="text" name="chinese_keywords" placeholder="请输入中文关键词" class="layui-input" value="{{ article.chinese_keywords }}">
</div>
</div>
</div>
</div>
<!-- 第四行 描述 -->
<div class="layui-row">
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">english_content</label>
<div class="layui-input-block">
<textarea id="english_description" name="english_content" style="display: none;">{{ article.english_content }}</textarea>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-form-item">
<label class="layui-form-label">中文描述</label>
<div class="layui-input-block">
<textarea id="chinese_description" name="chinese_content" style="display: none;">{{ article.chinese_content }}</textarea>
</div>
</div>
</div>
</div>
<!-- 提交按钮 -->
<div class="layui-form-item layui-btn-container" style="text-align: center;">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveArticle">保存修改</button>
</div>
</form>
</div>
<script src="https://file.guimiaokeji.com/layui/jquery-3.6.0.min.js"></script>
<script src="https://file.guimiaokeji.com/layui/layui.js"></script>
<script>
layui.use(['form', 'layedit', 'upload'], function () {
var form = layui.form;
var layedit = layui.layedit;
var upload = layui.upload;
var $ = layui.jquery;
layedit.set({
uploadImage: {
url: '/api/upload_article_image/' //接口url
,type: 'post' //默认post
}
});
// 初始化 layedit 编辑器
var englishEditor = layedit.build('english_description', {
height: 250,
tool: ['strong', 'italic', 'underline', 'del', '|', 'left', 'center', 'right', '|', 'link', 'unlink', 'image']
});
var chineseEditor = layedit.build('chinese_description', {
height: 250,
tool: ['strong', 'italic', 'underline', 'del', '|', 'left', 'center', 'right', '|', 'link', 'unlink', 'image']
});
// 表单提交前同步内容
form.on('submit(saveArticle)', function(data) {
// 获取编辑器内容
data.field.english_content = layedit.getContent(englishEditor);
data.field.chinese_content = layedit.getContent(chineseEditor);
// 使用 Axios 提交表单
axios.post('', data.field)
.then(function(response) {
if (response.data.code === 200) {
layer.msg(response.data.message, {
time: 1000 // 设置显示时间为 1000 毫秒1 秒)
}, function() {
// 在消息框关闭后执行的操作
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
});
} else {
layer.msg('保存失败: ' + response.data.message);
}
})
.catch(function(error) {
layer.msg('请求失败: ' + error.message);
});
return false; // 阻止表单默认提交
});
// 图片上传功能
upload.render({
elem: '#upload_image',
url: '/api/upload_article_image/', // 图片上传接口
field: 'file',
done: function (res) {
if (res.code === 0) {
$('#preview_image').attr('src', res.data.src).show();
$('input[name="image_url"]').val(res.data.src);
layer.msg('图片上传成功');
} else {
layer.msg('图片上传失败: ' + res.message);
}
},
error: function () {
layer.msg('图片上传失败');
}
});
});
</script>
</body>
</html>