yiming
2024-04-19 338ad19ee45b5380a0d8433cbbce2a727a576dfa
packageBookService/pages/bookServices/list/index.js
@@ -4,10 +4,10 @@
   * 页面的初始数据
   */
  data: {
    barHeight: '',
    navBarHeight: '',
    searchValue: '',
    path: '',
    barHeight: "",
    navBarHeight: "",
    searchValue: "",
    path: "",
    pathList: [],
    pageCount: {
      page: 1,
@@ -15,49 +15,78 @@
    },
    isMore: null,
    assortCheck: {
      name: '',
      code: '',
      name: "",
      code: "",
    },
    bookList: [],
    stairList: {
      value: '',
      options: [
        {
          value: '',
          label: '一级',
        },
      ],
      value: "",
      options: [],
    },
    secondList: {
      value: [],
      options: [],
      disabled: false,
    },
    majorProjectList: {
      value: [],
      options: [],
    },
    sortList: {
      value: "default",
      options: [{
          value: "default",
          label: "默认排序",
        },
        {
          value: "name-asc",
          label: "名称正序",
        },
        {
          value: "name-desc",
          label: "名称倒叙",
        },
        {
          value: "time-asc",
          label: "出版时间正序",
        },
        {
          value: "time-desc",
          label: "出版时间倒叙",
        },
      ],
    },
    newTextBook: {
      value: [],
      options: [],
    },
    stairCode: '', // 一级分类选中项
    secondCode: '', // 二级分类选中项
    sort: '', // 排序
    stairCode: "", // 一级分类选中项
    secondCode: "", // 二级分类选中项
    sort: "", // 排序
    enable: false,
    loadingProps: {
      size: '50rpx'
      size: "50rpx",
    },
    loading: false,
    noData: false
    noData: false,
    showDropdown: false,
    isRequesting: false,
    disabledStair: false,
    disabledSecondList: false,
    disabledProject: false,
    disabledNewForms: false,
    triggered: false,
    backTop: "",
    isshowLoading: true
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
    const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
    const navBarHeight =
      (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度
    this.setData({
      barHeight: systInfo.statusBarHeight,
      navBarHeight: navBarHeight,
@@ -83,7 +112,7 @@
    // 一级分类和path赋值
    if (options.stairCode) {
      this.setData({
        'stairList.value': options.stairCode,
        "stairList.value": options.stairCode,
        stairCode: options.stairCode,
        path: `${options.assortCode}\\${options.stairCode}`,
      });
@@ -94,99 +123,109 @@
        secondCode: options.secondCode,
        pathList: [{
          Path: options.secondCode,
          Type: '*',
          Type: "*",
          StoreRefCode: app.config.goodsStore,
        }
        ],
      })
        }, ],
      });
    }
    // 获取二级分类
    this.getSecondList(`${options.assortCode}\\${options.stairCode}`);
    this.getBookList(`${options.assortCode}\\${options.stairCode}`);
    // 获取重点项目
    this.getProjectList('bookClassification');
    this.getProjectList('newFormsTextbooks');
    this.getProjectList("bookClassification");
    this.getProjectList("newFormsTextbooks");
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  onReady() {},
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  onShow() {},
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() { },
  onHide() {},
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() { },
  onUnload() {},
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log('下拉');
    this.setData({
      triggered: true,
    });
    this.setData({
      isshowLoading: false,
      "pageCount.page": 1,
    });
    this.getBookList(this.data.path);
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom(e) {
    const flag = this.data.bookList.length < this.data.pageCount.total
    const flag = this.data.bookList.length < this.data.pageCount.total;
    if (flag) {
      this.setData({
        isMore: true,
        "pageCount.page": this.data.pageCount.page + 1
      })
      this.getBookList(this.data.path)
      if (!this.data.isRequesting) {
        this.setData({
          isMore: true,
          "pageCount.page": this.data.pageCount.page + 1,
          isshowLoading: false
        });
        this.getBookList(this.data.path);
      }
    } else {
      this.setData({
        isMore: true,
      })
      });
      setTimeout(() => {
        this.setData({
          isMore: false
        })
      }, 100)
      console.log('没有更多了');
          isMore: false,
        });
      }, 100);
    }
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() { },
  onShareAppMessage() {},
  goBack() {
    wx.navigateBack();
  },
  // 获取一级列表
  getStairList(path) {
    this.setData({
      disabledStair: false,
    });
    const query = {
      path,
      filterList: [],
      queryType: '\\',
      queryType: "\\",
      searchList: [],
      size: '30',
      start: '0',
      size: "30",
      start: "0",
      storeRefCode: app.config.goodsStore,
      sort: { type: 'Asc', field: 'LinkOrder' },
      sort: {
        type: "Asc",
        field: "LinkOrder",
      },
    };
    app.MG.store.getStoreChannelList(query).then(async (res) => {
      const options = [
        {
          value: '',
          label: '一级',
        },
      ];
      const options = [{
        value: "",
        label: "一级分类",
      }, ];
      for (let index = 0; index < res.datas.length; index++) {
        const item = res.datas[index];
        options.push({
@@ -195,25 +234,33 @@
        });
      }
      this.setData({
        'stairList.options': options,
        'stairList.value': this.data.stairCode,
        "stairList.options": options,
        "stairList.value": this.data.stairCode,
      });
      if (!options.length) {
        this.setData({
          disabledStair: true,
        });
      }
    });
  },
  // 获取一级分类下二级分类
  getSecondList(path) {
  async getSecondList(path) {
    const options = [];
    const query = {
      path,
      filterList: [],
      queryType: '\\',
      queryType: "\\",
      searchList: [],
      size: '30',
      start: '0',
      size: "30",
      start: "0",
      storeRefCode: app.config.goodsStore,
      sort: { type: 'Asc', field: 'LinkOrder' },
      sort: {
        type: "Asc",
        field: "LinkOrder",
      },
    };
    app.MG.store.getStoreChannelList(query).then((res) => {
    await app.MG.store.getStoreChannelList(query).then((res) => {
      for (let index = 0; index < res.datas.length; index++) {
        const item = res.datas[index];
        options.push({
@@ -222,16 +269,20 @@
        });
      }
      this.setData({
        'secondList.options': options,
        "secondList.options": options,
      });
      const second = [this.data.secondCode]
      const second = [this.data.secondCode];
      this.setData({
        'secondList.value': second
      })
        "secondList.value": second,
      });
    });
  },
  // 获取重点项目
  getProjectList(type) {
    this.setData({
      disabledProject: false,
      disabledNewForms: false,
    });
    const options = [];
    const arr = [];
    let array = [];
@@ -239,7 +290,9 @@
      refCodes: [type],
    };
    app.MG.store.getProductTypeField(query).then((res) => {
      array = JSON.parse(res[0].config).option;
      array = JSON.parse(res[0].config).option.filter(
        (item) => item.value == this.data.assortCheck.code
      );
      for (let index = 0; index < array.length; index++) {
        const element = array[index];
        if (element.child) {
@@ -249,7 +302,7 @@
          }
        }
      }
      if (type == 'bookClassification') {
      if (type == "bookClassification") {
        for (let index = 0; index < arr.length; index++) {
          const element = arr[index];
          options.push({
@@ -257,10 +310,15 @@
            label: element.name,
          });
        }
        if (!options.length) {
          this.setData({
            disabledProject: true,
          });
        }
        this.setData({
          'majorProjectList.options': options,
          "majorProjectList.options": options,
        });
      } else if (type == 'newFormsTextbooks') {
      } else if (type == "newFormsTextbooks") {
        for (let index = 0; index < arr.length; index++) {
          const element = arr[index];
          options.push({
@@ -268,19 +326,33 @@
            label: element.name,
          });
        }
        if (!options.length) {
          this.setData({
            disabledNewForms: true,
          });
        }
        this.setData({
          'newTextBook.options': options,
          "newTextBook.options": options,
        });
        console.log('重点项目', this.data.newTextBook);
        console.log("重点项目", this.data.newTextBook);
      }
    });
  },
  // 获取图书列表
  getBookList(path) {
    if (this.data.isRequesting) {
      return false;
    }
    this.setData({
      loading: true,
      noData: false
    })
      noData: false,
      isRequesting: true,
      disabledSecondList: false
    });
    if (this.data.isshowLoading) {
      this.setData({
        loading: true
      })
    }
    let sort;
    let pathObj = {};
    if (this.data.pathList.length) {
@@ -290,38 +362,62 @@
    } else {
      pathObj = {
        path,
        queryType: '*',
        queryType: "*",
      };
    }
    if (this.data.sort) {
    if (this.data.sortList.value == "name-asc") {
      sort = {
        Name: this.data.sort,
        BaseType: '',
        Name: "Asc",
        BaseType: "",
      };
    } else {
    } else if (this.data.sortList.value == "name-desc") {
      sort = {
        type: 'Desc',
        field: 'ViewCount',
        Name: "Desc",
        BaseType: "",
      };
    } else if (this.data.sortList.value == "time-asc") {
      sort = {
        PublicationDate: "Asc",
        BaseType: "DateTime",
      };
    } else if (this.data.sortList.value == "time-desc") {
      sort = {
        PublicationDate: "Desc",
        BaseType: "DateTime",
      };
    } else if (this.data.sortList.value == "default") {
      sort = {
        field: "order",
        type: "Desc",
      };
    }
    // if (this.data.sort) {
    //   sort = {
    //     Name: this.data.sort,
    //     BaseType: '',
    //   };
    // } else {
    //   sort = {
    //     type: 'Desc',
    //     field: 'ViewCount',
    //   };
    // }
    // 搜索
    let searchObj = {};
    if (this.data.searchValue) {
      searchObj = {
        'Name*': this.data.searchValue,
        '||author*': this.data.searchValue,
        '||isbn*': this.data.searchValue,
        '||seriesName*': this.data.searchValue,
        "Name*": this.data.searchValue,
        "||author*": this.data.searchValue,
        "||isbn*": this.data.searchValue,
        "||seriesName*": this.data.searchValue,
      };
    }
    const query = {
      ...pathObj,
      filterList: [
        {
          value: 'Normal',
          field: 'state',
        },
      ],
      filterList: [{
        value: "Normal",
        field: "state",
      }, ],
      sort,
      paging: {
        start: 0,
@@ -331,101 +427,117 @@
        author: [],
        publicationDate: [],
        ...searchObj,
        'bookClassification*': this.data.majorProjectList.value,
        'newFormsTextbooks*': this.data.newTextBook.value,
        "bookClassification*": this.data.majorProjectList.value,
        "newFormsTextbooks*": this.data.newTextBook.value,
      },
    };
    app.MG.store.getProductList(query).then((res) => {
      this.setData({
        bookList: res.datas,
        isMore: null,
        enable: false,
        "pageCount.total": res.total,
        loading: false
        loading: false,
        isRequesting: false,
        isshowLoading: true
      });
      console.log('图书列表', res.datas);
      if (!res.datas.length) {
        this.setData({
          noData: true
          noData: true,
        });
      }
      // 二级禁用逻辑
      // 1.一级分类未选中,二级分类禁用
      if (!this.data.stairList.value) {
        this.setData({
          disabledSecondList: true
        })
      } else if (this.data.stairList.value && !this.data.secondList.options.length) {
        // 2. 一级分类选中,无二级分类
        this.setData({
          disabledSecondList: true
        })
      }
      if (this.data.triggered) {
        this.setData({
          triggered: false,
        });
        wx.showToast({
          title: "刷新成功",
        });
      }
    });
  },
  // 一级分类切换
  onChangeStair(e) {
    const path = e.detail.value.length
      ? `${this.data.assortCheck.code}\\${e.detail.value}`
      : this.data.assortCheck.code;
  async onChangeStair(e) {
    const path = e.detail.value.length ?
      `${this.data.assortCheck.code}\\${e.detail.value}` :
      this.data.assortCheck.code;
    this.setData({
      backTop: "#assort-title",
      pathList: [],
      stairCode: e.detail.value,
      secondCode: '',
      secondCode: "",
      path: path,
      'stairList.value': e.detail.value,
      "stairList.value": e.detail.value,
      // disabledSecondList: false
    });
    this.getBookList(path);
    this.getSecondList(path);
    // if (e.detail.value == "") {
    //   this.setData({
    //     disabledSecondList: true,
    //   });
    // } else {
    await this.getSecondList(path);
    // }
    await this.getBookList(path);
  },
  // 二级分类切换
  onChangeSecond(e) {
    console.log(789);
    const pathList = [];
    for (let index = 0; index < e.detail.value.length; index++) {
      const element = e.detail.value[index];
      pathList.push({
        Path: element,
        Type: '*',
        Type: "*",
        StoreRefCode: app.config.goodsStore,
      });
    }
    this.setData({
      backTop: "#assort-title",
      pathList: pathList,
      'secondList.value': e.detail.value,
      "secondList.value": e.detail.value,
    });
  },
  //
  //
  onConfirmSecond() {
    this.getBookList(this.data.path);
  },
  // 重点项目改变
  changeMajorProject(e) {
    this.setData({
      'majorProjectList.value': e.detail.value,
      backTop: "#assort-title",
      "majorProjectList.value": e.detail.value,
    });
    this.getBookList(this.data.path);
  },
  // 重点项目重置
  resetMajorProject() {
    this.setData({
      'majorProjectList.value': [],
      "majorProjectList.value": [],
    });
    this.getBookList(this.data.path);
  },
  changeNewText(e) {
  // 排序切换
  onSortChange(e) {
    this.setData({
      'newTextBook.value': e.detail.value,
      backTop: "#assort-title",
      "sortList.value": e.detail.value,
    });
    this.getBookList(this.data.path);
  },
  resetNewText() {
    this.setData({
      'newTextBook.value': [],
    });
    this.getBookList(this.data.path);
  },
  // 排序按钮
  sortClick() {
    if (!this.data.sort.length) {
      this.setData({
        sort: 'Desc',
      });
    } else if (this.data.sort == 'Desc') {
      this.setData({
        sort: 'Asc',
      });
    } else if (this.data.sort == 'Asc') {
      this.setData({
        sort: '',
      });
    }
    let path;
    if (this.data.secondCode) {
      path = this.data.secondCode;
@@ -439,23 +551,79 @@
    });
    this.getBookList(path);
  },
  // 新形态教材改变
  changeNewText(e) {
    this.setData({
      backTop: "#assort-title",
      "newTextBook.value": e.detail.value,
    });
    this.getBookList(this.data.path);
  },
  resetNewText() {
    this.setData({
      "newTextBook.value": [],
    });
    this.getBookList(this.data.path);
  },
  // 排序按钮
  // sortClick() {
  //   if (!this.data.sort.length) {
  //     this.setData({
  //       sort: 'Desc',
  //     });
  //   } else if (this.data.sort == 'Desc') {
  //     this.setData({
  //       sort: 'Asc',
  //     });
  //   } else if (this.data.sort == 'Asc') {
  //     this.setData({
  //       sort: '',
  //     });
  //   }
  //   let path;
  //   if (this.data.secondCode) {
  //     path = this.data.secondCode;
  //   } else if (this.data.stairCode) {
  //     path = `${this.data.assortCheck.code}\\${this.data.stairCode}`;
  //   } else {
  //     path = this.data.assortCheck.code;
  //   }
  //   this.setData({
  //     path: path,
  //   });
  //   this.getBookList(path);
  // },
  // 搜索图书
  searchBook(e) {
    console.log(e.detail.value);
    this.setData({
      backTop: "#assort-title",
      searchValue: e.detail.value,
    });
    this.getBookList(this.data.path);
  },
  // 跳转图书详情
  goDetail(e) {
    const { book } = e.currentTarget.dataset;
    const {
      book
    } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `/packageBookService/pages/bookServices/detail/index?id=${book.id}&name=${book.name}`,
    });
  },
  onRefresh() {
    this.setData({ enable: true });
    this.getBookList(this.data.path)
    this.setData({
      enable: true,
    });
    this.getBookList(this.data.path);
  },
});
  openDropdown() {
    this.setData({
      showDropdown: true,
    });
  },
  closeDropdown() {
    this.setData({
      showDropdown: false,
    });
  },
});