dm-design/商家端web/内容管理/购物须知管理.html

453 lines
15 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>购物须知管理</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", , Arial, sans-serif;
background-color: #f5f5f5;
color: #333;
width: 100%;
height: 100vh;
overflow-y: auto;
}
.header {
background-color: rgb(9, 84, 43);
color: white;
padding: 20px 30px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.header h1 {
font-size: 24px;
font-weight: 500;
}
.container {
max-width: 1200px;
margin: 30px auto;
padding: 0 30px;
}
.form-card {
background: #fff;
border-radius: 8px;
padding: 30px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.form-row {
display: flex;
gap: 30px;
margin-bottom: 20px;
align-items: center;
}
.form-group {
flex: 1;
}
.form-group.narrow {
flex: 0 0 200px;
}
.form-label {
display: block;
font-weight: 500;
color: #333;
margin-bottom: 8px;
font-size: 14px;
}
.form-label.required::after {
content: "*";
color: #ff4d4f;
margin-left: 4px;
}
.form-input {
width: 100%;
padding: 10px 12px;
border: 1px solid #d9d9d9;
border-radius: 4px;
font-size: 14px;
transition: all 0.3s ease;
background-color: #fafafa;
}
.form-input:focus {
border-color: #1890ff;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
outline: none;
background-color: #fff;
}
.form-input.placeholder {
color: #bfbfbf;
}
.text-editor-container {
margin-bottom: 30px;
}
.text-editor {
width: 100%;
min-height: 400px;
border: 1px solid #d9d9d9;
border-radius: 4px;
padding: 15px;
font-size: 14px;
line-height: 1.6;
resize: vertical;
transition: all 0.3s ease;
background-color: #fafafa;
}
.text-editor:focus {
border-color: #1890ff;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
outline: none;
background-color: #fff;
}
.toolbar {
background: #fafafa;
border: 1px solid #d9d9d9;
border-bottom: none;
border-radius: 4px 4px 0 0;
padding: 10px;
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.toolbar-btn {
padding: 6px 10px;
border: 1px solid #d9d9d9;
border-radius: 3px;
background: #fff;
cursor: pointer;
font-size: 12px;
transition: all 0.3s ease;
}
.toolbar-btn:hover {
border-color: #1890ff;
color: #1890ff;
}
.toolbar-btn.active {
background: #1890ff;
color: #fff;
border-color: #1890ff;
}
.btn {
padding: 10px 20px;
border-radius: 5px;
font-size: 14px;
font-weight: 500;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
gap: 5px;
border: none;
cursor: pointer;
}
.btn-primary {
background-color: #1890ff;
color: white;
}
.btn-primary:hover {
background-color: #40a9ff;
transform: translateY(-2px);
}
.btn-success {
background-color: #52c41a;
color: white;
}
.btn-success:hover {
background-color: #73d13d;
transform: translateY(-2px);
}
.btn-warning {
background-color: #faad14;
color: white;
}
.btn-warning:hover {
background-color: #ffc53d;
transform: translateY(-2px);
}
.action-buttons {
display: flex;
gap: 10px;
justify-content: flex-end;
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid #e8e8e8;
}
.content-section {
background: #fff;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
border-left: 4px solid #1890ff;
}
.section-title {
font-weight: 600;
color: #333;
margin-bottom: 15px;
font-size: 16px;
}
.rule-item {
margin-bottom: 15px;
padding-left: 15px;
}
.rule-item:before {
content: counter(rule-counter);
counter-increment: rule-counter;
font-weight: 600;
color: #1890ff;
margin-right: 8px;
}
.sales-rules {
counter-reset: rule-counter;
}
.presale-rules {
counter-reset: rule-counter;
}
@media (max-width: 768px) {
.form-row {
flex-direction: column;
gap: 15px;
}
.form-group.narrow {
flex: 1;
}
.container {
padding: 0 15px;
}
.form-card {
padding: 20px;
}
.toolbar {
padding: 8px;
gap: 5px;
}
.action-buttons {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="header">
<h1>购物须知管理</h1>
</div>
<div class="container">
<div class="form-card">
<form id="shoppingNoticeForm">
<div class="form-row">
<div class="form-group narrow">
<label class="form-label required">菜市场:</label>
<input type="text" class="form-input" value="春申菜市场" readonly>
<div style="color: #ff4d4f; font-size: 12px; margin-top: 5px;">请选择菜市场</div>
</div>
</div>
<div class="form-row">
<div class="form-group narrow">
<label class="form-label required">标题:</label>
<input type="text" class="form-input" value="购物须知">
</div>
</div>
<div class="text-editor-container">
<label class="form-label required">内容:</label>
<div class="toolbar">
<button type="button" class="toolbar-btn" onclick="execCommand('undo')"></button>
<button type="button" class="toolbar-btn" onclick="execCommand('redo')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('bold')"><strong>B</strong></button>
<button type="button" class="toolbar-btn" onclick="formatText('italic')"><em>I</em></button>
<button type="button" class="toolbar-btn" onclick="formatText('underline')"><u>U</u></button>
<button type="button" class="toolbar-btn" onclick="formatText('strikethrough')"><s>S</s></button>
<button type="button" class="toolbar-btn" onclick="formatText('subscript')">X₂</button>
<button type="button" class="toolbar-btn" onclick="formatText('superscript')"></button>
<button type="button" class="toolbar-btn" onclick="insertText('quote')">"</button>
<button type="button" class="toolbar-btn" onclick="formatText('justifyLeft')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('justifyCenter')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('justifyRight')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('justifyFull')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('insertOrderedList')">1.</button>
<button type="button" class="toolbar-btn" onclick="formatText('insertUnorderedList')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('outdent')"></button>
<button type="button" class="toolbar-btn" onclick="formatText('indent')"></button>
<button type="button" class="toolbar-btn"></button>
<button type="button" class="toolbar-btn"></button>
<button type="button" class="toolbar-btn"></button>
<button type="button" class="toolbar-btn">🔗</button>
<button type="button" class="toolbar-btn">🖼</button>
<button type="button" class="toolbar-btn">📊</button>
<button type="button" class="toolbar-btn">😊</button>
<button type="button" class="toolbar-btn">👁</button>
<button type="button" class="toolbar-btn">🖨</button>
<button type="button" class="toolbar-btn">🗑</button>
</div>
<div class="text-editor" contenteditable="true" id="contentEditor">
<div class="content-section sales-rules">
<div class="section-title">售后规则:</div>
<div class="rule-item">如有卖家原因(商品或配送问题)造成的退货产生的配送费用实家承担,其他原因引起的退货产生的配送费用实家承担。</div>
<div class="rule-item">收到货物请核对包装和商品的完整,确认收货后如需售后请联系店铺客服。</div>
</div>
<div class="content-section presale-rules">
<div class="section-title">预售规则:</div>
<div class="rule-item">商品定金支付成功后,订单即生效,定金不可退。</div>
<div class="rule-item">补尾款时支付包装费、调度费和配送费,补尾款期内未补尾款视为自动放弃此订单。</div>
</div>
</div>
</div>
<div class="action-buttons">
<button type="button" class="btn btn-warning">预览</button>
<button type="button" class="btn btn-primary">保存</button>
<button type="button" class="btn btn-success">发布</button>
</div>
</form>
</div>
</div>
<script>
// 文本编辑器功能
function execCommand(command) {
document.execCommand(command, false, null);
}
function formatText(command) {
document.execCommand(command, false, null);
}
function insertText(type) {
const editor = document.getElementById('contentEditor');
const selection = window.getSelection();
if (type === 'quote') {
document.execCommand('insertHTML', false, '"');
}
}
// 表单验证
function validateForm() {
const market = document.querySelector('input[value="春申菜市场"]');
const title = document.querySelector('input[value="购物须知"]');
const content = document.getElementById('contentEditor');
if (!market.value.trim()) {
alert('请选择菜市场');
return false;
}
if (!title.value.trim()) {
alert('请填写标题');
return false;
}
if (!content.textContent.trim()) {
alert('请填写内容');
return false;
}
return true;
}
// 按钮事件处理
document.addEventListener('DOMContentLoaded', function() {
const buttons = document.querySelectorAll('.action-buttons .btn');
buttons.forEach(button => {
button.addEventListener('click', function() {
const action = this.textContent.trim();
switch(action) {
case '预览':
if (validateForm()) {
alert('预览功能开发中...');
}
break;
case '保存':
if (validateForm()) {
alert('保存成功!');
}
break;
case '发布':
if (validateForm()) {
if (confirm('确认发布购物须知吗?发布后将对用户可见。')) {
alert('发布成功!');
}
}
break;
}
});
});
// 工具栏按钮状态切换
document.querySelectorAll('.toolbar-btn').forEach(btn => {
btn.addEventListener('click', function(e) {
e.preventDefault();
// 可以添加激活状态的切换逻辑
});
});
// 编辑器焦点处理
const editor = document.getElementById('contentEditor');
editor.addEventListener('focus', function() {
this.style.borderColor = '#1890ff';
});
editor.addEventListener('blur', function() {
this.style.borderColor = '#d9d9d9';
});
});
// 菜市场选择功能(模拟)
document.querySelector('input[value="春申菜市场"]').addEventListener('click', function() {
const markets = ['春申菜市场', '虹桥菜市场', '浦东菜市场', '徐汇菜市场'];
const selected = prompt('请选择菜市场:\n' + markets.map((m, i) => `${i + 1}. ${m}`).join('\n'));
if (selected && !isNaN(selected) && selected >= 1 && selected <= markets.length) {
this.value = markets[selected - 1];
this.nextElementSibling.style.display = 'none';
}
});
</script>
</body>
</html>