2.0
This commit is contained in:
262
templates/admin/add-article.html
Normal file
262
templates/admin/add-article.html
Normal file
@@ -0,0 +1,262 @@
|
||||
<!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"></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>
|
||||
Reference in New Issue
Block a user