diff --git a/src/pages.json b/src/pages.json index 6800ebc..6407ae3 100644 --- a/src/pages.json +++ b/src/pages.json @@ -1017,6 +1017,13 @@ "style" : { "navigationBarTitleText": "商品分类" } + }, + { + "path": "pages/shopping_cart", + "style" : { + "navigationBarTitleText": "购物车", + "enablePullDownRefresh": true + } } ] } diff --git a/src/subpackage/mall/components/index_search_bar.vue b/src/subpackage/mall/components/index_search_bar.vue index bbdb18f..9f44ad1 100644 --- a/src/subpackage/mall/components/index_search_bar.vue +++ b/src/subpackage/mall/components/index_search_bar.vue @@ -5,7 +5,7 @@ 搜索 - + {{ cartNUmShow }} @@ -29,7 +29,8 @@ export default { let { cartNum } = this; if(!isNaN(cartNum))return cartNum > 99 ? 99 : cartNum; return 0; - } + }, + } } diff --git a/src/subpackage/mall/components/specification_modal.vue b/src/subpackage/mall/components/specification_modal.vue index ec86f91..93ff1c4 100644 --- a/src/subpackage/mall/components/specification_modal.vue +++ b/src/subpackage/mall/components/specification_modal.vue @@ -233,10 +233,7 @@ export default { }) .catch(err => { hideLoad(); - showModal({ - title: '提示', - content: err.message || '操作失败!' - }) + showModal({ content: err.message || '操作失败!' }); console.warn('subpackage mall components specification goodsCartAdd err --->', err); }) }, diff --git a/src/subpackage/mall/js/api.js b/src/subpackage/mall/js/api.js index 2007d32..abf5d11 100644 --- a/src/subpackage/mall/js/api.js +++ b/src/subpackage/mall/js/api.js @@ -10,6 +10,9 @@ export const MALL_API = { goodsComment:`${ORIGIN}/shop2/goodsComment`, //商品评价列表 goodsList:`${ORIGIN}/shop2/goodsList`, //商品列表 goodsCateList:`${ORIGIN}/shop2/goodsCateList`, // 商品分类列表 + goodsCartNumsEdit:`${ORIGIN}/shop2/goodsCartNumsEdit`, //购物车 - 修改数量 + goodsCartDel:`${ORIGIN}/shop2/goodsCartDel`, //购物车 - 删除商品 + goodsCartSettlement:`${ORIGIN}/shop2/goodsCartSettlement`, //购物车 - 去结算 } export default { ORIGIN, MALL_API }; \ No newline at end of file diff --git a/src/subpackage/mall/js/handle.js b/src/subpackage/mall/js/handle.js index 1c6013a..1a6c91c 100644 --- a/src/subpackage/mall/js/handle.js +++ b/src/subpackage/mall/js/handle.js @@ -1,5 +1,6 @@ import { MALL_API } from "./api"; import server from "./server"; +import { accAdd, accMul } from "@/utils/calculate.js"; // 购物车商品列表 export function goodsCartList(brand_id){ @@ -16,10 +17,27 @@ export function goodsCartList(brand_id){ return ({ totalList: _ls, validList: _ls.filter(item => item.product_invalid === 0), - invalidList: _ls.filter(item => item.product_invalid === 0), + invalidList: _ls.filter(item => item.product_invalid === 1), }); }else{ return Promise.reject(_data); } }) +} + +// 获取商品列表价格信息 +export function getPayInfoForGoodsList(array){ + if(!array.length)return ({ num: 0, str: '0.00' }); + let _priceNum = array.reduce((total, item) => { + let _unitPrice = 0; + if(item?.product_spec_multi === 0)_unitPrice = item?.product_spec_single_info?.price ?? 0; + if(item?.product_spec_multi === 1)_unitPrice = item?.product_spec_multi_info?.price ?? 0; + let _price = accMul((item?.product_nums ?? 0), _unitPrice); + return accAdd(total, _price); + }, 0); + return ({ + num: _priceNum, + // 需要支付的类目,四舍五入违法 + str: _priceNum.toFixed(3).slice(0, -1), + }) } \ No newline at end of file diff --git a/src/subpackage/mall/pages/classify.vue b/src/subpackage/mall/pages/classify.vue index 21b8ec3..7060f7b 100644 --- a/src/subpackage/mall/pages/classify.vue +++ b/src/subpackage/mall/pages/classify.vue @@ -1,7 +1,7 @@ + diff --git a/src/subpackage/mall/static/images/selected2.png b/src/subpackage/mall/static/images/selected2.png new file mode 100644 index 0000000..6832c3f Binary files /dev/null and b/src/subpackage/mall/static/images/selected2.png differ diff --git a/src/subpackage/mall/static/images/useless.png b/src/subpackage/mall/static/images/useless.png new file mode 100644 index 0000000..2c850f1 Binary files /dev/null and b/src/subpackage/mall/static/images/useless.png differ diff --git a/src/utils/calculate.js b/src/utils/calculate.js new file mode 100644 index 0000000..2559635 --- /dev/null +++ b/src/utils/calculate.js @@ -0,0 +1,76 @@ +/** + * 加法函数 + * @param {number} arg1 数字1 + * @param {number} arg2 数字2 + * @returns {number} 返回两数相加的结果 + * */ +export function accAdd(arg1, arg2) { + var r1, r2, m, c; + try { r1 = arg1.toString().split(".")[1].length; }catch (e) { r1 = 0 }; + try { r2 = arg2.toString().split(".")[1].length }catch (e) { r2 = 0 }; + c = Math.abs(r1 - r2); + m = Math.pow(10, Math.max(r1, r2)); + if (c > 0) { + var cm = Math.pow(10, c); + if (r1 > r2) { + arg1 = Number(arg1.toString().replace(".", "")); + arg2 = Number(arg2.toString().replace(".", "")) * cm; + }else { + arg1 = Number(arg1.toString().replace(".", "")) * cm; + arg2 = Number(arg2.toString().replace(".", "")); + } + }else { + arg1 = Number(arg1.toString().replace(".", "")); + arg2 = Number(arg2.toString().replace(".", "")); + } + return (arg1 + arg2) / m; +} + +/** + * 减法函数 + * @param {number} arg1 数字1 + * @param {number} arg2 数字2 + * @returns {number} 返回两数相减的结果 + * +*/ +export function accSub(arg1, arg2) { + var r1, r2, m, n; + try { r1 = arg1.toString().split(".")[1].length }catch (e) { r1 = 0 }; + try { r2 = arg2.toString().split(".")[1].length }catch (e) { r2 = 0 }; + + m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度 + n = (r1 >= r2) ? r1 : r2; + return ((arg1 * m - arg2 * m) / m).toFixed(n); +} + +/** + * 乘法函数 + * @param {number} arg1 数字1 + * @param {number} arg2 数字2 + * @returns {number} 返回两数相乘的结果 + * +*/ +export function accMul(arg1, arg2) { + var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); + try { m += s1.split(".")[1].length }catch (e) { }; + try { m += s2.split(".")[1].length }catch (e) { }; + + return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); +} + +/** + * 除法函数 + * @param {number} arg1 数字1 + * @param {number} arg2 数字2 + * @returns {number} 返回两数相除的结果 + * +*/ +export function accDiv(arg1, arg2) { + var t1 = 0, t2 = 0, r1, r2; + try { t1 = arg1.toString().split(".")[1].length }catch (e) { } + try { t2 = arg2.toString().split(".")[1].length }catch (e) { } + + r1 = Number(arg1.toString().replace(".", "")); + r2 = Number(arg2.toString().replace(".", "")); + return (r1 / r2) * Math.pow(10, t2 - t1); +} \ No newline at end of file diff --git a/src/utils/util.js b/src/utils/util.js index 145beb5..c60ac1b 100644 --- a/src/utils/util.js +++ b/src/utils/util.js @@ -261,34 +261,6 @@ export function getSceneQuery(scene){ return queryObj; } -// 格式化聊天内容 -// export function formatContent(str = ''){ -// let reg = /\[[\u4e00-\u9fa5_a-zA-Z0-9]{1,}\]/gi; -// let strArr = str.split(reg) || []; -// let emojiArr = str.match(reg) || []; -// let contentList = []; -// strArr.forEach(ele=>{ -// if(ele)contentList.push({ -// type:'txt', -// content:ele -// }); -// if(!!emojiArr.length){ -// let iconKey = emojiArr.splice(0,1)[0]; -// if(emojiMap[iconKey]){ -// contentList.push({ -// type:'icon', -// src:`${emojiUrl}${emojiMap[iconKey]}` -// }) -// }else{ -// contentList.push({ -// type:'txt', -// content:iconKey -// }); -// } -// } -// }); -// return contentList -// } //获取地址栏里(URL)传递的参数 function getUrlQuery(key,url){ var _url = decodeURI(url).split('?a=1').join(''); //剪切'?a=1'安卓兼容,再获取参数 @@ -405,10 +377,6 @@ export function $_emit(name, data){ }) } -function getFilterJson(obj){ - return obj -} - function order_pay_type_txt(status = ''){ let _obj = { 0: '微信支付', @@ -419,6 +387,10 @@ function order_pay_type_txt(status = ''){ return _obj[status] || '-' } +export function checkBothArrIsEqual(arr1 = [], arr2 = []){ + return arr1.length === arr2.length && arr1.every(item => arr2.includes(item)); +} + export default { formatTime, formatNumber, @@ -451,5 +423,6 @@ export default { isProfile, $_once, $_emit, - order_pay_type_txt + order_pay_type_txt, + checkBothArrIsEqual, // 判断两个数组是否相等 }