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;