Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/izouma/immall/domain/UserSet.java
wilhelm 6 years ago
parent
commit
64d8d137c9
36 changed files with 746 additions and 529 deletions
  1. 10 3
      src/main/java/com/izouma/immall/domain/UserSet.java
  2. 2 0
      src/main/java/com/izouma/immall/dto/OrderFormVO.java
  3. 2 0
      src/main/java/com/izouma/immall/dto/SetGoodsVO.java
  4. 9 2
      src/main/java/com/izouma/immall/service/GoodsService.java
  5. 1 0
      src/main/java/com/izouma/immall/service/OrderFormService.java
  6. 21 17
      src/main/java/com/izouma/immall/service/UserService.java
  7. 2 1
      src/main/java/com/izouma/immall/web/AuthenticationController.java
  8. 6 0
      src/main/java/com/izouma/immall/web/GoodsController.java
  9. 6 32
      src/main/java/com/izouma/immall/web/UserController.java
  10. 2 1
      src/main/maskMall/src/components/OrderInfo.vue
  11. 9 1
      src/main/maskMall/src/components/OrderListInfo.vue
  12. 23 7
      src/main/maskMall/src/components/VipGoodsLarge.vue
  13. 1 1
      src/main/maskMall/src/components/VipInnerGoods.vue
  14. 1 1
      src/main/maskMall/src/components/VipInnerGoodsMini.vue
  15. 16 0
      src/main/maskMall/src/main.less
  16. 8 0
      src/main/maskMall/src/router/index.js
  17. 145 140
      src/main/maskMall/src/views/Detail.vue
  18. 7 2
      src/main/maskMall/src/views/Home.vue
  19. 1 7
      src/main/maskMall/src/views/Index.vue
  20. 27 15
      src/main/maskMall/src/views/List.vue
  21. 32 17
      src/main/maskMall/src/views/Search.vue
  22. 149 0
      src/main/maskMall/src/views/SetList.vue
  23. 33 33
      src/main/maskMall/src/views/ShoppingCart.vue
  24. 10 8
      src/main/maskMall/src/views/order/Evaluate.vue
  25. 105 90
      src/main/maskMall/src/views/order/OrderDetail.vue
  26. 3 3
      src/main/maskMall/src/views/order/OrderList.vue
  27. 7 1
      src/main/maskMall/src/views/order/Submit.vue
  28. 4 2
      src/main/maskMall/src/views/vip/Extension.vue
  29. 7 2
      src/main/maskMall/src/views/vip/VipCenter.vue
  30. 57 57
      src/main/maskMall/src/views/vip/VipGoodsDeatil.vue
  31. 2 2
      src/main/vue/src/views/Admin.vue
  32. 3 3
      src/main/vue/src/views/BalanceFlowList.vue
  33. 3 3
      src/main/vue/src/views/Dashboard.vue
  34. 0 38
      src/main/vue/src/views/MyList2.vue
  35. 29 30
      src/main/vue/src/views/UserEdit.vue
  36. 3 10
      src/main/vue/src/views/UserList.vue

+ 10 - 3
src/main/java/com/izouma/immall/domain/UserSet.java

@@ -1,5 +1,6 @@
 package com.izouma.immall.domain;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import io.swagger.annotations.Api;
@@ -11,6 +12,9 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
@@ -39,11 +43,14 @@ public class UserSet extends BaseEntity implements Serializable {
     private Integer availablePieces;
     @ApiModelProperty("未领取数量")
     private Integer takenPieces;
-
+    @ApiModelProperty("是否可用")
+    private boolean isDisabled;
     @JsonIgnore
     @ApiModelProperty("上次增加时间")
     private LocalDateTime increaseTime;
 
-    @ApiModelProperty("是否可用")
-    private boolean isDisabled;
+    @ExcelIgnore
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "goodsId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private Goods goodsInfo;
 }

+ 2 - 0
src/main/java/com/izouma/immall/dto/OrderFormVO.java

@@ -42,4 +42,6 @@ public class OrderFormVO {
     private List<Long> cartIds;
     @ApiModelProperty(value = "订单类型")
     private String type;
+    @ApiModelProperty(value = "订单备注")
+    private String remark;
 }

+ 2 - 0
src/main/java/com/izouma/immall/dto/SetGoodsVO.java

@@ -33,4 +33,6 @@ public class SetGoodsVO implements Serializable {
     private String name;
     @ApiModelProperty(value = "是否拥有")
     private boolean isOwned;
+    @ApiModelProperty(value = "用户套餐id")
+    private Long userSetId;
 }

+ 9 - 2
src/main/java/com/izouma/immall/service/GoodsService.java

@@ -3,6 +3,7 @@ package com.izouma.immall.service;
 import com.izouma.immall.domain.Goods;
 import com.izouma.immall.domain.GoodsInformation;
 import com.izouma.immall.domain.SetGoods;
+import com.izouma.immall.domain.UserSet;
 import com.izouma.immall.dto.GoodsVO;
 import com.izouma.immall.dto.SetGoodsVO;
 import com.izouma.immall.dto.SetVO;
@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.lang.Nullable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -97,10 +99,15 @@ public class GoodsService {
             setGoodsVO.setPrice(goods.getPrice());
             setGoodsVO.setName(goods.getName());
             setGoodsVO.setTags(goods.getTags());
-            if (userSetRepo.findByUserIdAndGoodsId(userId, goods.getId()) == null) {
+            UserSet _userSet= userSetRepo.findByUserIdAndGoodsId(userId, goods.getId());
+            if (_userSet == null) {
                 setGoodsVO.setOwned(false);
             }
-            setGoodsVO.setOwned(true);
+            else{
+                setGoodsVO.setOwned(true);
+                setGoodsVO.setUserSetId(_userSet.getId());
+            }
+
             setGoodsVOS.add(setGoodsVO);
         });
         return setGoodsVOS;

+ 1 - 0
src/main/java/com/izouma/immall/service/OrderFormService.java

