licailing il y a 5 ans
Parent
commit
9b04ead2d4

+ 29 - 0
src/main/java/com/izouma/jiashanxia/domain/Address.java

@@ -0,0 +1,29 @@
+package com.izouma.jiashanxia.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("收件地址")
+public class Address extends BaseEntity {
+    private Long userId;
+
+    private String name;
+
+    private String phone;
+
+    private String city;
+
+    private String province;
+
+    @ApiModelProperty(value = "详细地址")
+    private String address;
+
+}

+ 6 - 1
src/main/java/com/izouma/jiashanxia/domain/OrderInfo.java

@@ -1,6 +1,7 @@
 package com.izouma.jiashanxia.domain;
 
 import com.izouma.jiashanxia.annotations.Searchable;
+import com.izouma.jiashanxia.enums.GoodType;
 import com.izouma.jiashanxia.enums.OrderInfoStatus;
 import com.izouma.jiashanxia.enums.PayMethod;
 import io.swagger.annotations.ApiModel;
@@ -69,13 +70,17 @@ public class OrderInfo extends BaseEntity {
     @NotFound(action = NotFoundAction.IGNORE)
     private User user;
 
-    private boolean isUse;
+//    private boolean isUse;
 
     private Long parentUserId;
 
     @ApiModelProperty(value = "多次使用")
     private boolean repeatedly;
 
+    @ApiModelProperty(value = "区分是那种订单")
+    @Enumerated(EnumType.STRING)
+    private GoodType goodType;
+
     @ApiModelProperty(value = "物流")
     private String logistic;
 

+ 8 - 6
src/main/java/com/izouma/jiashanxia/domain/Stock.java

@@ -6,24 +6,26 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Where;
 
 import javax.persistence.Entity;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
+import java.time.LocalDate;
 
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 @Builder
 @Entity
+@Where(clause = "del = 0")
 @ApiModel(value = "销量库存")
 public class Stock extends BaseEntity {
-    private Long          packageId;
+    private Long       packageId;
     @ApiModelProperty(value = "规格")
-    private String        specification;
+    private String     specification;
     @ApiModelProperty(value = "日期")
-    private LocalDateTime day;
+    private LocalDate  day;
     @ApiModelProperty(value = "库存")
-    private int           inventory;
-    private BigDecimal    price;
+    private int        inventory;
+    private BigDecimal price;
 }

+ 0 - 34
src/main/java/com/izouma/jiashanxia/domain/UserPackagePeriod.java

@@ -1,34 +0,0 @@
-package com.izouma.jiashanxia.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.Entity;
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Entity
-@Builder
-@ApiModel(value = "用户套餐")
-public class UserPackagePeriod extends BaseEntity {
-
-    private Long userId;
-
-    @ApiModelProperty(value = "套餐id")
-    private Long packageId;
-
-    @ApiModelProperty(value = "使用日期")
-    private LocalDateTime useDate;
-
-    @ApiModelProperty(value = "截止日期")
-    private LocalDateTime endDate;
-
-    private Long orderId;
-
-}

+ 0 - 68
src/main/java/com/izouma/jiashanxia/enums/GoodName.java

@@ -1,68 +0,0 @@
-package com.izouma.jiashanxia.enums;
-
-public enum GoodName {
-    /*
-    大锅灶/烧烤
-     */
-    LARGE_POT_STOVE_OR_BBQ,
-    /*
-    野外露营
-     */
-    CAMPING,
-    /*
-    小公鸡
-     */
-    COCK,
-    /*
-    蔬菜
-     */
-    VEGETABLES,
-    /*
-    真人CS
-     */
-    REAL_CS,
-    /*
-    冒险森林
-     */
-    ADVENTURE_FOREST,
-    /*
-    射箭
-     */
-    ARCHERY,
-    /*
-    波波球
-     */
-    BOBO_BALL,
-    /*
-    无动力乐园
-     */
-    UNPOWERED_PARADISE,
-    /*
-    大锅灶
-     */
-    LARGE_POT_STOVE,
-    /*
-    烧烤套餐
-     */
-    BBQ,
-    /*
-    民宿
-     */
-    HOMESTAY,
-    /*
-    草鸡蛋
-     */
-    GRASS_EGG,
-    /*
-    生态火锅
-     */
-    ECO_HOT_POT,
-    /*
-    冰壶
-     */
-    CURLING,
-    /*
-    篝火晚会
-     */
-    CAMPFIRE
-}

+ 12 - 0
src/main/java/com/izouma/jiashanxia/enums/GoodType.java

@@ -0,0 +1,12 @@
+package com.izouma.jiashanxia.enums;
+
+public enum GoodType {
+    /*
+    旅游类型
+     */
+    TRAVEL,
+    /*
+    购物类型
+     */
+    SHOP
+}

+ 3 - 0
src/main/java/com/izouma/jiashanxia/enums/OrderInfoStatus.java

@@ -7,6 +7,9 @@ public enum OrderInfoStatus {
     OFFLINE_PAID("线下已付"),
     REFUNDED("已退款"),
     REQUEST_REFUND("申请退款中"),
+    USED("已使用"),
+    SHIPPED("已发货"),
+    RECEIVED("已收货")
     ;
 
     private final String description;

+ 3 - 0
src/main/java/com/izouma/jiashanxia/repo/StockRepo.java

@@ -7,10 +7,13 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 public interface StockRepo extends JpaRepository<Stock, Long>, JpaSpecificationExecutor<Stock> {
     @Query("update Stock t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    List<Stock> findAllByPackageId(Long packageId);
 }

+ 0 - 16
src/main/java/com/izouma/jiashanxia/repo/UserPackagePeriodRepo.java

@@ -1,16 +0,0 @@
-package com.izouma.jiashanxia.repo;
-
-import com.izouma.jiashanxia.domain.UserPackagePeriod;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-
-public interface UserPackagePeriodRepo extends JpaRepository<UserPackagePeriod, Long>, JpaSpecificationExecutor<UserPackagePeriod> {
-    @Query("update UserPackagePeriod t set t.del = true where t.id = ?1")
-    @Modifying
-    @Transactional
-    void softDelete(Long id);
-}

+ 17 - 7
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -162,11 +162,24 @@ public class OrderInfoService {
      */
     public OrderInfo cancelOrder(Long orderId) {
         OrderInfo orderInfo = orderInfoRepo.findById(orderId).orElseThrow(new BusinessException("无订单"));
-        if (OrderInfoStatus.PAID.equals(orderInfo.getStatus())) {
-            throw new BusinessException("订单已支付,无法取消");
-        } else if (OrderInfoStatus.CANCELLED.equals(orderInfo.getStatus())) {
-            return orderInfo;
+        OrderInfoStatus status = orderInfo.getStatus();
+        switch (status) {
+            case PAID:
+                throw new BusinessException("订单已支付,无法取消");
+            case USED:
+                throw new BusinessException("订单已使用,无法取消");
+            case SHIPPED:
+                throw new BusinessException("订单已发货,无法取消");
+            case RECEIVED:
+                throw new BusinessException("订单已收获,无法取消");
+            case CANCELLED:
+                return orderInfo;
         }
+//        if (OrderInfoStatus.PAID.equals(status)) {
+//            throw new BusinessException("订单已支付,无法取消");
+//        } else if (OrderInfoStatus.CANCELLED.equals(status)) {
+//            return orderInfo;
+//        }
         orderInfo.setStatus(OrderInfoStatus.CANCELLED);
         return orderInfoRepo.save(orderInfo);
     }
@@ -235,7 +248,6 @@ public class OrderInfoService {
         // 无限级找创客/108将
         this.makerGeneralDistribution(parentUser, amount, orderInfo.getId(), userId, aPackage);
 
-//        Member member = parentUser.getMember();
         // 不成为佳客没有奖励
         if (Member.NORMAL.equals(parentUser.getMember())) {
             return;
@@ -460,7 +472,6 @@ public class OrderInfoService {
     public Page<OrderInfo> children(PageQuery pageQuery) {
         pageQuery.setSort("createdAt,desc");
         Map<String, Object> query = pageQuery.getQuery();
-//        String parent = (String) query.get("userId");
         Object userId = query.get("userId");
         Long parent = 0L;
         if (userId instanceof String) {
@@ -472,7 +483,6 @@ public class OrderInfoService {
             parent = Long.valueOf(of);
         }
 
-
         query.remove("userId");
         List<Long> childrenId = userService.childrenId(parent);
 

+ 1 - 2
src/main/java/com/izouma/jiashanxia/service/PackageService.java

@@ -90,8 +90,7 @@ public class PackageService {
     }
 
     /*
-    充值
-    冲谁头上
+    充值团队
      */
     public void recharge(Long userId, Long packageId, Integer num) {
         Package set = packageRepo.findById(packageId).orElseThrow(new BusinessException("无套餐"));

+ 20 - 0
src/main/java/com/izouma/jiashanxia/service/StockService.java

@@ -1,13 +1,19 @@
 package com.izouma.jiashanxia.service;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.izouma.jiashanxia.domain.Stock;
 import com.izouma.jiashanxia.dto.PageQuery;
+import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.StockRepo;
 import com.izouma.jiashanxia.utils.JpaUtils;
+import com.izouma.jiashanxia.utils.ObjUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 @AllArgsConstructor
 public class StockService {
@@ -17,4 +23,18 @@ public class StockService {
     public Page<Stock> all(PageQuery pageQuery) {
         return stockRepo.findAll(JpaUtils.toSpecification(pageQuery, Stock.class), JpaUtils.toPageRequest(pageQuery));
     }
+
+    public void batchSave(String stocks) {
+        List<Stock> stockList = JSONObject.parseArray(stocks, Stock.class);
+        stockList.forEach(stock -> {
+            if (ObjectUtil.isNotEmpty(stock.getId())) {
+                Stock orig = stockRepo.findById(stock.getId()).orElseThrow(new BusinessException("无记录"));
+                ObjUtils.merge(orig, stock);
+                stockRepo.save(orig);
+            } else {
+                stockRepo.save(stock);
+            }
+        });
+//        stockRepo.saveAll(stockList);
+    }
 }

+ 5 - 14
src/main/java/com/izouma/jiashanxia/service/UserPackageFlowService.java

@@ -10,6 +10,7 @@ import com.izouma.jiashanxia.domain.UserPackage;
 import com.izouma.jiashanxia.domain.UserPackageFlow;
 import com.izouma.jiashanxia.dto.*;
 import com.izouma.jiashanxia.enums.FlowType;
+import com.izouma.jiashanxia.enums.OrderInfoStatus;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.*;
 import com.izouma.jiashanxia.utils.JpaUtils;
@@ -134,11 +135,6 @@ public class UserPackageFlowService {
                 .stream()
                 .collect(Collectors.toMap(UserPackage::getGoodsInfoId, userPackage -> userPackage));
 
-        // 核销套餐内容
-//        Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserPackagePeriodId(writeOffSaveVO.getUserPackagePeriodId())
-//                .stream()
-//                .collect(Collectors.toMap(UserPackage::getId, userPackage -> userPackage));
-
         List<GoodsDTO> goodsDTOS = JSONObject.parseArray(writeOffSaveVO.getContent(), GoodsDTO.class);
         goodsDTOS.forEach(goodsDTO -> {
             UserPackage userPackage = userPackageMap.get(goodsDTO.getGoodsInfoId());
@@ -157,13 +153,6 @@ public class UserPackageFlowService {
             goodsDTO.setNum(-goodsDTO.getNum());
         });
 
-        // 触发有效期
-//        if (ObjectUtil.isEmpty(userPackagePeriod.getUseDate())) {
-//            userPackagePeriod.setUseDate(now);
-//            userPackagePeriod.setEndDate(now.toLocalDate().atTime(23, 59, 59));
-//            userPackagePeriodRepo.save(userPackagePeriod);
-//        }
-
         // 保存套餐流水
         return userPackageFlowRepo.save(
                 UserPackageFlow.builder()
@@ -187,10 +176,12 @@ public class UserPackageFlowService {
         if (ObjectUtil.isNotEmpty(orderInfoId)) {
             OrderInfo orderInfo = orderInfoRepo.findById(orderInfoId)
                     .orElseThrow(new BusinessException("无订单"));
-            if (orderInfo.isUse()) {
+//            if (orderInfo.isUse()) {
+            if (OrderInfoStatus.USED.equals(orderInfo.getStatus())) {
                 throw new BusinessException("已核销");
             }
-            orderInfo.setUse(true);
+//            orderInfo.setUse(true);
+            orderInfo.setStatus(OrderInfoStatus.USED);
             orderInfoRepo.save(orderInfo);
             UserPackageFlow flow = userPackageFlowRepo.findByOrderInfoId(orderInfoId);
             flow.getContent().forEach(goods -> goods.setNum(-goods.getNum()));

+ 0 - 20
src/main/java/com/izouma/jiashanxia/service/UserPackagePeriodService.java

@@ -1,20 +0,0 @@
-package com.izouma.jiashanxia.service;
-
-import com.izouma.jiashanxia.domain.UserPackagePeriod;
-import com.izouma.jiashanxia.dto.PageQuery;
-import com.izouma.jiashanxia.repo.UserPackagePeriodRepo;
-import com.izouma.jiashanxia.utils.JpaUtils;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.stereotype.Service;
-
-@Service
-@AllArgsConstructor
-public class UserPackagePeriodService {
-
-    private UserPackagePeriodRepo userPackagePeriodRepo;
-
-    public Page<UserPackagePeriod> all(PageQuery pageQuery) {
-        return userPackagePeriodRepo.findAll(JpaUtils.toSpecification(pageQuery, UserPackagePeriod.class), JpaUtils.toPageRequest(pageQuery));
-    }
-}

+ 15 - 1
src/main/java/com/izouma/jiashanxia/web/StockController.java

@@ -1,4 +1,5 @@
 package com.izouma.jiashanxia.web;
+
 import com.izouma.jiashanxia.domain.Stock;
 import com.izouma.jiashanxia.service.StockService;
 import com.izouma.jiashanxia.dto.PageQuery;
@@ -6,6 +7,7 @@ import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.StockRepo;
 import com.izouma.jiashanxia.utils.ObjUtils;
 import com.izouma.jiashanxia.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -20,7 +22,7 @@ import java.util.List;
 @AllArgsConstructor
 public class StockController extends BaseController {
     private StockService stockService;
-    private StockRepo stockRepo;
+    private StockRepo    stockRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -56,5 +58,17 @@ public class StockController extends BaseController {
         List<Stock> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
+
+    @GetMapping("/byPackageId")
+    @ApiOperation("按套餐查询")
+    public List<Stock> byPackageId(@RequestParam Long packageId) {
+        return stockRepo.findAllByPackageId(packageId);
+    }
+
+    @PostMapping("/batchSave")
+    @ApiOperation("批量保存")
+    public void batchSave(String stocks) {
+        stockService.batchSave(stocks);
+    }
 }
 

+ 0 - 60
src/main/java/com/izouma/jiashanxia/web/UserPackagePeriodController.java

@@ -1,60 +0,0 @@
-package com.izouma.jiashanxia.web;
-import com.izouma.jiashanxia.domain.UserPackagePeriod;
-import com.izouma.jiashanxia.service.UserPackagePeriodService;
-import com.izouma.jiashanxia.dto.PageQuery;
-import com.izouma.jiashanxia.exception.BusinessException;
-import com.izouma.jiashanxia.repo.UserPackagePeriodRepo;
-import com.izouma.jiashanxia.utils.ObjUtils;
-import com.izouma.jiashanxia.utils.excel.ExcelUtils;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-
-@RestController
-@RequestMapping("/userPackagePeriod")
-@AllArgsConstructor
-public class UserPackagePeriodController extends BaseController {
-    private UserPackagePeriodService userPackagePeriodService;
-    private UserPackagePeriodRepo userPackagePeriodRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public UserPackagePeriod save(@RequestBody UserPackagePeriod record) {
-        if (record.getId() != null) {
-            UserPackagePeriod orig = userPackagePeriodRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return userPackagePeriodRepo.save(orig);
-        }
-        return userPackagePeriodRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/all")
-    public Page<UserPackagePeriod> all(@RequestBody PageQuery pageQuery) {
-        return userPackagePeriodService.all(pageQuery);
-    }
-
-    @GetMapping("/get/{id}")
-    public UserPackagePeriod get(@PathVariable Long id) {
-        return userPackagePeriodRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        userPackagePeriodRepo.softDelete(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<UserPackagePeriod> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-}
-

+ 153 - 2
src/main/vue/src/components/PackageEdit.vue

@@ -78,6 +78,57 @@
                     </el-option>
                 </el-select>
             </el-form-item>
+            <el-form-item label="规格">
+                <el-button @click="addStockForm">添加规格</el-button>
+                <div v-for="(item, index) in stockList" :key="index">
+                    <div class="spec" v-if="!item.del">
+                        <el-row>
+                            <el-col :span="10">
+                                <span>规格</span>
+                                <el-input placeholder="规格" class="input" v-model="item.specification"></el-input>
+                            </el-col>
+                            <el-col :span="10">
+                                <span>日期</span>
+                                <el-date-picker
+                                    type="date"
+                                    value-format="yyyy-MM-dd"
+                                    placeholder="选择日期时间"
+                                    class="input"
+                                    v-model="item.day"
+                                >
+                                </el-date-picker>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="10">
+                                <span>库存</span>
+                                <el-input-number
+                                    type="number"
+                                    :min="0"
+                                    class="input"
+                                    v-model="item.inventory"
+                                ></el-input-number>
+                            </el-col>
+                            <el-col :span="10">
+                                <span>价格</span>
+                                <el-input-number
+                                    type="number"
+                                    :min="0"
+                                    class="input"
+                                    v-model="item.price"
+                                ></el-input-number>
+                            </el-col>
+                            <el-button
+                                class="del"
+                                type="danger"
+                                size="small"
+                                icon="el-icon-delete"
+                                @click="deleteStockForm(item, index)"
+                            ></el-button>
+                        </el-row>
+                    </div>
+                </div>
+            </el-form-item>
             <el-form-item prop="detail" label="详情">
                 <rich-text v-model="formData.detail"></rich-text>
             </el-form-item>
@@ -128,6 +179,7 @@ export default {
     name: 'PackageEdit',
     created() {
         if (this.$route.query.id) {
+            this.packageId = this.$route.query.id;
             this.$http
                 .get('package/get/' + this.$route.query.id)
                 .then(res => {
@@ -137,6 +189,9 @@ export default {
                     console.log(e);
                     this.$message.error(e.error);
                 });
+            this.$http.get('/stock/byPackageId', { packageId: this.$route.query.id }).then(res => {
+                this.stockList = res;
+            });
         }
         this.$http
             .post('/attractions/all', { size: 1000, query: { del: false } }, { body: 'json' })
@@ -216,9 +271,26 @@ export default {
             inputVisible: false,
             inputValue: '',
             attractionsOptions: [],
-            categoryOptions: []
+            categoryOptions: [],
+            stockList: [],
+            packageId: 0
         };
     },
+    computed: {
+        saveOtherJson() {
+            const stockList = [...this.stockList]
+                .filter(item => {
+                    return !!item.inventory > 0 || item.price > 0 || !!item.specification;
+                })
+                .map(item => {
+                    return {
+                        ...item,
+                        packageId: this.packageId
+                    };
+                });
+            return JSON.stringify(stockList);
+        }
+    },
     methods: {
         onSave() {
             this.$refs.form.validate(valid => {
@@ -236,7 +308,14 @@ export default {
                 .post('/package/save', data, { body: 'json' })
                 .then(res => {
                     this.saving = false;
-                    this.$message.success('成功');
+                    // this.$message.success('成功');
+                    this.$nextTick(() => {
+                        this.$http.post('/stock/batchSave', {
+                            stocks: this.saveOtherJson
+                        });
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    });
                     this.$emit('next', 'second');
                     this.$router.replace({
                         name: 'PackageEdit',
@@ -284,6 +363,29 @@ export default {
             }
             this.inputVisible = false;
             this.inputValue = '';
+        },
+        addStockForm() {
+            this.stockList.push({
+                specification: '',
+                day: '',
+                price: 0,
+                inventory: 0
+            });
+        },
+        deleteStockForm(info, index) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'warning' })
+                .then(() => {
+                    const stockList = [...this.stockList];
+                    if (info.id) {
+                        info.del = true;
+                        stockList[index] = info;
+                    } else {
+                        stockList.splice(index, 1);
+                    }
+                    this.stockList = stockList;
+                    this.$message.success('删除成功');
+                })
+                .catch(e => {});
         }
     }
 };
@@ -310,4 +412,53 @@ export default {
 .select-width {
     width: 350px;
 }
+.spec {
+    margin-top: 15px;
+    background-color: #f7f7f7;
+    padding: 20px 20px 15px 20px;
+    span {
+        font-size: 13px;
+        color: #565b66;
+        line-height: 16px;
+        padding: 0 15px 0 15px;
+    }
+    .input {
+        width: 200px;
+        margin: 0 10px 5px 0;
+    }
+}
+.stock {
+    display: flex;
+    align-items: center;
+    margin-top: 20px;
+    .name {
+        width: 200px;
+    }
+    .name2 {
+        width: 180px;
+    }
+
+    .value {
+        width: 180px;
+    }
+
+    span {
+        font-size: 12px;
+        color: #565b66;
+        line-height: 16px;
+        padding: 0 20px 0 20px;
+    }
+
+    .el-button {
+        height: 36px;
+        border-width: 0;
+
+        &.del {
+            width: 36px;
+            padding: 9px 5px;
+            font-size: 16px;
+            margin-left: 10px;
+        }
+    }
+}
 </style>

+ 0 - 18
src/main/vue/src/router.js

@@ -373,24 +373,6 @@ const router = new Router({
                         title: '景区管理'
                     }
                 },
-                {
-                    path: '/userPackagePeriodEdit',
-                    name: 'UserPackagePeriodEdit',
-                    component: () =>
-                        import(/* webpackChunkName: "userPackagePeriodEdit" */ '@/views/UserPackagePeriodEdit.vue'),
-                    meta: {
-                        title: '用户套餐编辑'
-                    }
-                },
-                {
-                    path: '/userPackagePeriodList',
-                    name: 'UserPackagePeriodList',
-                    component: () =>
-                        import(/* webpackChunkName: "userPackagePeriodList" */ '@/views/UserPackagePeriodList.vue'),
-                    meta: {
-                        title: '用户套餐'
-                    }
-                },
                 {
                     path: '/categories',
                     name: 'Categories',

+ 1 - 6
src/main/vue/src/views/StockEdit.vue

@@ -24,12 +24,7 @@
                 <el-input v-model="formData.specification"></el-input>
             </el-form-item>
             <el-form-item prop="day" label="日期">
-                <el-date-picker
-                    v-model="formData.day"
-                    type="datetime"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    placeholder="选择日期时间"
-                >
+                <el-date-picker v-model="formData.day" type="date" value-format="yyyy-MM-dd" placeholder="选择日期时间">
                 </el-date-picker>
             </el-form-item>
             <el-form-item prop="inventory" label="库存">

+ 0 - 139
src/main/vue/src/views/UserPackagePeriodEdit.vue

@@ -1,139 +0,0 @@
-<template>
-    <div class="edit-view">
-        <el-form
-            :model="formData"
-            :rules="rules"
-            ref="form"
-            label-width="80px"
-            label-position="right"
-            size="small"
-            style="max-width: 500px;"
-        >
-            <el-form-item prop="userId" label="用户id">
-                <el-input-number type="number" v-model="formData.userId"></el-input-number>
-            </el-form-item>
-            <el-form-item prop="packageId" label="套餐id">
-                <el-select v-model="formData.packageId" clearable filterable placeholder="请选择">
-                    <el-option
-                        v-for="item in packageIdOptions"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                    >
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item prop="useDate" label="使用日期">
-                <el-date-picker
-                    v-model="formData.useDate"
-                    type="datetime"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    placeholder="选择日期时间"
-                >
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item prop="endDate" label="截止日期">
-                <el-date-picker
-                    v-model="formData.endDate"
-                    type="datetime"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    placeholder="选择日期时间"
-                >
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item>
-                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
-                <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
-                <el-button @click="$router.go(-1)">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </div>
-</template>
-<script>
-export default {
-    name: 'UserPackagePeriodEdit',
-    created() {
-        if (this.$route.query.id) {
-            this.$http
-                .get('userPackagePeriod/get/' + this.$route.query.id)
-                .then(res => {
-                    this.formData = res;
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
-        }
-        // , { size: 1000, query: { del: false } }
-        this.$http
-            .get('/package/allList')
-            .then(res => {
-                if (res.length > 0) {
-                    res.forEach(item => {
-                        this.packageIdOptions.push({
-                            label: item.name,
-                            value: item.id
-                        });
-                    });
-                }
-            })
-            .catch(e => {
-                console.log(e);
-                this.$message.error(e.error);
-            });
-    },
-    data() {
-        return {
-            saving: false,
-            formData: {},
-            rules: {},
-            packageIdOptions: []
-        };
-    },
-    methods: {
-        onSave() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let data = { ...this.formData };
-
-            this.saving = true;
-            this.$http
-                .post('/userPackagePeriod/save', data, { body: 'json' })
-                .then(res => {
-                    this.saving = false;
-                    this.$message.success('成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.saving = false;
-                    this.$message.error(e.error);
-                });
-        },
-        onDelete() {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/userPackagePeriod/del/${this.formData.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        console.log(e);
-                        this.$message.error(e.error);
-                    }
-                });
-        }
-    }
-};
-</script>
-<style lang="less" scoped></style>

+ 0 - 159
src/main/vue/src/views/UserPackagePeriodList.vue

@@ -1,159 +0,0 @@
-<template>
-    <div class="list-view">
-        <div class="filters-container">
-            <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
-            <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button>
-            <el-button @click="addRow" type="primary" icon="el-icon-plus" class="filter-item">添加 </el-button>
-            <el-button
-                @click="download"
-                type="primary"
-                icon="el-icon-download"
-                :loading="downloading"
-                class="filter-item"
-                >导出EXCEL
-            </el-button>
-        </div>
-        <el-table
-            :data="tableData"
-            row-key="id"
-            ref="table"
-            header-row-class-name="table-header-row"
-            header-cell-class-name="table-header-cell"
-            row-class-name="table-row"
-            cell-class-name="table-cell"
-            :height="tableHeight"
-        >
-            <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>
-            <el-table-column prop="userId" label="用户id"> </el-table-column>
-            <el-table-column prop="packageId" label="套餐id"> </el-table-column>
-            <el-table-column prop="useDate" label="使用日期"> </el-table-column>
-            <el-table-column prop="endDate" label="截止日期"> </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="150">
-                <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
-                </template>
-            </el-table-column>
-        </el-table>
-        <div class="pagination-wrapper">
-            <!-- <div class="multiple-mode-wrapper">
-                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
-                <el-button-group v-else>
-                    <el-button @click="operation1">批量操作1</el-button>
-                    <el-button @click="operation2">批量操作2</el-button>
-                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
-                </el-button-group>
-            </div> -->
-            <el-pagination
-                background
-                @size-change="onSizeChange"
-                @current-change="onCurrentChange"
-                :current-page="page"
-                :page-sizes="[10, 20, 30, 40, 50]"
-                :page-size="pageSize"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="totalElements"
-            >
-            </el-pagination>
-        </div>
-    </div>
-</template>
-<script>
-import { mapState } from 'vuex';
-import pageableTable from '@/mixins/pageableTable';
-
-export default {
-    name: 'UserPackagePeriodList',
-    mixins: [pageableTable],
-    data() {
-        return {
-            multipleMode: false,
-            search: '',
-            url: '/userPackagePeriod/all',
-            downloading: false
-        };
-    },
-    computed: {
-        selection() {
-            return this.$refs.table.selection.map(i => i.id);
-        }
-    },
-    methods: {
-        beforeGetData() {
-            return { search: this.search };
-        },
-        toggleMultipleMode(multipleMode) {
-            this.multipleMode = multipleMode;
-            if (!multipleMode) {
-                this.$refs.table.clearSelection();
-            }
-        },
-        addRow() {
-            this.$router.push({
-                path: '/userPackagePeriodEdit',
-                query: {
-                    ...this.$route.query
-                }
-            });
-        },
-        editRow(row) {
-            this.$router.push({
-                path: '/userPackagePeriodEdit',
-                query: {
-                    id: row.id
-                }
-            });
-        },
-        download() {
-            this.downloading = true;
-            this.$axios
-                .get('/userPackagePeriod/excel', {
-                    responseType: 'blob',
-                    params: { size: 10000 }
-                })
-                .then(res => {
-                    console.log(res);
-                    this.downloading = false;
-                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
-                    const link = document.createElement('a');
-                    link.href = downloadUrl;
-                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
-                    document.body.appendChild(link);
-                    link.click();
-                    link.remove();
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.downloading = false;
-                    this.$message.error(e.error);
-                });
-        },
-        operation1() {
-            this.$notify({
-                title: '提示',
-                message: this.selection
-            });
-        },
-        operation2() {
-            this.$message('操作2');
-        },
-        deleteRow(row) {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/userPackagePeriod/del/${row.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
-        }
-    }
-};
-</script>
-<style lang="less" scoped></style>