diff --git a/Reject.html b/Reject.html index 207314f..81dd30a 100644 --- a/Reject.html +++ b/Reject.html @@ -1256,13 +1256,20 @@
-
-
拖拽图片到此处或点击添加图片
-
支持JPG、PNG等图片格式,最多上传5张
+
+
拖拽图片到此处或点击添加图片
+
+
图片要求:
+
1. 箱子堆头图(不得出现地址、电话及货源信息,直营包场除外);
+
2. 鸡蛋外观图;
+
3. 敲开鸡蛋后清晰显示蛋清、蛋黄状态,以体现新鲜度;
+
4. 其他能佐证蛋重、品种的辅助图片。
+
+
支持JPG、PNG等图片格式,最多上传5张
- 最多上传5张图片 + 最多上传5张图片
@@ -1051,7 +1059,14 @@
+
-
最多上传5张图片
+
+
图片要求:
+
1. 箱子堆头图(不得出现地址、电话及货源信息,直营包场除外);
+
2. 鸡蛋外观图;
+
3. 敲开鸡蛋后清晰显示蛋清、蛋黄状态,以体现新鲜度;
+
4. 其他能佐证蛋重、品种的辅助图片。
+
+
最多上传5张图片
@@ -1128,7 +1143,7 @@
- +
@@ -1139,7 +1154,7 @@ -
+ @@ -1181,6 +1196,11 @@

选择货源类型

+
+
平台货源: 直接包场货源
+
鸡场直销: 鸡场直销货源
+
第三方货源: 贸易商货源
+
@@ -1225,6 +1245,10 @@

选择蛋黄类型

+
+
请按实际情况选择蛋黄颜色,对于脏次或者冻库蛋不知道蛋黄颜色的情况下可以填写未知
+
(如果有色卡可以在货源描述里面填写色度)
+
@@ -1269,6 +1293,11 @@

选择规格

+
+
+ 按重量选择该批次货最多的重量区间 +
+
@@ -1297,10 +1326,9 @@
- +
-
+
+ 预售(没有现货,销售未来的货), 现货(当日可用于销售的货源) +
@@ -1448,7 +1479,7 @@
- +
@@ -1459,7 +1490,7 @@ -
+ @@ -1485,6 +1516,11 @@

选择规格

+
+
+ 按重量选择该批次货最多的重量区间 +
+
@@ -1507,6 +1543,11 @@

选择货源类型

+
+
平台货源: 直接包场货源
+
鸡场直销: 鸡场直销货源
+
第三方货源: 贸易商货源
+
@@ -1573,6 +1614,10 @@

选择蛋黄类型

