const app = getApp(); const svc = require('../../services/exercise'); const planSvc = require('../../services/plan'); Page({ data: { statusBarHeight: 20, q: '', results: [], loading: false, searched: false, selectMode: false, planId: '', navTitle: '搜索' }, onLoad(query) { this.setData({ statusBarHeight: app.globalData.statusBarHeight || 20 }); const selectMode = query.mode === 'select'; const planId = query.planId || ''; this.setData({ selectMode, planId, navTitle: selectMode ? '选择动作' : '搜索' }); if (selectMode) { wx.setNavigationBarTitle({ title: '选择动作' }); } }, onInput(e) { const q = e.detail.value; this.setData({ q }); this.debouncedSearch(q); }, debouncedSearch(q) { if (this._timer) clearTimeout(this._timer); this._timer = setTimeout(() => this.doSearch(q), 350); }, doSearch(q) { if (!q || !q.trim()) { this.setData({ results: [], searched: false, loading: false }); return; } this.setData({ loading: true }); svc.search(q.trim()).then((res) => { this.setData({ results: (res && res.items) || [], searched: true, loading: false }); }).catch(() => { this.setData({ searched: true, loading: false }); }); }, onExercise(e) { const id = e.detail && e.detail.id; if (!id) return; if (this.data.selectMode && this.data.planId) { planSvc.addExercise(this.data.planId, id).then(() => { wx.showToast({ title: '已添加', icon: 'success' }); setTimeout(() => wx.navigateBack(), 500); }).catch(() => {}); return; } wx.navigateTo({ url: '/pages/detail/detail?id=' + encodeURIComponent(id) }); } });