|
|
@@ -1,5 +1,6 @@
|
|
|
// import { getProductDataApi } from "@/api/product/index";
|
|
|
import { getProductDataApi,getAllProductDataApi } from "@/api/product/index";
|
|
|
+import { STOCK_TYPE } from "@/utils/declare";
|
|
|
import { mapGetters, mapActions } from "vuex";
|
|
|
import { copyObject } from "@/utils/util";
|
|
|
export default {
|
|
|
@@ -12,7 +13,10 @@ export default {
|
|
|
py: "", //拼音搜索条件
|
|
|
type: "", //库存预警时,固定为waring,其他情况不传或者传空
|
|
|
autoLoad: true, //自动获取商品信息
|
|
|
- isLimit: true //选择数量不能大于库存限制
|
|
|
+ isLimit: true, //选择数量不能大于库存限制
|
|
|
+ filterProductInfoContrapose:[],
|
|
|
+ allFilterProductInfoContrapose:[],
|
|
|
+ isMore:true,
|
|
|
};
|
|
|
},
|
|
|
onLoad(options) {
|
|
|
@@ -27,387 +31,72 @@ export default {
|
|
|
},
|
|
|
onUnload() {},
|
|
|
computed: {
|
|
|
- ...mapGetters(["getSelectInfo"]),
|
|
|
- filterProductInfoContrapose() {
|
|
|
- let list = copyObject(this.productInfo);
|
|
|
- if (this.py) {
|
|
|
- let commonList = list;
|
|
|
- if (commonList) {
|
|
|
- let commonChildList = [];
|
|
|
- if (!this.$util.isEmpty(commonList)) {
|
|
|
- commonList.forEach(ele => {
|
|
|
- let hasName = ele.itemName && ele.itemName.indexOf(this.py) >= 0;
|
|
|
- let elePy = (ele.py && ele.py.toLocaleUpperCase()) || "";
|
|
|
- let hasPy = elePy.indexOf(this.py.toLocaleUpperCase()) >= 0;
|
|
|
- if (hasName || hasPy) {
|
|
|
- commonChildList.push(ele);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- commonList = commonChildList;
|
|
|
- list = commonList
|
|
|
- }
|
|
|
- }
|
|
|
- return list;
|
|
|
- },
|
|
|
- /**
|
|
|
- * 当前页面选中的商品列表
|
|
|
- */
|
|
|
- selectList() {
|
|
|
- // console.log('this.getSelectInfo',this.getSelectInfo)
|
|
|
- // console.log('this.pageType',this.pageType)
|
|
|
- // console.log('this.getSelectInfo[this.pageType]',this.getSelectInfo[this.pageType])
|
|
|
- return this.getSelectInfo[this.pageType] || [];
|
|
|
- },
|
|
|
- scrollClassId() {
|
|
|
- const curClass = this.productInfo[this.classIndex];
|
|
|
- if (curClass) {
|
|
|
- return `class_${curClass.classId}`;
|
|
|
- }
|
|
|
-
|
|
|
- return "";
|
|
|
- },
|
|
|
- //选择商品总价
|
|
|
- allPrice() {
|
|
|
- let price = 0;
|
|
|
-
|
|
|
- if (this.selectList) {
|
|
|
- for (const item of this.selectList) {
|
|
|
- const itemInfo = this.getSelectItemById(item.id, item.classId);
|
|
|
- if (
|
|
|
- itemInfo &&
|
|
|
- !this.$util.isEmpty(itemInfo.bigPrice) &&
|
|
|
- !this.$util.isEmpty(itemInfo.smallPrice)
|
|
|
- ) {
|
|
|
- price += item.bigCount * Number(itemInfo.bigPrice);
|
|
|
- price += item.smallCount * Number(itemInfo.smallPrice);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return Math.round(price * 100) / 100;
|
|
|
- },
|
|
|
- //选择商品总数
|
|
|
- allCount() {
|
|
|
- let bigLength = 0;
|
|
|
- let smallLength = 0;
|
|
|
- if (this.selectList) {
|
|
|
- for (const item of this.selectList) {
|
|
|
- bigLength += item.bigCount
|
|
|
- smallLength += item.smallCount
|
|
|
- }
|
|
|
- }
|
|
|
- return {bigLength:bigLength,smallLength:smallLength,};
|
|
|
- // return this.selectList.length;
|
|
|
- },
|
|
|
- /**
|
|
|
- * 当前选中商品列表中是否有没有库存的商品
|
|
|
- */
|
|
|
- hasNoStock() {
|
|
|
- let has = false;
|
|
|
- if (this.selectList) {
|
|
|
- for (const item of this.selectList) {
|
|
|
- const {
|
|
|
- bigCount,
|
|
|
- smallCount,
|
|
|
- bigNum,
|
|
|
- bigUnit,
|
|
|
- smallNum,
|
|
|
- smallUnit,
|
|
|
- ratio
|
|
|
- } = item;
|
|
|
- const ratioNum = Number(ratio);
|
|
|
- if (
|
|
|
- Number(bigCount) * ratioNum + Number(smallCount) >
|
|
|
- Number(bigNum) * ratioNum + Number(smallNum)
|
|
|
- ) {
|
|
|
- has = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return has;
|
|
|
- }
|
|
|
+ ...mapGetters(["getSelectInfo","getMyShopInfo"]),
|
|
|
},
|
|
|
methods: {
|
|
|
...mapActions(["setSelectInfoByType", "resetSelectInfoByType"]),
|
|
|
/**
|
|
|
* 请求商品数据
|
|
|
*/
|
|
|
+ loadMore(){
|
|
|
+ if(this.isMore){
|
|
|
+ this.page++;
|
|
|
+ let type = this.tabs[this.tabIndex].key == STOCK_TYPE.WARN ? "waring" : "";
|
|
|
+ if(type=="waring"){
|
|
|
+ this.initDataContrapose({ type,shopId: this.shopId});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ // async initDataContrapose(extendInfo) {
|
|
|
async initDataContrapose(extendInfo) {
|
|
|
//extendInfo调用时的扩展参数 如 shopId
|
|
|
- try {
|
|
|
let params = {
|
|
|
py: this.py,
|
|
|
- type: this.type?this.type:''
|
|
|
+ type: this.type,
|
|
|
+ showPage: 1,
|
|
|
+ page: this.page,
|
|
|
};
|
|
|
- if (extendInfo) {
|
|
|
- params = { ...params, ...extendInfo };
|
|
|
- }
|
|
|
- // const { data } = await getProductDataApi(params);
|
|
|
+ if (extendInfo) {
|
|
|
+ params = { ...params, ...extendInfo };
|
|
|
+ }
|
|
|
const { data } = await getAllProductDataApi(params);
|
|
|
- // data.forEach(element => {
|
|
|
- // element.child && element.child.forEach(child => {
|
|
|
- // child.classId = element.classId;
|
|
|
- // child.className = element.className;
|
|
|
- // });
|
|
|
- // });
|
|
|
+ data.list.forEach((ele)=>{
|
|
|
+ this.filterProductInfoContrapose.push(ele);
|
|
|
+ })
|
|
|
+ this.allFilterProductInfoContrapose = this.filterProductInfoContrapose;
|
|
|
+ if(this.filterProductInfoContrapose.length==data.totalNum){this.isMore = false;}
|
|
|
this.productInfo = data.list;
|
|
|
- this.classIndex = 0;
|
|
|
uni.stopPullDownRefresh();
|
|
|
- } catch (error) {
|
|
|
- } finally {
|
|
|
- uni.hideLoading();
|
|
|
- }
|
|
|
- },
|
|
|
- /**
|
|
|
- * 获取当前选中商品总价
|
|
|
- */
|
|
|
- getSelectItemPrice(item) {
|
|
|
- let price = 0;
|
|
|
- const { bigCount, smallCount, bigPrice, smallPrice } = item;
|
|
|
- let sum =
|
|
|
- Number(bigCount) * Number(bigPrice) +
|
|
|
- Number(smallCount) * Number(smallPrice);
|
|
|
- price = Math.round(sum * 100) / 100;
|
|
|
- return price;
|
|
|
- },
|
|
|
- /**
|
|
|
- * 通过id获取当前选中的商品信息
|
|
|
- */
|
|
|
- getSelectItemById(id) {
|
|
|
- let info = {
|
|
|
- bigCount: 0, //扎数
|
|
|
- smallCount: 0, //支数
|
|
|
- autoPrice: 0 //调价价格
|
|
|
- };
|
|
|
- const item =
|
|
|
- this.selectList && this.selectList.find(ele => {
|
|
|
- return ele.id == id;
|
|
|
- });
|
|
|
- if (item) {
|
|
|
- info = {
|
|
|
- ...item,
|
|
|
- bigCount: Number(item.bigCount),
|
|
|
- smallCount: Number(item.smallCount),
|
|
|
- autoPrice: Number(item.autoPrice)
|
|
|
- };
|
|
|
- }
|
|
|
- return info;
|
|
|
- },
|
|
|
- /**
|
|
|
- * 通过id获取当前选中的商品类别信息 左边菜单角标 当前选中该类别商品多少件
|
|
|
- */
|
|
|
- getSelectClassById(classId) {
|
|
|
- let info = {
|
|
|
- bigCount: 0, //扎数
|
|
|
- smallCount: 0 //支数
|
|
|
- };
|
|
|
-
|
|
|
- const productItem =
|
|
|
- this.productInfo &&
|
|
|
- this.productInfo.find(ele => {
|
|
|
- return ele.classId == classId;
|
|
|
- });
|
|
|
- if (productItem && productItem.child) {
|
|
|
- for (const item of productItem.child) {
|
|
|
- for (const selectItem of this.selectList) {
|
|
|
- if (item.id == selectItem.id && item.classId == selectItem.classId) {
|
|
|
- info.bigCount += Number(selectItem.bigCount);
|
|
|
- info.smallCount += Number(selectItem.smallCount);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return info;
|
|
|
+ uni.hideLoading();
|
|
|
},
|
|
|
|
|
|
- /**
|
|
|
- * 添加商品
|
|
|
- */
|
|
|
- addEvent(item) {
|
|
|
- const list = this.selectList;
|
|
|
- let has = false;
|
|
|
- for (let index = 0; index < list.length; index++) {
|
|
|
- const element = list[index];
|
|
|
- if (element.id == item.id) {
|
|
|
- has = true;
|
|
|
- if (this.isLimit) {
|
|
|
- if (element.bigCount < item.bigNum) {
|
|
|
- list[index] = { ...element, bigCount: ++element.bigCount };
|
|
|
- }else{
|
|
|
- this.$msg("库存不足");
|
|
|
- }
|
|
|
- // else if (element.smallCount < item.smallNum) {
|
|
|
- // list[index] = { ...element, smallCount: ++element.smallCount };
|
|
|
- // }
|
|
|
- } else {
|
|
|
- list[index] = { ...element, bigCount: ++element.bigCount };
|
|
|
- }
|
|
|
|
|
|
- if (this.isLimit) {
|
|
|
- const { bigCount, smallCount } = list[index];
|
|
|
- //超过库存时 设置为库存最大值
|
|
|
- const ratio = Number(item.ratio);
|
|
|
- if (
|
|
|
- Number(bigCount) * ratio + Number(smallCount) >
|
|
|
- Number(item.bigNum) * ratio + Number(item.smallNum)
|
|
|
- ) {
|
|
|
- list[index].bigCount = Number(item.bigNum);
|
|
|
- list[index].smallCount = Number(item.smallNum);
|
|
|
- this.$msg("库存不足");
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!has) {
|
|
|
- let info = {};
|
|
|
|
|
|
- info =
|
|
|
- this.productInfo && this.productInfo.find(element => {
|
|
|
- return element.id == item.id;
|
|
|
- });
|
|
|
- let params = {
|
|
|
- ...info,
|
|
|
- bigCount: 1, //扎数
|
|
|
- smallCount: 0, //支数
|
|
|
- autoPrice: 0 //调价价格
|
|
|
- };
|
|
|
- if (info.bigNum && info.bigNum > 0) {
|
|
|
- list.push(params);
|
|
|
- } else {
|
|
|
- this.$msg("库存不足");
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- this.setSelectInfoByType({ type: this.pageType, info: list });
|
|
|
- },
|
|
|
/**
|
|
|
- * 减去商品
|
|
|
- */
|
|
|
- delEvent(item) {
|
|
|
- const list = this.selectList;
|
|
|
- let has = false;
|
|
|
- for (let index = 0; index < list.length; index++) {
|
|
|
- const element = list[index];
|
|
|
- if (element.id == item.id && element.classId == item.classId) {
|
|
|
- has = true;
|
|
|
-
|
|
|
- if (element.bigCount > 0) {
|
|
|
- list[index] = { ...element, bigCount: --element.bigCount };
|
|
|
- } else if (element.smallCount > 0) {
|
|
|
- list[index] = { ...element, smallCount: 0 };
|
|
|
- }
|
|
|
-
|
|
|
- if (this.isLimit) {
|
|
|
- const { bigCount, smallCount } = list[index];
|
|
|
- //超过库存时 设置为库存最大值
|
|
|
- const ratio = Number(item.ratio);
|
|
|
- if (
|
|
|
- Number(bigCount) * ratio + Number(smallCount) >
|
|
|
- Number(item.bigNum) * ratio + Number(item.smallNum)
|
|
|
- ) {
|
|
|
- list[index].bigCount = Number(item.bigNum);
|
|
|
- list[index].smallCount = Number(item.smallNum);
|
|
|
- }
|
|
|
- }
|
|
|
- if (element.bigCount == 0 && element.smallCount == 0) {
|
|
|
- list.splice(index, 1);
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!has) {
|
|
|
- let info = { classId: item.classId, id: item.id };
|
|
|
-
|
|
|
- const classInfo =
|
|
|
- this.productInfo &&
|
|
|
- this.productInfo.find(element => {
|
|
|
- return element.classId == item.classId && element.child;
|
|
|
- });
|
|
|
- if (classInfo) {
|
|
|
- info = classInfo.child.find(ele => {
|
|
|
- return ele.id == item.id;
|
|
|
- });
|
|
|
- }
|
|
|
- let params = {
|
|
|
- ...info,
|
|
|
- bigCount: 1, //扎数
|
|
|
- smallCount: 0, //支数
|
|
|
- autoPrice: 0 //调价价格
|
|
|
- };
|
|
|
-
|
|
|
- list.push(params);
|
|
|
- }
|
|
|
- this.setSelectInfoByType({ type: this.pageType, info: list });
|
|
|
- // this.$forceUpdate();
|
|
|
- },
|
|
|
- // /**
|
|
|
- // * 删除商品
|
|
|
- // */
|
|
|
- // removeEvent(item) {
|
|
|
- // const list = this.selectList;
|
|
|
- // for (let index = list.length - 1; index >= 0; index--) {
|
|
|
- // const element = list[index];
|
|
|
- // if (element.id == item.id && element.classId == item.classId) {
|
|
|
- // list.splice(index, 1);
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // this.setSelectInfoByType({ type: this.pageType, info: list });
|
|
|
- // // this.$forceUpdate();
|
|
|
- // },
|
|
|
- /**
|
|
|
- * 更新商品
|
|
|
+ * 搜索对应花材
|
|
|
*/
|
|
|
- updateItemEvent(item) {
|
|
|
- const list = this.selectList;
|
|
|
- for (let index = 0; index < list.length; index++) {
|
|
|
- const element = list[index];
|
|
|
- if (element.id == item.id && element.classId == item.classId) {
|
|
|
- const { bigCount, smallCount } = list[index];
|
|
|
- //超过库存时 设置为库存最大值
|
|
|
- const ratio = Number(item.ratio);
|
|
|
- if (this.isLimit) {
|
|
|
- if (
|
|
|
- Number(bigCount) * ratio + Number(smallCount) >
|
|
|
- Number(item.bigNum) * ratio + Number(item.smallNum)
|
|
|
- ) {
|
|
|
- list[index].bigCount = Number(item.bigNum);
|
|
|
- list[index].smallCount = Number(item.smallNum);
|
|
|
+ searchFnContrapose() {
|
|
|
+ let list = copyObject(this.filterProductInfoContrapose);
|
|
|
+ if(!this.$util.isEmpty(this.py)){
|
|
|
+ let commonChildList = [];
|
|
|
+ list.forEach(ele => {
|
|
|
+ let hasName = ele.itemName && ele.itemName.indexOf(this.py) >= 0;
|
|
|
+ let elePy = (ele.py && ele.py.toLocaleUpperCase()) || "";
|
|
|
+ let hasPy = elePy.indexOf(this.py.toLocaleUpperCase()) >= 0;
|
|
|
+ if (hasName || hasPy) {
|
|
|
+ console.log(ele)
|
|
|
+ commonChildList.push(ele)
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- list[index] = {
|
|
|
- ...element,
|
|
|
- bigCount: Number(item.bigCount),
|
|
|
- smallCount: Number(item.smallCount)
|
|
|
- };
|
|
|
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- this.setSelectInfoByType({ type: this.pageType, info: list });
|
|
|
- // this.$forceUpdate();
|
|
|
- },
|
|
|
- /**
|
|
|
- * 切换左侧商品类别
|
|
|
- */
|
|
|
- swichClass(e) {
|
|
|
- let cur = e.currentTarget.dataset.current;
|
|
|
- if (this.classIndex == cur) {
|
|
|
- return false;
|
|
|
- } else {
|
|
|
- this.classIndex = cur;
|
|
|
+ });
|
|
|
+ // list = this.$util.unique(commonChildList)
|
|
|
+ this.filterProductInfoContrapose = commonChildList;
|
|
|
+ }else{
|
|
|
+ this.filterProductInfoContrapose = this.allFilterProductInfoContrapose;
|
|
|
}
|
|
|
- },
|
|
|
- /**
|
|
|
- * 搜索对应花材
|
|
|
- */
|
|
|
- searchFn() {}
|
|
|
+ }
|
|
|
}
|
|
|
};
|