|
|
|
@ -1301,13 +1301,13 @@ |
|
|
|
<!-- 价格 --> |
|
|
|
<div class="form-group"> |
|
|
|
<label class="form-label">价格(销售价)</label> |
|
|
|
<input type="number" class="form-input" id="price" placeholder="请输入价格" step="0.01" onwheel="this.blur()"> |
|
|
|
<input type="text" class="form-input" id="price" placeholder="请输入价格" onwheel="this.blur()"> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 采购价 --> |
|
|
|
<div class="form-group"> |
|
|
|
<label class="form-label">采购价</label> |
|
|
|
<input type="number" class="form-input" id="costprice" placeholder="请输入采购价(选填)" step="0.01" onwheel="this.blur()"> |
|
|
|
<input type="text" class="form-input" id="costprice" placeholder="请输入采购价(选填)" onwheel="this.blur()"> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 货源描述 --> |
|
|
|
@ -1706,13 +1706,13 @@ |
|
|
|
<!-- 价格 --> |
|
|
|
<div class="form-group"> |
|
|
|
<label class="form-label">价格(销售价)</label> |
|
|
|
<input type="number" class="form-input" id="editPrice" placeholder="请输入价格" step="0.01" onwheel="this.blur()"> |
|
|
|
<input type="text" class="form-input" id="editPrice" placeholder="请输入价格" onwheel="this.blur()"> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 采购价 --> |
|
|
|
<div class="form-group"> |
|
|
|
<label class="form-label">采购价</label> |
|
|
|
<input type="number" class="form-input" id="editCostprice" placeholder="请输入采购价(选填)" step="0.01" onwheel="this.blur()"> |
|
|
|
<input type="text" class="form-input" id="editCostprice" placeholder="请输入采购价(选填)" onwheel="this.blur()"> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 货源描述 --> |
|
|
|
@ -2417,6 +2417,7 @@ |
|
|
|
let allSpecOptions = ['净重47+', '净重46-47', '净重45-46', '净重44-45', '净重43-44', '净重42-43', '净重41-42', '净重40-41', '净重39-40', '净重38-39', '净重37-39', '净重37-38', '净重36-38', '净重36-37', '净重35-36', '净重34-35', '净重33-34', '净重32-33', '净重32-34', '净重31-32', '净重30-35', '净重30-34', '净重30-32', '净重30-31', '净重29-31', '净重29-30', '净重28-29', '净重28以下', '毛重52以上', '毛重50-51', '毛重48-49', '毛重47-48', '毛重46-47', '毛重45-47', '毛重45-46', '毛重44-45', '毛重43-44', '毛重42-43', '毛重41-42', '毛重40-41', '毛重38-39', '毛重36-37', '毛重34-35', '毛重32-33', '毛重30-31', '毛重30以下']; |
|
|
|
let filteredSpecOptions = [...allSpecOptions]; |
|
|
|
let selectedSpec = []; |
|
|
|
let excludedSpecOptions = []; |
|
|
|
|
|
|
|
// 产品包装选择功能 |
|
|
|
let allProductingOptions = ['1*360枚新包装', '1*360枚旧包新拖', '1*360枚旧包旧拖', '1*420枚新包装', '1*480枚新包装', '30枚蛋托散装', '360枚散托']; |
|
|
|
@ -2448,12 +2449,12 @@ |
|
|
|
let selectedContactId = ''; |
|
|
|
|
|
|
|
// 显示规格选择弹窗 |
|
|
|
function showSpecSelectModal() { |
|
|
|
function showSpecSelectModal(excludeSpecs = []) { |
|
|
|
const specSelectModal = document.getElementById('specSelectModal'); |
|
|
|
specSelectModal.classList.add('active'); |
|
|
|
// 重置搜索输入 |
|
|
|
document.getElementById('specSearchInput').value = ''; |
|
|
|
filteredSpecOptions = [...allSpecOptions]; |
|
|
|
excludedSpecOptions = excludeSpecs; |
|
|
|
filteredSpecOptions = allSpecOptions.filter(spec => !excludeSpecs.includes(spec)); |
|
|
|
generateSpecOptions(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -2522,7 +2523,7 @@ |
|
|
|
const searchKeyword = searchInput.value.toLowerCase(); |
|
|
|
|
|
|
|
filteredSpecOptions = allSpecOptions.filter(spec => { |
|
|
|
return spec.toLowerCase().includes(searchKeyword); |
|
|
|
return spec.toLowerCase().includes(searchKeyword) && !excludedSpecOptions.includes(spec); |
|
|
|
}); |
|
|
|
|
|
|
|
generateSpecOptions(); |
|
|
|
@ -2591,11 +2592,16 @@ |
|
|
|
// 添加规格和件数对 |
|
|
|
function addSpecQuantityPair() { |
|
|
|
const container = document.getElementById('specQuantityPairs'); |
|
|
|
const existingSpecs = []; |
|
|
|
container.querySelectorAll('.spec-value').forEach(input => { |
|
|
|
if (input.value) existingSpecs.push(input.value); |
|
|
|
}); |
|
|
|
|
|
|
|
const pair = document.createElement('div'); |
|
|
|
pair.className = 'spec-quantity-pair'; |
|
|
|
pair.innerHTML = ` |
|
|
|
<input type="text" class="spec-value" placeholder="请选择规格" readonly onclick="showSpecSelectModalForPair(this)"> |
|
|
|
<input type="number" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()"> |
|
|
|
<input type="text" class="spec-value" placeholder="请选择规格" readonly onclick="showSpecSelectModalForPair(this, 'pair')"> |
|
|
|
<input type="text" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()"> |
|
|
|
<button type="button" class="remove-quantity-btn" onclick="removeSpecQuantityPair(this)">×</button> |
|
|
|
`; |
|
|
|
container.appendChild(pair); |
|
|
|
@ -2620,10 +2626,15 @@ |
|
|
|
} |
|
|
|
|
|
|
|
// 为规格和件数对显示规格选择弹窗 |
|
|
|
function showSpecSelectModalForPair(input) { |
|
|
|
// 保存当前点击的输入框 |
|
|
|
function showSpecSelectModalForPair(input, mode) { |
|
|
|
currentSpecInput = input; |
|
|
|
showSpecSelectModal(); |
|
|
|
currentSpecMode = mode || 'pair'; |
|
|
|
const container = document.getElementById('specQuantityPairs'); |
|
|
|
const existingSpecs = []; |
|
|
|
container.querySelectorAll('.spec-value').forEach(inp => { |
|
|
|
if (inp.value && inp !== input) existingSpecs.push(inp.value); |
|
|
|
}); |
|
|
|
showSpecSelectModal(existingSpecs); |
|
|
|
} |
|
|
|
|
|
|
|
// 保存当前点击的规格输入框 |
|
|
|
@ -4275,60 +4286,108 @@ |
|
|
|
// 重置表单 |
|
|
|
resetForm(); |
|
|
|
|
|
|
|
// 填充表单字段 |
|
|
|
document.getElementById('price').value = supply.price || ''; |
|
|
|
document.getElementById('quantity').value = supply.quantity || ''; |
|
|
|
document.getElementById('grossWeight').value = supply.grossWeight || ''; |
|
|
|
document.getElementById('description').value = supply.description || ''; |
|
|
|
// 填充表单字段 - 为所有元素添加null检查 |
|
|
|
const priceInput = document.getElementById('price'); |
|
|
|
if (priceInput) priceInput.value = supply.price || ''; |
|
|
|
|
|
|
|
const quantityInput = document.getElementById('quantity'); |
|
|
|
if (quantityInput) quantityInput.value = supply.quantity || ''; |
|
|
|
|
|
|
|
const grossWeightInput = document.getElementById('grossWeight'); |
|
|
|
if (grossWeightInput) grossWeightInput.value = supply.grossWeight || ''; |
|
|
|
|
|
|
|
const descriptionInput = document.getElementById('description'); |
|
|
|
if (descriptionInput) descriptionInput.value = supply.description || ''; |
|
|
|
|
|
|
|
// 填充选择字段 |
|
|
|
// 商品名称 |
|
|
|
document.getElementById('productName').value = supply.productName || ''; |
|
|
|
document.getElementById('productNameDisplayText').textContent = supply.productName || '请选择商品名称'; |
|
|
|
const productNameInput = document.getElementById('productName'); |
|
|
|
if (productNameInput) productNameInput.value = supply.productName || ''; |
|
|
|
|
|
|
|
const productNameDisplay = document.getElementById('productNameDisplayText'); |
|
|
|
if (productNameDisplay) productNameDisplay.textContent = supply.productName || '请选择商品名称'; |
|
|
|
selectedProductName = supply.productName || ''; |
|
|
|
|
|
|
|
// 货源类型 |
|
|
|
document.getElementById('sourceType').value = supply.sourceType || ''; |
|
|
|
document.getElementById('sourceTypeDisplayText').textContent = supply.sourceType || '请选择货源类型'; |
|
|
|
const sourceTypeInput = document.getElementById('sourceType'); |
|
|
|
if (sourceTypeInput) sourceTypeInput.value = supply.sourceType || ''; |
|
|
|
|
|
|
|
const sourceTypeDisplay = document.getElementById('sourceTypeDisplayText'); |
|
|
|
if (sourceTypeDisplay) sourceTypeDisplay.textContent = supply.sourceType || '请选择货源类型'; |
|
|
|
selectedSourceType = supply.sourceType || ''; |
|
|
|
|
|
|
|
// 蛋黄类型 |
|
|
|
document.getElementById('yolk').value = supply.yolk || ''; |
|
|
|
document.getElementById('yolkDisplayText').textContent = supply.yolk || '请选择蛋黄类型'; |
|
|
|
const yolkInput = document.getElementById('yolk'); |
|
|
|
if (yolkInput) yolkInput.value = supply.yolk || ''; |
|
|
|
|
|
|
|
const yolkDisplay = document.getElementById('yolkDisplayText'); |
|
|
|
if (yolkDisplay) yolkDisplay.textContent = supply.yolk || '请选择蛋黄类型'; |
|
|
|
selectedYolk = supply.yolk || ''; |
|
|
|
|
|
|
|
// 地区 |
|
|
|
document.getElementById('regionValue').value = supply.region || ''; |
|
|
|
document.getElementById('regionDisplayText').textContent = supply.region || '请选择地区'; |
|
|
|
|
|
|
|
// 规格 |
|
|
|
document.getElementById('specValue').value = supply.specification || supply.spec || ''; |
|
|
|
document.getElementById('specDisplayText').textContent = (supply.specification || supply.spec) || '请选择规格'; |
|
|
|
selectedSpec = supply.specification || supply.spec || ''; |
|
|
|
const regionValueInput = document.getElementById('regionValue'); |
|
|
|
if (regionValueInput) regionValueInput.value = supply.region || ''; |
|
|
|
|
|
|
|
const regionDisplay = document.getElementById('regionDisplayText'); |
|
|
|
if (regionDisplay) regionDisplay.textContent = supply.region || '请选择地区'; |
|
|
|
|
|
|
|
// 规格 - 确保selectedSpec是数组类型 |
|
|
|
const specValue = supply.specification || supply.spec || ''; |
|
|
|
const specDisplay = document.getElementById('specDisplayText'); |
|
|
|
if (specDisplay) specDisplay.textContent = specValue || '请选择规格'; |
|
|
|
|
|
|
|
const specValueInput = document.getElementById('specValue'); |
|
|
|
if (specValueInput) { |
|
|
|
if (Array.isArray(specValue)) { |
|
|
|
selectedSpec = specValue; |
|
|
|
specValueInput.value = JSON.stringify(specValue); |
|
|
|
} else if (specValue) { |
|
|
|
selectedSpec = [specValue]; |
|
|
|
specValueInput.value = JSON.stringify([specValue]); |
|
|
|
} else { |
|
|
|
selectedSpec = []; |
|
|
|
specValueInput.value = JSON.stringify([]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 货源状态 |
|
|
|
document.getElementById('supplyStatus').value = supply.supplyStatus || ''; |
|
|
|
const supplyStatusInput = document.getElementById('supplyStatus'); |
|
|
|
if (supplyStatusInput) supplyStatusInput.value = supply.supplyStatus || ''; |
|
|
|
|
|
|
|
// 设置货源状态按钮 |
|
|
|
if (supply.supplyStatus === '预售') { |
|
|
|
setSupplyStatus('预售'); |
|
|
|
} else if (supply.supplyStatus === '现货') { |
|
|
|
setSupplyStatus('现货'); |
|
|
|
} |
|
|
|
|
|
|
|
// 联系人 - 使用contacts数组查找完整信息 |
|
|
|
document.getElementById('contactId').value = supply.contactId || ''; |
|
|
|
const contactIdInput = document.getElementById('contactId'); |
|
|
|
if (contactIdInput) contactIdInput.value = supply.contactId || ''; |
|
|
|
selectedContactId = supply.contactId || ''; |
|
|
|
|
|
|
|
const contactIdDisplay = document.getElementById('contactIdDisplayText'); |
|
|
|
if (contactIdDisplay) { |
|
|
|
if (supply.contactId) { |
|
|
|
// 从contacts数组(可能包含本地缓存数据)中查找联系人 |
|
|
|
const contact = contacts.find(c => String(c.id) === String(supply.contactId)); |
|
|
|
if (contact) { |
|
|
|
document.getElementById('contactIdDisplayText').textContent = `${contact.name} (${contact.phoneNumber})`; |
|
|
|
contactIdDisplay.textContent = `${contact.name} (${contact.phoneNumber})`; |
|
|
|
} else { |
|
|
|
// 如果找不到联系人,使用supply中的数据或默认值 |
|
|
|
document.getElementById('contactIdDisplayText').textContent = supply.product_contact || `联系人ID: ${supply.contactId}` || '请选择联系人'; |
|
|
|
contactIdDisplay.textContent = supply.product_contact || `联系人ID: ${supply.contactId}` || '请选择联系人'; |
|
|
|
} |
|
|
|
} else { |
|
|
|
document.getElementById('contactIdDisplayText').textContent = '请选择联系人'; |
|
|
|
contactIdDisplay.textContent = '请选择联系人'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 产品包装 |
|
|
|
document.getElementById('productingValue').value = supply.producting || ''; |
|
|
|
document.getElementById('productingDisplayText').textContent = supply.producting || '请选择产品包装'; |
|
|
|
const productingValueInput = document.getElementById('productingValue'); |
|
|
|
if (productingValueInput) productingValueInput.value = supply.producting || ''; |
|
|
|
|
|
|
|
const productingDisplay = document.getElementById('productingDisplayText'); |
|
|
|
if (productingDisplay) productingDisplay.textContent = supply.producting || '请选择产品包装'; |
|
|
|
selectedProducting = supply.producting || ''; |
|
|
|
|
|
|
|
// 不复制图片,保持图片列表为空 |
|
|
|
@ -4423,18 +4482,31 @@ |
|
|
|
|
|
|
|
// 设置货源状态(预售/现货) |
|
|
|
function setSupplyStatus(status) { |
|
|
|
document.getElementById('supplyStatus').value = status; |
|
|
|
const supplyStatusInput = document.getElementById('supplyStatus'); |
|
|
|
if (supplyStatusInput) supplyStatusInput.value = status; |
|
|
|
|
|
|
|
// 更新按钮样式 |
|
|
|
const preSaleBtn = document.getElementById('preSaleBtn'); |
|
|
|
const inStockBtn = document.getElementById('inStockBtn'); |
|
|
|
|
|
|
|
if (status === '预售') { |
|
|
|
document.getElementById('preSaleBtn').style.borderColor = '#1677ff'; |
|
|
|
document.getElementById('preSaleBtn').style.color = '#1677ff'; |
|
|
|
document.getElementById('inStockBtn').style.borderColor = '#d9d9d9'; |
|
|
|
document.getElementById('inStockBtn').style.color = '#666'; |
|
|
|
if (preSaleBtn) { |
|
|
|
preSaleBtn.style.borderColor = '#1677ff'; |
|
|
|
preSaleBtn.style.color = '#1677ff'; |
|
|
|
} |
|
|
|
if (inStockBtn) { |
|
|
|
inStockBtn.style.borderColor = '#d9d9d9'; |
|
|
|
inStockBtn.style.color = '#666'; |
|
|
|
} |
|
|
|
} else if (status === '现货') { |
|
|
|
document.getElementById('inStockBtn').style.borderColor = '#1677ff'; |
|
|
|
document.getElementById('inStockBtn').style.color = '#1677ff'; |
|
|
|
document.getElementById('preSaleBtn').style.borderColor = '#d9d9d9'; |
|
|
|
document.getElementById('preSaleBtn').style.color = '#666'; |
|
|
|
if (inStockBtn) { |
|
|
|
inStockBtn.style.borderColor = '#1677ff'; |
|
|
|
inStockBtn.style.color = '#1677ff'; |
|
|
|
} |
|
|
|
if (preSaleBtn) { |
|
|
|
preSaleBtn.style.borderColor = '#d9d9d9'; |
|
|
|
preSaleBtn.style.color = '#666'; |
|
|
|
} |
|
|
|
} |
|
|
|
// 自动保存表单数据 |
|
|
|
saveFormData(); |
|
|
|
@ -5884,8 +5956,8 @@ |
|
|
|
const pair = document.createElement('div'); |
|
|
|
pair.className = 'spec-quantity-pair'; |
|
|
|
pair.innerHTML = ` |
|
|
|
<input type="text" class="spec-value" placeholder="请选择规格" readonly onclick="showEditSpecSelectModalForPair(this)" value="${specifications[i]}"> |
|
|
|
<input type="number" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()" value="${quantities[i] || ''}"> |
|
|
|
<input type="text" class="spec-value" placeholder="请选择规格" readonly onclick="showEditSpecSelectModalForPair(this, 'pair')" value="${specifications[i]}"> |
|
|
|
<input type="text" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()" value="${quantities[i] || ''}"> |
|
|
|
<button type="button" class="remove-quantity-btn" onclick="removeEditSpecQuantityPair(this)">×</button> |
|
|
|
`; |
|
|
|
specQuantityPairs.appendChild(pair); |
|
|
|
@ -5989,14 +6061,15 @@ |
|
|
|
|
|
|
|
// 编辑规格选择功能 |
|
|
|
let editFilteredSpecOptions = [...allSpecOptions]; |
|
|
|
let editExcludedSpecOptions = []; |
|
|
|
|
|
|
|
// 显示编辑规格选择弹窗 |
|
|
|
function showEditSpecSelectModal() { |
|
|
|
function showEditSpecSelectModal(excludeSpecs = []) { |
|
|
|
const specSelectModal = document.getElementById('editSpecSelectModal'); |
|
|
|
specSelectModal.classList.add('active'); |
|
|
|
// 重置搜索输入 |
|
|
|
document.getElementById('editSpecSearchInput').value = ''; |
|
|
|
editFilteredSpecOptions = [...allSpecOptions]; |
|
|
|
editExcludedSpecOptions = excludeSpecs; |
|
|
|
editFilteredSpecOptions = allSpecOptions.filter(spec => !excludeSpecs.includes(spec)); |
|
|
|
generateEditSpecOptions(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -6065,7 +6138,7 @@ |
|
|
|
const searchKeyword = searchInput.value.toLowerCase(); |
|
|
|
|
|
|
|
editFilteredSpecOptions = allSpecOptions.filter(spec => { |
|
|
|
return spec.toLowerCase().includes(searchKeyword); |
|
|
|
return spec.toLowerCase().includes(searchKeyword) && !editExcludedSpecOptions.includes(spec); |
|
|
|
}); |
|
|
|
|
|
|
|
generateEditSpecOptions(); |
|
|
|
@ -6139,11 +6212,16 @@ |
|
|
|
// 添加编辑规格和件数对 |
|
|
|
function addEditSpecQuantityPair() { |
|
|
|
const container = document.getElementById('editSpecQuantityPairs'); |
|
|
|
const existingSpecs = []; |
|
|
|
container.querySelectorAll('.spec-value').forEach(input => { |
|
|
|
if (input.value) existingSpecs.push(input.value); |
|
|
|
}); |
|
|
|
|
|
|
|
const pair = document.createElement('div'); |
|
|
|
pair.className = 'spec-quantity-pair'; |
|
|
|
pair.innerHTML = ` |
|
|
|
<input type="text" class="spec-value" placeholder="请选择规格" readonly onclick="showEditSpecSelectModalForPair(this)"> |
|
|
|
<input type="number" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()"> |
|
|
|
<input type="text" class="spec-value" placeholder="请选择规格" readonly onclick="showEditSpecSelectModalForPair(this, 'pair')"> |
|
|
|
<input type="text" class="form-input quantity-input" placeholder="请输入件数" onwheel="this.blur()"> |
|
|
|
<button type="button" class="remove-quantity-btn" onclick="removeEditSpecQuantityPair(this)">×</button> |
|
|
|
`; |
|
|
|
container.appendChild(pair); |
|
|
|
@ -6168,10 +6246,14 @@ |
|
|
|
} |
|
|
|
|
|
|
|
// 为编辑规格和件数对显示规格选择弹窗 |
|
|
|
function showEditSpecSelectModalForPair(input) { |
|
|
|
// 保存当前点击的输入框 |
|
|
|
function showEditSpecSelectModalForPair(input, mode) { |
|
|
|
currentEditSpecInput = input; |
|
|
|
showEditSpecSelectModal(); |
|
|
|
const container = document.getElementById('editSpecQuantityPairs'); |
|
|
|
const existingSpecs = []; |
|
|
|
container.querySelectorAll('.spec-value').forEach(inp => { |
|
|
|
if (inp.value && inp !== input) existingSpecs.push(inp.value); |
|
|
|
}); |
|
|
|
showEditSpecSelectModal(existingSpecs); |
|
|
|
} |
|
|
|
|
|
|
|
// 保存当前点击的编辑规格输入框 |
|
|
|
|