dm-design/商家端web/2.1 营销工具/2.1.1 会员功能/积分商城/已选择商品-弹窗.html

463 lines
13 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.0">
<title>已选择商品</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.modal {
background: white;
border-radius: 8px;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
width: 100%;
max-width: 500px;
position: relative;
overflow: hidden;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 24px;
border-bottom: 1px solid #f0f0f0;
background-color: #fafafa;
}
.modal-title {
font-size: 18px;
font-weight: 600;
color: #333;
}
.close-btn {
width: 24px;
height: 24px;
border: none;
background: none;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: #666;
font-size: 18px;
border-radius: 4px;
transition: background-color 0.2s;
}
.close-btn:hover {
background-color: #f5f5f5;
}
.modal-content {
padding: 24px;
}
.product-info {
margin-bottom: 24px;
padding: 16px;
background-color: #f8f9fa;
border-radius: 6px;
border: 1px solid #e9ecef;
}
.info-row {
display: flex;
margin-bottom: 8px;
font-size: 14px;
}
.info-row:last-child {
margin-bottom: 0;
}
.info-label {
color: #666;
width: 80px;
flex-shrink: 0;
}
.info-value {
color: #333;
flex: 1;
}
.form-group {
margin-bottom: 20px;
}
.form-label {
display: block;
margin-bottom: 8px;
font-size: 14px;
color: #333;
font-weight: 500;
}
.required {
color: #ff4757;
}
.input-wrapper {
position: relative;
}
.form-input {
width: 100%;
padding: 10px 12px;
border: 1px solid #d9d9d9;
border-radius: 4px;
font-size: 14px;
transition: border-color 0.2s;
}
.form-input:focus {
outline: none;
border-color: #1890ff;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}
.number-input-group {
display: flex;
align-items: center;
border: 1px solid #d9d9d9;
border-radius: 4px;
overflow: hidden;
background: white;
}
.number-input-group:focus-within {
border-color: #1890ff;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}
.number-btn {
width: 32px;
height: 40px;
border: none;
background: #fafafa;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
color: #666;
transition: background-color 0.2s;
}
.number-btn:hover {
background-color: #f0f0f0;
}
.number-btn:disabled {
cursor: not-allowed;
color: #ccc;
}
.number-input {
flex: 1;
border: none;
padding: 10px 12px;
font-size: 14px;
text-align: center;
outline: none;
}
.select-wrapper {
position: relative;
}
.form-select {
width: 100%;
padding: 10px 32px 10px 12px;
border: 1px solid #d9d9d9;
border-radius: 4px;
font-size: 14px;
background: white;
cursor: pointer;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
.form-select:focus {
outline: none;
border-color: #1890ff;
box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}
.select-arrow {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
pointer-events: none;
color: #666;
}
.limit-setting {
display: flex;
gap: 12px;
align-items: flex-end;
}
.limit-input {
flex: 1;
}
.limit-select {
flex: 0 0 100px;
}
.modal-footer {
padding: 16px 24px;
border-top: 1px solid #f0f0f0;
display: flex;
gap: 12px;
justify-content: flex-end;
}
.btn {
padding: 8px 24px;
border-radius: 4px;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
border: 1px solid;
min-width: 80px;
}
.btn-cancel {
background: white;
color: #666;
border-color: #d9d9d9;
}
.btn-cancel:hover {
background: #f5f5f5;
border-color: #bfbfbf;
}
.btn-primary {
background: #1890ff;
color: white;
border-color: #1890ff;
}
.btn-primary:hover {
background: #40a9ff;
border-color: #40a9ff;
}
@media (max-width: 480px) {
.modal {
margin: 0;
border-radius: 0;
height: 100vh;
max-width: none;
}
.modal-content {
padding: 20px;
}
.modal-footer {
padding: 16px 20px;
}
.btn {
flex: 1;
}
}
</style>
</head>
<body>
<div class="modal">
<div class="modal-header">
<h2 class="modal-title">已选择商品</h2>
<button class="close-btn" onclick="closeModal()">×</button>
</div>
<div class="modal-content">
<div class="product-info">
<div class="info-row">
<span class="info-label">商品ID:</span>
<span class="info-value">192401649879976960</span>
</div>
<div class="info-row">
<span class="info-label">商品名称:</span>
<span class="info-value">黑木耳100g</span>
</div>
<div class="info-row">
<span class="info-label">归属摊位:</span>
<span class="info-value">牛生蔬菜店</span>
</div>
</div>
<div class="form-group">
<label class="form-label">SKU-ID</label>
<input type="text" class="form-input" value="194105142774503836" readonly>
</div>
<div class="form-group">
<label class="form-label">兑换所需积分设置 <span class="required">*</span></label>
<div class="number-input-group">
<button class="number-btn" onclick="decreasePoints()">-</button>
<input type="number" class="number-input" id="pointsInput" value="1" min="1">
<button class="number-btn" onclick="increasePoints()">+</button>
</div>
</div>
<div class="form-group">
<label class="form-label">兑换库存设置 <span class="required">*</span></label>
<div class="number-input-group">
<button class="number-btn" onclick="decreaseStock()">-</button>
<input type="number" class="number-input" id="stockInput" value="10" min="0">
<button class="number-btn" onclick="increaseStock()">+</button>
</div>
</div>
<div class="form-group">
<label class="form-label">限制兑换(每人购买不超) <span class="required">*</span></label>
<div class="limit-setting">
<div class="limit-input">
<div class="number-input-group">
<button class="number-btn" onclick="decreaseLimit()">-</button>
<input type="number" class="number-input" id="limitInput" value="0" min="0">
<button class="number-btn" onclick="increaseLimit()">+</button>
</div>
</div>
<div class="limit-select">
<div class="select-wrapper">
<select class="form-select" id="limitType">
<option value="daily">每天</option>
<option value="weekly">每周</option>
<option value="monthly">每月</option>
<option value="total">总计</option>
</select>
<span class="select-arrow"></span>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-cancel" onclick="closeModal()">取消</button>
<button class="btn btn-primary" onclick="confirmSelection()">确认</button>
</div>
</div>
<script>
// 积分设置
function increasePoints() {
const input = document.getElementById('pointsInput');
input.value = parseInt(input.value) + 1;
}
function decreasePoints() {
const input = document.getElementById('pointsInput');
const currentValue = parseInt(input.value);
if (currentValue > 1) {
input.value = currentValue - 1;
}
}
// 库存设置
function increaseStock() {
const input = document.getElementById('stockInput');
input.value = parseInt(input.value) + 1;
}
function decreaseStock() {
const input = document.getElementById('stockInput');
const currentValue = parseInt(input.value);
if (currentValue > 0) {
input.value = currentValue - 1;
}
}
// 限制兑换设置
function increaseLimit() {
const input = document.getElementById('limitInput');
input.value = parseInt(input.value) + 1;
}
function decreaseLimit() {
const input = document.getElementById('limitInput');
const currentValue = parseInt(input.value);
if (currentValue > 0) {
input.value = currentValue - 1;
}
}
// 关闭弹窗
function closeModal() {
// 这里可以添加关闭弹窗的逻辑
console.log('关闭弹窗');
// 实际应用中可能会隐藏弹窗或者跳转页面
// window.close(); // 如果是新窗口
// 或者隐藏弹窗元素
}
// 确认选择
function confirmSelection() {
const points = document.getElementById('pointsInput').value;
const stock = document.getElementById('stockInput').value;
const limit = document.getElementById('limitInput').value;
const limitType = document.getElementById('limitType').value;
// 验证必填项
if (!points || !stock || limit === '') {
alert('请填写所有必填项');
return;
}
// 这里可以添加提交数据的逻辑
const data = {
productId: '192401649879976960',
productName: '黑木耳100g',
shopName: '牛生蔬菜店',
skuId: '194105142774503836',
points: points,
stock: stock,
limit: limit,
limitType: limitType
};
console.log('提交数据:', data);
alert('设置成功!');
}
// 键盘事件处理
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
closeModal();
}
});
// 点击背景关闭弹窗
document.addEventListener('click', function(e) {
if (e.target === document.body) {
closeModal();
}
});
</script>
</body>
</html>