Browse Source

管理后台铸造

licailing 3 years ago
parent
commit
0ae125d56c

+ 2 - 0
src/main/java/com/izouma/nineth/domain/MintOrder.java

@@ -76,4 +76,6 @@ public class MintOrder extends BaseEntity {
     @ApiModelProperty("空投/实物")
     private boolean airDrop;
 
+    @ApiModelProperty("快递单号")
+    private String courierId;
 }

+ 18 - 0
src/main/java/com/izouma/nineth/service/MintOrderService.java

@@ -106,12 +106,30 @@ public class MintOrderService {
 
     }
 
+    /**
+     * 订单
+     *
+     * @param id 编号
+     */
     public void finish(Long id) {
         MintOrder mintOrder = mintOrderRepo.findById(id).orElseThrow(new BusinessException("铸造订单不存在"));
         mintOrder.setStatus(MintOrderStatus.FINISH);
         mintOrderRepo.save(mintOrder);
     }
 
+    /**
+     * 发货
+     *
+     * @param id        编号
+     * @param courierId 快递单号
+     */
+    public void dispatch(Long id, String courierId) {
+        MintOrder mintOrder = mintOrderRepo.findById(id).orElseThrow(new BusinessException("铸造订单不存在"));
+        mintOrder.setStatus(MintOrderStatus.RECEIVE);
+        mintOrder.setCourierId(courierId);
+        mintOrderRepo.save(mintOrder);
+    }
+
 
     /**
      * @param user           用户

+ 15 - 1
src/main/java/com/izouma/nineth/web/MintOrderController.java

@@ -21,6 +21,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -60,7 +61,13 @@ public class MintOrderController extends BaseController {
 
     @GetMapping("/get/{id}")
     public MintOrder get(@PathVariable Long id) {
-        return mintOrderRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        MintOrder mintOrder = mintOrderRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        if (!Objects.isNull(mintOrder.getMintActivityId())) {
+            MintActivity activity = mintActivityRepo.findByIdAndDelFalse(mintOrder.getMintActivityId())
+                    .orElseThrow(new BusinessException("无铸造活动"));
+            mintOrder.setMintActivity(activity.getName());
+        }
+        return mintOrder;
     }
 
     @PostMapping("/del/{id}")
@@ -89,9 +96,16 @@ public class MintOrderController extends BaseController {
         ExcelUtils.export(response, data);
     }
 
+    @ApiOperation("订单完成")
     @GetMapping("/finish/{id}")
     public void finish(@PathVariable Long id) {
         mintOrderService.finish(id);
     }
+
+    @ApiOperation("订单发货")
+    @GetMapping("/delivery")
+    public void delivery(@RequestParam Long id, @RequestParam String courierId) {
+        mintOrderService.dispatch(id, courierId);
+    }
 }
 

+ 32 - 22
src/main/vue/src/views/MintActivityEdit.vue

@@ -17,10 +17,10 @@
                     style="max-width: 600px"
                 >
                     <el-form-item prop="name" label="活动名称">
-                        <el-input v-model="formData.name"></el-input>
+                        <el-input v-model="formData.name" class="width"></el-input>
                     </el-form-item>
                     <el-form-item prop="minterId" label="铸造者">
-                        <minter-select v-model="formData.minterId" @detail="onMinterDetail"></minter-select>
+                        <minter-select v-model="formData.minterId" @detail="onMinterDetail" class="width"></minter-select>
                     </el-form-item>
                     <el-form-item prop="cover" label="封面">
                         <single-upload v-model="formData.cover"></single-upload>
@@ -29,27 +29,26 @@
                         <rich-text v-model="formData.detail"></rich-text>
                     </el-form-item>
                     <el-form-item prop="collectionName" label="藏品名称">
-                        <el-input v-model="formData.collectionName" :disabled="!canEdit"></el-input>
+                        <el-input v-model="formData.collectionName" :disabled="!canEdit" class="width"></el-input>
                     </el-form-item>
-                    <div class="inline-wrapper">
-                        <el-form-item prop="num" label="藏品数量">
-                            <el-input-number type="number" v-model="formData.num" :disabled="!canEdit"></el-input-number>
-                        </el-form-item>
-                        <el-form-item prop="total" label="发行数量">
-                            <el-input-number type="number" v-model="formData.total" :disabled="!canEdit"></el-input-number>
-                        </el-form-item>
-                    </div>
-                    <div class="inline-wrapper">
-                        <el-form-item prop="consume" label="是否消耗藏品">
-                            <el-radio-group v-model="formData.consume" :disabled="!canEdit">
-                                <el-radio :label="true">是</el-radio>
-                                <el-radio :label="false">否</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item prop="gasPrice" label="铸造gas费">
-                            <el-input-number v-model="formData.gasPrice" :disabled="!canEdit"></el-input-number>
-                        </el-form-item>
-                    </div>
+                    <el-form-item prop="num" label="藏品数量">
+                        <el-input-number type="number" v-model="formData.num" :disabled="!canEdit" :step="1" :min="0" class="width1"></el-input-number>
+                        <div class="tip">0表示不限</div>
+                    </el-form-item>
+                    <el-form-item prop="consume" label="是否消耗藏品">
+                        <el-radio-group v-model="formData.consume" :disabled="!canEdit">
+                            <el-radio :label="true">是</el-radio>
+                            <el-radio :label="false">否</el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+                    <!-- <div class="inline-wrapper"> -->
+                    <el-form-item prop="total" label="发行数量">
+                        <el-input-number type="number" v-model="formData.total" :disabled="!canEdit" :step="1" :min="0" class="width1"></el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="gasPrice" label="铸造gas费">
+                        <el-input-number v-model="formData.gasPrice" :disabled="!canEdit" :min="0" class="width1"></el-input-number>
+                    </el-form-item>
+                    <!-- </div> -->
                     <el-form-item prop="airDrop" label="类型">
                         <el-radio v-model="formData.airDrop" :label="true" :disabled="!canEdit">空投铸造</el-radio>
                         <el-radio v-model="formData.airDrop" :label="false" :disabled="!canEdit">实物铸造</el-radio>
@@ -225,4 +224,15 @@ export default {
         width: 270px;
     }
 }
+.tip {
+    font-size: 12px;
+    color: @text3;
+    margin-top: 5px;
+}
+.width {
+    width: 300px;
+}
+.width1 {
+    width: 150px;
+}
 </style>

+ 24 - 18
src/main/vue/src/views/MintOrderEdit.vue

@@ -20,13 +20,12 @@
                         <el-input-number type="number" v-model="formData.userId" disabled></el-input-number>
                     </el-form-item>
                     <el-form-item prop="phone" label="手机号">
-                        <el-input v-model="formData.phone" disabled></el-input>
+                        <el-input v-model="formData.phone" disabled style="width: 180px"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="mintActivity" label="铸造活动">
+                        <el-input v-model="formData.mintActivity" disabled></el-input>
                     </el-form-item>
-                    <!-- <el-form-item prop="mintActivityId" label="mintActivityId">
-                        <el-input-number type="number" v-model="formData.mintActivityId"></el-input-number>
-                    </el-form-item> -->
                     <el-form-item prop="material" label="铸造材料">
-                        <!-- <el-input v-model="formData.material"></el-input> -->
                         <div v-for="item in formData.material" :key="item" style="margin-bottom: 6px">
                             <el-input
                                 v-model="item.collectionId"
@@ -42,19 +41,24 @@
                             <el-radio :label="false">否</el-radio>
                         </el-radio-group>
                     </el-form-item>
-                    <!-- <el-form-item prop="contactName" label="收货人">
-                        <el-input v-model="formData.contactName"></el-input>
+                    <el-form-item prop="gasPrice" label="gas费">
+                        <el-input-number type="number" v-model="formData.gasPrice"></el-input-number>
                     </el-form-item>
-                    <el-form-item prop="contactPhone" label="收货电话">
-                        <el-input v-model="formData.contactPhone"></el-input>
+                    <el-form-item label="收货信息">
+                        <el-input v-model="formData.contactName" style="width: 180px; margin-right: 6px"></el-input>
+                        <el-input v-model="formData.contactPhone" style="width: 240px"></el-input>
+                        <el-input v-model="formData.address" style="margin-top: 6px"></el-input>
                     </el-form-item>
-                    <el-form-item prop="address" label="收货地址">
-                        <el-input v-model="formData.address"></el-input>
+                    <el-form-item prop="cancelTime" label="取消时间">
+                        <el-date-picker
+                            v-model="formData.cancelTime"
+                            type="datetime"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            placeholder="选择日期时间"
+                        >
+                        </el-date-picker>
                     </el-form-item>
-                    <el-form-item prop="gasPrice" label="gas费">
-                        <el-input-number type="number" v-model="formData.gasPrice"></el-input-number>
-                    </el-form-item> -->
-                    <!-- <el-form-item prop="payMethod" label="支付方式">
+                    <el-form-item prop="payMethod" label="支付方式">
                         <el-select v-model="formData.payMethod" clearable filterable placeholder="请选择">
                             <el-option
                                 v-for="item in payMethodOptions"
@@ -64,16 +68,18 @@
                             >
                             </el-option>
                         </el-select>
-                    </el-form-item>
-                    <el-form-item prop="payAt" label="支付时间">
+                    <!-- </el-form-item>
+                    <el-form-item prop="payAt" label="支付时间"> -->
                         <el-date-picker
                             v-model="formData.payAt"
                             type="datetime"
                             value-format="yyyy-MM-dd HH:mm:ss"
                             placeholder="选择日期时间"
+                            style="margin-left: 6px"
                         >
                         </el-date-picker>
-                    </el-form-item> -->
+                    </el-form-item>
+
                     <el-form-item prop="status" label="状态">
                         <el-select v-model="formData.status" clearable filterable placeholder="请选择">
                             <el-option

+ 38 - 14
src/main/vue/src/views/MintOrderList.vue

@@ -44,11 +44,11 @@
             v-loading="fetchingData"
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
-            <el-table-column prop="id" label="订单编号" width="100"> </el-table-column>
-            <el-table-column prop="userId" label="用户ID"> </el-table-column>
-            <el-table-column prop="phone" label="手机号"> </el-table-column>
-            <el-table-column prop="mintActivityId" label="铸造活动ID"> </el-table-column>
-            <el-table-column prop="mintActivity" label="活动名称"></el-table-column>
+            <el-table-column prop="id" label="订单编号" width="80"> </el-table-column>
+            <el-table-column prop="userId" label="用户ID" min-width="80"> </el-table-column>
+            <el-table-column prop="phone" label="手机号" min-width="90"> </el-table-column>
+            <el-table-column prop="mintActivityId" label="铸造活动ID" min-width="80"> </el-table-column>
+            <el-table-column prop="mintActivity" label="活动名称" min-width="120"></el-table-column>
             <!-- <el-table-column prop="createdAt" label="铸造时间" min-width="120"> </el-table-column> -->
             <el-table-column prop="material" label="铸造材料详情" min-width="120">
                 <template slot-scope="{ row }">
@@ -61,7 +61,7 @@
                     <el-tag type="info" v-else>否</el-tag>
                 </template>
             </el-table-column> -->
-            <el-table-column label="收件人信息">
+            <el-table-column label="收件人信息" min-width="120" show-overflow-tooltip>
                 <template slot-scope="{ row }">
                     <span>{{ row.contactName }}</span>
                     <span style="margin-left: 10px">{{ row.contactPhone }}</span
@@ -69,20 +69,23 @@
                     <span>{{ row.address }}</span>
                 </template>
             </el-table-column>
-            <el-table-column prop="payAt" label="支付时间"></el-table-column>
+            <el-table-column prop="payAt" label="支付时间" min-width="120" show-overflow-tooltip></el-table-column>
             <!-- <el-table-column prop="payMethod" label="支付方式" :formatter="payMethodFormatter"> </el-table-column>
-            <el-table-column prop="payAt" label="支付时间"> </el-table-column>
-            <el-table-column prop="contactName" label="收货人"> </el-table-column>
-            <el-table-column prop="contactPhone" label="收货电话"> </el-table-column>
-            <el-table-column prop="address" label="收货地址"> </el-table-column>
             <el-table-column prop="gasPrice" label="gas费"> </el-table-column> -->
             <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
-            <el-table-column label="操作" align="right" fixed="right" width="160">
+            <el-table-column label="操作" align="left" fixed="right" width="160">
                 <template slot-scope="{ row }">
-                    <el-button @click="finish(row)" type="warning" size="mini" plain v-if="row.status == 'AIR_DROP'"
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
+                    <el-button @click="finish(row)" type="success" size="mini" plain v-if="row.status == 'AIR_DROP'"
                         >已空投</el-button
                     >
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看</el-button>
+                    <el-button @click="delivery(row)" type="warning" size="mini" plain v-if="row.status == 'DELIVERY'"
+                        >已发货</el-button
+                    >
+                    <el-button @click="finish(row)" type="success" size="mini" plain v-if="row.status == 'RECEIVE'"
+                        >已收货</el-button
+                    >
+                    
                     <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
                 </template>
             </el-table-column>
@@ -246,6 +249,27 @@ export default {
                         console.log(e.error);
                     }
                 });
+        },
+        delivery(row) {
+            this.$prompt('请输入快递单号', '快递单号', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消'
+            })
+                .then(({ value }) => {
+                    return this.$http.get('/mintOrder/delivery', {
+                        id: row.id,
+                        courierId: value
+                    });
+                })
+                .then(() => {
+                    this.getData();
+                })
+                .catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '取消输入'
+                    });
+                });
         }
     }
 };