You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

557 lines
17 KiB

// pages/evaluate/index.js
//估价暂未开放
Page({
data: {
evaluateStep: 1,
fromPreviousStep: false, // 用于标记是否从下一步返回
evaluateData: {
region: '',
type: '',
brand: '',
model: '',
freshness: '',
size: '',
packaging: '',
spec: ''
},
// 客户地区列表
regions: ['北京', '上海', '广州', '深圳', '杭州', '成都', '武汉', '西安', '南京', '重庆'],
evaluateResult: {
finalPrice: '0',
totalPrice: '0'
},
// 鸡蛋类型数据(包含成交单量)
eggTypes: [
{ name: '土鸡蛋', dailyOrders: 1258, desc: '散养鸡产出的优质鸡蛋' },
{ name: '洋鸡蛋', dailyOrders: 3421, desc: '规模化养殖的普通鸡蛋' },
{ name: '乌鸡蛋', dailyOrders: 892, desc: '乌鸡产出的特色鸡蛋' },
{ name: '有机鸡蛋', dailyOrders: 675, desc: '有机认证的高品质鸡蛋' },
{ name: '初生蛋', dailyOrders: 965, desc: '母鸡产的第一窝鸡蛋' }
],
// 鸡蛋品牌和型号数据(包含成交单量)
eggData: {
'土鸡蛋': {
brands: [
{ name: '农家乐', dailyOrders: 456 },
{ name: '山野', dailyOrders: 389 },
{ name: '生态园', dailyOrders: 243 },
{ name: '田园', dailyOrders: 170 }
],
models: {
'农家乐': [
{ name: '散养土鸡蛋', dailyOrders: 213 },
{ name: '林下土鸡蛋', dailyOrders: 132 },
{ name: '谷物喂养土鸡蛋', dailyOrders: 78 },
{ name: '农家土鸡蛋', dailyOrders: 33 }
],
'山野': [
{ name: '高山散养土鸡蛋', dailyOrders: 189 },
{ name: '林间土鸡蛋', dailyOrders: 124 },
{ name: '野生土鸡蛋', dailyOrders: 76 }
],
'生态园': [
{ name: '有机土鸡蛋', dailyOrders: 112 },
{ name: '无抗土鸡蛋', dailyOrders: 89 },
{ name: '生态土鸡蛋', dailyOrders: 42 }
],
'田园': [
{ name: '农家土鸡蛋', dailyOrders: 87 },
{ name: '走地鸡蛋', dailyOrders: 54 },
{ name: '自然放养土鸡蛋', dailyOrders: 29 }
]
}
},
'洋鸡蛋': {
brands: [
{ name: '德青源', dailyOrders: 1234 },
{ name: '圣迪乐村', dailyOrders: 987 },
{ name: '正大', dailyOrders: 765 },
{ name: '咯咯哒', dailyOrders: 435 }
],
models: {
'德青源': [
{ name: '安心鲜鸡蛋', dailyOrders: 543 },
{ name: '谷物鸡蛋', dailyOrders: 456 },
{ name: '营养鸡蛋', dailyOrders: 235 }
],
'圣迪乐村': [
{ name: '高品质鲜鸡蛋', dailyOrders: 432 },
{ name: '谷物鸡蛋', dailyOrders: 321 },
{ name: '生态鸡蛋', dailyOrders: 234 }
],
'正大': [
{ name: '鲜鸡蛋', dailyOrders: 345 },
{ name: '营养鸡蛋', dailyOrders: 243 },
{ name: '优选鸡蛋', dailyOrders: 177 }
],
'咯咯哒': [
{ name: '鲜鸡蛋', dailyOrders: 213 },
{ name: '谷物鸡蛋', dailyOrders: 145 },
{ name: '农家鸡蛋', dailyOrders: 77 }
]
}
},
'乌鸡蛋': {
brands: [
{ name: '山野', dailyOrders: 345 },
{ name: '生态园', dailyOrders: 289 },
{ name: '农家乐', dailyOrders: 258 }
],
models: {
'山野': [
{ name: '散养乌鸡蛋', dailyOrders: 156 },
{ name: '林下乌鸡蛋', dailyOrders: 102 },
{ name: '野生乌鸡蛋', dailyOrders: 87 }
],
'生态园': [
{ name: '有机乌鸡蛋', dailyOrders: 123 },
{ name: '无抗乌鸡蛋', dailyOrders: 98 },
{ name: '生态乌鸡蛋', dailyOrders: 68 }
],
'农家乐': [
{ name: '农家乌鸡蛋', dailyOrders: 112 },
{ name: '谷物乌鸡蛋', dailyOrders: 93 },
{ name: '散养乌鸡蛋', dailyOrders: 53 }
]
}
},
'有机鸡蛋': {
brands: [
{ name: '生态园', dailyOrders: 289 },
{ name: '山野', dailyOrders: 213 },
{ name: '田园', dailyOrders: 173 }
],
models: {
'生态园': [
{ name: '有机认证鸡蛋', dailyOrders: 132 },
{ name: '无抗有机鸡蛋', dailyOrders: 98 },
{ name: '生态有机鸡蛋', dailyOrders: 59 }
],
'山野': [
{ name: '有机散养鸡蛋', dailyOrders: 98 },
{ name: '有机谷物鸡蛋', dailyOrders: 76 },
{ name: '野生有机鸡蛋', dailyOrders: 39 }
],
'田园': [
{ name: '有机农家鸡蛋', dailyOrders: 89 },
{ name: '有机初生蛋', dailyOrders: 54 },
{ name: '自然有机鸡蛋', dailyOrders: 30 }
]
}
},
'初生蛋': {
brands: [
{ name: '农家乐', dailyOrders: 342 },
{ name: '山野', dailyOrders: 312 },
{ name: '生态园', dailyOrders: 311 }
],
models: {
'农家乐': [
{ name: '土鸡初生蛋', dailyOrders: 156 },
{ name: '散养初生蛋', dailyOrders: 112 },
{ name: '农家初生蛋', dailyOrders: 74 }
],
'山野': [
{ name: '高山初生蛋', dailyOrders: 145 },
{ name: '林下初生蛋', dailyOrders: 98 },
{ name: '野生初生蛋', dailyOrders: 69 }
],
'生态园': [
{ name: '有机初生蛋', dailyOrders: 134 },
{ name: '无抗初生蛋', dailyOrders: 102 },
{ name: '生态初生蛋', dailyOrders: 75 }
]
}
}
},
eggBrands: [],
eggModels: []
},
onLoad() {
console.log('估价页面初始化')
// 页面加载时,对鸡蛋类型按成交单量降序排序并添加排名
const sortedTypes = [...this.data.eggTypes].sort((a, b) => b.dailyOrders - a.dailyOrders);
// 添加排名属性
const typesWithRank = sortedTypes.map((type, index) => ({
...type,
rank: index + 1
}));
this.setData({
eggTypes: typesWithRank,
fromPreviousStep: false // 初始化标志
});
},
// 选择客户地区
selectRegion(e) {
const region = e.currentTarget.dataset.region;
this.setData({
'evaluateData.region': region
});
// 只有当当前步骤是1且已经从下一步返回时,才自动进入下一步
if (this.data.evaluateStep === 1 && !this.data.fromPreviousStep) {
this.setData({
evaluateStep: 2
});
}
// 重置标志
this.setData({
fromPreviousStep: false
});
},
// 选择鸡蛋类型
selectEggType(e) {
const type = e.currentTarget.dataset.type;
// 获取该类型下的品牌,并按成交单量降序排序
const brands = [...this.data.eggData[type].brands].sort((a, b) => b.dailyOrders - a.dailyOrders);
// 添加排名属性
const brandsWithRank = brands.map((brand, index) => ({
...brand,
rank: index + 1
}));
this.setData({
'evaluateData.type': type,
eggBrands: brandsWithRank,
// 清除之前选择的品牌和型号
'evaluateData.brand': '',
'evaluateData.model': '',
eggModels: []
});
// 只有当当前步骤是2且已经从下一步返回时,才自动进入下一步
if (this.data.evaluateStep === 2 && !this.data.fromPreviousStep) {
this.setData({
evaluateStep: 3
});
}
// 重置标志
this.setData({
fromPreviousStep: false
});
},
// 选择鸡蛋品牌
selectEggBrand(e) {
const brand = e.currentTarget.dataset.brand;
const type = this.data.evaluateData.type;
// 获取该品牌下的型号,并按成交单量降序排序
const models = [...this.data.eggData[type].models[brand]].sort((a, b) => b.dailyOrders - a.dailyOrders);
// 添加排名属性
const modelsWithRank = models.map((model, index) => ({
...model,
rank: index + 1
}));
this.setData({
'evaluateData.brand': brand,
eggModels: modelsWithRank,
// 清除之前选择的型号
'evaluateData.model': ''
});
// 只有当当前步骤是3且已经从下一步返回时,才自动进入下一步
if (this.data.evaluateStep === 3 && !this.data.fromPreviousStep) {
this.setData({
evaluateStep: 4
});
}
// 重置标志
this.setData({
fromPreviousStep: false
});
},
// 选择鸡蛋型号
selectEggModel(e) {
const model = e.currentTarget.dataset.model;
this.setData({
'evaluateData.model': model
});
// 只有当当前步骤是4且已经从下一步返回时,才自动进入下一步
if (this.data.evaluateStep === 4 && !this.data.fromPreviousStep) {
this.setData({
evaluateStep: 5
});
}
// 重置标志
this.setData({
fromPreviousStep: false
});
},
// 格式化订单数量显示
formatOrderCount(count) {
if (count >= 10000) {
return (count / 10000).toFixed(1) + '万';
} else if (count >= 1000) {
return (count / 1000).toFixed(1) + 'k';
}
return count.toString();
},
// 选择条件
selectCondition(e) {
const { type, value } = e.currentTarget.dataset;
this.setData({
[`evaluateData.${type}`]: value
});
// 只有当当前步骤不是从返回过来的,才自动进入下一步
if (!this.data.fromPreviousStep) {
// 根据当前步骤自动进入下一步
const currentStep = this.data.evaluateStep;
if (currentStep === 5) {
this.setData({ evaluateStep: 6 });
} else if (currentStep === 6) {
this.setData({ evaluateStep: 7 });
} else if (currentStep === 7) {
this.setData({ evaluateStep: 8 });
}
}
// 重置标志
this.setData({
fromPreviousStep: false
});
},
// 选择规格
selectSpec(e) {
const spec = e.currentTarget.dataset.spec;
this.setData({
'evaluateData.spec': spec
});
},
// 获取报价
getQuote() {
if (this.data.evaluateData.spec) {
this.calculatePrice();
} else {
wx.showToast({
title: '请选择规格',
icon: 'none',
duration: 2000
});
}
},
// 上一步
prevStep() {
if (this.data.evaluateStep > 1) {
this.setData({
evaluateStep: this.data.evaluateStep - 1,
fromPreviousStep: true // 标记是从下一步返回的
});
} else {
// 如果在第一步,返回上一页
wx.navigateBack();
}
},
// 计算价格
calculatePrice() {
const { region, type, brand, model, freshness, size, packaging, spec } = this.data.evaluateData;
// 校验必填参数
if (!region || !type || !brand || !model || !freshness || !size || !packaging || !spec) {
wx.showToast({
title: '请完成所有选项',
icon: 'none',
duration: 2000
});
return;
}
// 显示加载中
wx.showLoading({
title: '计算中...',
mask: true
});
// 模拟计算延迟
setTimeout(() => {
// 基础价格表(元/斤)
const basePrices = {
'土鸡蛋': 25,
'洋鸡蛋': 15,
'乌鸡蛋': 35,
'有机鸡蛋': 40,
'初生蛋': 45
};
// 品牌溢价系数
const brandMultipliers = {
'农家乐': 1.0,
'山野': 1.1,
'生态园': 1.2,
'田园': 1.0,
'德青源': 1.1,
'圣迪乐村': 1.15,
'正大': 1.05,
'咯咯哒': 1.0
};
// 型号溢价系数
const modelMultipliers = {
// 土鸡蛋型号系数
'散养土鸡蛋': 1.1, '林下土鸡蛋': 1.15, '谷物喂养土鸡蛋': 1.2, '农家土鸡蛋': 1.0,
'高山散养土鸡蛋': 1.25, '林间土鸡蛋': 1.1, '野生土鸡蛋': 1.3,
'有机土鸡蛋': 1.3, '无抗土鸡蛋': 1.25, '生态土鸡蛋': 1.2,
'走地鸡蛋': 1.1, '自然放养土鸡蛋': 1.12,
// 洋鸡蛋型号系数
'安心鲜鸡蛋': 1.0, '谷物鸡蛋': 1.1, '营养鸡蛋': 1.05,
'高品质鲜鸡蛋': 1.15, '生态鸡蛋': 1.2,
'鲜鸡蛋': 1.0, '优选鸡蛋': 1.1,
'农家鸡蛋': 1.05,
// 乌鸡蛋型号系数
'散养乌鸡蛋': 1.1, '林下乌鸡蛋': 1.15, '野生乌鸡蛋': 1.3,
'有机乌鸡蛋': 1.3, '无抗乌鸡蛋': 1.25, '生态乌鸡蛋': 1.2,
'农家乌鸡蛋': 1.0, '谷物乌鸡蛋': 1.1,
// 有机鸡蛋型号系数
'有机认证鸡蛋': 1.3, '无抗有机鸡蛋': 1.35, '生态有机鸡蛋': 1.32,
'有机散养鸡蛋': 1.25, '有机谷物鸡蛋': 1.2, '野生有机鸡蛋': 1.4,
'有机农家鸡蛋': 1.1, '有机初生蛋': 1.4, '自然有机鸡蛋': 1.2,
// 初生蛋型号系数
'土鸡初生蛋': 1.2, '散养初生蛋': 1.25, '农家初生蛋': 1.15,
'高山初生蛋': 1.3, '林下初生蛋': 1.25, '野生初生蛋': 1.45,
'有机初生蛋': 1.4, '无抗初生蛋': 1.35, '生态初生蛋': 1.3
};
// 状况调整系数
const freshnessCoefficient = { '非常新鲜': 1.0, '较新鲜': 0.85, '一般': 0.7, '不新鲜': 0.4 };
const sizeCoefficient = { '特大': 1.3, '大': 1.1, '中': 1.0, '小': 0.8 };
const packagingCoefficient = { '原装完整': 1.0, '部分包装': 0.9, '散装': 0.8 };
// 计算单价(元/斤)
let unitPrice = basePrices[type] || 20;
const brandMultiplier = brandMultipliers[brand] || 1.0;
const modelMultiplier = modelMultipliers[model] || 1.0;
unitPrice = unitPrice * brandMultiplier * modelMultiplier;
unitPrice *= freshnessCoefficient[freshness];
unitPrice *= sizeCoefficient[size];
unitPrice *= packagingCoefficient[packaging];
// 确保价格合理
unitPrice = Math.max(unitPrice, 1);
// 计算总价(假设每个鸡蛋约0.05斤)
const eggsPerKilogram = 20; // 约20个鸡蛋/斤
const specCount = parseInt(spec) || 0;
const totalWeight = specCount / eggsPerKilogram;
const totalPrice = unitPrice * totalWeight;
// 更新结果
this.setData({
evaluateResult: {
finalPrice: unitPrice.toFixed(1),
totalPrice: totalPrice.toFixed(1)
},
evaluateStep: 9
}, () => {
wx.hideLoading();
});
}, 800);
},
// 重新估价
restartEvaluate() {
this.setData({
evaluateStep: 1,
evaluateData: {
region: '',
type: '',
brand: '',
model: '',
freshness: '',
size: '',
packaging: '',
spec: ''
},
evaluateResult: {
finalPrice: '0',
totalPrice: '0'
},
fromPreviousStep: false // 重置标志
});
},
// 返回首页
backToHome() {
wx.navigateBack();
},
// 跳转到购物页面
goToBuy() {
console.log('goToBuy 函数被调用');
// 使用与custom-tab-bar相同的跳转逻辑
const url = 'pages/buyer/index';
// 先尝试使用navigateTo
wx.navigateTo({
url: '/' + url,
success: function(res) {
console.log('使用navigateTo成功跳转到购物页面:', res);
},
fail: function(error) {
console.log('navigateTo失败,尝试使用reLaunch:', error);
// 如果navigateTo失败,使用reLaunch
wx.reLaunch({
url: '/' + url,
success: function(res) {
console.log('使用reLaunch成功跳转到购物页面:', res);
},
fail: function(err) {
console.error('reLaunch也失败:', err);
}
});
}
});
},
// 跳转到货源页面
goToSell() {
console.log('goToSell 函数被调用');
// 使用与custom-tab-bar相同的跳转逻辑
const url = 'pages/seller/index';
// 先尝试使用navigateTo
wx.navigateTo({
url: '/' + url,
success: function(res) {
console.log('使用navigateTo成功跳转到货源页面:', res);
},
fail: function(error) {
console.log('navigateTo失败,尝试使用reLaunch:', error);
// 如果navigateTo失败,使用reLaunch
wx.reLaunch({
url: '/' + url,
success: function(res) {
console.log('使用reLaunch成功跳转到货源页面:', res);
},
fail: function(err) {
console.error('reLaunch也失败:', err);
}
});
}
});
}
})