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张图片
@@ -1094,7 +1102,14 @@
+
- 最多上传5张图片
+
+
图片要求:
+
1. 箱子堆头图(不得出现地址、电话及货源信息,直营包场除外);
+
2. 鸡蛋外观图;
+
3. 敲开鸡蛋后清晰显示蛋清、蛋黄状态,以体现新鲜度;
+
4. 其他能佐证蛋重、品种的辅助图片。
+
+ 最多上传5张图片
@@ -1180,7 +1195,7 @@
-
+
@@ -1233,6 +1248,11 @@
选择货源类型
+
+
平台货源: 直接包场货源
+
鸡场直销: 鸡场直销货源
+
第三方货源: 贸易商货源
+
@@ -1277,6 +1297,10 @@
选择蛋黄类型
+
+
请按实际情况选择蛋黄颜色,对于脏次或者冻库蛋不知道蛋黄颜色的情况下可以填写未知
+
(如果有色卡可以在货源描述里面填写色度)
+
@@ -1321,6 +1345,11 @@
选择规格
+
@@ -1349,10 +1378,9 @@
+
+ 预售(没有现货,销售未来的货), 现货(当日可用于销售的货源)
+
@@ -1510,7 +1541,7 @@
-
+
@@ -1547,6 +1578,11 @@
选择规格
+
@@ -1569,6 +1605,11 @@
选择货源类型
+
+
平台货源: 直接包场货源
+
鸡场直销: 鸡场直销货源
+
第三方货源: 贸易商货源
+
@@ -1635,6 +1676,10 @@
选择蛋黄类型
+
+
请按实际情况选择蛋黄颜色,对于脏次或者冻库蛋不知道蛋黄颜色的情况下可以填写未知
+
(如果有色卡可以在货源描述里面填写色度)
+
@@ -1731,16 +1776,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 = [];
@@ -1893,22 +1938,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 = '';
@@ -2952,7 +2997,6 @@
let selectedProvince = '';
let selectedCity = '';
- let selectedDistrict = '';
let filteredProvinces = [...allRegionOptions];
// 显示地区选择弹窗
@@ -2975,7 +3019,6 @@
function generateRegionOptions() {
const provinceList = document.getElementById('provinceList');
const cityList = document.getElementById('cityList');
- const districtList = document.getElementById('districtList');
// 生成省份选项
provinceList.innerHTML = '';
@@ -2986,12 +3029,9 @@
option.onclick = () => {
selectedProvince = province.province;
selectedCity = '';
- selectedDistrict = '';
updateRegionDisplay();
// 生成城市选项
generateCityOptions(province.cities);
- // 清空区县选项
- districtList.innerHTML = '';
};
provinceList.appendChild(option);
});
@@ -3000,7 +3040,6 @@
// 生成城市选项
function generateCityOptions(cities) {
const cityList = document.getElementById('cityList');
- const districtList = document.getElementById('districtList');
cityList.innerHTML = '';
cities.forEach(city => {
@@ -3009,34 +3048,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;
@@ -3044,17 +3063,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;
@@ -3072,32 +3096,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();
@@ -3115,39 +3133,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();
@@ -3155,24 +3161,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 {
@@ -3605,7 +3604,6 @@
selectedSpec = '';
selectedProvince = '';
selectedCity = '';
- selectedDistrict = '';
selectedSourceType = '';
selectedProductName = '';
selectedYolk = '';
@@ -3702,7 +3700,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];
@@ -3729,7 +3726,6 @@
selectedSpec = formData.selectedSpec || '';
selectedProvince = formData.selectedProvince || '';
selectedCity = formData.selectedCity || '';
- selectedDistrict = formData.selectedDistrict || '';
selectedSourceType = formData.selectedSourceType || '';
selectedProductName = formData.selectedProductName || '';
selectedYolk = formData.selectedYolk || '';
@@ -3995,7 +3991,6 @@
selectedSpec: selectedSpec || '',
selectedProvince: selectedProvince || '',
selectedCity: selectedCity || '',
- selectedDistrict: selectedDistrict || '',
selectedSourceType: selectedSourceType || '',
selectedProductName: selectedProductName || '',
selectedYolk: selectedYolk || '',
@@ -4015,7 +4010,15 @@
}
// 创建货源
+ // 防止重复提交的标志位
+ let isSubmitting = false;
+
async function addSupply() {
+ // 防止重复提交
+ if (isSubmitting) {
+ return;
+ }
+
// 获取当前登录用户信息
const userInfo = checkLogin();
if (!userInfo) return;
@@ -4077,6 +4080,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: {
@@ -4102,6 +4111,12 @@
} catch (error) {
console.error('创建货源失败:', error);
alert('创建失败: 网络错误');
+ } finally {
+ // 恢复提交状态,启用按钮
+ isSubmitting = false;
+ const submitBtn = document.querySelector('.modal-btn-primary');
+ submitBtn.disabled = false;
+ submitBtn.textContent = '创建';
}
}