Browse Source

Update Reject.js and supply.html

Boss2
Default User 2 months ago
parent
commit
4be8432632
  1. 208
      Reject.js
  2. 291
      supply.html

208
Reject.js

@ -21,27 +21,29 @@ app.use((req, res, next) => {
app.use(bodyParser.json({ limit: '10mb' }));
app.use(express.static(path.join(__dirname)));
// 数据库配置
// 数据库配置 - 从环境变量获取,与docker-compose.yml保持一致
const dbConfig = {
host: '1.95.162.61',
user: 'root',
password: 'schl@2025', // 请替换为实际的数据库密码
database: 'wechat_app', // 连接到wechat_app数据库
host: process.env.DB_HOST || '1.95.162.61',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || 'schl@2025',
database: process.env.DB_NAME || 'wechat_app',
waitForConnections: true,
connectionLimit: 10,
connectionLimit: 20, // 增加连接池大小,提高并发处理能力
queueLimit: 0,
connectTimeout: 10000, // 增加连接超时时间(mysql2支持的选项)
timezone: '+08:00' // 设置为北京时间时区
};
// userlogin数据库配置
// userlogin数据库配置 - 从环境变量获取
const userLoginDbConfig = {
host: '1.95.162.61',
user: 'root',
password: 'schl@2025', // 请替换为实际的数据库密码
database: 'userlogin', // 连接到userlogin数据库
host: process.env.DB_HOST || '1.95.162.61',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || 'schl@2025',
database: process.env.USER_LOGIN_DB_NAME || 'userlogin',
waitForConnections: true,
connectionLimit: 10,
connectionLimit: 20, // 增加连接池大小
queueLimit: 0,
connectTimeout: 10000, // 增加连接超时时间(mysql2支持的选项)
timezone: '+08:00' // 设置为北京时间时区
};
@ -813,7 +815,10 @@ app.post('/api/supplies/create', async (req, res) => {
imageUrls: uploadedImageUrls.length > 0 ? JSON.stringify(uploadedImageUrls) : '[]',
created_at: new Date(),
product_contact: productContact, // 添加联系人名称
contact_phone: contactPhone // 添加联系人电话
contact_phone: contactPhone, // 添加联系人电话
autoOfflineTime: req.body.autoOfflineTime, // 自动下架时间
autoOfflineDays: req.body.autoOfflineDays, // 自动下架天数
autoOfflineHours: req.body.autoOfflineHours // 自动下架小时数
};
// 插入商品数据
@ -826,21 +831,21 @@ app.post('/api/supplies/create', async (req, res) => {
if (columns.length === 0) {
// 没有quality字段,不包含quality字段的插入
insertQuery = 'INSERT INTO products (productId, sellerId, productName, category, price, quantity, grossWeight, yolk, specification, producting, region, status, supplyStatus, sourceType, description, rejectReason, imageUrls, created_at, audit_time, product_contact, contact_phone) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
insertQuery = 'INSERT INTO products (productId, sellerId, productName, category, price, quantity, grossWeight, yolk, specification, producting, region, status, supplyStatus, sourceType, description, rejectReason, imageUrls, created_at, audit_time, product_contact, contact_phone, autoOfflineTime, autoOfflineDays, autoOfflineHours) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
insertParams = [
productId, productData.sellerId, productName, category || '', price.toString(), quantity, grossWeight,
yolk, specification, producting, region, productData.status, productData.supplyStatus, productData.sourceType,
productData.description, productData.rejectReason, productData.imageUrls, new Date(), new Date(),
productContact, contactPhone // 添加联系人信息
productContact, contactPhone, req.body.autoOfflineTime, req.body.autoOfflineDays, req.body.autoOfflineHours // 添加联系人信息和自动下架时间、小时数
];
} else {
// 有quality字段,包含quality字段的插入
insertQuery = 'INSERT INTO products (productId, sellerId, productName, category, price, quantity, grossWeight, yolk, specification, producting, quality, region, status, supplyStatus, sourceType, description, rejectReason, imageUrls, created_at, audit_time, product_contact, contact_phone) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
insertQuery = 'INSERT INTO products (productId, sellerId, productName, category, price, quantity, grossWeight, yolk, specification, producting, quality, region, status, supplyStatus, sourceType, description, rejectReason, imageUrls, created_at, audit_time, product_contact, contact_phone, autoOfflineTime, autoOfflineDays, autoOfflineHours) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
insertParams = [
productId, productData.sellerId, productName, category || '', price.toString(), quantity, grossWeight,
yolk, specification, producting, quality, region, productData.status, productData.supplyStatus,
productData.sourceType, productData.description, productData.rejectReason, productData.imageUrls,
new Date(), new Date(), productContact, contactPhone // 添加联系人信息
new Date(), new Date(), productContact, contactPhone, req.body.autoOfflineTime, req.body.autoOfflineDays, req.body.autoOfflineHours // 添加联系人信息和自动下架时间、小时数
];
}
@ -978,9 +983,9 @@ app.post('/api/supplies/:id/publish', async (req, res) => {
return sendResponse(res, false, null, '货源不存在');
}
// 更新状态为已发布(直接上架,不需要审核)
// 更新状态为已发布(直接上架,不需要审核),同时更新updated_at和autoOfflineHours
await connection.query(
'UPDATE products SET status = ? WHERE id = ?',
'UPDATE products SET status = ?, updated_at = NOW() WHERE id = ?',
['published', productId]
);
@ -1037,6 +1042,54 @@ app.post('/api/supplies/:id/delete', async (req, res) => {
}
});
// 更新货源状态API - /api/supplies/:id
console.log('正在注册更新货源状态API路由: /api/supplies/:id');
app.put('/api/supplies/:id', async (req, res) => {
console.log('收到更新货源状态请求:', req.params.id, req.body);
try {
const connection = await pool.getConnection();
const productId = req.params.id;
const { status } = req.body;
// 验证状态参数
if (!status) {
connection.release();
return sendResponse(res, false, null, '状态不能为空');
}
// 开始事务
await connection.beginTransaction();
// 检查当前状态
const [currentProduct] = await connection.query(
'SELECT status FROM products WHERE id = ?',
[productId]
);
if (currentProduct.length === 0) {
await connection.rollback();
connection.release();
return sendResponse(res, false, null, '货源不存在');
}
// 更新状态
await connection.query(
'UPDATE products SET status = ? WHERE id = ?',
[status, productId]
);
// 提交事务
await connection.commit();
connection.release();
sendResponse(res, true, null, '货源状态更新成功');
} catch (error) {
console.error('更新货源状态失败:', error.message);
console.error('错误详情:', error);
sendResponse(res, false, null, '更新货源状态失败');
}
});
// 编辑货源API - /api/supplies/:id/edit
console.log('正在注册编辑货源API路由: /api/supplies/:id/edit');
app.put('/api/supplies/:id/edit', async (req, res) => {
@ -1112,19 +1165,34 @@ app.put('/api/supplies/:id/edit', async (req, res) => {
console.log('图片处理完成,成功上传', uploadedImageUrls.length, '张图片');
}
// 处理数量:由于数据库中quantity是int类型,只保存第一个数量值
let quantityValue = 0;
if (quantity) {
if (typeof quantity === 'string' && quantity.includes(',')) {
// 逗号分隔的多个数量,只取第一个
quantityValue = parseInt(quantity.split(',')[0].trim()) || 0;
} else {
quantityValue = parseInt(quantity) || 0;
}
}
// 更新货源信息
const updateQuery = `
UPDATE products
SET productName = ?, price = ?, quantity = ?, grossWeight = ?,
yolk = ?, specification = ?, producting = ?, supplyStatus = ?, description = ?, region = ?,
product_contact = ?, contact_phone = ?, imageUrls = ?
product_contact = ?, contact_phone = ?, imageUrls = ?,
autoOfflineHours = ?, updated_at = ?
WHERE id = ?
`;
await connection.query(updateQuery, [
productName, price.toString(), parseInt(quantity), grossWeight,
productName, price.toString(), quantityValue, grossWeight,
yolk, specification, producting, supplyStatus, description, region,
productContact, contactPhone, JSON.stringify(uploadedImageUrls), productId
productContact, contactPhone, JSON.stringify(uploadedImageUrls),
req.body.autoOfflineHours || 24, // 默认24小时
new Date(), // 更新updated_at字段
productId
]);
// 提交事务
@ -1323,6 +1391,102 @@ async function ensureDatabaseSchema() {
);
console.log('rejectReason字段添加成功');
}
// 检查表是否有autoOfflineTime字段
console.log('检查表products是否有autoOfflineTime字段...');
const [autoOfflineTimeColumns] = await connection.query(
'SHOW COLUMNS FROM `products` LIKE ?',
['autoOfflineTime']
);
console.log('检查表字段结果:', autoOfflineTimeColumns.length > 0 ? '已存在' : '不存在');
if (autoOfflineTimeColumns.length === 0) {
console.log('添加autoOfflineTime字段到products表...');
await connection.query(
'ALTER TABLE `products` ADD COLUMN autoOfflineTime DATETIME COMMENT "自动下架时间"'
);
console.log('autoOfflineTime字段添加成功');
}
// 检查表是否有autoOfflineDays字段
console.log('检查表products是否有autoOfflineDays字段...');
const [autoOfflineDaysColumns] = await connection.query(
'SHOW COLUMNS FROM `products` LIKE ?',
['autoOfflineDays']
);
console.log('检查表字段结果:', autoOfflineDaysColumns.length > 0 ? '已存在' : '不存在');
if (autoOfflineDaysColumns.length === 0) {
console.log('添加autoOfflineDays字段到products表...');
await connection.query(
'ALTER TABLE `products` ADD COLUMN autoOfflineDays INT COMMENT "自动下架天数"'
);
console.log('autoOfflineDays字段添加成功');
}
// 检查表是否有autoOfflineHours字段
console.log('检查表products是否有autoOfflineHours字段...');
const [autoOfflineHoursColumns] = await connection.query(
'SHOW COLUMNS FROM `products` LIKE ?',
['autoOfflineHours']
);
console.log('检查表字段结果:', autoOfflineHoursColumns.length > 0 ? '已存在' : '不存在');
if (autoOfflineHoursColumns.length === 0) {
console.log('添加autoOfflineHours字段到products表...');
await connection.query(
'ALTER TABLE `products` ADD COLUMN autoOfflineHours FLOAT COMMENT "自动下架小时数"'
);
console.log('autoOfflineHours字段添加成功');
}
// 检查表是否有supplyStatus字段
console.log('检查表products是否有supplyStatus字段...');
const [supplyStatusColumns] = await connection.query(
'SHOW COLUMNS FROM `products` LIKE ?',
['supplyStatus']
);
console.log('检查表字段结果:', supplyStatusColumns.length > 0 ? '已存在' : '不存在');
if (supplyStatusColumns.length === 0) {
console.log('添加supplyStatus字段到products表...');
await connection.query(
'ALTER TABLE `products` ADD COLUMN supplyStatus VARCHAR(50) COMMENT "货源状态"'
);
console.log('supplyStatus字段添加成功');
}
// 检查表是否有sourceType字段
console.log('检查表products是否有sourceType字段...');
const [sourceTypeColumns] = await connection.query(
'SHOW COLUMNS FROM `products` LIKE ?',
['sourceType']
);
console.log('检查表字段结果:', sourceTypeColumns.length > 0 ? '已存在' : '不存在');
if (sourceTypeColumns.length === 0) {
console.log('添加sourceType字段到products表...');
await connection.query(
'ALTER TABLE `products` ADD COLUMN sourceType VARCHAR(50) COMMENT "货源类型"'
);
console.log('sourceType字段添加成功');
}
// 检查表是否有category字段
console.log('检查表products是否有category字段...');
const [categoryColumns] = await connection.query(
'SHOW COLUMNS FROM `products` LIKE ?',
['category']
);
console.log('检查表字段结果:', categoryColumns.length > 0 ? '已存在' : '不存在');
if (categoryColumns.length === 0) {
console.log('添加category字段到products表...');
await connection.query(
'ALTER TABLE `products` ADD COLUMN category VARCHAR(50) COMMENT "种类"'
);
console.log('category字段添加成功');
}
// 检查表是否有audit_time字段
console.log('检查表products是否有audit_time字段...');

291
supply.html

@ -1306,6 +1306,29 @@
<label class="form-label">货源描述</label>
<input type="text" class="form-input" id="description" placeholder="请输入货源描述">
</div>
<!-- 自动下架时间 -->
<div class="form-group">
<label class="form-label">自动下架时间</label>
<select class="form-select" id="autoOfflineMinutes">
<option value="1">1分钟</option>
<option value="5">5分钟</option>
<option value="10">10分钟</option>
<option value="30">30分钟</option>
<option value="60">60分钟 (1小时)</option>
<option value="120">120分钟 (2小时)</option>
<option value="180">180分钟 (3小时)</option>
<option value="360">360分钟 (6小时)</option>
<option value="720">720分钟 (12小时)</option>
<option value="1440">1440分钟 (1天)</option>
<option value="2880">2880分钟 (2天)</option>
<option value="4320">4320分钟 (3天)</option>
<option value="5760">5760分钟 (4天)</option>
<option value="7200">7200分钟 (5天)</option>
<option value="8640">8640分钟 (6天)</option>
<option value="10080">10080分钟 (7天)</option>
</select>
</div>
</form>
</div>
<div class="modal-footer">
@ -1675,6 +1698,29 @@
<label class="form-label">货源描述</label>
<input type="text" class="form-input" id="editDescription" placeholder="请输入货源描述">
</div>
<!-- 自动下架时间 -->
<div class="form-group">
<label class="form-label">自动下架时间</label>
<select class="form-select" id="editAutoOfflineMinutes">
<option value="1">1分钟</option>
<option value="5">5分钟</option>
<option value="10">10分钟</option>
<option value="30">30分钟</option>
<option value="60">60分钟 (1小时)</option>
<option value="120">120分钟 (2小时)</option>
<option value="180">180分钟 (3小时)</option>
<option value="360">360分钟 (6小时)</option>
<option value="720">720分钟 (12小时)</option>
<option value="1440">1440分钟 (1天)</option>
<option value="2880">2880分钟 (2天)</option>
<option value="4320">4320分钟 (3天)</option>
<option value="5760">5760分钟 (4天)</option>
<option value="7200">7200分钟 (5天)</option>
<option value="8640">8640分钟 (6天)</option>
<option value="10080">10080分钟 (7天)</option>
</select>
</div>
</form>
</div>
<div class="modal-footer">
@ -1983,8 +2029,158 @@
// 初始化至少一个规格和件数对
addSpecQuantityPair();
// 启动倒计时
startCountdowns();
// 启动自动检查下架时间
startAutoOfflineCheck();
};
// 启动倒计时
function startCountdowns() {
// 立即更新一次倒计时
updateCountdowns();
// 每秒更新一次倒计时
setInterval(updateCountdowns, 1000);
}
// 更新倒计时显示
function updateCountdowns() {
console.log('=== 更新倒计时 ===');
// 更新所有倒计时元素
const countdownElements = document.querySelectorAll('.countdown-badge, .countdown');
console.log('找到的倒计时元素数量:', countdownElements.length);
countdownElements.forEach(element => {
const supplyId = element.dataset.id;
console.log('处理倒计时元素,supplyId:', supplyId);
// 查找对应的货源
const supply = supplyData.supplies.find(s => String(s.id) === String(supplyId));
if (supply) {
console.log('找到对应的货源:', supply.id, supply.productName);
// 计算下架时间:updated_at + autoOfflineHours(使用毫秒数计算,更精确)
const updatedAt = new Date(supply.updated_at || supply.created_at);
console.log('updatedAt:', updatedAt, 'supply.updated_at:', supply.updated_at, 'supply.created_at:', supply.created_at);
const autoOfflineHours = parseFloat(supply.autoOfflineHours) || 24; // 默认24小时,转换为数字
console.log('autoOfflineHours:', autoOfflineHours, 'supply.autoOfflineHours:', supply.autoOfflineHours);
// 将小时转换为毫秒,使用setTime方法更精确
const autoOfflineMs = autoOfflineHours * 60 * 60 * 1000;
const offlineTime = new Date(updatedAt.getTime() + autoOfflineMs);
console.log('offlineTime:', offlineTime);
const now = new Date();
console.log('当前时间:', now);
const timeDiff = offlineTime - now;
console.log('时间差:', timeDiff, '毫秒');
if (timeDiff > 0) {
// 计算剩余下架时间
const days = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
const hours = Math.floor((timeDiff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((timeDiff % (1000 * 60)) / 1000);
console.log('剩余下架时间:', days, '天', hours, '小时', minutes, '分钟', seconds, '秒');
// 更新显示
let countdownText = '';
if (days > 0) {
countdownText = `${days}天${hours}时${minutes}分`;
} else if (hours > 0) {
countdownText = `${hours}时${minutes}分`;
} else {
countdownText = `${minutes}分${seconds}秒`;
}
// 根据元素类型设置不同的显示格式
if (element.classList.contains('countdown-badge')) {
element.innerHTML = `⏰ ${countdownText}`;
element.style.background = 'linear-gradient(135deg, #ff6b6b, #ee5a6f)';
element.style.boxShadow = '0 2px 4px rgba(255, 107, 107, 0.3)';
} else if (element.classList.contains('countdown')) {
element.innerHTML = `剩余下架时间: ${countdownText}`;
}
console.log('更新倒计时显示为:', countdownText);
} else {
// 时间到了
console.log('时间已到,显示已下架');
if (element.classList.contains('countdown-badge')) {
element.innerHTML = '⏰ 已下架';
element.style.background = '#8c8c8c';
element.style.boxShadow = '0 2px 4px rgba(140, 140, 140, 0.3)';
} else if (element.classList.contains('countdown')) {
element.innerHTML = '剩余下架时间: 已下架';
}
}
} else {
console.log('未找到对应的货源,supplyId:', supplyId);
console.log('supplyData.supplies:', supplyData.supplies);
}
});
}
// 启动自动检查下架时间
function startAutoOfflineCheck() {
// 每30秒检查一次,平衡及时性和服务器负载
setInterval(checkAutoOffline, 30000);
// 立即检查一次
checkAutoOffline();
}
// 检查自动下架时间
async function checkAutoOffline() {
console.log('=== 开始检查自动下架时间 ===');
const allSupplies = supplyData.supplies;
const now = new Date();
console.log('检查的货源总数:', allSupplies.length);
for (const supply of allSupplies) {
console.log('检查货源:', supply.id, supply.productName, '当前状态:', supply.status);
// 检查所有状态为published的货源,不管前端显示什么
if (supply.status === 'published') {
console.log('处理上架状态的货源:', supply.id);
// 计算下架时间:updated_at + autoOfflineHours(使用毫秒数计算,更精确)
const updatedAt = new Date(supply.updated_at || supply.created_at);
const autoOfflineHours = parseFloat(supply.autoOfflineHours) || 24; // 默认24小时,转换为数字
console.log('autoOfflineHours:', autoOfflineHours);
// 将小时转换为毫秒,使用setTime方法更精确
const autoOfflineMs = autoOfflineHours * 60 * 60 * 1000;
const offlineTime = new Date(updatedAt.getTime() + autoOfflineMs);
console.log('计算的下架时间:', offlineTime, '当前时间:', now);
if (now >= offlineTime) {
// 时间到了,修改状态
console.log('时间到了,调用updateSupplyStatus:', supply.id, '从published改为sold_out');
await updateSupplyStatus(supply.id, 'sold_out');
}
}
}
}
// 更新货源状态
async function updateSupplyStatus(supplyId, status) {
try {
// 调用API修改状态
const response = await fetch(`/api/supplies/${supplyId}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ status: status })
});
if (response.ok) {
// 重新加载货源列表
loadSupplies();
console.log(`货源 ${supplyId} 状态已更新为 ${status}`);
}
} catch (error) {
console.error('更新货源状态失败:', error);
}
}
// 绑定事件
function bindEvents() {
// 监听窗口大小变化
@ -3505,6 +3701,12 @@
console.log(`过滤掉不属于当前用户的货源: 货源sellerId=${supply.sellerId},当前用户ID=${currentUserId}`);
} else {
console.log(`保留当前用户的货源: 货源sellerId=${supply.sellerId},当前用户ID=${currentUserId}`);
// 添加调试日志,查看自动下架相关字段
console.log(`货源 ${supply.id || supply.productId} 的autoOfflineHours:`, supply.autoOfflineHours);
console.log(`货源 ${supply.id || supply.productId} 的autoOfflineTime:`, supply.autoOfflineTime);
console.log(`货源 ${supply.id || supply.productId} 的status:`, supply.status);
console.log(`货源 ${supply.id || supply.productId} 的updated_at:`, supply.updated_at);
console.log(`货源 ${supply.id || supply.productId} 的created_at:`, supply.created_at);
}
return match;
});
@ -3571,6 +3773,9 @@
});
listElement.innerHTML = html;
// 渲染完成后立即更新倒计时
updateCountdowns();
}
// 加载更多货源
@ -3745,6 +3950,7 @@
<div class="supply-name">
${supply.productName}
<span class="supply-status ${status.class}">${status.text}</span>
<span class="countdown-badge" data-id="${supply.id}" style="margin-left: 8px; padding: 4px 12px; background: linear-gradient(135deg, #ff6b6b, #ee5a6f); color: white; border-radius: 16px; font-size: 12px; font-weight: 500; box-shadow: 0 2px 4px rgba(255, 107, 107, 0.3); display: inline-flex; align-items: center; gap: 4px;">⏰ 计算中...</span>
<button class="copy-supply-btn" onclick="copySupply('${supply.id}')">复制</button>
</div>
<!-- 基本信息 -->
@ -3756,6 +3962,7 @@
<div class="detail-item">地区: ${supply.region || '未设置'}</div>
<div class="detail-item" style="color: #f5222d;">价格: ¥${supply.price || '0'}</div>
<div class="detail-item" style="font-size: 12px; color: #999;">创建时间: ${formatDate(supply.created_at)}</div>
<div class="detail-item" style="color: #faad14;"><span class="countdown" data-id="${supply.id}">剩余下架时间: 计算中...</span></div>
</div>
</div>
<!-- 右侧规格-件数对 -->
@ -4751,6 +4958,14 @@
}
});
// 获取自动下架分钟数
const autoOfflineMinutes = document.getElementById('autoOfflineMinutes').value;
// 将分钟转换为小时(用于存储到数据库)
const autoOfflineHours = parseFloat(autoOfflineMinutes) / 60;
// 计算自动下架时间(当前时间 + 分钟数)
const autoOfflineTime = new Date();
autoOfflineTime.setMinutes(autoOfflineTime.getMinutes() + parseFloat(autoOfflineMinutes));
const formData = {
productName: document.getElementById('productName').value,
category: document.getElementById('category').value,
@ -4766,7 +4981,10 @@
region: document.getElementById('regionValue').value,
contactId: document.getElementById('contactId').value,
imageUrls: supplyData.uploadedImages,
sellerId: userInfo.userId // 添加当前登录用户的userId作为sellerId
sellerId: userInfo.userId, // 添加当前登录用户的userId作为sellerId
autoOfflineDays: null, // 不再使用天数,设置为null
autoOfflineHours: autoOfflineHours,
autoOfflineTime: autoOfflineTime.toISOString()
};
// 验证表单
@ -5300,10 +5518,6 @@
document.getElementById('editYolk').value = supply.yolk || '';
editSelectedYolk = supply.yolk || '';
document.getElementById('editSpecDisplayText').textContent = supply.specification || '请选择规格';
document.getElementById('editSpecValue').value = supply.specification || '';
editSelectedSpec = supply.specification || '';
// 产品包装
document.getElementById('editProductingDisplayText').textContent = supply.producting || '请选择产品包装';
document.getElementById('editProductingValue').value = supply.producting || '';
@ -5326,6 +5540,10 @@
document.getElementById('editPrice').value = supply.price || '';
document.getElementById('editGrossWeight').value = supply.grossWeight || '';
// 自动下架时间(将小时转换为分钟)
const autoOfflineMinutes = (parseFloat(supply.autoOfflineHours) || 24) * 60;
document.getElementById('editAutoOfflineMinutes').value = Math.round(autoOfflineMinutes);
// 规格和件数 - 支持中文逗号分隔和英文逗号分隔字符串
let specifications = [];
let quantities = [];
@ -5567,56 +5785,12 @@
} else {
currentEditSpecInput.value = '';
}
} else {
// 否则,为旧的规格选择逻辑
if (editSelectedSpec.length > 0) {
document.getElementById('editSpecDisplayText').textContent = editSelectedSpec.join(', ');
document.getElementById('editSpecValue').value = JSON.stringify(editSelectedSpec);
// 根据选中的规格数量动态调整件数输入框数量
adjustEditQuantityInputs();
} else {
document.getElementById('editSpecDisplayText').textContent = '请选择规格';
document.getElementById('editSpecValue').value = '[]';
}
}
hideEditSpecSelectModal();
}
// 添加编辑件数输入项
function addEditQuantityItem() {
const container = document.getElementById('editQuantityContainer');
const quantityItem = document.createElement('div');
quantityItem.className = 'quantity-item';
quantityItem.innerHTML = `
<input type="number" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()">
<button type="button" class="remove-quantity-btn" onclick="removeEditQuantityItem(this)">×</button>
`;
container.insertBefore(quantityItem, container.lastElementChild);
}
// 删除编辑件数输入项
function removeEditQuantityItem(btn) {
const container = document.getElementById('editQuantityContainer');
const quantityItems = container.querySelectorAll('.quantity-item');
// 至少保留一个件数输入项
if (quantityItems.length > 1) {
const quantityItem = btn.parentElement;
quantityItem.remove();
}
}
// 根据选中的规格数量调整编辑件数输入框数量
function adjustEditQuantityInputs() {
const container = document.getElementById('editQuantityContainer');
const quantityItems = container.querySelectorAll('.quantity-item');
const specCount = editSelectedSpec.length;
// 如果规格数量大于件数输入框数量,添加缺少的输入框
while (quantityItems.length < specCount) {
addEditQuantityItem();
}
}
// 添加编辑规格和件数对
function addEditSpecQuantityPair() {
@ -6297,6 +6471,18 @@
}
});
// 获取自动下架分钟数
const autoOfflineMinutes = document.getElementById('editAutoOfflineMinutes')?.value;
// 将分钟转换为小时(用于存储到数据库)
const autoOfflineHours = parseFloat(autoOfflineMinutes) / 60;
// 计算自动下架时间(当前时间 + 分钟数)
let autoOfflineTime = null;
if (autoOfflineMinutes) {
autoOfflineTime = new Date();
autoOfflineTime.setMinutes(autoOfflineTime.getMinutes() + parseFloat(autoOfflineMinutes));
autoOfflineTime = autoOfflineTime.toISOString();
}
const formData = {
productName: document.getElementById('editProductName').value,
sourceType: document.getElementById('editSourceType').value,
@ -6311,7 +6497,10 @@
description: document.getElementById('editDescription').value,
region: document.getElementById('editRegionValue').value,
contactId: document.getElementById('editContactId').value,
imageUrls: editCurrentImages // 添加编辑后的图片列表
imageUrls: editCurrentImages, // 添加编辑后的图片列表
autoOfflineTime: autoOfflineTime, // 自动下架时间
autoOfflineDays: null, // 不再使用天数,设置为null
autoOfflineHours: autoOfflineHours // 自动下架小时数(分钟转换而来)
};
// 验证表单

Loading…
Cancel
Save