jufubao-mall 2.0.93 → 2.0.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,11 +8,11 @@
8
8
  */
9
9
  const getPackagePath = (threePackagePath, packname = 'gxd-commands-bussiness')=>{
10
10
  if(packname === 'gxd-commands-bussiness') {
11
- return `/Users/shiyonggao/home/root/Base-Jufubao/xd-commands-bussiness/${threePackagePath}`;
11
+ return `/Users/shiyonggao/Desktop/code/BASE/UNIAPP/xd-commands-bussiness/${threePackagePath}`;
12
12
  }
13
13
 
14
14
  if (packname === 'gxd-uni-library-editx') {
15
- return `/Users/shiyonggao/home/root/Base-Jufubao/xd-uni-library-editx/${threePackagePath}`;
15
+ return `/Users/shiyonggao/Desktop/code/BASE/UNIAPP/xd-uni-library-editx/${threePackagePath}`;
16
16
  }
17
17
 
18
18
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-mall",
3
- "version": "2.0.93",
3
+ "version": "2.0.95",
4
4
  "private": false,
5
5
  "description": "聚福宝商城业务组件插件包",
6
6
  "main": "index.js",
@@ -54,8 +54,11 @@
54
54
  <view style="display:flex;align-items:center">
55
55
  <!-- <xd-unit :price="prod.sale_price" :isOld="false" color="#333" :iconSize="0.3" :fontSize="32"/> -->
56
56
  <CusPrice :isPlus="is_plus_site" :type="order" :showPrice="prod.show_prices"></CusPrice>
57
+ <view style="font-size: 28rpx;color:#999;margin-left: 16rpx;">{{prod['product_num'] ? 'x': ''}} {{prod['product_num']}}</view>
58
+ </view>
59
+ <view v-if="prod['paid_amount'] && prod['paid_amount'] > 0" class="coupon_paid">
60
+ 实付: <xd-unit :price="prod['paid_amount']" :isOld="false" color="#333" :iconSize="0.3" :fontSize="32"/>
57
61
  </view>
58
- <view style="font-size: 28rpx;color:#999">{{prod['product_num'] ? 'x': ''}} {{prod['product_num']}}</view>
59
62
  </view>
60
63
  <view v-if="prod.error_message" :style="{color:priceTextColor,fontSize:'24rpx'}">{{prod.error_message}}</view>
61
64
  <view v-else-if="showActivityPrice==='Y'&&prod.is_activity==='Y'"
@@ -1070,11 +1073,46 @@
1070
1073
  if(!this.canUseCoupon) return;
1071
1074
  this.showCouponChose = true;
1072
1075
  },
1076
+ //选择完优惠券,需要在商品上展示实付款信息(商品价格-优惠券优惠价格)
1077
+ handleCouponChoseResult(data){
1078
+ //data.total_coupon_parts: [{"card_number":"10001000008865","part_id":"60031172_0_0","sale_amount":8000,"coupon_amount":5000,"coupon_split":"[{\"card_number\":\"10001000008865\",\"coupon_amount\":5000,\"coupon_point\":5000}]","coupon_point":5000}]
1079
+ if(!data || !this.shopList) return;
1080
+ // total_coupon_parts 为空字符串或空数组代表取消选择优惠券,清除已展示的实付金额
1081
+ if(!data.total_coupon_parts || data.total_coupon_parts.length === 0){
1082
+ this.shopList.forEach(shop => {
1083
+ if(!shop.product) return;
1084
+ shop.product.forEach(prod => {
1085
+ delete prod.paid_amount;
1086
+ });
1087
+ });
1088
+ return;
1089
+ }
1090
+ // 按 part_id 建立映射,快速查找
1091
+ const couponMap = {};
1092
+ data.total_coupon_parts.forEach(item => {
1093
+ couponMap[item.part_id] = item;
1094
+ });
1095
+ // 遍历 shopList 下每个商品的 product,匹配 part_id 计算实付金额
1096
+ this.shopList.forEach(shop => {
1097
+ if(!shop.product) return;
1098
+ shop.product.forEach(prod => {
1099
+ const partId = prod.part_id;
1100
+ const couponItem = couponMap[partId];
1101
+ if(couponItem) {
1102
+ // sale_price、coupon_point 均为分,实付金额 = 商品价格 x 数量 - 优惠券优惠价格
1103
+ prod.paid_amount = (prod.sale_price || 0) * (prod.product_num || 1) - (couponItem.coupon_point || 0);
1104
+ } else {
1105
+ prod.paid_amount = (prod.sale_price || 0) * (prod.product_num || 1);
1106
+ }
1107
+ });
1108
+ });
1109
+ },
1073
1110
  //only选择满减券结果