@@ -68,6 +68,7 @@ public class OrderFormService {
             orderForm.setAddressId(orderFormVo.getAddressId());
             orderForm.setStatus(OrderFormStatus.CREATED.toString());
             orderForm.setType(GoodsType.SET.toString());
+            orderForm.setRemark(orderFormVo.getRemark());
             UserSet userSet=new UserSet();
             userSet.setAvailablePieces(7);
             userSet.setUnclaimedPieces(7);

+ 21 - 17
src/main/java/com/izouma/immall/service/UserService.java

@@ -77,27 +77,31 @@ public class UserService {
         return user;
     }
 
-    public User loginbyRegester(String username,String password,Long parentId) {
-        User user1 = userRepo.findByUsername(username);
-        if (user1 != null) {
+    public User loginbyRegester(String username, String password, Long parentId) {
+        User user = userRepo.findByUsername(username);
+        if (user != null) {
             throw new BusinessException("用户名已被注册");
+        } else {
+            user = User.builder()
+                    .phone(username)
+                    .username(username)
+                    .nickname("用户" + RandomStringUtils.randomAlphabetic(8))
+                    .avatar(Constants.DEFAULT_AVATAR)
+                    .password(new BCryptPasswordEncoder().encode(password))
+                    .enabled(true)
+                    .authorities(Collections.singleton(Authority.getInstance(Authority.NAMES.ROLE_USER)))
+                    .money(BigDecimal.ZERO)
+                    .fansNum(0L)
+                    .gitCount(0L)
+                    .identityId(34L)
+                    .parentId(parentId)
+                    .build();
+            userRepo.save(user);
         }
-        User user = userRepo.save(User.builder()
-                .phone(username)
-                .username(username)
-                .nickname("用户" + RandomStringUtils.randomAlphabetic(8))
-                .avatar(Constants.DEFAULT_AVATAR)
-                .password(new BCryptPasswordEncoder().encode(password))
-                .enabled(true)
-                .authorities(Collections.singleton(Authority.getInstance(Authority.NAMES.ROLE_USER)))
-                .money(BigDecimal.ZERO)
-                .parentId(parentId)
-                .build());
-
-        if(parentId != null && parentId != 0){
+        if (parentId != null && parentId != 0) {
             vipIdentityService.fans(parentId);
         }
-        return  user;
+        return user;
     }
 
     public User loginMa(String code) {

+ 2 - 1
src/main/java/com/izouma/immall/web/AuthenticationController.java

@@ -88,7 +88,8 @@ public class AuthenticationController {
     @PostMapping("/userRegister")
     public String userRegister(@RequestParam String username, @RequestParam String password, Long parentId) {
         try {
-            User user = userService.loginbyRegester(username,password,parentId);
+            User user = userService.loginbyRegester(username, password, parentId);
+            //final UserDetails userDetails = userDetailsService.loadUserByUsername(username);
             String token = jwtTokenUtil.generateToken(JwtUserFactory.create(user));
             loginLogRepo.save(LoginLog.builder()
                     .userId(user.getId())

+ 6 - 0
src/main/java/com/izouma/immall/web/GoodsController.java

@@ -1,5 +1,6 @@
 package com.izouma.immall.web;
 import com.izouma.immall.domain.Goods;
+import com.izouma.immall.dto.SetGoodsVO;
 import com.izouma.immall.dto.SetVO;
 import com.izouma.immall.service.GoodsService;
 import com.izouma.immall.dto.PageQuery;
@@ -77,6 +78,11 @@ public class GoodsController extends BaseController {
         return goodsService.findAll(searchKey,pageable);
     }
 
+    @GetMapping("/allSet/{userId}")
+    public List<SetGoodsVO> allSet(@PathVariable Long userId) {
+        return goodsService.findAllByType(userId);
+    }
+
     @GetMapping("/get/{id}")
     public Goods get(@PathVariable Long id) {
         return goodsRepo.findById(id).orElseThrow(new BusinessException("无记录"));

+ 6 - 32
src/main/java/com/izouma/immall/web/UserController.java

@@ -1,5 +1,6 @@
 package com.izouma.immall.web;
 
+import com.izouma.immall.config.Constants;
 import com.izouma.immall.domain.User;
 import com.izouma.immall.dto.TeamDTO;
 import com.izouma.immall.security.Authority;
@@ -20,6 +21,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.Console;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.Collections;
@@ -46,6 +48,7 @@ public class UserController extends BaseController {
         User user = User.builder()
                 .username(username)
                 .nickname(username)
+                .avatar(Constants.DEFAULT_AVATAR)
                 .password(new BCryptPasswordEncoder().encode(password))
                 .enabled(true)
                 .identityId(34L)
@@ -98,8 +101,9 @@ public class UserController extends BaseController {
 
     @GetMapping("/my")
     public User my() {
-        vipIdentityService.fans(SecurityUtils.getAuthenticatedUser().getId());
-        return userRepo.findById(SecurityUtils.getAuthenticatedUser().getId()).orElseThrow(new BusinessException("用户不存在"));
+        Long id=SecurityUtils.getAuthenticatedUser().getId();
+        vipIdentityService.fans(id);
+        return userRepo.findById(id).orElseThrow(new BusinessException("用户不存在"));
     }
 
     @PreAuthorize("hasRole('ADMIN')")
@@ -139,36 +143,6 @@ public class UserController extends BaseController {
         return userService.myTeam(SecurityUtils.getAuthenticatedUser().getId());
     }
 
-
-    @PostMapping("/userRegister")
-    @ApiOperation(value = "用户注册")
-    public User userRegister(@RequestParam String username,
-                             @RequestParam String password,
-                             @RequestParam(required = false) Long parentId) {
-        User user1 = userRepo.findByUsername(username);
-        if (user1 != null) {
-            throw new BusinessException("该用户名也被注册");
-        }
-        User user = User.builder()
-                .username(username)
-                .nickname(username)
-                .password(new BCryptPasswordEncoder().encode(password))
-                .parentId(parentId)
-                .enabled(true)
-                .gitCount(0L)
-                .fansNum(0L)
-                .money(BigDecimal.ZERO)
-                .identityId(34L)
-                .authorities(Collections.singleton(Authority.getInstance(Authority.NAMES.ROLE_USER)))
-                .build();
-        if (parentId != null && parentId != 0) {
-            userRepo.findById(parentId).orElseThrow(new BusinessException("查不到推荐用户"));
-            vipIdentityService.fans(parentId);
-        }
-        userRepo.save(user);
-        return user;
-    }
-
     @GetMapping("/num")
     public Long num() {
         return userRepo.count();

+ 2 - 1
src/main/maskMall/src/components/OrderInfo.vue

@@ -16,7 +16,7 @@
 
             <div style="flex-grow:1"></div>
 
-            <div class="num">x{{info.amount||info.piece}}</div>
+            <div class="num">x{{info.amount||info.piece||1}}</div>
         </div>
     </div>
 </template>
@@ -50,6 +50,7 @@ export default {
 .goods-info {
     display: flex;
     padding: 15px;
+    height: 80px;
 }
 .content {
     flex-grow: 1;

+ 9 - 1
src/main/maskMall/src/components/OrderListInfo.vue

@@ -21,7 +21,7 @@
 
                 <div style="flex-grow:1"></div>
 
-                <div class="num">x{{ item.piece }}</div>
+                <div class="num">x{{ item.piece||1}}</div>
             </div>
         </div>
 
@@ -31,6 +31,14 @@
         </div>
 
         <div class="btn-list" @click.stop="">
+             <van-button
+                size="small"
+                color="#AAACAD"
+                plain
+                v-if="info.status === 'SENTED' || info.status === 'PAYED'"
+                @click="goNext('orderDetail', { id: info.id })"
+                >查看订单</van-button
+            >
             <!-- <van-button
                 size="small"
                 color="#AAACAD"

+ 23 - 7
src/main/maskMall/src/components/VipGoodsLarge.vue

@@ -1,10 +1,12 @@
 <template>
-    <div class="vipGoods" @click="goNext('detail', { id: info.id, type: 'lock' })">
+    <div class="vipGoods" @click="goDetail">
         <van-image width="100%" height="200" :src="info.icon" fit="cover" />
 
         <div class="info">
-            <div class="name">{{info.name}}</div>
-            <!-- <div class="sub">206<small>片</small></div> -->
+            <div class="name">{{ info.name }}</div>
+            <div class="sub" v-if="isLock">
+                <small>¥</small>{{ info.price }}
+            </div>
             <van-button color="#6C4C4D" plain size="small" v-if="isLock"
                 >立即解锁</van-button
             >
@@ -19,10 +21,10 @@ import { mapState } from "vuex";
 export default {
     name: "vipGoods",
     props: {
-        info:{
-            type:Object,
-            default:()=>{
-                return {}
+        info: {
+            type: Object,
+            default: () => {
+                return {};
             }
         },
         isLock: {
@@ -37,6 +39,18 @@ export default {
     },
     computed: {
         ...mapState(["userInfo"])
+    },
+    methods: {
+        goDetail() {
+            if (this.isLock) {
+                this.goNext("detail", { id: this.info.id, type: "lock" });
+            } else {
+                this.goNext("vipGoodsDeatil", {
+                    id: this.info.userSetId,
+                    type: "lock"
+                });
+            }
+        }
     }
 };
 </script>
@@ -53,11 +67,13 @@ export default {
             font-size: 28px;
             color: rgba(108, 76, 77, 1);
             line-height: 40px;
+            font-weight: lighter;
         }
         .sub {
             font-size: 20px;
             color: rgba(108, 76, 77, 1);
             line-height: 24px;
+            font-weight: lighter;
             small {
                 font-size: 11px;
                 color: rgba(108, 76, 77, 1);

+ 1 - 1
src/main/maskMall/src/components/VipInnerGoods.vue

@@ -12,7 +12,7 @@
 
         <div class="content">
             <div class="text1">
-                {{ info.goodsName }}
+                {{ info.goodsName||info.name }}
             </div>
             <div class="text2 ">
                {{info.tags}}

+ 1 - 1
src/main/maskMall/src/components/VipInnerGoodsMini.vue

@@ -11,7 +11,7 @@
 
         <div class="content">
             <div class="text1">
-                {{ info.goodsName }}
+                {{ info.goodsName||info.name }}
             </div>
             <div style="flex-grow:1"></div>
             <van-stepper

+ 16 - 0
src/main/maskMall/src/main.less

@@ -497,3 +497,19 @@ body {
         border-width: 0;
     }
 }
+
+.van-goods-action {
+    position: relative;
+    min-height: 60px;
+}
+.van-submit-bar {
+    position: relative;
+    min-height: 60px;
+}
+.index {
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+    height: 100%;
+    background-color: #fff;
+}

+ 8 - 0
src/main/maskMall/src/router/index.js

@@ -140,6 +140,14 @@ const routes = [
             title: "列表"
         }
     },
+    {
+        path: "/setList",
+        name: "setList",
+        component: () => import("../views/SetList.vue"),
+        meta: {
+            title: "包年列表"
+        }
+    },
     {
         path: "/withdrawal",
         name: "withdrawal",

+ 145 - 140
src/main/maskMall/src/views/Detail.vue

@@ -1,102 +1,158 @@
 <template>
-    <div class="detail" ref="detail" @scroll="tabsScroll">
-        <van-swipe class="swipe" :autoplay="3000" indicator-color="#B81C22">
-            <van-swipe-item
-                v-for="(item, index) in goodsInfo.icon"
-                :key="index"
-            >
-                <van-image width="100%" height="375" :src="item" />
-            </van-swipe-item>
-        </van-swipe>
+    <div class="index detail" ref="detail" @scroll="tabsScroll">
+        <div class="index-router-view">
+            <van-swipe class="swipe" :autoplay="3000" indicator-color="#B81C22">
+                <van-swipe-item
+                    v-for="(item, index) in goodsInfo.icon"
+                    :key="index"
+                >
+                    <van-image width="100%" height="375" :src="item" />
+                </van-swipe-item>
+            </van-swipe>
 
-        <div class="info">
-            <div class="text1">{{ goodsInfo.name }}</div>
-            <div class="text2">{{ goodsInfo.tags }}</div>
+            <div class="info">
+                <div class="text1">{{ goodsInfo.name }}</div>
+                <div class="text2">{{ goodsInfo.tags }}</div>
 
-            <div class="isLock" v-if="isLock">
-                <div class="price">{{ goodsInfo.price }}</div>
-                <div class="tips">每年省{{ goodsInfo.inventory }}元</div>
-            </div>
-            <div v-else>
-                <div class="price">{{ goodsInfo.price }}</div>
-            </div>
+                <div class="isLock" v-if="isLock">
+                    <div class="price">{{ goodsInfo.price }}</div>
+                    <div class="tips">每年省{{ goodsInfo.inventory }}元</div>
+                </div>
+                <div v-else>
+                    <div class="price">{{ goodsInfo.price }}</div>
+                </div>
 
-            <div class="share">
-                <img src="../assets/icon_share.png" alt="" />
-                <div>分享</div>
+                <div class="share">
+                    <img src="../assets/icon_share.png" alt="" />
+                    <div>分享</div>
+                </div>
             </div>
-        </div>
 
-        <van-grid
-            class="color"
-            v-if="isLock"
-            :column-num="2"
-            :gutter="15"
-            :border="false"
-        >
-            <van-grid-item>
-                <div class="gird">
-                    <div class="val">{{ goodsInfo.total }}</div>
-                    <div class="name">人解锁包年</div>
-                </div>
-            </van-grid-item>
-            <van-grid-item>
-                <div class="gird">
-                    <div class="val">100%</div>
-                    <div class="name">好评率</div>
-                </div>
-            </van-grid-item>
-        </van-grid>
-
-        <van-tabs
-            v-model="tab"
-            sticky
-            :offset-top="isWeixin ? 0 : 45"
-            line-width="30"
-        >
-            <van-tab title="商品详情" name="详情">
-                <template v-if="detailList.length > 0">
+            <van-grid
+                class="color"
+                v-if="isLock"
+                :column-num="2"
+                :gutter="15"
+                :border="false"
+            >
+                <van-grid-item>
+                    <div class="gird">
+                        <div class="val">{{ goodsInfo.total }}</div>
+                        <div class="name">人解锁包年</div>
+                    </div>
+                </van-grid-item>
+                <van-grid-item>
+                    <div class="gird">
+                        <div class="val">100%</div>
+                        <div class="name">好评率</div>
+                    </div>
+                </van-grid-item>
+            </van-grid>
+
+            <van-tabs
+                v-model="tab"
+                sticky
+                :offset-top="isWeixin ? 0 : 45"
+                line-width="30"
+            >
+                <van-tab title="商品详情" name="详情">
+                    <template v-if="detailList.length > 0">
+                        <van-image
+                            width="100%"
+                            :src="item.img"
+                            v-for="(item, index) in detailList"
+                            :key="index"
+                        />
+                    </template>
+
+                    <div class="last" v-else>暂无详情</div>
+                </van-tab>
+                <van-tab :title="'评价(' + totalEvaluate + ')'" name="评价">
+                    <div class="evaluate-info">
+                        <van-rate
+                            v-model="evaluate"
+                            :size="24"
+                            :gutter="8"
+                            allow-half
+                            readonly
+                            :icon="starList[0]"
+                            :void-icon="starList[1]"
+                        />
+                        <div class="val">好评度98%</div>
+                    </div>
+
+                    <div class="list" v-if="!last || evaluateList.length > 0">
+                        <evaluate-info
+                            v-for="item in evaluateList"
+                            :key="item.id"
+                            :info="item"
+                        ></evaluate-info>
+
+                        <van-loading size="24px" v-if="loading"
+                            >加载中...</van-loading
+                        >
+                        <div class="last" v-if="last">到底了</div>
+                    </div>
+                    <div class="last" v-else>当前无用户评价</div>
+                </van-tab>
+            </van-tabs>
+
+            <van-popup
+                class="buy"
+                v-model="show"
+                position="bottom"
+                :style="{ height: '50%' }"
+            >
+                <div v-if="goodsInfo.icon.length > 0">
                     <van-image
-                        width="100%"
-                        :src="item.img"
-                        v-for="(item, index) in detailList"
-                        :key="index"
-                    />
-                </template>
-
-                <div class="last" v-else>暂无详情</div>
-            </van-tab>
-            <van-tab :title="'评价(' + totalEvaluate + ')'" name="评价">
-                <div class="evaluate-info">
-                    <van-rate
-                        v-model="evaluate"
-                        :size="24"
-                        :gutter="8"
-                        allow-half
-                        readonly
-                        :icon="starList[0]"
-                        :void-icon="starList[1]"
+                        class="img"
+                        :width="128"
+                        :height="128"
+                        :src="goodsInfo.icon[0]"
                     />
-                    <div class="val">好评度98%</div>
                 </div>
 
-                <div class="list" v-if="!last || evaluateList.length > 0">
-                    <evaluate-info
-                        v-for="item in evaluateList"
+                <div class="right">
+                    <div class="price">{{ goodsInfo.price }}</div>
+                    <div class="text2">库存:{{ goodsInfo.inventory }}</div>
+                </div>
+                <van-cell title="数量:">
+                    <van-stepper
+                        v-model="amount"
+                        :input-width="28"
+                        :min="1"
+                        integer
+                    />
+                </van-cell>
+                <div style="flex-grow:1"></div>
+
+                <van-button type="primary" block :radius="8" @click="sure"
+                    >确定</van-button
+                >
+            </van-popup>
+
+            <van-popup
+                class="lock-list"
+                v-model="showList"
+                position="bottom"
+                :style="{ height: '60%' }"
+            >
+                <div class="lock-title">
+                    任选下方一款商品进行支付即可解锁包年
+                </div>
+                <div class="goods-list">
+                    <goods-large
+                        type="lock"
+                        v-for="item in innerList"
                         :key="item.id"
                         :info="item"
-                    ></evaluate-info>
-
-                    <van-loading size="24px" v-if="loading"
-                        >加载中...</van-loading
-                    >
-                    <div class="last" v-if="last">到底了</div>
+                        :price="goodsInfo.price"
+                        @submit="submit"
+                    ></goods-large>
                 </div>
-                <div class="last" v-else>当前无用户评价</div>
-            </van-tab>
-        </van-tabs>
+            </van-popup>
+        </div>
 
-        <div style="height:60px"></div>
         <template v-if="isLock">
             <van-goods-action
                 v-if="isBuy"
@@ -107,7 +163,7 @@
                     type="primary"
                     block
                     :radius="8"
-                    @click="goNext('vipGoodsDeatil', { id: goodsInfo.id })"
+                    @click="goNext('vipGoodsDeatil', { id: userSetId })"
                     >去领取</van-button
                 >
             </van-goods-action>
@@ -140,59 +196,6 @@
                 @click="(show = true), (type = 'buy')"
             />
         </van-goods-action>
-
-        <van-popup
-            class="buy"
-            v-model="show"
-            position="bottom"
-            :style="{ height: '50%' }"
-        >
-            <div v-if="goodsInfo.icon.length > 0">
-                <van-image
-                    class="img"
-                    :width="128"
-                    :height="128"
-                    :src="goodsInfo.icon[0]"
-                />
-            </div>
-
-            <div class="right">
-                <div class="price">{{ goodsInfo.price }}</div>
-                <div class="text2">库存:{{ goodsInfo.inventory }}</div>
-            </div>
-            <van-cell title="数量:">
-                <van-stepper
-                    v-model="amount"
-                    :input-width="28"
-                    :min="1"
-                    integer
-                />
-            </van-cell>
-            <div style="flex-grow:1"></div>
-
-            <van-button type="primary" block :radius="8" @click="sure"
-                >确定</van-button
-            >
-        </van-popup>
-
-        <van-popup
-            class="lock-list"
-            v-model="showList"
-            position="bottom"
-            :style="{ height: '60%' }"
-        >
-            <div class="lock-title">任选下方一款商品进行支付即可解锁包年</div>
-            <div class="goods-list">
-                <goods-large
-                    type="lock"
-                    v-for="item in innerList"
-                    :key="item.id"
-                    :info="item"
-                    :price="goodsInfo.price"
-                    @submit="submit"
-                ></goods-large>
-            </div>
-        </van-popup>
     </div>
 </template>
 <script>
@@ -231,7 +234,8 @@ export default {
             isLock: false,
             showList: false,
             innerList: [],
-            isBuy: false
+            isBuy: false,
+            userSetId: 0
         };
     },
     computed: {
@@ -260,6 +264,7 @@ export default {
             .then(res => {
                 if (res.totalElements > 0) {
                     this.isBuy = true;
+                    this.userSetId = res.content[0].id;
                 } else {
                     this.getGoodsList();
                 }

+ 7 - 2
src/main/maskMall/src/views/Home.vue

@@ -53,6 +53,7 @@
                     v-for="item in vipList"
                     :key="item.id"
                     :info="item"
+                    :isLock='!item.owned'
                 ></vip-goods-large>
             </div>
         </van-cell-group>
@@ -68,7 +69,7 @@
             </div>
         </van-cell-group>
 
-        <van-cell-group>
+        <van-cell-group class="hot">
             <van-cell title="热卖商品" title-class="home-title" />
             <div class="cell-content list">
                 <goods-gride
@@ -137,7 +138,7 @@ export default {
 
         //goodsList
 
-        this.$http.get("/goods/goodsPage").then(res => {
+        this.$http.get("/goods/goodsPage/" + this.userInfo.id).then(res => {
             this.vipList = res.set;
             this.hotList = res.mostSales;
             this.newList = res.newest;
@@ -251,4 +252,8 @@ export default {
     flex-wrap: wrap;
     justify-content: space-between;
 }
+
+.hot{
+    background:linear-gradient(180deg,rgba(255,255,255,1) 0%,rgba(242,244,245,1) 100%);
+}
 </style>

+ 1 - 7
src/main/maskMall/src/views/Index.vue

@@ -90,13 +90,7 @@ export default {
 }
 </script>
 <style lang="less" scoped>
-.index {
-  display: flex;
-  flex-direction: column;
-  overflow: hidden;
-  height: 100%;
-  background-color: #fff;
-}
+
 
 .tab-page {
 //   overflow-x: hidden;

+ 27 - 15
src/main/maskMall/src/views/List.vue

@@ -1,6 +1,10 @@
 <template>
     <div class="list">
-        <van-pull-refresh v-model="refreshing" @refresh="onRefresh" success-text="刷新成功">
+        <van-pull-refresh
+            v-model="refreshing"
+            @refresh="onRefresh"
+            success-text="刷新成功"
+        >
             <div class="content">
                 <van-list
                     v-model="loading"
@@ -10,7 +14,11 @@
                     :immediate-check="false"
                 >
                     <div class="goods-list" v-if="list.length > 0">
-                        <goods-gride v-for="(item, index) in list" :info="item" :key="index"></goods-gride>
+                        <goods-gride
+                            v-for="(item, index) in list"
+                            :info="item"
+                            :key="index"
+                        ></goods-gride>
                     </div>
                     <div class="nothing" v-else-if="!loading && this.search">
                         <img src="../assets/kong_img_sousuo.png" alt="" />
@@ -22,32 +30,31 @@
     </div>
 </template>
 <script>
-import { mapState } from 'vuex';
-import goodsGride from '../components/GoodsGride';
+import { mapState } from "vuex";
+import goodsGride from "../components/GoodsGride";
 export default {
-    name: 'Search',
+    name: "Search",
     data() {
         return {
-            searchKey: '',
+            searchKey: "",
             chooseTab: 0,
             priceDirection: 0,
             list: [],
             refreshing: false,
             loading: false,
             finished: false,
-            switch1: '',
-            switch2: '',
+            switch1: "",
+            switch2: "",
             page: 0,
             categorys: [],
-            category: '',
-            search: ''
+            category: "",
+            search: ""
         };
     },
     computed: {
-        ...mapState(['userInfo', 'isWeixin'])
+        ...mapState(["userInfo", "isWeixin"])
     },
-    created(){
-        
+    created() {
         this.onLoad();
     },
     methods: {
@@ -83,9 +90,13 @@ export default {
             var data = {
                 size: 20,
                 page: this.page,
+                query: {
+                    type: "NORMAL",
+                    disabled: 0
+                }
             };
             return this.$http
-                .get('/goods/all', data)
+                .get("/goods/all", data)
                 .then(res => {
                     if (res.first) {
                         this.list = [];
@@ -148,9 +159,10 @@ export default {
 .goods-list {
     display: flex;
     align-items: center;
-    padding: 15px 0 15px 14px;
+    padding: 15px;
     flex-wrap: wrap;
     justify-content: space-between;
+    box-sizing: border-box;
 
     .goods-info {
         margin-bottom: 15px;

+ 32 - 17
src/main/maskMall/src/views/Search.vue

@@ -1,7 +1,11 @@
 <template>
     <div class="list" ref="list">
         <van-sticky :container="list" :offset-top="0">
-            <van-search v-model="searchKey" placeholder="搜索..." @search="onSearch">
+            <van-search
+                v-model="searchKey"
+                placeholder="搜索..."
+                @search="onSearch"
+            >
                 <img
                     slot="left-icon"
                     style="width:28px;height:28px;display:block"
@@ -9,7 +13,12 @@
                 />
             </van-search>
         </van-sticky>
-        <van-pull-refresh v-if="isSearch" v-model="refreshing" @refresh="onRefresh" success-text="刷新成功">
+        <van-pull-refresh
+            v-if="isSearch"
+            v-model="refreshing"
+            @refresh="onRefresh"
+            success-text="刷新成功"
+        >
             <div class="content">
                 <van-list
                     v-model="loading"
@@ -19,7 +28,11 @@
                     :immediate-check="false"
                 >
                     <div class="goods-list" v-if="list.length > 0">
-                        <goods-gride v-for="(item, index) in list" :info="item" :key="index"></goods-gride>
+                        <goods-gride
+                            v-for="(item, index) in list"
+                            :info="item"
+                            :key="index"
+                        ></goods-gride>
                     </div>
                     <div class="nothing" v-else-if="!loading && this.search">
                         <img src="../assets/kong_img_sousuo.png" alt="" />
@@ -31,30 +44,30 @@
     </div>
 </template>
 <script>
-import { mapState } from 'vuex';
-import goodsGride from '../components/GoodsGride';
+import { mapState } from "vuex";
+import goodsGride from "../components/GoodsGride";
 export default {
-    name: 'Search',
+    name: "Search",
     data() {
         return {
-            searchKey: '',
+            searchKey: "",
             chooseTab: 0,
             priceDirection: 0,
             list: [],
             refreshing: false,
             loading: false,
             finished: false,
-            switch1: '',
-            switch2: '',
+            switch1: "",
+            switch2: "",
             page: 0,
             categorys: [],
-            category: '',
-            search: '',
-            isSearch:false
+            category: "",
+            search: "",
+            isSearch: false
         };
     },
     computed: {
-        ...mapState(['userInfo', 'isWeixin'])
+        ...mapState(["userInfo", "isWeixin"])
     },
     methods: {
         onRefresh() {
@@ -81,7 +94,7 @@ export default {
             this.loading = true;
             this.finished = false;
             this.search = this.searchKey;
-            this.isSearch=true
+            this.isSearch = true;
             this.getData().then(_ => {
                 this.refreshing = false;
             });
@@ -90,12 +103,14 @@ export default {
             var data = {
                 size: 20,
                 page: this.page,
-                query:{
-                  search: this.search
+                query: {
+                    search: this.search,
+                    type: "NORMAL",
+                    disabled: 0
                 }
             };
             return this.$http
-                .get('/goods/all', data)
+                .get("/goods/all", data)
                 .then(res => {
                     if (res.first) {
                         this.list = [];

+ 149 - 0
src/main/maskMall/src/views/SetList.vue

@@ -0,0 +1,149 @@
+<template>
+    <div class="list">
+        <van-pull-refresh
+            v-model="refreshing"
+            @refresh="onRefresh"
+            success-text="刷新成功"
+        >
+            <div class="content">
+                <van-list
+                    v-model="loading"
+                    :finished="finished"
+                    :finished-text="list.length > 0 ? '没有更多了' : ''"
+                    @load="onLoad"
+                    :immediate-check="false"
+                >
+                    <div class="goods-list" v-if="list.length > 0">
+                        <vip-goods-large
+                            v-for="item in list"
+                            :key="item.id"
+                            :info="item"
+                            :isLock="!item.owned"
+                        ></vip-goods-large>
+                    </div>
+                    <div class="nothing" v-else-if="!loading && this.search">
+                        <img src="../assets/kong_img_sousuo.png" alt="" />
+                        <p>没有搜索任何商品哦~</p>
+                    </div>
+                </van-list>
+            </div>
+        </van-pull-refresh>
+    </div>
+</template>
+<script>
+import { mapState } from "vuex";
+import vipGoodsLarge from "../components/VipGoodsLarge";
+export default {
+    name: "Search",
+    data() {
+        return {
+            searchKey: "",
+            chooseTab: 0,
+            priceDirection: 0,
+            list: [],
+            refreshing: false,
+            loading: false,
+            finished: false,
+            switch1: "",
+            switch2: "",
+            page: 0,
+            categorys: [],
+            category: "",
+            search: ""
+        };
+    },
+    computed: {
+        ...mapState(["userInfo", "isWeixin"])
+    },
+    created() {
+        this.onLoad();
+    },
+    methods: {
+        onRefresh() {
+            this.page = 0;
+            this.refreshing = true;
+            this.loading = false;
+            this.finished = false;
+            this.getData().then(_ => {
+                this.refreshing = false;
+            });
+        },
+        onLoad() {
+            this.refreshing = false;
+            this.loading = true;
+            this.finished = false;
+            this.getData().then(_ => {
+                this.refreshing = false;
+            });
+        },
+        onSearch() {
+            this.list = [];
+            this.page = 0;
+            this.refreshing = false;
+            this.loading = true;
+            this.finished = false;
+            this.search = this.searchKey;
+            this.getData().then(_ => {
+                this.refreshing = false;
+            });
+        },
+        getData() {
+            return this.$http
+                .get("/goods/allSet/" + this.userInfo.id)
+                .then(res => {
+                    this.list = res;
+                    this.finished = true;
+                })
+                .catch(e => {});
+        }
+    },
+    components: {
+        vipGoodsLarge
+    }
+};
+</script>
+<style lang="less" scoped>
+.list {
+    background-color: #f2f4f5;
+}
+.top {
+    position: sticky;
+    top: 0;
+    z-index: 20;
+}
+.content {
+    min-height: 100vh;
+    position: relative;
+}
+.tab-title {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+
+    img {
+        width: 24px;
+        height: 24px;
+    }
+
+    .img-list {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        margin-left: 4px;
+
+        img {
+            width: 8px;
+            height: 5px;
+
+            &:last-child {
+                margin-top: 2px;
+            }
+        }
+    }
+}
+
+.goods-list {
+    padding: 15px;
+}
+</style>

+ 33 - 33
src/main/maskMall/src/views/ShoppingCart.vue

@@ -1,43 +1,46 @@
 <template>
-    <div class="shopping">
-        <div class="color" :class="{ no: carList.length == 0 }">
-            <van-sticky
-                :offset-top="isWeixin ? 0 : 45"
-                v-if="carList.length > 0"
-            >
-                <div class="top">
-                    <div>共{{ checkList.length }}件商品</div>
-                    <div @click="edit = !edit">
-                        {{ edit ? "完成" : "管理" }}
+    <div class="shopping index">
+        <div class="index-router-view">
+            <div class="color" :class="{ no: carList.length == 0 }">
+                <van-sticky
+                    :offset-top="isWeixin ? 0 : 45"
+                    v-if="carList.length > 0"
+                >
+                    <div class="top">
+                        <div>共{{ checkList.length }}件商品</div>
+                        <div @click="edit = !edit">
+                            {{ edit ? "完成" : "管理" }}
+                        </div>
                     </div>
-                </div>
-            </van-sticky>
-            <!-- <div class="activity">
+                </van-sticky>
+                <!-- <div class="activity">
             <img class="icon" src="../assets/icon_manjian.png" alt="" />
             <span class="title">满1000减200,还差50元</span>
             <span class="btn">去凑单</span>
             <img src="../assets/icon_inter_huang.png" alt="" class="more" />
         </div> -->
-            <div class="list" v-if="carList.length > 0">
-                <div class="item" v-for="item in carList" :key="item.id">
-                    <van-checkbox
-                        checked-color="#B81C22"
-                        :icon-size="16"
-                        v-model="item.checked"
-                    >
-                        <shopping-car
-                            :info="item"
-                            @getCar="getCar"
-                        ></shopping-car
-                    ></van-checkbox>
+                <div class="list" v-if="carList.length > 0">
+                    <div class="item" v-for="item in carList" :key="item.id">
+                        <van-checkbox
+                            checked-color="#B81C22"
+                            :icon-size="16"
+                            v-model="item.checked"
+                        >
+                            <shopping-car
+                                :info="item"
+                                @getCar="getCar"
+                            ></shopping-car
+                        ></van-checkbox>
+                    </div>
                 </div>
+                <div class="nothing" v-else>
+                    <img src="../assets/kong_img_sousuo.png" alt="" />
+                    <p>购物车空空如也</p>
+                </div>
+                <div style="height:100px"></div>
             </div>
-            <div class="nothing" v-else>
-                <img src="../assets/kong_img_sousuo.png" alt="" />
-                <p>购物车空空如也</p>
-            </div>
-            <div style="height:100px"></div>
         </div>
+
         <template v-if="!loading">
             <van-submit-bar
                 button-type="primary"
@@ -300,9 +303,6 @@ export default {
 .van-submit-bar {
     padding-left: 25px;
     padding-right: 15px;
-    position: fixed;
-    bottom: 50px;
-    left: 0;
     box-sizing: border-box;
 }
 </style>

+ 10 - 8
src/main/maskMall/src/views/order/Evaluate.vue

@@ -1,12 +1,14 @@
 <template>
-    <div class="evaluate">
-        <evaluate-page
-            v-for="(item, index) in goodsList"
-            :key="item.id"
-            :info="item"
-            :index="index"
-            @updateInfo="updateInfo"
-        ></evaluate-page>
+    <div class="evaluate index">
+        <div class="index-router-view">
+            <evaluate-page
+                v-for="(item, index) in goodsList"
+                :key="item.id"
+                :info="item"
+                :index="index"
+                @updateInfo="updateInfo"
+            ></evaluate-page>
+        </div>
 
         <div class="bottom" style="height:60px;">
             <van-goods-action>

+ 105 - 90
src/main/maskMall/src/views/order/OrderDetail.vue

@@ -1,95 +1,109 @@
 <template>
-    <div class="order">
-        <div class="top">
-            <div class="status">{{ orderStatus[orderInfo.status] }}</div>
-            <img :src="imgInfo[orderInfo.status]" alt="" />
-        </div>
-
-        <div class="addresss">
-            <img src="../../assets/dingdan_icon_dizhi.png" alt="" />
-            <div class="addresss-content">
-                <div>{{ userAddress.name }} {{ userAddress.phone }}</div>
-                <div>
-                    {{ userAddress.province }} {{ userAddress.citry }}
-                    {{ userAddress.district }} {{ userAddress.address }}
-                </div>
-            </div>
-        </div>
-
-        <div class="product">
-            <order-info
-                style="padding:0"
-                :info="item"
-                v-for="item in goodsList"
-                :key="item.id"
-            ></order-info>
-
-            <div class="order-info">
-                <div class="name">配送方式</div>
-                <div class="val">普通配送</div>
+    <div class="order index">
+        <div class="index-router-view">
+            <div class="top">
+                <div class="status">{{ orderStatus[orderInfo.status] }}</div>
+                <img :src="imgInfo[orderInfo.status]" alt="" />
             </div>
 
-            <!-- <div class="order-info">
-        <div class="name">订单留言</div>
-        <div class="val">麻烦尽快发货,谢谢</div>
-      </div> -->
-        </div>
-
-        <div class="order-detail">
-            <div class="detail-item">
-                <div class="name">商品金额</div>
-                <div class="val">¥{{ orderInfo.totalPrice }}</div>
-            </div>
-
-            <div class="detail-item">
-                <div class="name">运费</div>
-                <div class="val">包邮</div>
+            <div class="addresss">
+                <img src="../../assets/dingdan_icon_dizhi.png" alt="" />
+                <div class="addresss-content">
+                    <div>{{ userAddress.name }} {{ userAddress.phone }}</div>
+                    <div>
+                        {{ userAddress.province }} {{ userAddress.citry }}
+                        {{ userAddress.district }} {{ userAddress.address }}
+                    </div>
+                </div>
             </div>
 
-            <div class="detail-item">
-                <div class="name">实付款</div>
-                <div class="val price">¥{{ orderInfo.totalPrice }}</div>
+            <div class="product">
+                <order-info
+                    style="padding:0 0 20px"
+                    :info="item"
+                    v-for="item in goodsList"
+                    :key="item.id"
+                ></order-info>
+
+                <div class="order-info">
+                    <div class="name">配送方式</div>
+                    <div class="val">普通配送</div>
+                </div>
+                <div class="order-info">
+                    <div class="name">订单留言</div>
+                    <div class="val">{{ orderInfo.remark || "无" }}</div>
+                </div>
             </div>
 
-            <div class="time-content">
+            <div class="order-detail">
                 <div class="detail-item">
-                    <div class="name">订单编号</div>
-                    <div class="val">{{ orderInfo.id }}</div>
+                    <div class="name">商品金额</div>
+                    <div class="val">
+                        ¥{{
+                            orderInfo.status == "PAYED"
+                                ? 0
+                                : orderInfo.totalPrice
+                        }}
+                    </div>
                 </div>
+
                 <div class="detail-item">
-                    <div class="name">创建时间</div>
-                    <div class="val">{{ orderInfo.createdAt }}</div>
+                    <div class="name">运费</div>
+                    <div class="val">
+                        {{
+                            orderInfo.status == "PAYED"
+                                ? "¥" + orderInfo.totalPrice
+                                : "包邮"
+                        }}
+                    </div>
                 </div>
-                <div class="detail-item" v-if="orderInfo.paidTime">
-                    <div class="name">付款时间</div>
-                    <div class="val">{{ orderInfo.paidTime }}</div>
+
+                <div class="detail-item">
+                    <div class="name">实付款</div>
+                    <div class="val price">¥{{ orderInfo.totalPrice }}</div>
                 </div>
-                <div class="detail-item" v-if="orderInfo.confirmTime">
-                    <div class="name">成交时间</div>
-                    <div class="val">{{ orderInfo.confirmTime }}</div>
+
+                <div class="time-content">
+                    <div class="detail-item">
+                        <div class="name">订单编号</div>
+                        <div class="val">{{ orderInfo.id }}</div>
+                    </div>
+                    <div class="detail-item">
+                        <div class="name">创建时间</div>
+                        <div class="val">{{ orderInfo.createdAt }}</div>
+                    </div>
+                    <div class="detail-item" v-if="orderInfo.paidTime">
+                        <div class="name">付款时间</div>
+                        <div class="val">{{ orderInfo.paidTime }}</div>
+                    </div>
+                    <div class="detail-item" v-if="orderInfo.confirmTime">
+                        <div class="name">成交时间</div>
+                        <div class="val">{{ orderInfo.confirmTime }}</div>
+                    </div>
                 </div>
             </div>
         </div>
-
-        <div class="bottom" style="height:50px;">
-            <van-goods-action>
-                <div class="order-btn">
-                    <!-- <van-button
+        <van-goods-action
+            v-if="
+                orderInfo.status === 'CREATED' || orderInfo.status === 'TAKEN'
+            "
+        >
+            <!-- <van-button
                 size="small"
                 color="#AAACAD"
                 plain
                 v-if="info.status === 'CREATED' || info.status === 'PAYED'"
                 >取消订单</van-button
             > -->
-                    <van-button
-                        type="primary"
-                        size="small"
-                        v-if="orderInfo.status === 'CREATED'"
-                        @click="goNext('submit', { orderId: orderInfo.id })"
-                        >立即支付</van-button
-                    >
+            <van-button
+                type="primary"
+                size="small"
+                v-if="orderInfo.status === 'CREATED'"
+                @click="goNext('submit', { orderId: orderInfo.id })"
+                >立即支付</van-button
+            >
 
-                    <!-- <van-button
+            <!-- <van-button
                 size="small"
                 color="#AAACAD"
                 plain
@@ -97,22 +111,22 @@
                 >查看物流</van-button
             > -->
 
-                    <!-- <van-button
+            <!-- <van-button
                 type="primary"
                 size="small"
                 v-if="info.status === 'SENTED'"
                 >确认收货</van-button
             > -->
 
-                    <van-button
-                        type="primary"
-                        size="small"
-                        v-if="orderInfo.status === 'TAKEN'"
-                        @click="goNext('evaluate', { orderId: orderInfo.id })"
-                        >立即评价</van-button
-                    >
+            <van-button
+                type="primary"
+                size="small"
+                v-if="orderInfo.status === 'TAKEN'"
+                @click="goNext('evaluate', { orderId: orderInfo.id })"
+                >立即评价</van-button
+            >
 
-                    <!-- <van-button
+            <!-- <van-button
                 size="small"
                 color="#AAACAD"
                 plain
@@ -120,15 +134,13 @@
                 >删除订单</van-button
             > -->
 
-                    <!-- <van-button
+            <!-- <van-button
                 type="primary"
                 size="small"
                 v-if="info.status === 'COMPETED'"
                 >再来一单</van-button
             > -->
-                </div>
-            </van-goods-action>
-        </div>
+        </van-goods-action>
     </div>
 </template>
 <script>
@@ -218,13 +230,15 @@ export default {
     padding: 15px;
     margin: 5px 0 0;
 
+    .goods-info {
+        border-bottom: 1px solid #f2f4f5;
+    }
+
     .order-info {
         display: flex;
         align-items: center;
         justify-content: space-between;
         margin-top: 20px;
-        border-top: 1px solid #f2f4f5;
-        padding-top: 20px;
 
         .name {
             font-size: 13px;
@@ -285,19 +299,20 @@ export default {
     }
 }
 
-.order-button {
-    height: 50px;
+.van-goods-action {
+    height: 60px;
     display: flex;
     justify-content: flex-end;
     align-items: center;
     padding: 0 15px;
-    width: 100%;
+    border-top: 1px solid #F0F2F5;
 
     .van-button {
         width: 110px;
-        height: 39px;
-        line-height: 39px;
+        height: 36px;
+        line-height: 36px;
         margin-left: 10px;
+        font-size: 14px;
     }
 }
 

+ 3 - 3
src/main/maskMall/src/views/order/OrderList.vue

@@ -122,19 +122,19 @@ export default {
             this.$refs.list.check();
         },
         getData() {
-            let query = {};
+            let status = "";
             if (this.$route.query.chooseTab) {
                 this.chooseTab = Number(this.$route.query.chooseTab);
                 console.log(this.chooseTab);
             }
             if (this.statusList[this.chooseTab]) {
-                query.status = this.statusList[this.chooseTab];
+                status = this.statusList[this.chooseTab];
             }
             return this.$http
                 .get(
                     "/orderForm/showMyOrderForm/" + this.userInfo.id,
                     {
-                        query: query,
+                        status: status,
                         page: this.page,
                         size: 10,
                         sort: "createdAt,desc"

+ 7 - 1
src/main/maskMall/src/views/order/Submit.vue

@@ -133,7 +133,7 @@ export default {
         ...mapState(["userInfo", "chooseAddressId"]),
         chooseAddressInfo() {
             var info = {};
-            if (this.orderId) {
+            if (this.orderDetailInfo.id) {
                 info = { ...this.orderDetailInfo.userAddress };
             } else {
                 var addressList = [...this.addressList];
@@ -275,6 +275,11 @@ export default {
                 return;
             }
 
+            if (!this.chooseAddressId) {
+                this.$toast("地址不能为空");
+                return;
+            }
+
             var data = {};
             if (this.$route.query.goodsId) {
                 data = {
@@ -341,6 +346,7 @@ export default {
                         this.buy();
                     });
             } else {
+                data.remark = this.message || "无";
                 this.$http
                     .post("/orderForm/createOrderForm", data)
                     .then(res => {

+ 4 - 2
src/main/maskMall/src/views/vip/Extension.vue

@@ -1,6 +1,7 @@
 <template>
-    <div class="extension">
-        <div class="poster" id="canvas" v-if="!showCanvas">
+    <div class="extension index">
+       <div class="index-router-view">
+            <div class="poster" id="canvas" v-if="!showCanvas">
             <img src="../../assets/haibao.png" class="bg" alt="" />
             <div class="bottom">
                 <div class="left">
@@ -38,6 +39,7 @@
         </div>
 
         <div ref="post"></div>
+       </div>
 
         <div class="bottom" style="height:60px;">
             <van-goods-action>

+ 7 - 2
src/main/maskMall/src/views/vip/VipCenter.vue

@@ -47,9 +47,10 @@
                 :line-width="34"
                 :line-height="4"
                 title-active-color="#B81C22"
+                :border="false"
             >
                 <van-tab
-                    title="测试套餐"
+                    :title="item.goodsInfo.name"
                     v-for="item in vipList"
                     :key="item.id"
                 >
@@ -68,7 +69,7 @@ export default {
         return {
             vipUser: {},
             activeName: 0,
-            vipList: [],
+            vipList: []
         };
     },
     computed: {
@@ -178,4 +179,8 @@ export default {
         }
     }
 }
+
+.panel {
+    margin-top: 20px;
+}
 </style>

+ 57 - 57
src/main/maskMall/src/views/vip/VipGoodsDeatil.vue

@@ -1,27 +1,49 @@
 <template>
-    <div class="vipDetail">
-        <div class="bg">
-            <vip-goods-panel
-                radius
-                :info="setInfo"
-                :availablePieces="availablePieces"
-            ></vip-goods-panel>
+    <div class="vipDetail index">
+        <div class="index-router-view">
+            <div class="bg ">
+                <vip-goods-panel
+                    radius
+                    :info="setInfo"
+                    :availablePieces="availablePieces"
+                ></vip-goods-panel>
 
-            <vip-inner-goods
-                v-for="(item, index) in goodsList"
-                :key="item.id"
-                :index="index"
-                :info="item"
-                :canAdd="canAdd"
-                @changeNum="changeNum"
-            ></vip-inner-goods>
+                <vip-inner-goods
+                    v-for="(item, index) in goodsList"
+                    :key="item.id"
+                    :index="index"
+                    :info="item"
+                    :canAdd="canAdd"
+                    @changeNum="changeNum"
+                ></vip-inner-goods>
 
-            <div class="bottom" style="height:60px;">
-                <van-goods-action>
+                <van-popup
+                    v-model="show"
+                    position="bottom"
+                    :style="{ height: '60%' }"
+                >
+                    <div class="title">
+                        <div class="name">已选商品</div>
+
+                        <div class="clear" @click="clear">
+                            <img src="../../assets/icon_shanchu.png" alt="" />
+                            <span>清空</span>
+                        </div>
+                    </div>
+                    <div class="list">
+                        <vip-inner-goods-mini
+                            v-for="item in buyList"
+                            :key="item.id"
+                            :index="item.index"
+                            :info="item"
+                            :canAdd="canAdd"
+                            @changeNum="changeNum"
+                        ></vip-inner-goods-mini>
+                    </div>
                     <div class="bottom-content">
                         <div>已选择 {{ chooseNum }} 件</div>
-                        <div class="detail" @click="show = true">
-                            <span>详情</span>
+                        <div class="detail" @click="show = false">
+                            <span>收回</span>
                             <img
                                 src="../../assets/icon_zhankai_kong.png"
                                 alt=""
@@ -34,47 +56,25 @@
                             >取回家</van-button
                         >
                     </div>
-                </van-goods-action>
+                </van-popup>
             </div>
+        </div>
 
-            <van-popup
-                v-model="show"
-                position="bottom"
-                :style="{ height: '60%' }"
-            >
-                <div class="title">
-                    <div class="name">已选商品</div>
-
-                    <div class="clear" @click="clear">
-                        <img src="../../assets/icon_shanchu.png" alt="" />
-                        <span>清空</span>
-                    </div>
-                </div>
-                <div class="list">
-                    <vip-inner-goods-mini
-                        v-for="item in buyList"
-                        :key="item.id"
-                        :index="item.index"
-                        :info="item"
-                        :canAdd="canAdd"
-                        @changeNum="changeNum"
-                    ></vip-inner-goods-mini>
-                </div>
-                <div class="bottom-content">
-                    <div>已选择 {{ chooseNum }} 件</div>
-                    <div class="detail" @click="show = false">
-                        <span>收回</span>
-                        <img src="../../assets/icon_zhankai_kong.png" alt="" />
-                    </div>
-                    <van-button
-                        type="primary"
-                        @click="submit"
-                        :disabled="chooseNum == 0"
-                        >取回家</van-button
-                    >
+        <van-goods-action>
+            <div class="bottom-content">
+                <div>已选择 {{ chooseNum }} 件</div>
+                <div class="detail" @click="show = true">
+                    <span>详情</span>
+                    <img src="../../assets/icon_zhankai_kong.png" alt="" />
                 </div>
-            </van-popup>
-        </div>
+                <van-button
+                    type="primary"
+                    @click="submit"
+                    :disabled="chooseNum == 0"
+                    >取回家</van-button
+                >
+            </div>
+        </van-goods-action>
     </div>
 </template>
 <script>

+ 2 - 2
src/main/vue/src/views/Admin.vue

@@ -37,7 +37,7 @@
                     <img :src="userInfo ? userInfo.avatar || '' : ''"
                          class="avatar"/>
                     <el-dropdown-menu slot="dropdown">
-                        <el-dropdown-item command="my">{{ userInfo.nickname }}</el-dropdown-item>
+                        <el-dropdown-item command="my">{{userInfo ? userInfo.nickname : '' }}</el-dropdown-item>
                         <el-dropdown-item command="logout">退出登录
                         </el-dropdown-item>
                     </el-dropdown-menu>
@@ -81,7 +81,7 @@
             };
         },
         computed: {
-            ...mapState(["userInfo", "canEdit"])
+            ...mapState(["userInfo"])
         },
         methods: {
             findActiveMenu() {

+ 3 - 3
src/main/vue/src/views/BalanceFlowList.vue

@@ -30,7 +30,7 @@
             <el-table-column v-if="multipleMode" align="center" type="selection"
                              width="50">
             </el-table-column>
-            <el-table-column prop="id" label="ID" width="100">
+            <el-table-column prop="id" label="ID" width="70">
                 <template slot="header" slot-scope="{column}">
                     <sortable-header :column="column" :current-sort="sort"
                                      @changeSort="changeSort">
@@ -49,14 +49,14 @@
                     </sortable-header>
                 </template>
             </el-table-column>
-            <el-table-column prop="money" label="交易金额"
+            <el-table-column prop="money" label="金额" width="80"
             >
                 <template slot="header" slot-scope="{column}">
                     <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort">
                     </sortable-header>
                 </template>
             </el-table-column>
-            <el-table-column prop="payMethod" label="支付方式"
+            <el-table-column prop="payMethod" label="支付" width="100"
                              :formatter="payMethodFormatter"
             >
                 <template slot="header" slot-scope="{column}">

+ 3 - 3
src/main/vue/src/views/Dashboard.vue

@@ -10,7 +10,7 @@
             </grid-item>
         </grid-layout>
         <el-button v-if="editable" @click="save">保存</el-button>
-        <el-button v-else @click="editable=true">编辑</el-button>
+<!--        <el-button v-else @click="editable=true">编辑</el-button>-->
     </div>
 </template>
 
@@ -26,11 +26,11 @@ export default {
     data() {
         return {
             layout: [
-                { x: 0, y: 0, w: 6, h: 4, i: "0", name: "UserWidget" },
+ /*             { x: 0, y: 0, w: 6, h: 4, i: "0", name: "UserWidget" },
                 { x: 6, y: 0, w: 6, h: 4, i: "1", name: "UserWidget" },
                 { x: 0, y: 4, w: 6, h: 6, i: "2", name: "BarChartWidget" },
                 { x: 0, y: 10, w: 6, h: 6, i: "3", name: "LineChartWidget" },
-                { x: 6, y: 4, w: 6, h: 12, i: "4", name: "PieChartWidget" }
+                { x: 6, y: 4, w: 6, h: 12, i: "4", name: "PieChartWidget" }*/
             ],
             editable: false,
 

+ 0 - 38
src/main/vue/src/views/MyList2.vue

@@ -142,44 +142,6 @@
                     .catch(() => {
                     });
             },
-
-
-            changePhone(){
-                this.$prompt('请输入手机号', '绑定手机', {inputType: 'text'})
-                    .then(res => {
-                        console.log(res);
-                        if (res.value) {
-                            this.$alert('确定绑定?', '提示', {
-                                showCancelButton: true,
-                            })
-                                .then(() => {
-                                    this.$http
-                                        .post({
-                                            url: '/userInfo/bindPhone',
-                                            data: {
-                                                id: this.formData.id,
-                                                phone: res.value,
-                                            },
-                                        })
-                                        .then(res => {
-                                            if (res.success) {
-                                                this.$message.success(
-                                                    '绑定成功',
-                                                );
-                                            } else {
-                                                this.$message.error(
-                                                    res.error || '绑定失败',
-                                                );
-                                            }
-                                        });
-                                })
-                                .catch(() => {
-                                });
-                        }
-                    })
-                    .catch(() => {
-                    });
-            }
         },
     };
 </script>

+ 29 - 30
src/main/vue/src/views/UserEdit.vue

@@ -36,18 +36,21 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item prop="gitCount" label="已领取">
-                <el-input v-model="formData.gitCount"/>
-            </el-form-item>
+            <!--            <el-form-item prop="gitCount" label="已领取">
+                            <el-input v-model="formData.gitCount"/>
+                        </el-form-item>-->
             <el-form-item prop="fansNum" label="粉丝">
                 <el-input v-model="formData.fansNum"/>
             </el-form-item>
             <el-form-item prop="money" label="余额">
                 <el-input v-model="formData.money"/>
             </el-form-item>
-<!--            <el-form-item v-else prop="password" label="密码">
+            <el-form-item v-if="formData.id" label="密码">
+                <el-button type="primary" plain @click="resetPassword">重置 </el-button>
+            </el-form-item>
+            <el-form-item v-else prop="password" label="密码">
                 <el-input v-model="formData.password"></el-input>
-            </el-form-item>-->
+            </el-form-item>
             <el-form-item prop="authorities" label="角色">
                 <el-select v-model="formData.authorities" multiple
                            placeholder="请选择" value-key="name">
@@ -69,6 +72,8 @@
     </div>
 </template>
 <script>
+    import {mapState} from "vuex";
+
     export default {
         name: 'UserEdit',
         created() {
@@ -109,13 +114,13 @@
                         },
                     ],
                     username: [
-                        { required: true, message: '请输入昵称', trigger: 'blur' },
+                        {required: true, message: '请输入昵称', trigger: 'blur'},
                     ],
                     nickname: [
-                        { required: true, message: '请输入昵称', trigger: 'blur' },
+                        {required: true, message: '请输入昵称', trigger: 'blur'},
                     ],
                     password: [
-                        { required: true, message: '请输入密码', trigger: 'blur' },
+                        {required: true, message: '请输入密码', trigger: 'blur'},
                     ],
                     phone: [
                         {
@@ -126,7 +131,7 @@
                         },
                     ],
                     authorities: [
-                        { required: true, message: '请选择角色', trigger: 'blur' },
+                        {required: true, message: '请选择角色', trigger: 'blur'},
                     ],
                 },
                 sexOptions: [{"label": "男", "value": "男"}, {"label": "女", "value": "女"}],
@@ -179,41 +184,35 @@
                 })
             },
             resetPassword() {
-                this.$prompt('请输入新密码', '重置密码', {inputType: 'password'})
+                this.$prompt('请输入新密码', '重置密码', { inputType: 'password' })
                     .then(res => {
                         console.log(res);
                         if (res.value) {
                             this.$alert('确定重置密码?', '提示', {
-                                showCancelButton: true,
+                                showCancelButton: true
                             })
                                 .then(() => {
                                     this.$http
-                                        .post({
-                                            url: 'userInfo/resetPasswordAdmin',
-                                            data: {
-                                                id: this.formData.id,
-                                                phone: res.value,
-                                            },
+                                        .post('user/resetPasswordAdmin', {
+                                            id: this.formData.id,
+                                            password: res.value
                                         })
                                         .then(res => {
-                                            if (res.success) {
-                                                this.$message.success(
-                                                    '密码重置成功',
-                                                );
-                                            } else {
-                                                this.$message.error(
-                                                    res.error || '重置密码失败',
-                                                );
-                                            }
+                                            this.$message.success('密码重置成功');
+                                        })
+                                        .catch(e => {
+                                            console.log(e);
+                                            this.$message.error(e.error);
                                         });
                                 })
-                                .catch(() => {
+                                .catch(e => {
+                                    console.log(e);
+                                    this.$message.error(e.error);
                                 });
                         }
                     })
-                    .catch(() => {
-                    });
-            },
+                    .catch(() => {});
+            }
         }
     }
 </script>

+ 3 - 10
src/main/vue/src/views/UserList.vue

@@ -59,23 +59,16 @@
             </el-table-column>
             <el-table-column prop="phone" label="手机" width="100">
             </el-table-column>
-            <el-table-column prop="parentId" label="邀请人"
+            <el-table-column prop="parentId" label="邀请人"  width="60"
             >
             </el-table-column>
             <el-table-column prop="vipIdentity.name" label="会员身份"></el-table-column>
-            <!--            <el-table-column prop="money" label="用户余额"
-                        >
-                            <template slot="header" slot-scope="{column}">
-                                <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort">
-                                </sortable-header>
-                            </template>
-                        </el-table-column>-->
-            <el-table-column prop="gitCount" label="已领取">
+<!--            <el-table-column prop="gitCount" label="已领取">
                 <template slot="header" slot-scope="{column}">
                     <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort">
                     </sortable-header>
                 </template>
-            </el-table-column>
+            </el-table-column>-->
             <el-table-column prop="fansNum" label="粉丝">
                 <template slot="header" slot-scope="{column}">
                     <sortable-header :column="column" :current-sort="sort"