// 定义FAQ数据类型 interface FAQ { id: number; question: string; answer: string; category: 'account' | 'order' | 'payment' | 'other'; expanded: boolean; } Page({ data: { // 搜索关键词 searchKeyword: '', // 当前选中的分类 currentCategory: 'all', // FAQ列表数据 faqs: [] as FAQ[], // 过滤后的FAQ列表 filteredFAQs: [] as FAQ[] }, onLoad() { // 初始化FAQ数据 this.initFAQs(); }, // 初始化FAQ数据 initFAQs() { const faqs: FAQ[] = [ { id: 1, question: '如何注册账号?', answer: '您可以通过手机号验证码进行注册,点击首页"我的"页面,选择"注册",输入手机号并获取验证码,设置密码后即可完成注册。', category: 'account', expanded: false }, { id: 2, question: '忘记密码怎么办?', answer: '在登录页面点击"忘记密码",输入注册手机号,获取验证码后即可重置密码。', category: 'account', expanded: false }, { id: 3, question: '如何修改个人信息?', answer: '进入"我的"页面,点击头像或个人信息区域,即可修改昵称、头像等个人信息。', category: 'account', expanded: false }, { id: 4, question: '如何查看我的订单?', answer: '在"我的"页面中,点击"我的订单"即可查看所有订单状态,包括待付款、待发货、待收货和已完成。', category: 'order', expanded: false }, { id: 5, question: '订单可以取消吗?', answer: '未付款的订单可以直接取消;已付款但未发货的订单,您可以申请取消,商家审核通过后会为您退款;已发货的订单需要与商家协商后才能取消。', category: 'order', expanded: false }, { id: 6, question: '支持哪些支付方式?', answer: '目前我们支持微信支付、支付宝、银行卡等多种支付方式,您可以在结算页面选择合适的支付方式。', category: 'payment', expanded: false }, { id: 7, question: '支付后多久可以发货?', answer: '一般情况下,付款成功后48小时内会安排发货,特殊商品或活动期间可能会有延迟,具体以商品详情页说明为准。', category: 'payment', expanded: false }, { id: 8, question: '如何联系客服?', answer: '您可以通过帮助中心的"联系客服"按钮,或者在"我的"页面找到"客服中心",工作时间为9:00-21:00。', category: 'other', expanded: false }, { id: 9, question: '如何提交意见反馈?', answer: '在"我的"页面找到"意见反馈"入口,选择反馈类型并填写内容,我们会尽快处理您的反馈。', category: 'other', expanded: false } ]; this.setData({ faqs, filteredFAQs: faqs }); }, // 切换分类 switchCategory(e: { currentTarget: { dataset: { category: string } } }) { const category = e.currentTarget.dataset.category; this.setData({ currentCategory: category }, () => { this.filterFAQs(); }); }, // 搜索输入变化 onSearchInput(e: { detail: { value: string } }) { const keyword = e.detail.value.trim(); this.setData({ searchKeyword: keyword }, () => { this.filterFAQs(); }); }, // 过滤FAQ列表 filterFAQs() { const { faqs, currentCategory, searchKeyword } = this.data; let filtered = faqs; // 按分类过滤 if (currentCategory !== 'all') { filtered = filtered.filter(faq => faq.category === currentCategory); } // 按搜索关键词过滤 if (searchKeyword) { const keyword = searchKeyword.toLowerCase(); filtered = filtered.filter(faq => faq.question.toLowerCase().includes(keyword) || faq.answer.toLowerCase().includes(keyword) ); } this.setData({ filteredFAQs: filtered }); }, // 展开/收起FAQ toggleFaq(e: { currentTarget: { dataset: { id: number } } }) { const id = e.currentTarget.dataset.id; const { faqs } = this.data; // 更新FAQ的展开状态 const updatedFAQs = faqs.map(faq => { if (faq.id === id) { return { ...faq, expanded: !faq.expanded }; } return faq; }); this.setData({ faqs: updatedFAQs, filteredFAQs: updatedFAQs }); }, // 联系客服 contactCustomerService() { wx.showModal({ title: '联系客服', content: '客服工作时间:9:00-21:00\n我们将尽快为您解答问题', confirmText: '立即咨询', cancelText: '稍后再说', confirmColor: '#51bdb6', success: (res) => { if (res.confirm) { // 实际项目中可以跳转到客服聊天页面 wx.showToast({ title: '正在连接客服...', icon: 'none', duration: 1500 }); } } }); } });