diff --git a/api/user.js b/api/user.js index 4a4c187b..3ac9f17a 100644 --- a/api/user.js +++ b/api/user.js @@ -2,7 +2,7 @@ import request from "@/utils/request.js"; import Cache from "@/utils/cache.js" /** * 获取用户信息 - * + * */ export function getUserInfo(){ return request.get('user'); @@ -10,7 +10,7 @@ export function getUserInfo(){ /** * 设置用户分享 - * + * */ export function userShare(){ return request.post('user/share'); @@ -80,7 +80,7 @@ export function postSignUser(sign) { /** * 获取签到配置 - * + * */ export function getSignConfig(){ return request.get('user/sign/config') @@ -104,7 +104,7 @@ export function setSignIntegral(){ /** * 签到列表(年月) * @param object data - * + * */ export function getSignMonthList(data){ return request.get('user/sign/month',data) @@ -112,7 +112,7 @@ export function getSignMonthList(data){ /** * 活动状态 - * + * */ export function userActivity(){ return request.get('user/activity'); @@ -133,7 +133,7 @@ export function getRecordApi(q) { } /* - * 提现总金额 + * 提现总金额 * */ export function getCountApi() { return request.get("extract/totalMoney"); @@ -148,7 +148,7 @@ export function getIntegralList(q) { /** * 获取分销海报图片 - * + * */ export function spreadBanner(data){ return request.get('user/spread/banner',data); @@ -164,7 +164,7 @@ export function spreadPeople(data){ } /** - * + * * 推广佣金/提现总和 * @param int type */ @@ -181,7 +181,7 @@ export function getSpreadInfo() { /** - * + * * 推广订单 * @param object data */ @@ -213,7 +213,7 @@ export function extractCash(data){ /** * 提现银行/提现最低金额 - * + * */ export function extractBank(){ return request.get('extract/bank'); @@ -221,7 +221,7 @@ export function extractBank(){ /** * 会员等级列表 - * + * */ export function userLevelGrade(){ return request.get('user/level/grade'); @@ -237,14 +237,14 @@ export function userLevelTask(id){ /** * 检查用户是否可以成为会员 - * + * */ export function userLevelDetection(){ return request.get('user/level/detection'); } /** - * + * * 地址列表 * @param object data */ @@ -271,7 +271,7 @@ export function editAddress(data){ /** * 删除地址 * @param int id - * + * */ export function delAddress(id){ return request.post('address/del',{id:id}) @@ -279,7 +279,7 @@ export function delAddress(id){ /** * 获取单个地址 - * @param int id + * @param int id */ export function getAddressDetail(id){ return request.get('address/detail/'+id); @@ -301,7 +301,7 @@ export function getLogout() { } /** * 小程序充值 - * + * */ export function rechargeRoutine(data){ return request.post('recharge/routine',data) @@ -329,7 +329,7 @@ export function transferIn(data) { /** * 获取默认地址 - * + * */ export function getAddressDefault(){ return request.get('address/default'); @@ -374,7 +374,7 @@ export function spread(puid) /** * 当前用户在佣金排行第几名 - * + * */ export function brokerageRankNumber(data) { @@ -383,7 +383,7 @@ export function brokerageRankNumber(data) /** * 会员等级经验值; - * + * */ export function getlevelInfo() { @@ -392,7 +392,7 @@ export function getlevelInfo() /** * 经验值明细; - * + * */ export function getlevelExpList(data) { @@ -401,7 +401,7 @@ export function getlevelExpList(data) /** * 经验值明细; - * + * */ export function getuserDalance() { @@ -411,7 +411,7 @@ export function getuserDalance() /** * 账单记录; - * + * */ export function getBillList(data) { @@ -438,23 +438,3 @@ export function extractUser() { export function spreadPeoCount() { return request.get("spread/people/count"); } - -/* -统计 -* -*/ -export function computeUser(){ - uni.request({ - url: document.location.protocol + '//shop.crmeb.net/index.php/admin/server.upgrade_api/updatewebinfo', - method:'POST', - data: { - host:window.location.host, - https:document.location.protocol, - version:'CRMEB-JAVA-KY-V1.3.4', - version_code:'gitee', - ip:Cache.has('Ip') ? Cache.get('Ip') : '' - }, - dataType:'json', - success: (res) => {} - }); -} \ No newline at end of file diff --git a/components/productWindow/index.vue b/components/productWindow/index.vue index efee37ac..1c9c0761 100644 --- a/components/productWindow/index.vue +++ b/components/productWindow/index.vue @@ -53,13 +53,16 @@ + 我要参团 + @click="goCat">我要参团 已售罄 - 确定 - - 已售罄 + v-else-if="(iSbnt && attr.productSelect.quota<=0)||(iSbnt &&attr.productSelect.stock<=0)">已售罄 + + 确定 + 已售罄 @@ -80,15 +83,15 @@ type: Number, value: 0 }, - iSbnt: { + iSbnt: { // 是否拼团商品 type: Number, value: 0 }, - iSplus: { + iSplus: { // 是否允许 + - 操作 type: Number, value: 0 }, - iScart: { + iScart: { // 是否来自购物车界面 type: Number, value: 0 } @@ -105,15 +108,18 @@ * 购物车手动输入数量 */ bindCode: function(e) { + // TODO 芋艿:【优化】方法名的处理;是否可去掉这个事件,统一处理 this.$emit('iptCartNum', this.attr.productSelect.cart_num); }, closeAttr: function() { - this.$emit('myevent'); + this.attr.cartAttr = false }, CartNumDes: function() { + // TODO 芋艿:【优化】方法名的处理;是否可去掉这个事件,统一处理 this.$emit('ChangeCartNum', false); }, CartNumAdd: function() { + // TODO 芋艿:【优化】方法名的处理;是否可去掉这个事件,统一处理 this.$emit('ChangeCartNum', true); }, /** @@ -125,6 +131,7 @@ clickProperty: function(indexw, indexn) { this.$set(this.attr.properties[indexw], 'index', this.attr.properties[indexw].values[indexn].name); let newSkuKey = this.getCheckedValueNames().join(","); + // TODO 芋艿:【优化】修改下 ChangeAttr 名字,改成 selectSku 更合适 this.$emit("ChangeAttr", newSkuKey); }, /** diff --git a/pages/goods_details/index.vue b/pages/goods_details/index.vue index 07e0f899..1b16ffc5 100644 --- a/pages/goods_details/index.vue +++ b/pages/goods_details/index.vue @@ -178,10 +178,10 @@ 收藏 - - {{CartCount}} + {{ cartCount }} 购物车 @@ -224,7 +224,6 @@ :attr="attr" :isShow='1' :iSplus='1' - @myevent="onMyEvent" @ChangeAttr="ChangeAttr" @ChangeCartNum="ChangeCartNum" @iptCartNum="iptCartNum" @@ -285,7 +284,6 @@ import { collectAdd, collectDel, - postCartAdd, getReplyConfig, getProductGood, getReplyProduct @@ -294,13 +292,9 @@ import { getCoupons } from '@/api/api.js'; - import { - getCartCounts - } from '@/api/order.js'; import { toLogin } from '@/libs/login.js'; - import {computeUser} from "@/api/user.js"; import { mapGetters } from "vuex"; @@ -315,6 +309,7 @@ import home from '@/components/home'; import parser from "@/components/jyf-parser/jyf-parser"; import * as ProductSpuApi from '@/api/product/spu.js'; + import * as TradeCartApi from '@/api/trade/cart.js'; import * as Util from '@/utils/util.js'; import * as ProductUtil from '@/utils/product.js'; // #ifdef MP @@ -360,8 +355,8 @@ properties: [], productSelect: {} // 选中的 SKU }, - CartCount: 0, // 购物车数量 - animated: false, // 购物车动画 + cartCount: 0, // 购物车的数量 + cartAnimated: false, // 购物车的动画开关 replyCount: 0, // 总评论数量 TODO 芋艿:回复,待实现 reply: [], // 评论列表 replyChance: 0, // TODO 芋艿:评论相关,待接入 @@ -370,7 +365,6 @@ cart_num: 1, // 购买数量 TODO 芋艿:待实现 isAuto: false, // 没有授权的不会自动授权 TODO 芋艿:待实现 isShowAuth: false, // 是否隐藏授权 TODO 芋艿:待实现 - isOpen: false, // 是否打开属性组件 TODO 芋艿:是不是可以移除,貌似和 attr.cartAttr 重复 actionSheetHidden: true, // TODO 芋艿:没搞懂 storeImage: '', // 海报产品图 // TODO 芋艿:没搞懂 PromotionCode: '', // 二维码图片 // TODO 芋艿:没搞懂 @@ -439,11 +433,9 @@ that.retunTop = false } that.navH = app.globalData.navHeight; - // #ifdef H5 - computeUser(); - // #endif // #ifdef MP || APP-PLUS // 小程序链接进入获取绑定关系id + // TODO 芋艿:分销??? setTimeout(()=>{ if(options.spread){ app.globalData.spread = options.spread; @@ -457,7 +449,6 @@ }, }); if (!options.scene && !options.id) { - this.showSkeleton = false; this.$util.Tips({ title: '缺少参数无法查看商品' }, { @@ -474,7 +465,6 @@ setTimeout(()=>{ spread(mapeMpQrCodeValue.spread).then(res => {}).catch(res => {}) },2000) - } else { this.id = options.id; } @@ -568,10 +558,11 @@ }, /** * 购物车手动填写 - * + * + * @param number 数量 */ - iptCartNum: function(e) { - this.$set(this.attr.productSelect, 'cart_num', e ? e : 1); + iptCartNum: function(number) { + this.$set(this.attr.productSelect, 'cart_num', number ? number : 1); }, // 后退 returns: function() { @@ -579,7 +570,6 @@ }, tap: function(index) { var id = "past" + index; - var index = index; var that = this; this.$set(this, 'toView', id); this.$set(this, 'navActive', index); @@ -653,27 +643,27 @@ }, /** * 购物车数量加和数量减 + * + * @param changeValue true 增加;false 减少 */ ChangeCartNum: function(changeValue) { - //changeValue:是否 加|减 - //获取当前变动属性 - let productSelect = this.skuMap[this.attrValue]; - //如果没有属性,赋值给商品默认库存 - if (productSelect === undefined && !this.attr.properties.length) - productSelect = this.attr.productSelect; - //无属性值即库存为0;不存在加减; - if (productSelect === undefined) return; - let stock = productSelect.stock || 0; - let num = this.attr.productSelect; + // 获取当前 sku + let sku = this.attr.productSelect; + if (!sku) { + return; + } + + // 设置数量 + let stock = sku.stock || 0; if (changeValue) { - num.cart_num++; - if (num.cart_num > stock) { + sku.cart_num++; + if (sku.cart_num > stock) { this.$set(this.attr.productSelect, "cart_num", stock); this.$set(this, "cart_num", stock); } } else { - num.cart_num--; - if (num.cart_num < 1) { + sku.cart_num--; + if (sku.cart_num < 1) { this.$set(this.attr.productSelect, "cart_num", 1); this.$set(this, "cart_num", 1); } @@ -739,7 +729,7 @@ this.$nextTick(() => { if (good_list.length) { this.setClientHeight(); - }; + } }) }); }, @@ -758,7 +748,7 @@ that.$set(that, 'userCollect', res.data.userCollect); // TODO 芋艿:需要改造下,异步加载收藏状态 that.$set(that.attr, 'properties', ProductUtil.convertProductPropertyList(skus)); that.$set(that, 'skuMap', ProductUtil.convertProductSkuMap(skus)); - that.$set(that.sharePacket, 'priceName', res.data.priceName); + that.$set(that.sharePacket, 'priceName', res.data.priceName); // TODO 芋艿:share packet 不知道干啥 that.$set(that.sharePacket, 'isState', Math.floor(res.data.priceName) === 0); that.$set(that, 'activityH5', res.data.activityAllH5 ? res.data.activityAllH5 : []); // 设置标题 @@ -828,7 +818,7 @@ that.$set(that, 'topArr', topArr); that.$set(that, 'heightArr', heightArr); }); - }; + } }, /** * 拨打电话 @@ -924,8 +914,6 @@ that.$set(that.coupon, 'coupon', false); }, /** - * - * * 收藏商品 */ setCollect: function() { @@ -949,7 +937,6 @@ */ openAttr: function() { this.$set(this.attr, 'cartAttr', true); - this.$set(this, 'isOpen', true); }, /** * 打开优惠券插件 @@ -963,116 +950,93 @@ that.$set(that.coupon, 'coupon', true); } }, - onMyEvent: function() { - this.$set(this.attr, 'cartAttr', false); - this.$set(this, 'isOpen', false); - }, /** * 打开属性加入购物车 - * */ - joinCart: function(e) { - //是否登录 - if (this.isLogin === false) { + joinCart: function() { + // 未登录,需要跳转 + if (!this.isLogin) { toLogin(); - } else { - this.goCat(1); + return; } - }, - /* - * 加入购物车 - */ - goCat: function(num) { - let that = this, - productSelect = that.skuMap[this.attrValue]; - //打开属性 - if (that.attrValue) { - //默认选中了属性,但是没有打开过属性弹窗还是自动打开让用户查看默认选中的属性 - that.attr.cartAttr = !that.isOpen ? true : false; - } else { - if (that.isOpen) that.attr.cartAttr = true; - else that.attr.cartAttr = !that.attr.cartAttr; - } - //只有关闭属性弹窗时进行加入购物车 - if (that.attr.cartAttr === true && that.isOpen === false) - return (that.isOpen = true); - //如果有属性,没有选择,提示用户选择 - if ( - that.attr.properties.length && - productSelect.stock === 0 && - that.isOpen === true - ) - return that.$util.Tips({ - title: "产品库存不足,请选择其它" - }); - if (num === 1) { - let q = { - productId: parseFloat(that.id), - cartNum: parseFloat(that.attr.productSelect.cart_num), - isNew: false, - propertiesUnique: that.attr.productSelect !== undefined ? - that.attr.productSelect.unique : that.productInfo.id - }; - postCartAdd(q).then(function(res) { - that.isOpen = false; - that.attr.cartAttr = false; - that.$util.Tips({ - title: "添加购物车成功", - success: () => { - that.getCartCount(true); - } - }); - }) - .catch(res => { - that.isOpen = false; - return that.$util.Tips({ - title: res - }); - }); - } else { - this.getPreOrder(); - } - }, + + // 【重要】如果 attr 组件未打开,此时需要先打开。等到选择完后,再添加购物车 + if (!this.attr.cartAttr) { + this.openAttr(); + return + } + + // 库存不足 + let sku = this.attr.productSelect; + if (sku.stock === 0) { + return that.$util.Tips({ + title: "产品库存不足,请选择其它" + }); + } + + // 添加购物车 + TradeCartApi.addCart({ + count: sku.cart_num, + skuId: sku.id, + addStatus: true // TODO 芋艿:去掉 addStatus 字段 + }).then(res => { + // 关闭 attr 组件 + this.attr.cartAttr = false; + // 提示成功 + this.$util.Tips({ + title: "添加购物车成功", + success: () => { + this.getCartCount(true); + } + }); + }).catch(res => { + this.$util.Tips({ + title: res + }); + }); + }, /** * 获取购物车数量 * * @param isAnima 是否展示购物车动画和重置属性 */ getCartCount: function(isAnima) { - let that = this; - const isLogin = that.isLogin; - if (isLogin) { - getCartCounts(true, 'total').then(res => { - that.CartCount = res.data.count; - // 加入购物车后重置属性 - if (isAnima) { - that.animated = true; - setTimeout(function() { - that.animated = false; - }, 500); - } - }); - } + const isLogin = this.isLogin; + if (!isLogin) { + return + } + TradeCartApi.getCartCount().then(res => { + this.cartCount = res.data; + // 加入购物车后重置属性 + if (isAnima) { + this.cartAnimated = true; + setTimeout(() => { + this.cartAnimated = false; + }, 500); + } + }); }, /** * 立即购买 */ - goBuy: function(e) { - if (this.isLogin === false) { + goBuy: function() { + // 未登录,需要跳转 + if (!this.isLogin) { toLogin(); - } else { - this.goCat(0); + return; } - }, - /** - * 预下单 - */ - getPreOrder: function() { - this.$Order.getPreOrder(this.type === 'normal' ? 'buyNow' : 'video', [{ - "attrValueId": parseFloat(this.attr.productSelect.unique), - "productId": parseFloat(this.id), - "productNum": parseFloat(this.attr.productSelect.cart_num) - }]); + + // 【重要】如果 attr 组件未打开,此时需要先打开。等到选择完后,再立即购买 + if (!this.attr.cartAttr) { + this.openAttr(); + return; + } + + // 发起下单 + let sku = this.attr.productSelect; + uni.navigateTo({ + url: '/pages/users/order_confirm/index?skuId=' + sku.id + '&count=' + sku.cart_num + }); }, // 授权关闭 authColse: function(e) { @@ -1080,7 +1044,6 @@ }, /** * 分享打开 - * */ listenerActionSheet: function() { if (this.isLogin === false) { diff --git a/utils/base64src.js b/utils/base64src.js index 6fd65ab8..d929f994 100644 --- a/utils/base64src.js +++ b/utils/base64src.js @@ -19,5 +19,5 @@ export function base64src(base64data, cb) { return (new Error('ERROR_BASE64SRC_WRITE')); }, }); -}; -//module.exports = base64src; \ No newline at end of file +} +//module.exports = base64src;