Browse Source

feat: 添加次卡逻辑

黎海 2 years ago
parent
commit
7a42b9b059

+ 16 - 7
src/pages/confirmOrder/addOrder/index.vue

@@ -243,8 +243,12 @@
243 243
                        :label="item.name"
244 244
                        :value="item.id">
245 245
               <span style="float: left">{{ item.name }}</span>
246
-              <span v-if="item.recommend==1"
247
-                    style="float: right;color: #fa7d22ff;font-size: 13px;background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
246
+              <span>
247
+                <span v-if="item.recommend==1"
248
+                      style="float: right;color: #fa7d22ff;font-size: 13px;margin:0 5px;  background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
249
+                <span v-if="item.card==1"
250
+                      style="float: right;color: #fa7d22ff;font-size: 13px;margin: 0 5px; background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">次卡</span>
251
+              </span>
248 252
             </el-option>
249 253
           </el-select>
250 254
         </div>
@@ -261,8 +265,12 @@
261 265
                        :label="item.name"
262 266
                        :value="item.id">
263 267
               <span style="float: left">{{ item.name |ellipsis(14) }}</span>
264
-              <span v-if="item.recommend==1"
265
-                    style="float: right;color: #fa7d22ff;font-size: 13px;background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
268
+              <span>
269
+                <span v-if="item.recommend==1"
270
+                      style="float: right;color: #fa7d22ff;font-size: 13px; margin:0 5px ; background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
271
+                <span v-if="item.card==1"
272
+                      style="float: right;color: #fa7d22ff;font-size: 13px; margin:0 5px ; background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">次卡</span>
273
+              </span>
266 274
             </el-option>
267 275
           </el-select>
268 276
         </div>
@@ -461,12 +469,12 @@ export default {
461 469
       this.$router.replace("/home");
462 470
     },