1074
1111
  handleCouponChose(data){
1075
1112
  console.log(data,'alalalal')
1076
1113
  this.choseCoupon = data;
1077
1114
  this.showCouponChose = false;
1115
+ this.handleCouponChoseResult(data);
1078
1116
  //共同使用模式:优惠券 + 积分 + 钱包可叠加
1079
1117
  //串行逻辑:先选积分 → 积分选完后检查 orderNeedPayPrice > 0 才选钱包
1080
1118
  if(this.is_wallet_use_with_coupon === "Y"){
@@ -2036,6 +2074,12 @@
2036
2074
  align-items: flex-end;
2037
2075
  justify-content: space-between;
2038
2076
  }
2077
+ .coupon_paid{
2078
+ font-size: 28rpx;
2079
+ color:#999;
2080
+ display:flex;
2081
+ align-items: center;
2082
+ }
2039
2083
  }
2040
2084
  .postage_tip{
2041
2085
  color: rgb(229, 116, 112);
@@ -58,78 +58,9 @@ export default (data, gValue,gColor,oldData)=>{
58
58
 
59
59
  let categoryParentType = dataVal({data, key:'categoryParentType', dValue:'root', gValue});
60
60
 
61
-
62
- return[
63
- {
64
- ele: 'title',
65
- label: '基础',
66
- size: 'small',
67
- groupKey:'content',
68
- },
69
- {
70
- label: "业务线",
71
- ele: "xd-choose-namespace",
72
- valueKey: "xnamespace",
73
- groupKey:'content',
74
- placeholder: '请选择业务线',
75
- notice:'空继承上级业务线',
76
- inline: false,
77
- labelInline:true,
78
- value: dataVal({data, key:'xnamespace', dValue:null, gValue}),
79
- className: 'input100',
80
- handleCustom: (cb) => {
81
- XdBus.getParentApi('getOptionsNamespaces')()
82
- .then(res => {
83
- cb(res.list)
84
- })
85
- .catch();
86
- }
87
- },
88
- {
89
- label: "商品排序",
90
- ele: "xd-select-list",
91
- valueKey: "sort",
92
- labelInline: true,
93
- value: dataVal({data, key:'sort', dValue:'default', gValue}),
94
- groupKey:'content',
95
- className: 'input100',
96
- list: [
97
- {label: "综合排序",notice:'默认排序,多维度综合计算后的排序', value: "default"},
98
- {label: "销量由高到低", value: "sale_num_desc"},
99
- {label: "价格由高到低", value: "price_desc"},
100
- {label: "价格由低到高", value: "price_asc"},
101
- ]
102
- },
103
- {
104
- ele: 'title',
105
- label: '组件布局',
106
- size: 'small',
107
- groupKey:'content',
108
- },
109
- {
110
- label: "分类布局",
111
- ele: "xd-style-image",
112
- groupKey: 'content',
113
- valueKey: "category",
114
- value: category,
115
- labelInline:true,
116
- isTplRef:true,
117
- className: 'input100',
118
- handleCustom(cusRes) {
119
- XdBus.getParentApi('getCompStylesOptions')({
120
- layout_ids: '25g7ZD0RxIFu0oaAbPYQ5',
121
- key: Date.now(),
122
- filter: false
123
- })
124
- .then(res => {
125
- cusRes.data.cb(res)
126
- })
127
- .catch(error => {
128
- console.error(error);
129
- });
130
- },
131
- },
132
- data.category !== 'none' && [
61
+ let allItem = [];
62
+ if(data.category !== 'none') {
63
+ allItem = [
133
64
  {ele: 'group_start'},
134
65
  {
135
66
  label: "全部名称",
@@ -237,8 +168,81 @@ export default (data, gValue,gColor,oldData)=>{
237
168
  ],
238
169
  },
239
170
  {ele: 'group_end'},
240
- ],
241
-
171
+ ]
172
+ }
173
+
174
+
175
+ return[
176
+ {
177
+ ele: 'title',
178
+ label: '基础',
179
+ size: 'small',
180
+ groupKey:'content',
181
+ },
182
+ {
183
+ label: "业务线",
184
+ ele: "xd-choose-namespace",
185
+ valueKey: "xnamespace",
186
+ groupKey:'content',
187
+ placeholder: '请选择业务线',
188
+ notice:'空继承上级业务线',
189
+ inline: false,
190
+ labelInline:true,
191
+ value: dataVal({data, key:'xnamespace', dValue:null, gValue}),
192
+ className: 'input100',
193
+ handleCustom: (cb) => {
194
+ XdBus.getParentApi('getOptionsNamespaces')()
195
+ .then(res => {
196
+ cb(res.list)
197
+ })
198
+ .catch();
199
+ }
200
+ },
201
+ {
202
+ label: "商品排序",
203
+ ele: "xd-select-list",
204
+ valueKey: "sort",
205
+ labelInline: true,
206
+ value: dataVal({data, key:'sort', dValue:'default', gValue}),
207
+ groupKey:'content',
208
+ className: 'input100',
209
+ list: [
210
+ {label: "综合排序",notice:'默认排序,多维度综合计算后的排序', value: "default"},
211
+ {label: "销量由高到低", value: "sale_num_desc"},
212
+ {label: "价格由高到低", value: "price_desc"},
213
+ {label: "价格由低到高", value: "price_asc"},
214
+ ]
215
+ },
216
+ {
217
+ ele: 'title',
218
+ label: '组件布局',
219
+ size: 'small',
220
+ groupKey:'content',
221
+ },
222
+ {
223
+ label: "分类布局",
224
+ ele: "xd-style-image",
225
+ groupKey: 'content',
226
+ valueKey: "category",
227
+ value: category,
228
+ labelInline:true,
229
+ isTplRef:true,
230
+ className: 'input100',
231
+ handleCustom(cusRes) {
232
+ XdBus.getParentApi('getCompStylesOptions')({
233
+ layout_ids: '25g7ZD0RxIFu0oaAbPYQ5',
234
+ key: Date.now(),
235
+ filter: false
236
+ })
237
+ .then(res => {
238
+ cusRes.data.cb(res)
239
+ })
240
+ .catch(error => {
241
+ console.error(error);
242
+ });
243
+ },
244
+ },
245
+ ...allItem,
242
246
  {
243
247
  label: "分类样式",
244
248
  ele: "xd-style-image",
@@ -266,19 +270,19 @@ export default (data, gValue,gColor,oldData)=>{
266
270
  });
267
271
  },
268
272
  },
269
- {ele: 'group_start'},
270
- 0&&{
271
- label: '底部距离',
272
- ele: 'el-input',
273
- type: 'number',
274
- labelInline: true,
275
- valueKey: 'lineBottom',
276
- value: dataVal({data, key:'lineBottom', dValue:'10', gValue}),
277
- groupKey:'content',
278
- className: 'input100',
279
- hidden: !['v1','v5'].includes(category) || ['desc','none','center','triangle'].includes(data['navStyle']),
280
- },
281
- {ele: 'group_end'},
273
+ // {ele: 'group_start'},
274
+ // 0&&{
275
+ // label: '底部距离',
276
+ // ele: 'el-input',
277
+ // type: 'number',
278
+ // labelInline: true,
279
+ // valueKey: 'lineBottom',
280
+ // value: dataVal({data, key:'lineBottom', dValue:'10', gValue}),
281
+ // groupKey:'content',
282
+ // className: 'input100',
283
+ // hidden: !['v1','v5'].includes(category) || ['desc','none','center','triangle'].includes(data['navStyle']),
284
+ // },
285
+ // {ele: 'group_end'},
282
286
  {
283
287
  label: "商品布局",
284
288
  ele: "xd-style-image",
@@ -133,7 +133,15 @@
133
133
  </view>
134
134
  <!-- 二维码 -->
135
135
  <view class="qrcode_box" v-if="shopInfo&&shopInfo.show_qrcode&&!is_plus_site&&showTake==='Y'">
136
- <qrcode-show :show_qrcode="shopInfo.show_qrcode" :shop_id="shopInfo.shop_id" :layoutInfo="layoutInfo" :xnamespace="xnamespace" :brandLogo="brandLogo" :successPath="successPath"></qrcode-show>
136
+ <qrcode-show
137
+ :show_qrcode="shopInfo.show_qrcode"
138
+ :shop_id="shopInfo.shop_id"
139
+ :layoutInfo="layoutInfo"
140
+ :xnamespace="xnamespace"
141
+ :brandLogo="brandLogo"
142
+ :successPath="successPath"
143
+ :take-title-name="takeTitleName"
144
+ ></qrcode-show>
137
145
  </view>
138
146
  <!-- 二维码 -->
139
147
  <view v-if="isShowCodeProduct && productList.length" class="code_product_wrap">
@@ -299,6 +307,7 @@
299
307
  showTake: "",
300
308
  takeBtnName: "",
301
309
  takeName: "",
310
+ takeTitleName:'本店支持「展码」买单',
302
311
  takeRemark: "",
303
312
  takePath: "",
304
313
  showMovie: "",
@@ -577,6 +586,8 @@
577
586
  this.scanBtnName = gCPVal(container, 'scanBtnName', '扫一扫')
578
587
  this.scanRemark = getContainerPropsValue(container, 'content.scanRemark', '');
579
588
  this.scanPath = getContainerPropsValue(container, 'content.scanPath', {value: ""}).value;
589
+ this.takeTitleName = gCPVal(container, 'takeTitleName', '本店支持「展码」买单');
590
+ debugger
580
591
  if(this.is_plus_site){
581
592
  this.showTake = oldShowCashier || gCPVal(container, 'showTake', 'Y');
582
593
  this.takeBtnName = gCPVal(container, 'takeBtnName', '去提货');
@@ -677,30 +688,30 @@
677
688
  checkTextOverflow() {
678
689
  // 创建选择器查询
679
690
  const query = uni.createSelectorQuery().in(this)
680
-
691
+
681
692
  // 获取元素位置信息
682
693
  query.select('#textRef').fields({
683
694
  rect: true,
684
- size: true,
695
+ size: true,
685
696
  }, (res) => {
686
697
  if (!res) return;
687
698
  const hiddenQuery = uni.createSelectorQuery().in(this)
688
699
  hiddenQuery.select('#textRefHidden').fields({
689
700
  rect: true,
690
- size: true,
701
+ size: true,
691
702
  }, (hiddenRes) => {
692
703
  if (!hiddenRes) return;
693
704
  console.log('元素尺寸:', res);
694
-
705
+
695
706
  this.isTextOverflow = hiddenRes.height > res.height;
696
707
  console.log('文字是否超出3行:', this.isTextOverflow);
697
708
  console.log('展示容器高度:', res.height);
698
709
  console.log('文本实际高度:', hiddenRes.height);
699
710
  })
700
- .exec();
711
+ .exec();
701
712
  })
702
- .exec();
703
-
713
+ .exec();
714
+
704
715
  },
705
716
  getShowBrandTip(shopInfo){
706
717
  jfbRootExec("showBrandTip", {
@@ -1,7 +1,14 @@
1
1
  <template>
2
2
  <view class="body-qrcode">
3
3
  <show-qp v-if="show_qrcode==='QP'" :shop_id="shop_id" :layoutInfo="layoutInfo" :xnamespace="xnamespace" :successPath="successPath"></show-qp>
4
- <show-card v-if="show_qrcode==='CARD'" :shop_id="shop_id" :layoutInfo="layoutInfo" :xnamespace="xnamespace" :brandLogo="brandLogo"></show-card>
4
+ <show-card
5
+ v-if="show_qrcode==='CARD'"
6
+ :shop_id="shop_id"
7
+ :layoutInfo="layoutInfo"
8
+ :xnamespace="xnamespace"
9
+ :brandLogo="brandLogo"
10
+ :take-title-name="takeTitleName"
11
+ ></show-card>
5
12
  </view>
6
13
  </template>
7
14
 
@@ -44,6 +51,10 @@
44
51
  successPath: {
45
52
  type: String,
46
53
  default: ''
54
+ },
55
+ takeTitleName: {
56
+ type: String,
57
+ default: ''
47
58
  }
48
59
  },
49
60
  data(){
@@ -59,7 +70,7 @@
59
70
  console.log(this.layoutInfo,this.brandLogo,'layoutInfo')
60
71
  },
61
72
  methods:{
62
-
73
+
63
74
  }
64
75
  }
65
76
  </script>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <view class="body-qrcode">
3
- <view class="barcode_title">本店支持「展码」买单</view>
3
+ <view class="barcode_title">{{takeTitleName}}</view>
4
4
  <view v-if="info">
5
5
  <view class="barcode_wrap">
6
6
  <view>
@@ -180,6 +180,10 @@
180
180
  type: String,
181
181
  default: ''
182
182
  },
183
+ takeTitleName:{
184
+ type:String,
185
+ default: '本店支持「展码」买单'
186
+ }
183
187
  },
184
188
  computed:{
185
189
  activityType(){
@@ -188,13 +188,25 @@ export default function (data, gValue,gColor,oldData){
188
188
  },
189
189
  },
190
190
  { ele: 'group_start' },
191
+ {
192
+ label: '消费标题',
193
+ ele: 'el-input',
194
+ valueKey: 'takeTitleName',
195
+ labelInline: true,
196
+ value: dataVal({ data, key: 'takeTitleName', dValue: '', gValue }),
197
+ hidden: data.showTake !== 'Y',
198
+ groupKey: 'content',
199
+ className: 'input80',
200
+ inline: false,
201
+ placeholder: "输入消费标题"
202
+ },
191
203
  {
192
204
  label: '按钮',
193
205
  ele: 'el-input',
194
206
  valueKey: 'takeBtnName',
195
207
  labelInline: true,
196
208
  value: dataVal({ data, key: 'takeBtnName', dValue: '', gValue }),
197
- hidden: data.showTake !== 'Y'||!is_plus_site,
209
+ hidden: data.showTake !== 'Y' || !is_plus_site,
198
210
  groupKey: 'content',
199
211
  className: 'input80',
200
212
  placeholder: "去提货",
@@ -207,7 +219,7 @@ export default function (data, gValue,gColor,oldData){
207
219
  valueKey: 'takeName',
208
220
  labelInline: true,
209
221
  value: dataVal({ data, key: 'takeName', dValue: '', gValue }),
210
- hidden: data.showTake !== 'Y'||!is_plus_site,
222
+ hidden: data.showTake !== 'Y' || !is_plus_site,
211
223
  groupKey: 'content',
212
224
  className: 'input80',
213
225
  inline: false,
@@ -215,6 +227,7 @@ export default function (data, gValue,gColor,oldData){
215
227
  placeholder: "快捷提货"
216
228
  },
217
229
  { ele: 'group_end' },
230
+
218
231
  { ele: "xd-line",groupKey:'content' },
219
232
 
220
233
  {
@@ -478,4 +491,4 @@ export default function (data, gValue,gColor,oldData){
478
491
  data.showPrice === 'Y' && { ele: 'group_end' },
479
492
 
480
493
  ].filter(i=>i)
481
- }
494
+ }