goodsSearch.js 7.52 KB
"use strict";
var common_vendor = require("../../../common/vendor.js");
var pages_api_order = require("../../api/order.js");
require("../../../utils/request.js");
require("../../../utils/env.js");
require("../../api/login.js");
if (!Array) {
  const _easycom_uni_search_bar2 = common_vendor.resolveComponent("uni-search-bar");
  const _easycom_uni_popup2 = common_vendor.resolveComponent("uni-popup");
  (_easycom_uni_search_bar2 + _easycom_uni_popup2)();
}
const _easycom_uni_search_bar = () => "../../../uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.js";
const _easycom_uni_popup = () => "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.js";
if (!Math) {
  (_easycom_uni_search_bar + _easycom_uni_popup)();
}
const _sfc_main = {
  __name: "goodsSearch",
  props: {
    isShowOther: {
      type: Function,
      required: true
    }
  },
  emits: ["@getGoodsInfo"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const store = common_vendor.useStore();
    const users = store.state.user;
    const goods = common_vendor.reactive({
      info: {}
    });
    const isSelectedGoods = common_vendor.ref(false);
    const popup = common_vendor.ref();
    const searchValue = common_vendor.ref("");
    const isFocus = common_vendor.ref(false);
    const isInput = common_vendor.ref(false);
    const isUpload = common_vendor.ref(true);
    const dimSearchList = common_vendor.reactive({
      data: []
    });
    const hotSendList = common_vendor.reactive({
      data: []
    });
    const recentSendList = common_vendor.reactive({
      data: []
    });
    common_vendor.onMounted(() => {
      getData();
    });
    const getData = () => {
      pages_api_order.usualGoodsList({
        name: ""
      }).then((res) => {
        if (res.data) {
          hotSendList.data = res.data.slice(0, 6);
        }
      }).catch((err) => {
        common_vendor.index.showToast({
          title: "\u7F51\u7EDC\u5F02\u5E38",
          duration: 2e3,
          icon: "none"
        });
      });
      isSelectedGoods.value = users.goodsInfo.name;
      if (isSelectedGoods.value)
        goods.info = users.goodsInfo;
      pages_api_order.goodsList().then((res) => {
        if (res.data) {
          recentSendList.data = res.data.slice(0, 5);
        }
      }).catch((err) => {
        common_vendor.index.showToast({
          title: "\u7F51\u7EDC\u5F02\u5E38",
          duration: 2e3,
          icon: "none"
        });
      });
    };
    const handleSelectedGoods = () => {
      searchValue.value = goods.info.name;
      isFocus.value = true;
      isInput.value = true;
      isSelectedGoods.value = false;
      dimSearch(searchValue.value);
      props.isShowOther(true, "always");
    };
    const dimSearch = (key) => {
      if (!isUpload.value)
        return;
      isUpload.value = false;
      pages_api_order.usualGoodsList({
        name: key
      }).then((res) => {
        dimSearchList.data = res.data;
        isUpload.value = true;
      });
    };
    const input = (e) => {
      isFocus.value = e ? true : false;
      isInput.value = Boolean(e);
      if (!isUpload.value)
        return;
      searchValue.value = e;
      dimSearch(e);
      props.isShowOther(e ? true : false);
    };
    const cancel = () => {
      isInput.value = false;
      props.isShowOther(false);
    };
    const clear = () => {
      props.isShowOther(true);
    };
    const blur = () => {
      console.log("blur");
    };
    const focus = () => {
      isFocus.value = true;
      props.isShowOther(true);
    };
    const userDefined = () => {
      goods.info = {
        name: searchValue.value
      };
      isSelectedGoods.value = Boolean(searchValue.value);
      props.isShowOther(false);
      emits("getGoodsInfo", {
        name: searchValue.value
      });
      isFocus.value = false;
    };
    const handleCancelGood = () => {
      goods.info = {};
      store.commit("user/setGoodsInfo", {});
      emits("getGoodsInfo", {});
      isSelectedGoods.value = false;
      searchValue.value = "";
      isFocus.value = false;
      isInput.value = false;
    };
    const handleClick = (item) => {
      searchValue.value = item.value;
      isFocus.value = true;
      goods.info = item;
      isSelectedGoods.value = true;
      isInput.value = false;
      props.isShowOther(false);
      emits("getGoodsInfo", item);
    };
    const openForbidGoodsDialog = () => {
      popup.value.open("bottom");
    };
    const closeForbidGoodsDialog = () => {
      popup.value.close();
    };
    return (_ctx, _cache) => {
      return common_vendor.e({
        a: common_vendor.o(openForbidGoodsDialog),
        b: !isSelectedGoods.value
      }, !isSelectedGoods.value ? common_vendor.e({
        c: common_vendor.o(blur),
        d: common_vendor.o(focus),
        e: common_vendor.o(input),
        f: common_vendor.o(cancel),
        g: common_vendor.o(clear),
        h: common_vendor.o(($event) => searchValue.value = $event),
        i: common_vendor.p({
          cancelButton: isFocus.value && searchValue.value ? "none" : "auto",
          focus: isFocus.value,
          placeholder: "\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9",
          modelValue: searchValue.value
        }),
        j: searchValue.value && isFocus.value
      }, searchValue.value && isFocus.value ? {
        k: common_vendor.o(userDefined)
      } : {}) : {}, {
        l: !isSelectedGoods.value && recentSendList.data.length && !isInput.value
      }, !isSelectedGoods.value && recentSendList.data.length && !isInput.value ? {
        m: common_vendor.f(recentSendList.data, (item, index, i0) => {
          return {
            a: common_vendor.t(item.name),
            b: common_vendor.t(item.goodsType ? "(" + item.goodsType.name + ")" : ""),
            c: index,
            d: common_vendor.o(($event) => handleClick(item), index)
          };
        })
      } : {}, {
        n: isSelectedGoods.value
      }, isSelectedGoods.value ? {
        o: common_vendor.o(handleCancelGood),
        p: common_vendor.t(goods.info.name),
        q: common_vendor.t(goods.info.goodsType ? "(" + goods.info.goodsType.name + ")" : ""),
        r: common_vendor.o(handleSelectedGoods)
      } : {}, {
        s: !isSelectedGoods.value && !isInput.value && isFocus.value
      }, !isSelectedGoods.value && !isInput.value && isFocus.value ? {
        t: common_vendor.f(hotSendList.data, (item, index, i0) => {
          return {
            a: common_vendor.t(item.name),
            b: common_vendor.t(item.goodsType ? "(" + item.goodsType.name + ")" : ""),
            c: index,
            d: common_vendor.o(($event) => handleClick(item), index)
          };
        })
      } : {}, {
        v: isInput.value
      }, isInput.value ? {
        w: common_vendor.f(dimSearchList.data, (item, index, i0) => {
          return {
            a: common_vendor.t(item.name),
            b: common_vendor.t(item.name),
            c: common_vendor.t(item.goodsType ? "(" + item.goodsType.name + ")" : ""),
            d: common_vendor.o(($event) => handleClick(item), index),
            e: index
          };
        })
      } : {}, {
        x: common_vendor.o(closeForbidGoodsDialog),
        y: common_vendor.sr(popup, "62a3a6e9-1", {
          "k": "popup"
        }),
        z: common_vendor.p({
          type: "bottom",
          ["safe-area"]: false
        })
      });
    };
  }
};
var Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-62a3a6e9"], ["__file", "E:/project/project-wl-yonghuduan-uniapp-vue3/pages/goodsInfo/components/goodsSearch.vue"]]);
wx.createComponent(Component);