/* eslint-disable no-else-return */ /* eslint-disable no-underscore-dangle */ import ListUtil from "../Utils/ListUtil"; export default { state: { selectInfos: [], Classifications: [], // 商户分类列表 classificationId: 0, // 当前操作的商品分类 editGoodsMap: new Map(), }, actions: ({ model, setState }) => ({ // 商家分类选择商品 changeSelect(list) { setState({ selectInfos: list, }); }, // 下架提示 takeOffInfo(callBack) { const { showDialog } = model("dialogModel"); const { takeOffTips } = model("wordsModel"); showDialog({ bodyText: takeOffTips, status: "danger", cancelable: true, confirmCallback: () => callBack(), }); }, // 商品上下架 ChangeTakeOff(info) { const { id } = info; const { getWordsStr, successText } = model("wordsModel"); const { httpGet } = model("httpModel"); const { success } = model("loadingModel"); return httpGet( "/goods/take", { id, }, true ) .then(() => { return httpGet(`/goods/get/${id}`, {}, true); }) .then(res => { success( getWordsStr(res.takeOff ? "takeOff" : "takeUp") + successText ); return Promise.resolve(res); }); }, // 关闭分类提示 clossClassTip(callBack) { const { showDialog } = model("dialogModel"); const { systemClassTips1 } = model("wordsModel"); showDialog({ bodyText: systemClassTips1, status: "danger", cancelable: true, confirmCallback: () => callBack(), }); }, saveInfo(info, noTip) { const { saveSuccess, editSuccess } = model("wordsModel"); const { httpPost } = model("httpModel"); const { success, loading } = model("loadingModel"); loading(); return httpPost( "/classification/save", info, { body: "json" }, true ).then(res => { if (!noTip) { success(info.id ? editSuccess : saveSuccess); } return Promise.resolve(res); }); }, // 移除分类商品 removeClassGoods(classificationId, goodId, callBack) { const { showDialog } = model("dialogModel"); const { removeTips, editSuccess } = model("wordsModel"); const { httpGet } = model("httpModel"); const { success, loading } = model("loadingModel"); loading(); showDialog({ bodyText: removeTips, status: "danger", cancelable: true, confirmCallback: () => { httpGet( "/classification/delGoods", { classificationId, goodId, }, true ).then(res => { success(editSuccess); callBack(res); }); }, }); }, // 获取商品分类 getGoodsClassParent(goodsId) { const { editGoodsMap } = model(); if (goodsId && editGoodsMap.has(goodsId)) { const list = editGoodsMap.get(goodsId).filter(item => { return !item.parent; }); const dataMap = new Map(); list.forEach(item => { dataMap.set(item.id, item); }); console.log(dataMap); return Promise.resolve(dataMap); } else if (goodsId !== "NEW") { const { httpGet } = model("httpModel"); return httpGet( "/goodsSpecification/parent", { goodsId, }, true ).then(res => { const dataMap = new Map(); res.forEach(item => { dataMap.set(item.id, item); }); return Promise.resolve(dataMap); }); } else { return Promise.resolve(new Map()); } }, // 添加修改的分类 setGoodsClassMap(key, map) { console.log(map); let list = []; Array.from(map.values()).forEach(item => { if (item.name) { list.push(item); item.children = item.children.filter(child => { return child.name && child.amount && !item.isNew; }); item.children = item.children.map(child => { return { ...child, edit: false, }; }); list.push(item.children); } }); list = list.flat(); list = list.filter(item => { return ( item.name && (!item.parent || item.amount.toString()) && !item.isNew ); }); list = list.map(item => { return { ...item, edit: false, }; }); const { editGoodsMap } = model(); editGoodsMap.set(key, list); setState({ editGoodsMap }); }, removeGoodsClassMap() { setState({ editGoodsMap: new Map() }); }, // 添加分类商品 addClassGoods(info) { // const { successText } = model("wordsModel"); const { httpPost } = model("httpModel"); return httpPost( "/goodsSpecification/save", info, { body: "json", }, true ).then(res => { return Promise.resolve(res); }); }, // 移除商品分类 removeCLass(info, callBack) { const { showDialog } = model("dialogModel"); const { removeTips, editSuccess } = model("wordsModel"); const { httpPost } = model("httpModel"); const { success, loading } = model("loadingModel"); loading(); showDialog({ bodyText: removeTips, status: "danger", cancelable: true, confirmCallback: () => { const goods = new ListUtil(info.goodsIds); if (goods.length > 0) { showDialog({ bodyText: "该分类下有商品,暂不可删除该商品分类", status: "danger", }); } else { httpPost(`/classification/del/${info.id}`, {}, {}, true).then( res => { success(editSuccess); callBack(res); } ); } }, }); }, // 商品分类添加商品 addClassification(selectId, goodsId) { const { httpGet } = model("httpModel"); return httpGet( "/classification/saveGoods", { classificationId: selectId, string: goodsId, }, { body: "json" } ); }, // 将当前选中的classId存入以便更好的刷新页面3 setClassificationId(id) { setState({ classificationId: id, }); }, // 获取我的全部商品分类 getMyClassification() { const { httpGet } = model("httpModel"); return httpGet("/classification/my", {}, true).then(res => { res = res.sort((a, b) => { return b.type || 0 - a.type || 0; }); setState({ Classifications: res }); return Promise.resolve(res); }); }, // 商品规格排序 sortClassification(list) { const _list = [...list]; let backList = []; const parents = _list.filter(item => { return !item.parent; }); parents.forEach(item => { backList.push(item); const _chidrens = _list.filter(_f => { return _f.parent === item.id; }); backList = backList.concat(_chidrens); }); return backList; }, // 批量保存规格 saveClassByList(list, goodsId) { const { httpPost } = model("httpModel"); const saveList = []; list.forEach(item => { const saveItem = { ...item }; if (saveItem.children) { saveItem.children = saveItem.children.map(child => { return { name: child.name, amount: child.amount, goodsId, }; }); delete saveItem.edit; delete saveItem.childIndex; if (saveItem.id < 0) { delete saveItem.id; } saveList.push(saveItem); } else if (saveItem.id || saveItem.parent > 0) { delete saveItem.edit; delete saveItem.childIndex; if (saveItem.id < 0) { delete saveItem.id; } saveList.push(saveItem); } }); console.log(saveList); if (saveList.length > 0) { return httpPost( "/goodsSpecification/saveSpecs", { spec: JSON.stringify( saveList.map(item => { return { ...item, goodsId }; }) ), }, {}, true ); } else { return Promise.resolve(); } }, }), };