Browse Source

合并提交 02f1fba: 更新货源管理系统功能和样式

pull/4/head
Trae AI 2 months ago
parent
commit
3f46a1fe62
  1. 238
      supply.html

238
supply.html

@ -993,52 +993,9 @@
</div> </div>
<div id="publishedList" class="supply-list"> <div id="publishedList" class="supply-list">
<div class="empty-state">暂无已上架的货源</div> <div class="empty-state">暂无已上架的货源</div>
</div>
</div>
<!-- 产品包装选择弹窗 -->
<div id="productingSelectModal" class="select-modal">
<div class="select-content">
<div class="select-header">
<h3>选择产品包装</h3>
<button class="close-btn" onclick="hideProductingSelectModal()">×</button>
</div>
<div class="select-search">
<input type="text" id="productingSearchInput" placeholder="搜索产品包装" oninput="filterProductingOptions()" style="width: 100%; padding: 10px; border: 1px solid #d9d9d9; border-radius: 8px; font-size: 14px;">
</div>
<div class="select-body">
<div id="productingOptionsList" class="select-list">
<!-- 产品包装选项将通过JavaScript动态生成 -->
</div>
</div>
<div class="select-footer" style="padding: 16px 20px; display: flex; justify-content: space-between; border-top: 1px solid #f0f0f0; background-color: #fafafa;">
<button onclick="hideProductingSelectModal()" style="padding: 10px 24px; background-color: #f5f5f5; color: #666; border: none; border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.3s ease;">取消</button>
<button onclick="confirmProductingSelection()" style="padding: 10px 24px; background-color: #1677ff; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.3s ease;">确定</button>
</div>
</div>
</div>
<!-- 编辑产品包装选择弹窗 -->
<div id="editProductingSelectModal" class="select-modal">
<div class="select-content">
<div class="select-header">
<h3>选择产品包装</h3>
<button class="close-btn" onclick="hideEditProductingSelectModal()">×</button>
</div>
<div class="select-search">
<input type="text" id="editProductingSearchInput" placeholder="搜索产品包装" oninput="filterEditProductingOptions()" style="width: 100%; padding: 10px; border: 1px solid #d9d9d9; border-radius: 8px; font-size: 14px;">
</div>
<div class="select-body">
<div id="editProductingOptionsList" class="select-list">
<!-- 产品包装选项将通过JavaScript动态生成 -->
</div>
</div>
<div class="select-footer" style="padding: 16px 20px; display: flex; justify-content: space-between; border-top: 1px solid #f0f0f0; background-color: #fafafa;">
<button onclick="hideEditProductingSelectModal()" style="padding: 10px 24px; background-color: #f5f5f5; color: #666; border: none; border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.3s ease;">取消</button>
<button onclick="confirmEditProductingSelection()" style="padding: 10px 24px; background-color: #1677ff; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.3s ease;">确定</button>
</div> </div>
</div> </div>
</div>
<!-- 审核中的货源 --> <!-- 审核中的货源 -->
<div class="supply-section"> <div class="supply-section">
<div class="section-header" onclick="toggleSection('pending')"> <div class="section-header" onclick="toggleSection('pending')">
@ -1163,15 +1120,6 @@
</div> </div>
</div> </div>
<!-- 产品包装 -->
<div class="form-group">
<label class="form-label">产品包装</label>
<div class="form-select" id="producting" onclick="showProductingSelectModal()" style="cursor: pointer; position: relative; padding-right: 30px;">
<span id="productingDisplayText">请选择产品包装</span>
<input type="hidden" id="productingValue" name="producting">
<span style="position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: #999;"></span>
</div>
</div>
<!-- 地区 --> <!-- 地区 -->
<div class="form-group"> <div class="form-group">
@ -1509,16 +1457,6 @@
</div> </div>
</div> </div>
<!-- 产品包装 -->
<div class="form-group">
<label class="form-label">产品包装</label>
<div class="form-select" id="editProducting" onclick="showEditProductingSelectModal()" style="cursor: pointer; position: relative; padding-right: 30px;">
<span id="editProductingDisplayText">请选择产品包装</span>
<input type="hidden" id="editProductingValue" name="producting">
<span style="position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: #999;"></span>
</div>
</div>
<!-- 地区 --> <!-- 地区 -->
<div class="form-group"> <div class="form-group">
<label class="form-label">地区</label> <label class="form-label">地区</label>
@ -2030,145 +1968,6 @@
} }
hideSpecSelectModal(); hideSpecSelectModal();
} }
// 产品包装相关变量
const allProductingOptions = ['1*360枚新包装', '1*360枚旧包新拖', '1*360枚旧包旧拖', '1*420枚新包装', '1*480枚新包装', '30枚蛋托散装', '360枚散托'];
let filteredProductingOptions = [];
let selectedProducting = '';
// 显示产品包装选择弹窗
function showProductingSelectModal() {
const productingSelectModal = document.getElementById('productingSelectModal');
productingSelectModal.classList.add('active');
// 重置搜索输入
document.getElementById('productingSearchInput').value = '';
filteredProductingOptions = [...allProductingOptions];
generateProductingOptions();
}
// 隐藏产品包装选择弹窗
function hideProductingSelectModal() {
const productingSelectModal = document.getElementById('productingSelectModal');
productingSelectModal.classList.remove('active');
}
// 生成产品包装选项
function generateProductingOptions() {
const productingOptionsList = document.getElementById('productingOptionsList');
productingOptionsList.innerHTML = '';
filteredProductingOptions.forEach(producting => {
const option = document.createElement('div');
option.className = 'select-item';
option.textContent = producting;
option.onclick = () => {
// 移除所有选项的选中状态
document.querySelectorAll('.select-item').forEach(item => {
item.classList.remove('selected');
});
// 添加当前选项的选中状态
option.classList.add('selected');
selectedProducting = producting;
};
option.ondblclick = () => {
// 双击直接确认选择
document.getElementById('productingDisplayText').textContent = producting;
document.getElementById('productingValue').value = producting;
hideProductingSelectModal();
};
productingOptionsList.appendChild(option);
});
}
// 过滤产品包装选项
function filterProductingOptions() {
const searchInput = document.getElementById('productingSearchInput');
const searchKeyword = searchInput.value.toLowerCase();
filteredProductingOptions = allProductingOptions.filter(producting => {
return producting.toLowerCase().includes(searchKeyword);
});
generateProductingOptions();
}
// 确认产品包装选择
function confirmProductingSelection() {
if (selectedProducting) {
document.getElementById('productingDisplayText').textContent = selectedProducting;
document.getElementById('productingValue').value = selectedProducting;
}
hideProductingSelectModal();
}
// 编辑产品包装相关变量
let editFilteredProductingOptions = [];
let editSelectedProducting = '';
// 显示编辑产品包装选择弹窗
function showEditProductingSelectModal() {
const editProductingSelectModal = document.getElementById('editProductingSelectModal');
editProductingSelectModal.classList.add('active');
// 重置搜索输入
document.getElementById('editProductingSearchInput').value = '';
editFilteredProductingOptions = [...allProductingOptions];
generateEditProductingOptions();
}
// 隐藏编辑产品包装选择弹窗
function hideEditProductingSelectModal() {
const editProductingSelectModal = document.getElementById('editProductingSelectModal');
editProductingSelectModal.classList.remove('active');
}
// 生成编辑产品包装选项
function generateEditProductingOptions() {
const editProductingOptionsList = document.getElementById('editProductingOptionsList');
editProductingOptionsList.innerHTML = '';
editFilteredProductingOptions.forEach(producting => {
const option = document.createElement('div');
option.className = 'select-item';
option.textContent = producting;
option.onclick = () => {
// 移除所有选项的选中状态
document.querySelectorAll('.select-item').forEach(item => {
item.classList.remove('selected');
});
// 添加当前选项的选中状态
option.classList.add('selected');
editSelectedProducting = producting;
};
option.ondblclick = () => {
// 双击直接确认选择
document.getElementById('editProductingDisplayText').textContent = producting;
document.getElementById('editProductingValue').value = producting;
hideEditProductingSelectModal();
};
editProductingOptionsList.appendChild(option);
});
}
// 过滤编辑产品包装选项
function filterEditProductingOptions() {
const searchInput = document.getElementById('editProductingSearchInput');
const searchKeyword = searchInput.value.toLowerCase();
editFilteredProductingOptions = allProductingOptions.filter(producting => {
return producting.toLowerCase().includes(searchKeyword);
});
generateEditProductingOptions();
}
// 确认编辑产品包装选择
function confirmEditProductingSelection() {
if (editSelectedProducting) {
document.getElementById('editProductingDisplayText').textContent = editSelectedProducting;
document.getElementById('editProductingValue').value = editSelectedProducting;
}
hideEditProductingSelectModal();
}
// 显示货源类型选择弹窗 // 显示货源类型选择弹窗
function showSourceTypeSelectModal() { function showSourceTypeSelectModal() {
@ -3489,7 +3288,7 @@
<div class="detail-item">货源状态: ${supply.supplyStatus || '未设置'}</div> <div class="detail-item">货源状态: ${supply.supplyStatus || '未设置'}</div>
<div class="detail-item">货源描述: ${supply.description || '无'}</div> <div class="detail-item">货源描述: ${supply.description || '无'}</div>
<div class="detail-item">件数: ${supply.quantity || '0'}件</div> <div class="detail-item">件数: ${supply.quantity || '0'}件</div>
<div class="detail-item" style="display: none;">斤重: ${supply.grossWeight || ''}斤</div> <div class="detail-item">斤重: ${supply.grossWeight || ''}斤</div>
<div class="detail-item">地区: ${supply.region || '未设置'}</div> <div class="detail-item">地区: ${supply.region || '未设置'}</div>
<div class="detail-item" style="color: #f5222d;">价格: ¥${supply.price || '0'}</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="font-size: 12px; color: #999;">创建时间: ${formatDate(supply.created_at)}</div>
@ -3640,7 +3439,7 @@
const productName = document.getElementById('productName'); const productName = document.getElementById('productName');
const price = document.getElementById('price'); const price = document.getElementById('price');
const quantity = document.getElementById('quantity'); const quantity = document.getElementById('quantity');
const grossWeight = null; // 斤重功能已隐藏 const grossWeight = document.getElementById('grossWeight');
const yolk = document.getElementById('yolk'); const yolk = document.getElementById('yolk');
const specValue = document.getElementById('specValue'); const specValue = document.getElementById('specValue');
const supplyStatus = document.getElementById('supplyStatus'); const supplyStatus = document.getElementById('supplyStatus');
@ -3655,7 +3454,7 @@
if (productName) productName.value = formData.productName || ''; if (productName) productName.value = formData.productName || '';
if (price) price.value = formData.price || ''; if (price) price.value = formData.price || '';
if (quantity) quantity.value = formData.quantity || ''; if (quantity) quantity.value = formData.quantity || '';
// 斤重功能已隐藏 if (grossWeight) grossWeight.value = formData.grossWeight || '';
if (yolk) yolk.value = formData.yolk || ''; if (yolk) yolk.value = formData.yolk || '';
if (specValue) specValue.value = formData.specification || ''; if (specValue) specValue.value = formData.specification || '';
if (supplyStatus) supplyStatus.value = formData.supplyStatus || ''; if (supplyStatus) supplyStatus.value = formData.supplyStatus || '';
@ -3871,7 +3670,7 @@
// 设置表单自动保存 // 设置表单自动保存
function setupAutoSave() { function setupAutoSave() {
// 为所有输入字段添加输入事件监听 // 为所有输入字段添加输入事件监听
const formFields = ['productName', 'price', 'quantity', 'grossWeight', 'yolk', 'specValue', 'supplyStatus', 'description', 'regionValue', 'contactId', 'sourceType', 'productingValue']; const formFields = ['productName', 'price', 'quantity', 'grossWeight', 'yolk', 'specValue', 'supplyStatus', 'description', 'regionValue', 'contactId', 'sourceType'];
formFields.forEach(fieldId => { formFields.forEach(fieldId => {
const element = document.getElementById(fieldId); const element = document.getElementById(fieldId);
@ -3901,8 +3700,7 @@
'sourceTypeDisplayText', 'sourceTypeDisplayText',
'productNameDisplayText', 'productNameDisplayText',
'yolkDisplayText', 'yolkDisplayText',
'contactIdDisplayText', 'contactIdDisplayText'
'productingDisplayText'
]; ];
customDisplays.forEach(displayId => { customDisplays.forEach(displayId => {
@ -3942,7 +3740,7 @@
const productName = document.getElementById('productName'); const productName = document.getElementById('productName');
const price = document.getElementById('price'); const price = document.getElementById('price');
const quantity = document.getElementById('quantity'); const quantity = document.getElementById('quantity');
const grossWeight = null; // 斤重功能已隐藏 const grossWeight = document.getElementById('grossWeight');
const yolk = document.getElementById('yolk'); const yolk = document.getElementById('yolk');
const specValue = document.getElementById('specValue'); const specValue = document.getElementById('specValue');
const supplyStatus = document.getElementById('supplyStatus'); const supplyStatus = document.getElementById('supplyStatus');
@ -3958,8 +3756,6 @@
const yolkDisplayText = document.getElementById('yolkDisplayText'); const yolkDisplayText = document.getElementById('yolkDisplayText');
const contactIdDisplayText = document.getElementById('contactIdDisplayText'); const contactIdDisplayText = document.getElementById('contactIdDisplayText');
const categoryDisplayText = document.getElementById('categoryDisplayText'); const categoryDisplayText = document.getElementById('categoryDisplayText');
const productingValue = document.getElementById('productingValue');
const productingDisplayText = document.getElementById('productingDisplayText');
// 确保所有字段都是安全获取的 // 确保所有字段都是安全获取的
const formData = { const formData = {
@ -3967,7 +3763,7 @@
category: category ? category.value : '', category: category ? category.value : '',
price: price ? price.value : '', price: price ? price.value : '',
quantity: quantity ? quantity.value : '', quantity: quantity ? quantity.value : '',
grossWeight: '', // 斤重功能已隐藏 grossWeight: grossWeight ? grossWeight.value : '',
yolk: yolk ? yolk.value : '', yolk: yolk ? yolk.value : '',
specification: specValue ? specValue.value : '', specification: specValue ? specValue.value : '',
specificationDisplay: specDisplayText ? specDisplayText.textContent : '请选择规格', specificationDisplay: specDisplayText ? specDisplayText.textContent : '请选择规格',
@ -3977,8 +3773,6 @@
region: regionValue ? regionValue.value : '', region: regionValue ? regionValue.value : '',
regionDisplay: regionDisplayText ? regionDisplayText.textContent : '请选择地区', regionDisplay: regionDisplayText ? regionDisplayText.textContent : '请选择地区',
contactId: contactId ? contactId.value : '', contactId: contactId ? contactId.value : '',
producting: productingValue ? productingValue.value : '',
productingDisplay: productingDisplayText ? productingDisplayText.textContent : '请选择产品包装',
// 保存其他自定义下拉框显示文本 // 保存其他自定义下拉框显示文本
sourceTypeDisplay: sourceTypeDisplayText ? sourceTypeDisplayText.textContent : '请选择货源类型', sourceTypeDisplay: sourceTypeDisplayText ? sourceTypeDisplayText.textContent : '请选择货源类型',
productNameDisplay: productNameDisplayText ? productNameDisplayText.textContent : '请选择商品名称', productNameDisplay: productNameDisplayText ? productNameDisplayText.textContent : '请选择商品名称',
@ -4028,7 +3822,7 @@
category: document.getElementById('category').value, category: document.getElementById('category').value,
price: document.getElementById('price').value, price: document.getElementById('price').value,
quantity: document.getElementById('quantity').value, quantity: document.getElementById('quantity').value,
grossWeight: '', // 斤重功能已隐藏 grossWeight: document.getElementById('grossWeight').value,
yolk: document.getElementById('yolk').value, yolk: document.getElementById('yolk').value,
specification: document.getElementById('specValue').value, specification: document.getElementById('specValue').value,
supplyStatus: document.getElementById('supplyStatus').value, supplyStatus: document.getElementById('supplyStatus').value,
@ -4036,7 +3830,6 @@
description: document.getElementById('description').value, description: document.getElementById('description').value,
region: document.getElementById('regionValue').value, region: document.getElementById('regionValue').value,
contactId: document.getElementById('contactId').value, contactId: document.getElementById('contactId').value,
producting: document.getElementById('productingValue').value,
imageUrls: supplyData.uploadedImages, imageUrls: supplyData.uploadedImages,
sellerId: userInfo.userId // 添加当前登录用户的userId作为sellerId sellerId: userInfo.userId // 添加当前登录用户的userId作为sellerId
}; };
@ -4587,11 +4380,7 @@
document.getElementById('editRegionValue').value = supply.region || ''; document.getElementById('editRegionValue').value = supply.region || '';
document.getElementById('editPrice').value = supply.price || ''; document.getElementById('editPrice').value = supply.price || '';
document.getElementById('editQuantity').value = supply.quantity || ''; document.getElementById('editQuantity').value = supply.quantity || '';
// 斤重功能已隐藏 document.getElementById('editGrossWeight').value = supply.grossWeight || '';
// 产品包装
document.getElementById('editProductingDisplayText').textContent = supply.producting || '请选择产品包装';
document.getElementById('editProductingValue').value = supply.producting || '';
// 显示商品图片 // 显示商品图片
const editUploadImages = document.getElementById('editUploadImages'); const editUploadImages = document.getElementById('editUploadImages');
@ -5256,15 +5045,14 @@
category: document.getElementById('editCategory').value, category: document.getElementById('editCategory').value,
price: document.getElementById('editPrice').value, price: document.getElementById('editPrice').value,
quantity: document.getElementById('editQuantity').value, quantity: document.getElementById('editQuantity').value,
grossWeight: '', // 斤重功能已隐藏 grossWeight: document.getElementById('editGrossWeight').value,
yolk: document.getElementById('editYolk').value, yolk: document.getElementById('editYolk').value,
specification: document.getElementById('editSpecValue').value, specification: document.getElementById('editSpecValue').value,
supplyStatus: document.getElementById('editSupplyStatus').value, supplyStatus: document.getElementById('editSupplyStatus').value,
description: document.getElementById('editDescription').value, description: document.getElementById('editDescription').value,
region: document.getElementById('editRegionValue').value, region: document.getElementById('editRegionValue').value,
contactId: document.getElementById('editContactId').value, contactId: document.getElementById('editContactId').value
producting: document.getElementById('editProductingValue').value };
};
// 验证表单 // 验证表单
if (!formData.productName) { if (!formData.productName) {

Loading…
Cancel
Save