+
+
请按实际情况选择蛋黄颜色,对于脏次或者冻库蛋不知道蛋黄颜色的情况下可以填写未知
+
(如果有色卡可以在货源描述里面填写色度)
+
@@ -1669,16 +1714,16 @@ let editSelectedProvince = ''; let editSelectedCity = ''; let editSelectedDistrict = ''; - let editAllSourceTypes = ['平台货源', '三方认证', '三方未认证']; + let editAllSourceTypes = ['平台货源', '鸡场直销', '第三方货源']; let editFilteredSourceTypes = [...editAllSourceTypes]; let editSelectedSourceType = ''; let editAllCategories = ['粉壳', '褐壳', '绿壳', '白壳']; let editFilteredCategories = [...editAllCategories]; let editSelectedCategory = ''; - let editAllProductNames = ['罗曼粉', '伊莎粉', '罗曼灰', '海蓝灰', '海蓝褐', '绿壳', '双黄蛋']; + let editAllProductNames = ['罗曼粉', '伊莎粉', '罗曼灰', '海蓝灰', '海蓝褐', '绿壳', '粉一', '粉三', '粉八', '京粉1号', '京红', '京粉6号', '京粉3号', '农大系列', '黑鸡土蛋', '大午金凤', '黑凤']; let editFilteredProductNames = [...editAllProductNames]; let editSelectedProductName = ''; - let editAllYolkTypes = ['红心', '黄心', '双色']; + let editAllYolkTypes = ['红心', '黄心', '双色', '未知']; let editFilteredYolkTypes = [...editAllYolkTypes]; let editSelectedYolk = ''; let editFilteredContacts = []; @@ -1831,22 +1876,22 @@ } // 规格选择功能 - 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 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 allSourceTypeOptions = ['平台货源', '三方认证', '三方未认证']; + let allSourceTypeOptions = ['平台货源', '鸡场直销', '第三方货源']; let filteredSourceTypeOptions = [...allSourceTypeOptions]; let selectedSourceType = ''; // 商品名称选择功能 - let allProductNameOptions = ['罗曼粉', '伊莎粉', '罗曼灰', '海蓝灰', '海蓝褐', '绿壳', '双黄蛋']; + let allProductNameOptions = ['罗曼粉', '伊莎粉', '罗曼灰', '海蓝灰', '海蓝褐', '绿壳', '粉一', '粉三', '粉八', '京粉1号', '京红', '京粉6号', '京粉3号', '农大系列', '黑鸡土蛋', '大午金凤', '黑凤']; let filteredProductNameOptions = [...allProductNameOptions]; let selectedProductName = ''; // 蛋黄类型选择功能 - let allYolkOptions = ['红心', '黄心', '双色']; + let allYolkOptions = ['红心', '黄心', '双色', '未知']; let filteredYolkOptions = [...allYolkOptions]; let selectedYolk = ''; @@ -2751,7 +2796,6 @@ let selectedProvince = ''; let selectedCity = ''; - let selectedDistrict = ''; let filteredProvinces = [...allRegionOptions]; // 显示地区选择弹窗 @@ -2774,7 +2818,6 @@ function generateRegionOptions() { const provinceList = document.getElementById('provinceList'); const cityList = document.getElementById('cityList'); - const districtList = document.getElementById('districtList'); // 生成省份选项 provinceList.innerHTML = ''; @@ -2785,12 +2828,9 @@ option.onclick = () => { selectedProvince = province.province; selectedCity = ''; - selectedDistrict = ''; updateRegionDisplay(); // 生成城市选项 generateCityOptions(province.cities); - // 清空区县选项 - districtList.innerHTML = ''; }; provinceList.appendChild(option); }); @@ -2799,7 +2839,6 @@ // 生成城市选项 function generateCityOptions(cities) { const cityList = document.getElementById('cityList'); - const districtList = document.getElementById('districtList'); cityList.innerHTML = ''; cities.forEach(city => { @@ -2808,34 +2847,14 @@ option.textContent = city.city; option.onclick = () => { selectedCity = city.city; - selectedDistrict = ''; - updateRegionDisplay(); - // 生成区县选项 - generateDistrictOptions(city.districts); - }; - cityList.appendChild(option); - }); - } - - // 生成区县选项 - function generateDistrictOptions(districts) { - const districtList = document.getElementById('districtList'); - - districtList.innerHTML = ''; - districts.forEach(district => { - const option = document.createElement('div'); - option.className = 'select-item'; - option.textContent = district; - option.onclick = () => { - selectedDistrict = district; updateRegionDisplay(); }; option.ondblclick = () => { - // 双击区县直接确认整个地区选择 - selectedDistrict = district; + // 双击城市直接确认整个地区选择 + selectedCity = city.city; updateRegionDisplay(); // 构建完整的地区字符串 - const regionString = `${selectedProvince} ${selectedCity} ${selectedDistrict}`; + const regionString = `${selectedProvince} ${selectedCity}`; // 设置到表单 document.getElementById('regionDisplayText').textContent = regionString; document.getElementById('regionValue').value = regionString; @@ -2843,17 +2862,22 @@ hideRegionSelectModal(); saveFormData(); // 保存选择 }; - districtList.appendChild(option); + cityList.appendChild(option); + }); + + // 使用requestAnimationFrame确保滚动操作在浏览器下一次重绘前执行 + requestAnimationFrame(() => { + cityList.scrollTop = 0; }); } + + // 更新地区显示 function updateRegionDisplay() { const currentRegion = document.getElementById('currentRegion'); let displayText = '当前选择: '; - if (selectedProvince && selectedCity && selectedDistrict) { - displayText += `${selectedProvince} ${selectedCity} ${selectedDistrict}`; - } else if (selectedProvince && selectedCity) { + if (selectedProvince && selectedCity) { displayText += `${selectedProvince} ${selectedCity}`; } else if (selectedProvince) { displayText += selectedProvince; @@ -2871,32 +2895,26 @@ // 重置选择 selectedProvince = ''; selectedCity = ''; - selectedDistrict = ''; - // 先尝试直接查找区县 - let foundDistrict = false; + // 先尝试直接查找城市 + let foundCity = false; for (let i = 0; i < allRegionOptions.length; i++) { const province = allRegionOptions[i]; for (let j = 0; j < province.cities.length; j++) { const city = province.cities[j]; - for (let k = 0; k < city.districts.length; k++) { - const district = city.districts[k]; - if (district.toLowerCase().includes(searchKeyword)) { - // 找到匹配的区县,自动填充省市区 - selectedProvince = province.province; - selectedCity = city.city; - selectedDistrict = district; - foundDistrict = true; - break; - } + if (city.city.toLowerCase().includes(searchKeyword)) { + // 找到匹配的城市,自动填充省市 + selectedProvince = province.province; + selectedCity = city.city; + foundCity = true; + break; } - if (foundDistrict) break; } - if (foundDistrict) break; + if (foundCity) break; } - if (foundDistrict) { - // 如果找到区县,只显示对应的省份 + if (foundCity) { + // 如果找到城市,只显示对应的省份 filteredProvinces = allRegionOptions.filter(province => province.province === selectedProvince); generateRegionOptions(); @@ -2914,39 +2932,27 @@ } option.onclick = () => { selectedCity = city.city; - selectedDistrict = ''; updateRegionDisplay(); - generateDistrictOptions(city.districts); }; cityList.appendChild(option); - - // 如果是选中的城市,生成区县选项 - if (city.city === selectedCity) { - generateDistrictOptions(city.districts); - } + }); + + // 使用requestAnimationFrame确保滚动操作在浏览器下一次重绘前执行 + requestAnimationFrame(() => { + cityList.scrollTop = 0; }); } - - // 更新区县选项的选中状态 - const districtList = document.getElementById('districtList'); - const districtOptions = districtList.querySelectorAll('.select-item'); - districtOptions.forEach(option => { - if (option.textContent === selectedDistrict) { - option.classList.add('selected'); - } - }); } else { // 否则按原逻辑过滤 filteredProvinces = allRegionOptions.filter(province => { return province.province.toLowerCase().includes(searchKeyword) || - province.cities.some(city => city.city.toLowerCase().includes(searchKeyword) || - city.districts.some(district => district.toLowerCase().includes(searchKeyword))); + province.cities.some(city => city.city.toLowerCase().includes(searchKeyword)); }); generateRegionOptions(); - // 清空城市和区县选项 - document.getElementById('cityList').innerHTML = ''; - document.getElementById('districtList').innerHTML = ''; + // 清空城市选项 + const cityList = document.getElementById('cityList'); + cityList.innerHTML = ''; } updateRegionDisplay(); @@ -2954,24 +2960,17 @@ // 确认地区选择 function confirmRegionSelection() { - if (selectedProvince && selectedCity && selectedDistrict) { + if (selectedProvince && selectedCity) { const regionDisplayText = document.getElementById('regionDisplayText'); const regionValue = document.getElementById('regionValue'); - const regionText = `${selectedProvince} ${selectedCity} ${selectedDistrict}`; + const regionText = `${selectedProvince} ${selectedCity}`; regionDisplayText.textContent = regionText; regionValue.value = regionText; + saveFormData(); // 保存选择 } hideRegionSelectModal(); } - // 确认创建货源时,获取隐藏域的值 - function addSupply() { - const spec = document.getElementById('specValue').value; - const region = document.getElementById('regionValue').value; - - // 继续原有逻辑... - } - // 加载联系人数据 async function loadContacts() { try { @@ -3404,7 +3403,6 @@ selectedSpec = ''; selectedProvince = ''; selectedCity = ''; - selectedDistrict = ''; selectedSourceType = ''; selectedProductName = ''; selectedYolk = ''; @@ -3501,7 +3499,6 @@ if (formData.selectedSpec) selectedSpec = formData.selectedSpec; if (formData.selectedProvince) selectedProvince = formData.selectedProvince; if (formData.selectedCity) selectedCity = formData.selectedCity; - if (formData.selectedDistrict) selectedDistrict = formData.selectedDistrict; // 为所有下拉框触发change事件,确保UI完全同步 const dropdownElements = [productName, yolk, sourceType, contactId]; @@ -3528,7 +3525,6 @@ selectedSpec = formData.selectedSpec || ''; selectedProvince = formData.selectedProvince || ''; selectedCity = formData.selectedCity || ''; - selectedDistrict = formData.selectedDistrict || ''; selectedSourceType = formData.selectedSourceType || ''; selectedProductName = formData.selectedProductName || ''; selectedYolk = formData.selectedYolk || ''; @@ -3789,7 +3785,6 @@ selectedSpec: selectedSpec || '', selectedProvince: selectedProvince || '', selectedCity: selectedCity || '', - selectedDistrict: selectedDistrict || '', selectedSourceType: selectedSourceType || '', selectedProductName: selectedProductName || '', selectedYolk: selectedYolk || '', @@ -3809,7 +3804,15 @@ } // 创建货源 + // 防止重复提交的标志位 + let isSubmitting = false; + async function addSupply() { + // 防止重复提交 + if (isSubmitting) { + return; + } + // 获取当前登录用户信息 const userInfo = checkLogin(); if (!userInfo) return; @@ -3870,6 +3873,12 @@ } try { + // 设置为提交中状态,禁用按钮 + isSubmitting = true; + const submitBtn = document.querySelector('.modal-btn-primary'); + submitBtn.disabled = true; + submitBtn.textContent = '创建中...'; + const response = await fetch('/api/supplies/create', { method: 'POST', headers: { @@ -3895,6 +3904,12 @@ } catch (error) { console.error('创建货源失败:', error); alert('创建失败: 网络错误'); + } finally { + // 恢复提交状态,启用按钮 + isSubmitting = false; + const submitBtn = document.querySelector('.modal-btn-primary'); + submitBtn.disabled = false; + submitBtn.textContent = '创建'; } }