463 471
     getProjectClassify () {
464
-      api.projectClassify().then(res => {
472
+      api.projectClassify({user_id:this.userInfo.user_id}).then(res => {
465 473
         this.classifyList = res.data.list
466 474
       })
467 475
     },
468 476
     getProjectList (e) {
469
-      api.getProjectList({ id: e }).then(res => {
477
+      api.getProjectList({ id: e,user_id:this.userInfo.user_id }).then(res => {
470 478
         this.projectList = res.data.list;
471 479
       });
472 480
     },
@@ -661,7 +669,8 @@ export default {
661 669
           that.$router.push({
662 670
             path: "/confirmOrder/details",
663 671
             query: {
664
-              id: res.data.order_id
672
+              id: res.data.order_id,
673
+              user_id:this.userInfo.user_id
665 674
             }
666 675
           });
667 676
         }

+ 252 - 25
src/pages/confirmOrder/details/index.vue

@@ -141,6 +141,33 @@
141 141
           <div>预约费用</div>
142 142
           <div>¥{{reservationPrice}}</div>
143 143
         </div>
144
+        <!-- 次卡 -->
145
+        <div class="cost-coupon-list">
146
+          <div class="coupon"
147
+               @click="isCard = true">
148
+            <div class="coupon-tips">
149
+              <div class="coupon-icon"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/couponIcon.png"
150
+                     alt=""></div>
151
+              <div class="coupon-title">次卡</div>
152
+              <div class="coupon-tip"
153
+                   v-if="order_data.coupon_list&&order_data.coupon_list.length>0">已选择次卡</div>
154
+            </div>
155
+            <div class="on-icon">></div>
156
+          </div>
157
+
158
+          <div v-if="1==1">
159
+            <div>
160
+              <div class="coupon-ps"
161
+                   v-for="item,index in isSelectCardList"
162
+                   :key="index">
163
+                <div>{{item.name}}</div>
164
+                <div class="cou-price">-¥{{item.price}}</div>
165
+              </div>
166
+            </div>
167
+          </div>
168
+        </div>
169
+
170
+        <!-- 优惠券 -->
144 171
         <div class="cost-coupon-list">
145 172
           <div class="coupon"
146 173
                @click="onCoupon">
@@ -154,15 +181,6 @@
154 181
             <div class="on-icon">></div>
155 182
           </div>
156 183
 
157
-          <!-- <div v-if="order_data.coupon_list&&order_data.coupon_list.length>0">
158
-            <div class="coupon-ps"
159
-                 v-for="item,index in order_data.coupon_list"
160
-                 :key="index">
161
-              <div>{{item.coupon_name}}</div>
162
-              <div class="cou-price">-¥{{price}}</div>
163
-            </div>
164
-          </div> -->
165
-
166 184
           <div v-if="1==1">
167 185
             <div>
168 186
               <div class="coupon-ps"
@@ -197,6 +215,28 @@
197 215
       <div class="payment"
198 216
            @click="determine">{{isChange?'确定订单':'立即支付'}}</div>
199 217
     </div>
218
+    <!-- 次卡 -->
219
+    <mine-pupop :show="isCard">
220
+      <div class="coupon-block"
221
+           style="background: #F7F8FA;">
222
+        <div class="delete-pupop"
223
+             @click="isCard=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
224
+               alt=""></div>
225
+        <div class="coupon-pupop-title">选择次卡</div>
226
+        <div class="card-content">
227
+          <div class="card-info"
228
+               v-for="item,index in cardList"
229
+               :key="index"
230
+               @click="isSelectCard(item,index)">
231
+            <div class="frequency"> <span style="color: #FF3007FF;font-size: 18px;">{{item.used_num}}</span>/{{item.total_num}}</div>
232
+            <div class="card-title">{{item.name}}</div>
233
+            <div class="card-choice-icon"><img :src="item.isSelect?select:unSelect"></div>
234
+          </div>
235
+        </div>
236
+        <div class="coupon-confirm"
237
+             @click="isCardAdd">确认</div>
238
+      </div>
239
+    </mine-pupop>
200 240
     <!-- 选择优惠券 -->
201 241
     <mine-pupop :show="isCoupun">
202 242
       <div class="coupon-block">
@@ -275,8 +315,12 @@
275 315
                        :label="item.name"
276 316
                        :value="item.id">
277 317
               <span style="float: left">{{ item.name }}</span>
278
-              <span v-if="item.recommend==1"
279
-                    style="float: right;color: #fa7d22ff;font-size: 13px;background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
318
+              <span>
319
+                <span v-if="item.recommend==1"
320
+                      style="float: right;color: #fa7d22ff;font-size: 13px;margin:0 5px;  background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
321
+                <span v-if="item.card==1"
322
+                      style="float: right;color: #fa7d22ff;font-size: 13px;margin: 0 5px; background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">次卡</span>
323
+              </span>
280 324
             </el-option>
281 325
           </el-select>
282 326
         </div>
@@ -294,8 +338,12 @@
294 338
                        style=" display: flex;justify-content: space-between ;align-items: center;line-height: inherit; padding: 0 12px;"
295 339
                        :value="item.id">
296 340
               <span style="float: left">{{ item.name |ellipsis(14) }}</span>
297
-              <span v-if="item.recommend==1"
298
-                    style="float: right;color: #fa7d22ff;font-size: 13px;background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
341
+              <span>
342
+                <span v-if="item.recommend==1"
343
+                      style="float: right;color: #fa7d22ff;font-size: 13px; margin:0 5px ; background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">推荐</span>
344
+                <span v-if="item.card==1"
345
+                      style="float: right;color: #fa7d22ff;font-size: 13px; margin:0 5px ; background: #ffefeb;border-radius: 4px;border: 1px solid #fa7d22;height: 18px;padding: 2px 6px;">次卡</span>
346
+              </span>
299 347
             </el-option>
300 348
           </el-select>
301 349
         </div>
@@ -478,6 +526,7 @@ export default {
478 526
       //执行方案
479 527
       programmeList: [],
480 528
       order_data: {},//门店
529
+      isSelectCardList: [],
481 530
       //项目分类列表
482 531
       classifyList: [],
483 532
       //项目列表
@@ -497,6 +546,8 @@ export default {
497 546
       isEdit: false,
498 547
       //优惠券列表
499 548
       couponList: [],
549
+      card_data: [],//已选择的列表
550
+      cardList: [],//次卡列表
500 551
       //已选择的优惠券
501 552
       selectCouponList: [],
502 553
       //已选择优惠券的id(同一个id只能选择一张优惠券)
@@ -551,6 +602,7 @@ export default {
551 602
       programmeIndex: '',
552 603
       remarks: '',
553 604
       isCoupun: false,//是否展示优惠券弹窗
605
+      isCard: false,//是否展示次卡弹窗
554 606
       isOver: false,//优惠券注释
555 607
       isProject: false,//是否展示选择项目弹窗
556 608
       isTs: false,//是否展示选择时间弹窗
@@ -575,6 +627,7 @@ export default {
575 627
       discount: 0,//折扣类型
576 628
       device_name: '',//支付成功后的设备
577 629
       room: '',//设备房间
630
+      user_id: '',
578 631
       // showRuleText: 10086,
579 632
 
580 633
     };
@@ -605,9 +658,14 @@ export default {
605 658
           console.log(_problem, '_problem');
606 659
         })
607 660
         this.lableList = _problem
661
+        this.getProjectClassify()
608 662
         this.randomColor();
609 663
         this.remarks = res.data.remark
610 664
         this.programmeList = res.data.scheme_list
665
+        res.data.order_data.project_list.forEach(e => {
666
+          e["isCard"] = false
667
+          e["isCoupon"] = false
668
+        })
611 669
         this.order_data = res.data.order_data
612 670
         if (this.order_data.coupon_list.length > 0) {
613 671
           this.isSelectCoup = this.order_data.coupon_list
@@ -629,13 +687,101 @@ export default {
629 687
         this.calculationPrice()
630 688
       })
631 689
     },
690
+    onCard () {
691
+      api.getOrderCard({ id: this.id }).then(res => {
692
+        if (res.code == 200) {
693
+          res.data.list.forEach(item => {
694
+            item["isSelect"] = false
695
+          })
696
+          this.cardList = res.data.list
697
+
698
+        }
699
+      })
700
+    },
701
+    isSelectCard (item, index) {
702
+      let isSelect = false
703
+      let isRepeat = false
704
+      this.cardList.forEach(res => {
705
+        if (res.isSelect && item.id != res.id && item.name == res.name) {
706
+          isRepeat = true
707
+        }
708
+      })
709
+      if (isRepeat) {
710
+        this.$message.error("不能选择相同的次卡");
711
+        return
712
+      }
713
+      this.isSelectCoup.forEach(e => {
714
+        if (item.project_ids.indexOf(e.projectids) > -1) {
715
+          isSelect = true
716
+        }
717
+      })
718
+      if (isSelect) {
719
+        this.$message.error("该项目已选择优惠券");
720
+        return
721
+      }
722
+      console.log(item);
723
+      this.cardList[index].isSelect = !this.cardList[index].isSelect
724
+    },
725
+    //确定选择的次卡
726
+    isCardAdd () {
727
+      let isSelectCardList = []
728
+      let project_list = this.order_data.project_list
729
+      let card_data = []
730
+       let price =this.order_data.price
731
+        console.log(price,'price');
732
+      if (this.isSelectCoup.length > 0) {
733
+        this.isSelectCoup.forEach(res => {
734
+          this.order_data.project_list.forEach(item => {
735
+            if (res.projectids == item.id) {
736
+              price = price - item.price
737
+            }
738
+          })
739
+        })
740
+      }
741
+      project_list.forEach(res => {
742
+        this.cardList.forEach(e => {
743
+          if (e.isSelect && e.project_ids.indexOf(res.id) > -1) {
744
+            price = price - res.price
745
+            price = price.toFixed(2)
746
+            isSelectCardList.push(res)
747
+          }
748
+        })
749
+      })
750
+      isSelectCardList.forEach(e => {
751
+        this.cardList.forEach(res => {
752
+          let card_data_info = {}
753
+          if (res.isSelect, res.project_ids.indexOf(e.id) > -1) {
754
+            card_data_info = {
755
+              id: e.id,
756
+              card_id: res.id
757
+            }
758
+            card_data.push(card_data_info)
759
+          }
760
+        })
761
+      })
762
+       if (isSelectCardList.length==0&&this.isSelectCoup.length==0) {
763
+        price = price- this.order_data.discountPrice
764
+       }
765
+
766
+      this.card_data = card_data
767
+      if (price < 0) {
768
+        price = 0
769
+      }
770
+      // if (this.isSelectCoup.length > 0) {
771
+        this.showMoney = price
772
+      // } else {
773
+      //   this.discountPrice = price
774
+      // }
775
+      this.isSelectCardList = isSelectCardList
776
+      this.isCard = false
777
+    },
632 778
     getProjectClassify () {
633
-      api.projectClassify().then(res => {
779
+      api.projectClassify({ user_id: this.userInfo.user_id }).then(res => {
634 780
         this.classifyList = res.data.list
635 781
       })
636 782
     },
637 783
     getProjectList (e) {
638
-      api.getProjectList({ id: e }).then(res => {
784
+      api.getProjectList({ id: e, user_id: this.userInfo.user_id }).then(res => {
639 785
         this.projectList = res.data.list
640 786
       })
641 787
     },
@@ -668,14 +814,9 @@ export default {
668 814
       console.log(item, 'item========');
669 815
       this.order_data.project_list.forEach((res, index) => {
670 816
         if (item.id == res.id) {
671
-          this.order_data.project_list.splice(index, 1)
672 817
           this.reservationPrice = 0
673 818
           this.confirmOrder("delete")
674 819
           this.isSelectCoup = []
675
-          this.$message({
676
-            message: '删除成功',
677
-            type: 'success'
678
-          });
679 820
         }
680 821
       })
681 822
     },
@@ -786,7 +927,7 @@ export default {
786 927
       }
787 928
       this.tsTableList = tsTableList
788 929
     },
789
-    confirmOrder () {
930
+    confirmOrder (type) {
790 931
       let order_data = []
791 932
       this.order_data.project_list.forEach(item => {
792 933
         let order_data_info = {}
@@ -815,6 +956,13 @@ export default {
815 956
           this.getOrderInfo()
816 957
           this.isTs = false
817 958
           this.isChange = false
959
+          if (type&&type=='delete') {
960
+            this.order_data.project_list.splice(index, 1)
961
+           this.$message({
962
+            message: '删除成功',
963
+            type: 'success'
964
+          });
965
+          }
818 966
         }
819 967
       })
820 968
     },
@@ -931,6 +1079,7 @@ export default {
931 1079
         return res.isSelect == true
932 1080
       })
933 1081
       // 卡券,项目券数据包, id:订单项目ID, coupon_id:优惠券ID, 如:[{ "id": 1220, coupon_id: 199 }]isSelectCoup
1082
+      this.discount = this.card_data.length>0?0:this.discount
934 1083
       let params = {
935 1084
         id: this.id,
936 1085
         pay_way: payWayList[0].pay_way,
@@ -955,6 +1104,10 @@ export default {
955 1104
         })
956 1105
       }
957 1106
       params['coupon_data'] = coupon_data.length > 0 ? JSON.stringify(coupon_data) : null
1107
+      if (this.card_data.length > 0) {
1108
+        params['card_data'] = JSON.stringify(this.card_data)
1109
+      }
1110
+      console.log(params, '=====');
958 1111
       api.orderPay(params).then(res => {
959 1112
         if (res.code == 200) {
960 1113
           this.choicePayType = false
@@ -975,7 +1128,6 @@ export default {
975 1128
                 correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H
976 1129
               })
977 1130
             })
978
-
979 1131
           }
980 1132
         }
981 1133
       })
@@ -1011,12 +1163,31 @@ export default {
1011 1163
        * 点击使用按钮、勾选按钮
1012 1164
        */
1013 1165
     selectPupop: function (item, index) {
1014
-
1166
+      this.card_data.forEach(res => {
1167
+        if (item.project_ids.indexOf(res.id) > -1) {
1168
+          item.project_ids.forEach((e, i) => {
1169
+            if (res.id == e) {
1170
+              item.project_ids.splice(i, 1)
1171
+            }
1172
+          })
1173
+        }
1174
+      })
1175
+      let isReturn = false
1176
+      this.isSelectCardList.forEach(value => {
1177
+        if (item.project_ids.indexOf(value.id) > -1) {
1178
+          isReturn = true
1179
+        }
1180
+      })
1181
+      if (isReturn || (item.type != 4 && this.card_data.length != 0)) {
1182
+        this.$message.error('该项目已选择次卡');
1183
+        return
1184
+      }
1015 1185
       let CouPonIndex = this.couponList
1016 1186
       let selectIndex = index
1017 1187
       let curreValue = !CouPonIndex[selectIndex].isSelect
1018 1188
       let project_list = this.order_data.project_list //这里是项目列表
1019 1189
 
1190
+
1020 1191
       // 判断是否是不相同的项目券
1021 1192
       if (this.couponList[selectIndex].type != 4) {
1022 1193
         for (let i = 0; i < CouPonIndex.length; i++) {
@@ -1146,7 +1317,15 @@ export default {
1146 1317
     // 计算总额
1147 1318
     calculateMoney () {
1148 1319
       let that = this
1149
-      let money = Number(this.order_data.original_price)
1320
+      let _price = 0
1321
+      if (this.isSelectCardList.length > 0) {
1322
+        this.isSelectCardList.forEach(res => {
1323
+          _price = _price + Number(res.price)
1324
+        })
1325
+      }
1326
+      console.log(this.order_data.original_price,_price,'_price_price');
1327
+      let money = this.isSelectCardList.length > 0 ? this.order_data.original_price - _price : Number(this.order_data.original_price)
1328
+      console.log(money,'========');
1150 1329
       let isSelectCoup = this.isSelectCoup
1151 1330
       let project_list = this.order_data.project_list //这里是项目列表
1152 1331
 
@@ -1241,10 +1420,14 @@ export default {
1241 1420
 
1242 1421
   created () {
1243 1422
     let id = this.$route.query.id
1423
+    // let user_id = this.$route.query.user_id
1244 1424
     if (id) {
1245 1425
       this.id = id
1246 1426
     }
1247
-    this.getProjectClassify()
1427
+    // if (user_id) {
1428
+    //   this.user_id = user_id
1429
+    // }
1430
+    this.onCard()
1248 1431
 
1249 1432
     this.getOrderDiscount()
1250 1433
 
@@ -2264,5 +2447,49 @@ export default {
2264 2447
       transform: translateX(-50%);
2265 2448
     }
2266 2449
   }
2450
+  .card-content {
2451
+    margin-top: 24px;
2452
+    height: 230px;
2453
+    padding: 0 15px;
2454
+    overflow: scroll;
2455
+    display: flex;
2456
+    justify-content: space-between;
2457
+    flex-wrap: wrap;
2458
+    .card-info {
2459
+      position: relative;
2460
+      margin-bottom: 10px;
2461
+      width: 225px;
2462
+      height: 70px;
2463
+      background: url("https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/bg.png")
2464
+        no-repeat;
2465
+      background-size: 100% 100%;
2466
+      padding: 12px 13px 0 22px;
2467
+      .frequency {
2468
+        text-align: end;
2469
+        font-size: 14px;
2470
+        font-family: SourceHanSansCN-Regular, SourceHanSansCN;
2471
+        font-weight: 400;
2472
+        color: #666666ff;
2473
+      }
2474
+      .card-title {
2475
+        font-size: 16px;
2476
+        font-family: SourceHanSansCN-Regular, SourceHanSansCN;
2477
+        font-weight: 400;
2478
+        color: #333333;
2479
+        line-height: 24px;
2480
+      }
2481
+      .card-choice-icon {
2482
+        width: 24px;
2483
+        height: 24px;
2484
+        position: absolute;
2485
+        right: 13px;
2486
+        bottom: 8px;
2487
+        img {
2488
+          width: 100%;
2489
+          height: 100%;
2490
+        }
2491
+      }
2492
+    }
2493
+  }
2267 2494
 }
2268 2495
 </style>

+ 1 - 2
src/pages/confirmOrder/index.vue

@@ -55,8 +55,7 @@ export default {
55 55
             this.$router.push({
56 56
               path: "/confirmOrder/addOrder",
57 57
               query: {   //user_id
58
-                data: JSON.stringify(res.data),
59
-                // user_id:res.data.user.user_id
58
+                data: JSON.stringify(res.data)
60 59
               }
61 60
             });
62 61
           return

+ 2 - 2
src/pages/customerMan/details/index.vue

@@ -108,9 +108,9 @@
108 108
                @click="toOrder(2)">
109 109
             <div class="">
110 110
               <img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/coupon_icon.png" />
111
-              <div>卡订单</div>
111
+              <div>卡订单</div>
112 112
             </div>
113
-            <span>{{order_total.card}}</span>
113
+            <span>{{order_total.card_order}}</span>
114 114
           </div>
115 115
           <div class="dataList"
116 116
                @click="toOrder(3)">

+ 247 - 34
src/pages/customerMan/myOrder/index.vue

@@ -58,38 +58,35 @@
58 58
             </div>
59 59
           </div>
60 60
         </el-tab-pane>
61
-        <el-tab-pane label="卡订单"
61
+        <el-tab-pane label="卡订单"
62 62
                      name="second">
63 63
           <div class="user-list">
64 64
             <el-table ref="multipleTable"
65 65
                       :data="cardOrderData"
66 66
                       tooltip-effect="dark"
67 67
                       height="354"
68
+                      @row-click="openDetail"
68 69
                       style="width: 100%;border-radius: 8px;">
69
-
70
-              <!-- create_time: "2022-03-10 10:39:19"
71
-ex_time: "2022.03.17 23:59"
72
-id: 2517
73
-name: "新人体验券"
74
-status: 2
75
-type: "全额券" -->
76
-
77
-              <el-table-column prop="id"
78
-                               label="订单编号">
79
-              </el-table-column>
80
-              <el-table-column prop="goods"
81
-                               label="商品名称"
70
+              <el-table-column prop="name"
71
+                               label="卡券名称"
82 72
                                width="200">
83 73
                 <template slot-scope="scope">
84
-                  <div v-for="(val,index) in scope.row.goods"
85
-                       :key="index">
86
-                    <div>{{val.name}}</div>
87
-                  </div>
74
+                  <div>{{scope.row.name | ellipsis(8)}}</div>
88 75
                 </template>
89
-                               
76
+
90 77
               </el-table-column>
91
-              <el-table-column prop="price"
92
-                               label="实付"
78
+              <el-table-column prop="type"
79
+                               label="分类"
80
+                               show-overflow-tooltip>
81
+              </el-table-column>
82
+              <el-table-column prop="create_time"
83
+                               label="总价格"
84
+                               width="180"
85
+                               show-overflow-tooltip></el-table-column>
86
+
87
+              <el-table-column prop="ex_time"
88
+                               label="到期时间"
89
+                               width="180"
93 90
                                show-overflow-tooltip></el-table-column>
94 91
               <el-table-column prop="create_time"
95 92
                                label="创建时间"
@@ -99,13 +96,9 @@ type: "全额券" -->
99 96
                                label="状态"
100 97
                                show-overflow-tooltip>
101 98
                 <template slot-scope="scope">
102
-                  <div :class="'color'+scope.row.status">{{ cardOrderStatus[scope.row.status]}}</div>
99
+                  <div :class="'color'+scope.row.status">{{scope.row.status==-1?'已过期':scope.row.status==-0?'已使用':'待使用'}}</div>
103 100
                 </template>
104 101
               </el-table-column>
105
-              <el-table-column prop="create_time"
106
-                               label="下单时间"
107
-                               width="180"
108
-                               show-overflow-tooltip></el-table-column>
109 102
             </el-table>
110 103
 
111 104
             <div class="pagin">
@@ -228,13 +221,64 @@ type: "全额券" -->
228 221
         </el-tab-pane>
229 222
       </el-tabs>
230 223
     </div>
224
+    <!-- 次卡详情 -->
225
+    <mine-pupop :show="isPore">
226
+      <div class="pore-block">
227
+        <div class="delete-pupop"
228
+             @click="isPore=false">
229
+          <img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
230
+               alt />
231
+        </div>
232
+        <div class="pore-content">
233
+          <div class="card-title">订单详情</div>
234
+          <div class="project">
235
+            <div class="project-title">项目名称:</div>
236
+            <div class="project-list">
237
+              <div class="project-info"
238
+                   v-for="item,index in cardInfo.project_list"
239
+                   :key="index">
240
+                <div class="name-text"> {{item.project_name}}</div>
241
+                <div class="change-num">
242
+                  <div class="num-content">
243
+                    <div class="content-left"
244
+                         @click="reduce(index)">-</div>
245
+                    <div class="content-num">{{item.num || 0}}</div>
246
+                    <div class="content-right"
247
+                         @click="item.num++">+</div>
248
+                  </div>
249
+                </div>
250
+              </div>
251
+            </div>
252
+          </div>
253
+          <div class="common"><span class="common-title">支付方式:</span><span>{{cardInfo.pay_way}}</span></div>
254
+          <div class="common"><span class="common-title">有效期限:</span><span>{{cardInfo.ex_time}}</span></div>
255
+          <div class="common"><span class="common-title">实付金额:</span><span>¥{{cardInfo.price}}</span></div>
256
+          <div class="consume-list">
257
+            <div class="consume-title">消耗信息:</div>
258
+            <div class="consume-info min-size"
259
+                 v-for="item,index in cardLogList"
260
+                 :key="index">
261
+              <div class="shop">{{item.store_name}}</div>
262
+              <div class="project-tips">{{item.remark}}</div>
263
+              <div class="project-ts">{{item.create_time}}</div>
264
+            </div>
265
+          </div>
266
+        </div>
267
+        <div class="confirm"
268
+             @click="confirm">确定</div>
269
+      </div>
270
+    </mine-pupop>
231 271
   </div>
232 272
 </template>
233 273
 
234 274
 <script>
235 275
 import api from "../../../server/home";
276
+import minePupop from "../../../components/minePupop/index.vue";
236 277
 
237 278
 export default {
279
+  components: {
280
+    minePupop
281
+  },
238 282
   data () {
239 283
     return {
240 284
       couponList: [
@@ -278,13 +322,6 @@ export default {
278 322
         "已结算",
279 323
         "已取消"
280 324
       ],
281
-      cardOrderStatus: [
282
-        // 状态:0已预约,未支付,1已支付,2/3已完成
283
-        '已预约,未支付',
284
-        '已支付',
285
-        '已完成',
286
-        '已完成'
287
-      ],
288 325
       couponStatus: [
289 326
         '待使用',
290 327
         '已使用',
@@ -302,7 +339,10 @@ export default {
302 339
       projectData: [],
303 340
       cardOrderData: [],
304 341
       total: 100,
305
-      limit: 10
342
+      limit: 10,
343
+      isPore: false,
344
+      cardInfo: {},//订单详情
345
+      cardLogList: [],//次卡消耗记录
306 346
     };
307 347
   },
308 348
   computed: {},
@@ -321,6 +361,44 @@ export default {
321 361
         this.total = res.data.total;
322 362
       });
323 363
     },
364
+    reduce (index) {
365
+      this.cardInfo.project_list[index].num--
366
+      if (this.cardInfo.project_list[index].num < 0) {
367
+        this.cardInfo.project_list[index].num = 0
368
+      }
369
+    },
370
+    //次卡订单详情
371
+    openDetail (row, column, event) {
372
+      this.isPore = true
373
+      api.cardInfo({ id: row.id }).then(res => {
374
+        if (res.code == 200) {
375
+          this.cardInfo = res.data
376
+        }
377
+      })
378
+      api.cardLog({ id: row.id }).then(res => {
379
+        if (res.code == 200) {
380
+          this.cardLogList = res.data.list
381
+        }
382
+      })
383
+    },
384
+    confirm () {
385
+      // 项目ID,json字符,格式如:[{"project_id":"10","num":5}],project_id:适用项目ID,num:剩余次数
386
+      let project_data = [], project_info = {}
387
+      this.cardInfo.project_list.forEach(res=>{
388
+        project_info = {
389
+          project_id:res.id,
390
+          num:res.num
391
+        }
392
+        project_data.push(project_info)
393
+      })
394
+      api.cardUpdate({ id: this.cardInfo.id, project_data: JSON.stringify(project_data) }).then(res => {
395
+        if (res.code == 200) {
396
+          this.$message.success('更改成功!')
397
+          this.isPore = false
398
+        }
399
+      })
400
+
401
+    },
324 402
 
325 403
     // 获取商品订单
326 404
     getUserGoods () {
@@ -454,4 +532,139 @@ export default {
454 532
 .priceColor {
455 533
   color: #ff3007;
456 534
 }
535
+.pore-block {
536
+  width: 540px;
537
+  height: 400px;
538
+  background: #ffffff;
539
+  border-radius: 8px;
540
+  position: relative;
541
+  padding: 26px 72px 80px 30px;
542
+  .delete-pupop {
543
+    width: 32px;
544
+    position: absolute;
545
+    right: 5px;
546
+    top: 5px;
547
+    img {
548
+      width: 100%;
549
+    }
550
+  }
551
+  .pore-content {
552
+    overflow: scroll;
553
+    height: 310px;
554
+    .card-title {
555
+      font-size: 14px;
556
+      font-family: PingFangSC-Medium, PingFang SC;
557
+      font-weight: 500;
558
+      color: #333333;
559
+      line-height: 20px;
560
+      text-align: center;
561
+    }
562
+    .project {
563
+      display: flex;
564
+      font-size: 13px;
565
+      font-family: PingFangSC-Regular, PingFang SC;
566
+      font-weight: 400;
567
+      color: #333333;
568
+      line-height: 18px;
569
+      .project-title {
570
+        color: #999999;
571
+      }
572
+      .project-list {
573
+        flex: 1;
574
+        .project-info {
575
+          flex: 1;
576
+          .change-num {
577
+            margin-top: 6px;
578
+            width: 100%;
579
+            display: flex;
580
+            justify-content: end;
581
+            .num-content {
582
+              width: 104px;
583
+              height: 28px;
584
+              background: #ffffff;
585
+              border-radius: 2px;
586
+              border: 1px solid #fa7d22;
587
+              display: flex;
588
+              align-items: center;
589
+
590
+              .content-left,
591
+              .content-right {
592
+                width: 28px;
593
+                height: 100%;
594
+                background: #fa7d22;
595
+                font-size: 20px;
596
+                line-height: 24px;
597
+                color: #ffffff;
598
+                text-align: center;
599
+              }
600
+              .content-num {
601
+                flex: 1;
602
+                font-size: 12px;
603
+                font-family: PingFangSC-Regular, PingFang SC;
604
+                font-weight: 400;
605
+                color: rgba(0, 0, 0, 0.65);
606
+                text-align: center;
607
+              }
608
+            }
609
+          }
610
+        }
611
+      }
612
+    }
613
+    .common {
614
+      margin-top: 6px;
615
+      font-size: 13px;
616
+      font-family: PingFangSC-Regular, PingFang SC;
617
+      font-weight: 400;
618
+      color: #333333;
619
+      line-height: 18px;
620
+      .common-title {
621
+        color: #999999;
622
+      }
623
+    }
624
+    .consume-list {
625
+      margin-top: 6px;
626
+      .consume-title {
627
+        font-size: 13px;
628
+        font-family: PingFangSC-Regular, PingFang SC;
629
+        font-weight: 400;
630
+        color: #999999;
631
+        line-height: 18px;
632
+      }
633
+      .consume-info {
634
+        margin-top: 6px;
635
+        font-size: 10px;
636
+        font-family: PingFangSC-Regular, PingFang SC;
637
+        font-weight: 400;
638
+        color: #333333;
639
+        line-height: 14px;
640
+        display: flex;
641
+        justify-content: space-between;
642
+        .shop {
643
+        }
644
+        .project-tips {
645
+          flex: 1;
646
+          margin: 0 10px;
647
+        }
648
+        .project-ts {
649
+        }
650
+      }
651
+    }
652
+  }
653
+  .confirm {
654
+    background: #fa7d22;
655
+    border-radius: 14px;
656
+    position: absolute;
657
+    bottom: 42px;
658
+    left: 50%;
659
+    transform: translateX(-50%);
660
+    width: 176px;
661
+    height: 28px;
662
+    font-size: 14px;
663
+    font-family: PingFangSC-Medium, PingFang SC;
664
+    font-weight: 500;
665
+    color: #ffffff;
666
+    line-height: 28px;
667
+    text-align: center;
668
+  }
669
+}
457 670
 </style>

+ 20 - 1
src/pages/historicalOrder/details/index.vue

@@ -91,6 +91,25 @@
91 91
           <div>¥{{order_data.original_price}}</div>
92 92
         </div>
93 93
         <div class="cost-coupon-list">
94
+          <!-- 次卡 -->
95
+          <div class="coupon">
96
+            <div class="coupon-tips">
97
+              <div class="coupon-icon">
98
+                <img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/couponIcon.png"
99
+                     alt />
100
+              </div>
101
+              <div class="coupon-title">次卡</div>
102
+              <div class="coupon-tip" v-if="coupon_list.length>0">已选择次卡</div>
103
+            </div>
104
+            <div class="on-icon">></div>
105
+          </div>
106
+          <div class="coupon-ps"
107
+               v-for="(item,index) in coupon_list"
108
+               :key="index">
109
+            <div>{{item.coupon_name}}</div>
110
+            <div class="cou-price">-¥{{item.price}}</div>
111
+          </div>
112
+          <!-- 优惠券 -->
94 113
           <div class="coupon">
95 114
             <div class="coupon-tips">
96 115
               <div class="coupon-icon">
@@ -98,7 +117,7 @@
98 117
                      alt />
99 118
               </div>
100 119
               <div class="coupon-title">优惠卷</div>
101
-              <div class="coupon-tip">已选推荐优惠</div>
120
+              <div class="coupon-tip" v-if="coupon_list.length>0">已选推荐优惠</div>
102 121
             </div>
103 122
             <div class="on-icon">></div>
104 123
           </div>

+ 16 - 0
src/server/home.js

@@ -191,4 +191,20 @@ export default class Home {
191 191
   static getCardOrders (params) {
192 192
     return $http.get(url.getCardOrders, params)
193 193
   }
194
+  // 次卡订单详情
195
+  static cardInfo (params) {
196
+    return $http.get(url.cardInfo, params)
197
+  }
198
+  // 次卡消耗详情
199
+  static cardLog (params) {
200
+    return $http.get(url.cardLog, params)
201
+  }
202
+  // 修改次数
203
+  static cardUpdate (params) {
204
+    return $http.post(url.cardUpdate, params)
205
+  }
206
+  // 获取项目可用的次卡
207
+  static getOrderCard (params) {
208
+    return $http.get(url.getOrderCard, params)
209
+  }
194 210
 }

+ 9 - 1
src/server/urls.js

@@ -47,6 +47,14 @@ export default {
47 47
   timesAdd: '/v2/pad/scheme/times_add',
48 48
   //新增项目
49 49
   addUpdate: '/v2/pad/scheme/update',
50
+  //次卡订单详情
51
+  cardInfo:'/v2/pad/card/info',
52
+  //消耗详情
53
+  cardLog:'/v2/pad/card/log',
54
+  //修改次数
55
+  cardUpdate:'/v2/pad/card/update',
56
+  //获取项目可用的次卡
57
+  getOrderCard:'/v2/pad/order/card',
50 58
 
51 59
   /**
52 60
    *  by ListKer
@@ -116,5 +124,5 @@ export default {
116 124
   updateUserProfile: '/v2/pad/user/update',
117 125
 
118 126
   // 获取用户卡券订单
119
-  getCardOrders: '/v2/pad/user/order/coupon'
127
+  getCardOrders: '/v2/pad/user/card'
120 128
 }