123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- Component({
- options: {
- addGlobalClass: true
- },
- properties: {
- search: Boolean, //是否开启搜索
- list: Array, //功能列表
- condition: String, //搜索内容
- onClick: Function,
- startUsing: Boolean, //启用搜索
- onSearch: Function, //搜索回调
- record: { //记录历史
- type: Boolean,
- value: true
- }
- },
- lifetimes: {
- attached() {
- if (wx.getStorageSync('SearchHistory')) this.setData({
- history: wx.getStorageSync('SearchHistory')
- })
- }
- },
- data: {
- condition: "",
- history: [], //搜索历史
- showHistory: false
- },
- methods: {
- onClick(e) {
- const {
- item
- } = e.currentTarget.dataset;
- this.triggerEvent("onClick", item)
- },
- /* 开启关闭搜索 */
- clickSearch() {
- this.setData({
- startUsing: !this.data.startUsing
- });
- setTimeout(this.setListHeight, 400)
- },
- /* 开始搜索 */
- startSearch({
- detail
- }) {
- if (this.data.condition == detail) return;
- this.setData({
- condition: detail
- })
- this.triggerEvent("onSearch", detail)
- if (this.data.record || detail == '') {
- let list = this.data.history;
- if (list.findIndex(v => v == detail) == -1) {
- list.push(detail)
- this.setData({
- history: list
- });
- wx.setStorageSync("SearchHistory", list)
- }
- }
- },
- /* 取消搜索 */
- endSearch() {
- this.setData({
- condition: ""
- })
- this.triggerEvent("onSearch", "")
- },
- /* 删除搜索历史 */
- deleteHistory(e) {
- let that = this;
- wx.showModal({
- title: '提示',
- content: '是否删除所有搜索历史',
- complete: ({
- confirm
- }) => {
- if (confirm) {
- wx.setStorageSync("SearchHistory", [])
- that.setData({
- history: []
- });
- this.setListHeight();
- }
- }
- })
- },
- /* 快速搜索 */
- clickTag(e) {
- const {
- name
- } = e.currentTarget.dataset;
- this.setData({
- condition: name
- });
- this.triggerEvent("onSearch", name)
- },
- /* 单独删除 */
- delteTag(e) {
- const {
- name
- } = e.currentTarget.dataset;
- this.setData({
- history: this.data.history.filter(v => v != name)
- });
- wx.setStorageSync('SearchHistory', this.data.history);
- this.setListHeight();
- },
- /* 设置列表高度 */
- setListHeight() {
- let pages = getCurrentPages();
- if (pages[pages.length - 1].setListHeight) pages[pages.length - 1].setListHeight();
- },
- /* 搜索框焦点 */
- onFocus() {
- this.setData({
- showHistory: true
- });
- setTimeout(this.setListHeight, 50);
- },
- /* 搜索框失焦 */
- onBlur() {
- this.setData({
- showHistory: false
- })
- setTimeout(this.setListHeight, 50);
- }
- }
- })
|