cashier-ipad/pagesCreateOrder/index/util.js

175 lines
4.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
$productCategory,
$layoutpage
} from '@/http/yskApi/pad.js'
//根据布局返回商品列表
export function returnSelCategotyGoods(arr, size) {
// 检查size是否为正整数
if (size <= 0) {
throw new Error('Size must be a positive integer.');
}
// 计算数组的长度并确保size不会超过数组长度
const length = arr.length;
size = Math.min(size, length);
// 创建一个新数组来存储结果
const groups = [];
// 循环遍历原始数组每size个元素分为一组
for (let i = 0; i < length; i += size) {
groups.push(arr.slice(i, i + size)); // 使用slice方法获取子数组
}
return groups; // 返回新的数组
}
//根据店铺信息返回是否是后付款
export function $trturnPayAfter(shop) {
//munchies 先付 restaurant 后付
const payAfter = shop.registerType == "munchies" ? false : true;
return payAfter
}
//根据店铺信息返回就餐类型
export function $returnUseType(shop, useType) {
//是否是后付款
const payAfter = $trturnPayAfter(shop)
let result = "takeout";
if (useType == "takeout") {
result = 'takeout'
} else {
//堂食
result = `dine-in-${payAfter ? "after" : "before"}`;
}
return result
}
//判断商品是否可以下单
export function isCanBuy(goods, isStock) {
return goods.isGrounding && goods.isPauseSale == 0 && (isStock ? goods.stockNumber > 0 : true);
}
// 一个数组是否包含另外一个数组全部元素
function arrayContainsAll(arr1, arr2) {
for (let i = 0; i < arr2.length; i++) {
if (!arr1.includes(arr2[i])) {
return false;
}
}
return true;
}
//n项 n-1项组合生成全部结果
function generateCombinations(arr, k) {
let result = [];
function helper(index, current) {
if (current.length === k) {
result.push(current.slice()); // 使用slice()来避免直接修改原始数组
} else {
for (let i = index; i < arr.length; i++) {
current.push(arr[i]); // 将当前元素添加到组合中
helper(i + 1, current); // 递归调用,索引增加以避免重复选择相同的元素
current.pop(); // 回溯,移除当前元素以便尝试其他组合
}
}
}
helper(0, []); // 从索引0开始初始空数组作为起点
return result;
}
export function returnReverseVal(val, isReturnString = true) {
const isBol = typeof val === "boolean";
const isString = typeof val === "string";
let reverseNewval = "";
if (isBol) {
reverseNewval = !val;
}
if (isString) {
reverseNewval = val === "true" ? "false" : "true";
}
return reverseNewval;
}
export function returnPrveId(par) {
const obj = {
prveData: [],
nowData: [],
nextData: [],
page: 0
}
Object.assign(obj, par)
if (par.page == 0 || par.nowData.length <= 1) {
const prveIndex = obj.prveData.length - 1 <= 0 ? 0 : obj.prveData.length - 1
return obj.prveData[prveIndex] ? obj.prveData[prveIndex].id : undefined
}
return obj.nowData[par.page - 1] ? obj.nowData[par.page - 1].id : undefined
}
export function returnNowId(par) {
const obj = {
prveData: [],
nowData: [],
nextData: [],
page: 0
}
Object.assign(obj, par)
if (!par.nowData[par.page]) {
return undefined
}
return obj.nowData[par.page] ? obj.nowData[par.page].id : undefined
}
export function returnNextId(par) {
const obj = {
prveData: [],
nowData: [],
nextData: [],
page: 0
}
Object.assign(obj, par)
if (par.page >= par.nowData.length - 1 || par.nowData.length <= 1) {
const nextIndex = obj.nextData.length - 1 <= 0 ? 0 : obj.nextData.length - 1
return obj.nextData[nextIndex] ? obj.nextData[nextIndex].id : undefined
}
return obj.nextData[par.page + 1] ? obj.nextData[par.page + 1].id : undefined
}
export async function returnLayoutPage(id) {
if (!id) {
return {
content: [],
totalElements: 0
}
}
return $layoutpage({
page: 1,
size: 999,
productCategoryId: id,
padLayoutId: ''
})
}
export async function returnCategoryLayoutGoods(id,category) {
if (!id) {
return {
productList: [],
padLayoutCode: "single",
productCategoryId:category?category.id:''
}
}
return $productCategory(id)
}
export default {
isCanBuy,
returnNowId,
returnCategoryLayoutGoods,
returnLayoutPage,
returnPrveId,
returnNextId,
arrayContainsAll,
generateCombinations,
returnReverseVal,
$returnUseType
}