From 82203a196fa700adfc379b2b453b2266266c940c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 15 一月 2026 18:14:25 +0800
Subject: [PATCH] 经销商管理

---
 admin/src/views/system/permission.vue                                                             |    4 
 admin/src/components/business/OperaShopLabelsWindow.vue                                           |    8 
 admin/src/views/system/dict.vue                                                                   |    4 
 admin/src/components/business/OperaMemberCouponWindow.vue                                         |   43 +-
 admin/src/views/business/integralGoods.vue                                                        |   10 
 admin/src/views/system/menu.vue                                                                   |    6 
 admin/src/components/business/OperaArticleWindow.vue                                              |    4 
 admin/src/views/business/hotCity.vue                                                              |    6 
 admin/src/components/business/OperaBannerWindow.vue                                               |    2 
 admin/src/views/business/visiteStore.vue                                                          |    8 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java       |   74 +++-
 admin/src/views/business/labelsYunFee.vue                                                         |  115 ++++++++
 admin/src/components/business/OperaLabelsWindow.vue                                               |    2 
 admin/src/views/business/labelsExpress.vue                                                        |  108 +++++++
 admin/src/components/business/OperaAreasWindow.vue                                                |    2 
 server/dmmall_admin/src/main/java/com/doumee/api/business/LabelsController.java                   |    3 
 admin/src/components/business/OperaLabelsAreaWindow.vue                                           |    4 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java                      |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java |   16 
 admin/src/components/business/OperaLabelExpressWindow.vue                                         |   62 ++++
 admin/src/views/business/banner.vue                                                               |    6 
 admin/src/views/business/creation.vue                                                             |   10 
 server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java    |    4 
 admin/src/views/business/labels.vue                                                               |    2 
 admin/src/views/business/information.vue                                                          |    8 
 admin/src/views/business/shopLabels.vue                                                           |    8 
 admin/src/views/system/role.vue                                                                   |    4 
 admin/src/views/business/notice.vue                                                               |    4 
 admin/src/views/business/bannerZhuanqu.vue                                                        |    1 
 admin/src/components/base/BaseOpera.vue                                                           |    4 
 admin/src/views/business/labelsArea.vue                                                           |    4 
 admin/src/views/business/coupon.vue                                                               |    2 
 admin/src/views/business/goodsLabels.vue                                                          |    4 
 admin/src/components/business/OperaBannerZhuanquWindow.vue                                        |    2 
 admin/src/views/system/position.vue                                                               |    4 
 admin/src/components/business/OperaHotCityWindow.vue                                              |    2 
 admin/src/components/business/OperaArticleLabelsWindow.vue                                        |    2 
 admin/src/views/business/article.vue                                                              |    4 
 admin/src/views/system/data-permission.vue                                                        |    6 
 admin/src/components/business/OperaGoodsBrandWindow.vue                                           |    2 
 admin/src/views/system/user.vue                                                                   |    4 
 admin/src/views/business/areas.vue                                                                |    2 
 admin/src/views/business/goodsBrand.vue                                                           |    4 
 server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java                          |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java               |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Labels.java                     |    3 
 admin/src/components/business/OperaLabelsFeeAreaWindow.vue                                        |  202 ++++++++++++++
 admin/src/views/system/department.vue                                                             |    4 
 admin/src/views/business/goodsSku.vue                                                             |    4 
 admin/src/views/business/articleLabels.vue                                                        |   10 
 admin/src/views/business/orgs.vue                                                                 |    2 
 admin/src/components/business/OperaGoodsLabelsWindow.vue                                          |    2 
 admin/src/components/system/dict/DictDataManagerWindow.vue                                        |    4 
 admin/src/views/business/activity.vue                                                             |    4 
 admin/src/views/business/planGoods.vue                                                            |    2 
 55 files changed, 678 insertions(+), 141 deletions(-)

diff --git a/admin/src/components/base/BaseOpera.vue b/admin/src/components/base/BaseOpera.vue
index 70681bd..d05c144 100644
--- a/admin/src/components/base/BaseOpera.vue
+++ b/admin/src/components/base/BaseOpera.vue
@@ -66,9 +66,9 @@
         // 璋冪敤鏂板缓鎺ュ彛
         this.isWorking = true
         this.api.create(this.form)
-          .then(() => {
+          .then((res) => {
             this.visible = false
-            this.$tip.apiSuccess('鏂板缓鎴愬姛')
+            this.$tip.apiSuccess(res  || '鏂板缓鎴愬姛')
             this.$emit('success')
           })
           .catch(e => {
diff --git a/admin/src/components/business/OperaAreasWindow.vue b/admin/src/components/business/OperaAreasWindow.vue
index ff39faf..dc60d2b 100644
--- a/admin/src/components/business/OperaAreasWindow.vue
+++ b/admin/src/components/business/OperaAreasWindow.vue
@@ -10,7 +10,7 @@
         <el-input v-model="form.name" :placeholder="form.type==0?'杈撳叆甯傚悕绉�':'杈撳叆鍘垮尯鍚嶇О'" v-trim/>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaArticleLabelsWindow.vue b/admin/src/components/business/OperaArticleLabelsWindow.vue
index 0d9a8b9..aef454a 100644
--- a/admin/src/components/business/OperaArticleLabelsWindow.vue
+++ b/admin/src/components/business/OperaArticleLabelsWindow.vue
@@ -30,7 +30,7 @@
         />
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaArticleWindow.vue b/admin/src/components/business/OperaArticleWindow.vue
index 95b427e..4bd1fe2 100644
--- a/admin/src/components/business/OperaArticleWindow.vue
+++ b/admin/src/components/business/OperaArticleWindow.vue
@@ -20,7 +20,7 @@
           <el-option v-for="item in labels()" :key="item.id" :value="item.id" :label="item.name" />
         </el-select>
       </el-form-item>
-      
+
       <el-form-item label="鑳屾櫙鍥�" prop="imgurlfull">
         <UploadAvatarImage
           :file="{ 'imgurlfull': form.imgFullUrl, 'imgurl': form.imgurl }"
@@ -34,7 +34,7 @@
         <RichEditor :content="{ content : form.content}"  @edit="form.content=$event" />
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalWindow>
diff --git a/admin/src/components/business/OperaBannerWindow.vue b/admin/src/components/business/OperaBannerWindow.vue
index 6950c7d..261d6ba 100644
--- a/admin/src/components/business/OperaBannerWindow.vue
+++ b/admin/src/components/business/OperaBannerWindow.vue
@@ -111,7 +111,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaBannerZhuanquWindow.vue b/admin/src/components/business/OperaBannerZhuanquWindow.vue
index a607185..8ea0a8d 100644
--- a/admin/src/components/business/OperaBannerZhuanquWindow.vue
+++ b/admin/src/components/business/OperaBannerZhuanquWindow.vue
@@ -52,7 +52,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaGoodsBrandWindow.vue b/admin/src/components/business/OperaGoodsBrandWindow.vue
index e157910..fa1bdc5 100644
--- a/admin/src/components/business/OperaGoodsBrandWindow.vue
+++ b/admin/src/components/business/OperaGoodsBrandWindow.vue
@@ -27,7 +27,7 @@
         </el-select>
       </el-form-item>-->
       <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
 
     </el-form>
diff --git a/admin/src/components/business/OperaGoodsLabelsWindow.vue b/admin/src/components/business/OperaGoodsLabelsWindow.vue
index 6f27a32..8a40330 100644
--- a/admin/src/components/business/OperaGoodsLabelsWindow.vue
+++ b/admin/src/components/business/OperaGoodsLabelsWindow.vue
@@ -28,7 +28,7 @@
         </el-select>
       </el-form-item>-->
       <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
 
     </el-form>
diff --git a/admin/src/components/business/OperaHotCityWindow.vue b/admin/src/components/business/OperaHotCityWindow.vue
index ad63c9d..081708a 100644
--- a/admin/src/components/business/OperaHotCityWindow.vue
+++ b/admin/src/components/business/OperaHotCityWindow.vue
@@ -28,7 +28,7 @@
           </div>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜锛堝崌搴忥級" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜锛堝崌搴忥級" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaLabelExpressWindow.vue b/admin/src/components/business/OperaLabelExpressWindow.vue
new file mode 100644
index 0000000..7c7913b
--- /dev/null
+++ b/admin/src/components/business/OperaLabelExpressWindow.vue
@@ -0,0 +1,62 @@
+<template>
+  <GlobalAlertWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules" label-width="110px" label-suffix="锛�" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+        <el-input v-model="form.sortnum" type="number" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+
+    </el-form>
+  </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+export default {
+  name: 'OperaLabelExpressWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        module: 0,
+        type: 17,
+        sortnum: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', tigger: 'blur' }
+        ]
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/labels',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/alertstyle.scss";
+::v-deep .el-select {
+  width: 100%;
+  .el-input__inner {
+    width: 100%;
+  }
+}
+</style>
diff --git a/admin/src/components/business/OperaLabelsAreaWindow.vue b/admin/src/components/business/OperaLabelsAreaWindow.vue
index 3b1ebe7..5546010 100644
--- a/admin/src/components/business/OperaLabelsAreaWindow.vue
+++ b/admin/src/components/business/OperaLabelsAreaWindow.vue
@@ -8,7 +8,7 @@
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�"  inline>
       <el-form-item label="鍖哄煙鍚嶇О" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" :maxlength="5" v-trim/>
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�"  v-trim/>
       </el-form-item>
       <el-form-item label="閫夋嫨鐪佷唤" prop="name">
         <el-select v-model="form.areaIdList" placeholder="璇烽�夋嫨鐪佷唤" multiple filterable>
@@ -21,7 +21,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaLabelsFeeAreaWindow.vue b/admin/src/components/business/OperaLabelsFeeAreaWindow.vue
new file mode 100644
index 0000000..33eccef
--- /dev/null
+++ b/admin/src/components/business/OperaLabelsFeeAreaWindow.vue
@@ -0,0 +1,202 @@
+<template>
+  <GlobalWindow
+    v-loading="isUploading"
+    :title="title"
+    width="70%"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�"  inline>
+      <el-form-item label="瑙勫垯鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ鍒欏悕绉�"  v-trim/>
+      </el-form-item>
+      <el-form-item label="閫夋嫨鐪佷唤" prop="name">
+        <el-select v-model="form.areaIdList" placeholder="璇烽�夋嫨鐪佷唤" multiple filterable>
+          <el-option
+              v-for="item in province"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <div style="display: flex">
+        <el-form-item label="棣栭噸" prop="weight0" style="display: inline-block;flex: 1;">
+          <el-input  v-model="form.weight0"    style="width: 150px" placeholder="璇疯緭鍏ラ閲�"    type="number">    <template slot="append" >kg</template>  </el-input>
+        </el-form-item>
+        <el-form-item label="棣栭噸杩愯垂" prop="fee0" style="display: inline-block;flex: 1;">
+          <el-input  v-model="form.fee0"  style="width: 150px"    placeholder="璇疯緭鍏ラ噾棰�"  > <template slot="append" >鍏�</template> </el-input>
+        </el-form-item>
+      </div>
+      <div style="display: flex">
+      <el-form-item label="缁噸" prop="weight1" style="display: inline-block;flex:1">
+        <el-input  v-model="form.weight1" style="width: 150px"    placeholder="璇疯緭鍏ョ画閲�"    type="number">    <template slot="append" >kg</template>  </el-input>
+      </el-form-item>
+      <el-form-item label="缁噸杩愯垂澧炲姞" prop="fee1" style="display: inline-block;flex: 1;">
+        <el-input  v-model="form.fee1" style="width: 150px"    placeholder="璇疯緭鍏ラ噾棰�"  > <template slot="append" >鍏�</template> </el-input>
+      </el-form-item>
+    </div>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { listByParentId } from '@/api/business/areas'
+
+export default {
+  name: 'OperaLabelsFeeAreaWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      isUploading: false,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        info: '',
+        type: 16,
+        module: 0,
+        sortnum: '',
+        weight0: null,
+        fee0: null,
+        weight1: null,
+        fee1: null,
+        areaIdList: [],
+        areaList: []
+      },
+      province: [],
+      // 楠岃瘉瑙勫垯
+      rules: {
+        areaIdList: [
+          { required: true, message: '璇烽�夋嫨鐪佷唤淇℃伅' }
+        ],
+        weight0: [
+          { required: true, message: '璇疯緭鍏ラ閲�' }
+        ],
+        fee0: [
+          { required: true, message: '璇疯緭鍏ラ噾棰�' }
+        ],
+        weight1: [
+          { required: true, message: '璇疯緭鍏ョ画閲�' }
+        ],
+        fee1: [
+          { required: true, message: '璇疯緭鍏ラ噾棰�' }
+        ],
+        name: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�' }
+        ]
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/labels',
+      'field.id': 'id'
+    })
+    listByParentId({ type: 0, parentId: '' })
+      .then(data => {
+        this.province = data
+      })
+  },
+  methods: {
+    confirm () {
+      this.form.param = JSON.stringify({
+        weight0: this.form.weight0,
+        fee0: this.form.fee0,
+        weight1: this.form.weight1,
+        fee1: this.form.fee1
+      })
+      if (this.form.id == null || this.form.id === '') {
+        this.__confirmCreate()
+        return
+      }
+      this.__confirmEdit()
+    },
+    open (title, target) {
+      var that = this
+      this.title = title
+      this.visible = true
+      // this.isEdit = false
+      this.form.areaList = []
+      this.form.areaIdList = []
+      this.form.paramObj = { weight0: null, fee0: null, weight1: null, fee1: null }
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        this.isEdit = true
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        that.form.areaIdList = []
+        var t = JSON.parse(target.param)
+        if (t) {
+          that.form.weight0 = parseFloat(t.weight0 || 0)
+          that.form.fee0 = parseFloat(t.fee0 || 0)
+          that.form.weight1 = parseFloat(t.weight1 || 0)
+          that.form.fee1 = parseFloat(t.fee1 || 0)
+        }
+        if (this.form.areaList && this.form.areaList.length) {
+          this.form.areaList.forEach(item => {
+            that.form.areaIdList.push(item.id)
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/alertstyle.scss";
+$image-width: 100px;
+
+::v-deep .el-select {
+    width: 100%;
+    .el-input__inner {
+      width: 100%;
+    }
+  }
+.avatar-uploader {
+  width: $image-width;
+  height: $image-width;
+}
+::v-deep .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  width: $image-width;
+  height: $image-width;
+  overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409EFF;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: $image-width;
+  height: $image-width;
+  line-height: $image-width;
+  text-align: center;
+}
+.avatar {
+  width: $image-width;
+  height: $image-width;
+  display: block;
+}
+</style>
diff --git a/admin/src/components/business/OperaLabelsWindow.vue b/admin/src/components/business/OperaLabelsWindow.vue
index 3679268..6ce3e95 100644
--- a/admin/src/components/business/OperaLabelsWindow.vue
+++ b/admin/src/components/business/OperaLabelsWindow.vue
@@ -29,7 +29,7 @@
         />
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
diff --git a/admin/src/components/business/OperaMemberCouponWindow.vue b/admin/src/components/business/OperaMemberCouponWindow.vue
index e290ef9..3999607 100644
--- a/admin/src/components/business/OperaMemberCouponWindow.vue
+++ b/admin/src/components/business/OperaMemberCouponWindow.vue
@@ -7,14 +7,15 @@
       @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�" inline>
-      <el-form-item label="鍙戞斁瀵硅薄" prop="applyType">
-        <el-radio-group v-model="form.addType">
+      <el-form-item label="鍙戞斁瀵硅薄" prop="addType" >
+        <el-radio-group v-model="form.addType" @change="changeType">
           <el-radio :label="0">鎸囧畾浼氬憳</el-radio>
           <el-radio :label="1">鎸囧畾鎵嬫満鍙�</el-radio>
           <el-radio :label="2">鍏ㄩ儴浼氬憳</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item v-if="form.addType===0" label="閫夋嫨鐢ㄦ埛" prop="addMemberIds" >
+      <div  v-if="form.addType===0" id="bbb">
+      <el-form-item label="閫夋嫨鐢ㄦ埛" prop="addMemberIds" >
           <el-select  v-model="form.addMemberIds" placeholder="璇疯緭鍏ヤ細鍛樻樀绉�/鎵嬫満鍙凤紝鍐嶉�夋嫨" clearable     filterable    remote  reserve-keyword    :remote-method="remoteMethod"
               :loading="searchLoading"
                       style="width: 400px;"
@@ -27,16 +28,19 @@
             </el-option>
           </el-select>
       </el-form-item>
-      <el-form-item v-if="form.addType===1" label="鎸囧畾鎵嬫満鍙�" prop="addMemberPhones" >
+      </div>
+      <div  v-if="form.addType===1" id="aaaa">
+      <el-form-item  label="鎵� 鏈� 鍙�" prop="addMemberPhones" >
         <el-input  style="width: 400px;"  type="textarea"   v-model="form.addMemberPhones"   placeholder="璇疯緭鍏ユ墜鏈哄彿"   v-trim/>
-        <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>鎻愰啋锛氬涓墜鏈哄彿锛岃鎹㈣杈撳叆</p>
+        <p class="tip-warn" style="margin-bottom: 2px;"><i class="el-icon-warning"></i>鎻愰啋锛氬涓墜鏈哄彿锛岃鎹㈣杈撳叆</p>
       </el-form-item>
-      <el-form-item label="鍙戞斁鍐呭" prop="num">
+      </div>
+      <el-form-item label="鍙戞斁鍐呭" prop="addCouponList" style="margin-top: 20px" >
         <div  style="border: 1px solid #f2f2f2">
           <el-table style="width: 600px;"  :data="form.addCouponList">
             <el-table-column prop="name" label="浼樻儬鍒�" min-width="300px" align="center">
               <template slot-scope="{row}" >
-                <el-select v-model="row.couponId" style="width: 200px;margin: 0px 20px" clearable filterable   placeholder="璇烽�夋嫨浼樻儬鍒�"  >
+                <el-select v-model="row.id" style="width: 200px;margin: 0px 20px" clearable filterable   placeholder="璇烽�夋嫨浼樻儬鍒�"  >
                   <el-option v-for="item in couponList"   :label="item.name"  :value="item.id">  </el-option>
                 </el-select>
               </template>
@@ -56,20 +60,18 @@
         </div>
       </el-form-item>
     </el-form>
-    <OperaCouponGoodsWindow ref="OperaCouponGoodsWindow" @success="doSelect"/>
   </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
-import OperaCouponGoodsWindow from '@/components/business/OperaCouponGoodsWindow'
 import { allList } from '@/api/business/coupon'
-import { findAll, findAll as memberlist } from '@/api/business/member'
+import { findAll as memberlist } from '@/api/business/member'
 export default {
   name: 'OperaCouponWindow',
   extends: BaseOpera,
-  components: { GlobalWindow, OperaCouponGoodsWindow },
+  components: { GlobalWindow },
   data () {
     const couponRules = (rule, value, callback) => {
       if (!this.form.addCouponList || !this.form.addCouponList.length) {
@@ -106,6 +108,12 @@
         addType: [
           { required: true, message: '璇烽�夋嫨鍙戞斁瀵硅薄' }
         ],
+        addMemberIds: [
+          { required: true, message: '璇烽�変腑浜哄憳淇℃伅' }
+        ],
+        addMemberPhones: [
+          { required: true, message: '璇锋寚瀹氫汉鍛樻墜鏈哄彿' }
+        ],
         addCouponList: [
           { required: true, validator: couponRules, tigger: 'blur' }
         ]
@@ -119,10 +127,13 @@
     })
   },
   methods: {
+    changeType(t){
+      this.$refs.form.validate()
+    },
     remoteMethod (query) {
       if (query !== '') {
         this.searchLoading = true
-        findAll({
+        memberlist({
           capacity: 999,
           model: {
             nickname: query,
@@ -138,7 +149,7 @@
       }
     },
     getCouponList () {
-      allList({status:0})
+      allList({ status: 0 })
         .then(res => {
           if (res) {
             this.couponList = res || []
@@ -154,10 +165,10 @@
     open (title, target, type) {
       this.title = title
       this.visible = true
-      this.form.addMemberIds=null
-      this.form.addMemberPhones=null
+      this.form.addMemberIds = null
+      this.form.addMemberPhones = null
       this.form.addType = 0
-      this.form.addCouponList = [{id:null,num:null}]
+      this.form.addCouponList = [{ id: null, num: null }]
       this.getCouponList()
     }
   }
diff --git a/admin/src/components/business/OperaShopLabelsWindow.vue b/admin/src/components/business/OperaShopLabelsWindow.vue
index d6568fd..cdf6a79 100644
--- a/admin/src/components/business/OperaShopLabelsWindow.vue
+++ b/admin/src/components/business/OperaShopLabelsWindow.vue
@@ -7,12 +7,12 @@
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�"  inline>
-      
+
       <el-form-item label="鍒嗙被鍚嶇О" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" :maxlength="5" v-trim/>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalAlertWindow>
@@ -44,14 +44,14 @@
       }
     }
   },
-  
+
   created () {
     this.config({
       api: '/business/labels',
       'field.id': 'id'
     })
   }
-  
+
 }
 </script>
 
diff --git a/admin/src/components/system/dict/DictDataManagerWindow.vue b/admin/src/components/system/dict/DictDataManagerWindow.vue
index 5294594..d4fff36 100644
--- a/admin/src/components/system/dict/DictDataManagerWindow.vue
+++ b/admin/src/components/system/dict/DictDataManagerWindow.vue
@@ -10,7 +10,7 @@
       <template v-slot:table-wrap>
         <ul class="toolbar">
           <li><el-button type="primary" @click="$refs.operaDictDataWindow.open('鏂板缓瀛楀吀鏁版嵁', searchForm.dictId)" icon="el-icon-plus">鏂板缓</el-button></li>
-          <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete">鍒犻櫎</el-button></li>
+          <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete">鍒犻櫎</el-button></li>
         </ul>
         <el-table
             v-loading="isWorking.search"
@@ -48,7 +48,7 @@
           >
             <template slot-scope="{row}">
               <el-button type="text" @click="$refs.operaDictDataWindow.open('缂栬緫瀛楀吀鏁版嵁', searchForm.dictId, row)" icon="el-icon-edit">缂栬緫</el-button>
-              <el-button type="text" @click="deleteById(row)" icon="el-icon-delete">鍒犻櫎</el-button>
+              <el-button type="text" style="color: red;" @click="deleteById(row)" icon="el-icon-delete">鍒犻櫎</el-button>
             </template>
           </el-table-column>
         </el-table>
diff --git a/admin/src/views/business/activity.vue b/admin/src/views/business/activity.vue
index 9d202a1..46cceae 100644
--- a/admin/src/views/business/activity.vue
+++ b/admin/src/views/business/activity.vue
@@ -39,7 +39,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:activity:create', 'business:activity:delete']">
         <li><el-button type="primary" @click="$refs.operaActivityWindow.open('鏂板缓')" icon="el-icon-plus" v-permissions="['business:activity:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -89,7 +89,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaActivityWindow.open('缂栬緫', row)" icon="el-icon-edit" v-permissions="['business:activity:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/areas.vue b/admin/src/views/business/areas.vue
index a266422..c995c4a 100644
--- a/admin/src/views/business/areas.vue
+++ b/admin/src/views/business/areas.vue
@@ -33,7 +33,7 @@
           <template slot-scope="{ row }">
             <el-button type="text" @click="edit(row)" v-permissions="['business:areas:update']">缂栬緫</el-button>
             <el-button v-if="row.type!=2" type="text" @click="createChild(row)" v-permissions="['business:areas:create']">鏂板缓{{ row.type==0 ? '甯�' : '鍖哄幙' }}</el-button>
-            <el-button type="text" @click="deleteById(row)" v-permissions="['business:areas:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;" @click="deleteById(row)" v-permissions="['business:areas:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/article.vue b/admin/src/views/business/article.vue
index 8e2f6ce..b6e95c3 100644
--- a/admin/src/views/business/article.vue
+++ b/admin/src/views/business/article.vue
@@ -23,7 +23,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:article:create', 'business:article:delete']">
         <li><el-button type="primary" @click="$refs.operaArticleWindow.open('鏂板缓鍜栧暋鐧剧鏂囩珷淇�')" icon="el-icon-plus" v-permissions="['business:article:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:article:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:article:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -61,7 +61,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaArticleWindow.open('缂栬緫鍜栧暋鐧剧鏂囩珷', row)" icon="el-icon-edit" v-permissions="['business:article:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:article:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;"  @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:article:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/articleLabels.vue b/admin/src/views/business/articleLabels.vue
index 09a6a13..a668acd 100644
--- a/admin/src/views/business/articleLabels.vue
+++ b/admin/src/views/business/articleLabels.vue
@@ -14,7 +14,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:labels:create', 'business:labels:delete']">
         <li><el-button type="primary" @click="$refs.operaLabelsWindow.open('鏂板缓鏍囩淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:labels:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -35,7 +35,7 @@
               style="with:50px;height:50px;"
               :scr="row.imgFullurl"
               :preview-src-list="[row.imgFullurl]"
-              
+
             ></el-image>
             <!-- <el-image v-if="row.imgFullurl" :lazy="true" style="with:50px;height:50px;" scr="@/assets/logo.png" :preview-src-list="[row.imgurlfull]"></el-image> -->
           </template>
@@ -47,11 +47,11 @@
           label="鎿嶄綔"
           min-width="120"
           fixed="right"
-          align="center" 
+          align="center"
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaLabelsWindow.open('缂栬緫鏍囩淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:labels:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;"  @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -84,7 +84,7 @@
         type: '8',
       },
       type: [
-        // 0鍟嗗搧鍒嗙被 1鍟嗗搧鍝佺墝 2鍟嗗鏍囩 3蹇�� 4閫�璐ч�夐」 5鎹㈣揣閫夐」 6閫�娆鹃�夐」 
+        // 0鍟嗗搧鍒嗙被 1鍟嗗搧鍝佺墝 2鍟嗗鏍囩 3蹇�� 4閫�璐ч�夐」 5鎹㈣揣閫夐」 6閫�娆鹃�夐」
         // 7鍙栨秷璁㈠崟閫夐」 8鍜栧暋鐧剧鍒嗙被 9鍜ㄨ鍒嗙被 10娲诲姩璧涗簨鍒嗙被 11杈句汉鎺㈠簵鍒嗙被
         { label: '鍟嗗搧鍒嗙被', id: 0 },
         { label: '鍟嗗搧鍝佺墝', id: 1 },
diff --git a/admin/src/views/business/banner.vue b/admin/src/views/business/banner.vue
index 8a12fd9..672cc29 100644
--- a/admin/src/views/business/banner.vue
+++ b/admin/src/views/business/banner.vue
@@ -37,7 +37,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:banner:create', 'business:banner:delete']">
         <li><el-button type="primary" @click="$refs.operaBannerWindow.open('鏂板缓杞挱鍥�')" icon="el-icon-plus" v-permissions="['business:banner:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:banner:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:banner:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -80,7 +80,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaBannerWindow.open('缂栬緫杞挱鍥�', row)" icon="el-icon-edit" v-permissions="['business:banner:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:banner:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:banner:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -94,7 +94,7 @@
     <!-- 鏂板缓/淇敼 -->
     <OperaBannerWindow ref="operaBannerWindow" @success="handlePageChange"/>
     <ShowRich ref="showRich"/>
-    
+
   </TableLayout>
 </template>
 
diff --git a/admin/src/views/business/bannerZhuanqu.vue b/admin/src/views/business/bannerZhuanqu.vue
index bb08784..ff6fd92 100644
--- a/admin/src/views/business/bannerZhuanqu.vue
+++ b/admin/src/views/business/bannerZhuanqu.vue
@@ -37,6 +37,7 @@
             >缂栬緫</el-button>
             <el-button
               type="text"
+              style="color: red;"
               @click="deleteById(row)"
               v-permissions="['business:banner:delete']"
             >鍒犻櫎</el-button>
diff --git a/admin/src/views/business/coupon.vue b/admin/src/views/business/coupon.vue
index a3683dd..cc9f372 100644
--- a/admin/src/views/business/coupon.vue
+++ b/admin/src/views/business/coupon.vue
@@ -92,7 +92,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaCouponWindow.open('缂栬緫浼樻儬鍒�', row)" icon="el-icon-edit" v-permissions="['business:coupon:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:coupon:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:coupon:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/creation.vue b/admin/src/views/business/creation.vue
index fdadba3..1901c73 100644
--- a/admin/src/views/business/creation.vue
+++ b/admin/src/views/business/creation.vue
@@ -5,7 +5,7 @@
       <el-form-item label="鐢ㄦ埛" prop="nickname">
         <el-input v-model="searchForm.nickname" placeholder="璇疯緭鍏ユ樀绉�/鎵嬫満鍙�/濮撳悕" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      
+
       <el-form-item label="鐘舵��" prop="status">
         <el-select
           v-model="searchForm.status"
@@ -25,7 +25,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:creation:create', 'business:creation:delete']">
         <li><el-button type="primary" @click="$refs.operaCreationWindow.open('鏂板缓鍒涗綔鑰�')" icon="el-icon-plus" v-permissions="['business:creation:create']">鏂板缓鍒涗綔鑰�</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:creation:delete']">鍒犻櫎鍒涗綔鑰�</el-button></li>
+        <li><el-button type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:creation:delete']">鍒犻櫎鍒涗綔鑰�</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -43,7 +43,7 @@
           <template slot-scope="{row}">
             <!-- {{ row.imgFullUrl+row.imgurl }} -->
             <div style="display: flex; line-height: 60px;">
-              
+
               <el-image style="width: 60px; height: 60px; border-radius: 50%;margin-right: 10px;" :scr="row.imgFullUrl+row.imgurl" :preview-src-list="[row.imgurlfull]"></el-image>
               {{ row.nickname }}
             </div>
@@ -73,7 +73,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaCreationWindow.open('缂栬緫鍒涗綔鑰�', row)" v-permissions="['business:creation:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" v-permissions="['business:creation:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;"  @click="deleteById(row)" v-permissions="['business:creation:delete']">鍒犻櫎</el-button>
             <el-button type="text" @click="$refs.operaCreationApplyDetail.open('鍒涗綔鑰呰鎯�', row)">璇︽儏</el-button>
           </template>
         </el-table-column>
@@ -134,7 +134,7 @@
         })
     },
     showDetail(row) {
-      
+
     }
   },
 }
diff --git a/admin/src/views/business/goodsBrand.vue b/admin/src/views/business/goodsBrand.vue
index 618d955..d1636d8 100644
--- a/admin/src/views/business/goodsBrand.vue
+++ b/admin/src/views/business/goodsBrand.vue
@@ -31,7 +31,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:productlabel:create', 'business:productlabel:delete']">
         <li><el-button type="primary" @click="$refs.operaProductLabelWindow.open('鏂板缓鍟嗗搧鏍囩淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:productlabel:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -69,7 +69,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaProductLabelWindow.open('缂栬緫鍟嗗搧鏍囩淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:productlabel:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;"  @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/goodsLabels.vue b/admin/src/views/business/goodsLabels.vue
index bc4be98..671c545 100644
--- a/admin/src/views/business/goodsLabels.vue
+++ b/admin/src/views/business/goodsLabels.vue
@@ -14,7 +14,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:productlabel:create', 'business:productlabel:delete']">
         <li><el-button type="primary" @click="$refs.operaProductLabelWindow.open('鏂板缓鍟嗗搧鍒嗙被')" icon="el-icon-plus" v-permissions="['business:productlabel:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -47,7 +47,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaProductLabelWindow.open('缂栬緫鍟嗗搧鍒嗙被', row)" icon="el-icon-edit" v-permissions="['business:productlabel:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;"  @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:productlabel:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/goodsSku.vue b/admin/src/views/business/goodsSku.vue
index 42f5af1..491e1f3 100644
--- a/admin/src/views/business/goodsSku.vue
+++ b/admin/src/views/business/goodsSku.vue
@@ -59,7 +59,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:goodssku:create', 'business:goodssku:delete']">
         <li><el-button type="primary" @click="$refs.operaGoodsSkuWindow.open('鏂板缓鍟嗗搧SKU瑙勬牸缁勪俊鎭〃')" icon="el-icon-plus" v-permissions="['business:goodssku:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goodssku:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goodssku:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -92,7 +92,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaGoodsSkuWindow.open('缂栬緫鍟嗗搧SKU瑙勬牸缁勪俊鎭〃', row)" icon="el-icon-edit" v-permissions="['business:goodssku:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:goodssku:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:goodssku:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/hotCity.vue b/admin/src/views/business/hotCity.vue
index a514005..0506b69 100644
--- a/admin/src/views/business/hotCity.vue
+++ b/admin/src/views/business/hotCity.vue
@@ -2,11 +2,11 @@
   <TableLayout :permissions="['business:hotcity:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      
+
       <el-form-item label="鍩庡競鍚嶇О" prop="cityName">
         <el-input v-model="searchForm.cityName" placeholder="璇疯緭鍏ュ煄甯傚悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-     
+
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -34,7 +34,7 @@
           fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:hotcity:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:hotcity:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/information.vue b/admin/src/views/business/information.vue
index d1e0d05..f89cd4b 100644
--- a/admin/src/views/business/information.vue
+++ b/admin/src/views/business/information.vue
@@ -22,7 +22,7 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      
+
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -32,7 +32,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:activity:create', 'business:activity:delete']">
         <li><el-button type="primary" @click="$refs.operaInformationWindow.open('鏂板缓')" icon="el-icon-plus" v-permissions="['business:activity:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -72,7 +72,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaInformationWindow.open('缂栬緫', row)" icon="el-icon-edit" v-permissions="['business:activity:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -129,7 +129,7 @@
       return temp ? temp.label : '-'
     },
     shopDetail(row) {
-      
+
     }
   },
 }
diff --git a/admin/src/views/business/integralGoods.vue b/admin/src/views/business/integralGoods.vue
index 5d2821b..10f5324 100644
--- a/admin/src/views/business/integralGoods.vue
+++ b/admin/src/views/business/integralGoods.vue
@@ -98,7 +98,7 @@
         <el-table-column prop="labels" label="鍟嗗搧鏍囩闆嗗悎,澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑" min-width="100px"></el-table-column> -->
         <!-- v-if="containPermissions(['business:goods:update', 'business:goods:delete'])" -->
         <el-table-column
-          
+
           label="鎿嶄綔"
           min-width="120"
           fixed="right"
@@ -107,7 +107,7 @@
             <template v-if="row.status==1">
               <el-button type="text" @click="$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', row, 1)" v-permissions="['business:goods:update']">缂栬緫</el-button>
               <el-button type="text" @click="$refs.operaPlatformGoodsSkuWindow.open('骞冲彴SKU', row)">SKU</el-button>
-              <el-button type="text" @click="deleteById(row)" v-permissions="['business:goods:delete']">鍒犻櫎</el-button>
+              <el-button type="text" style="color: red;"  @click="deleteById(row)" v-permissions="['business:goods:delete']">鍒犻櫎</el-button>
             </template>
             <template v-else>
               <el-button type="text" @click="$refs.operaGoodsDetailWindow.open('鍟嗗搧璇︽儏', row, 0)">鏌ョ湅璇︽儏</el-button>
@@ -189,7 +189,7 @@
       'field.main': 'id'
     })
     this.search()
- 
+
     labelList({
       capacity: 999,
       model: {
@@ -214,7 +214,7 @@
 
     },
     /**
-     * 
+     *
      * @param {涓婁笅鐘舵�亇 status 0涓婃灦 1涓嬫灦
      */
     issued(status) {
@@ -228,7 +228,7 @@
 
         })
     },
-    
+
     statusChange(row) {
       updateById(row)
         .then(() => {
diff --git a/admin/src/views/business/labels.vue b/admin/src/views/business/labels.vue
index 77ef5a8..aff333c 100644
--- a/admin/src/views/business/labels.vue
+++ b/admin/src/views/business/labels.vue
@@ -53,7 +53,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaLabelsWindow.open('缂栬緫鏍囩淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:labels:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/labelsArea.vue b/admin/src/views/business/labelsArea.vue
index e9d1d98..4856058 100644
--- a/admin/src/views/business/labelsArea.vue
+++ b/admin/src/views/business/labelsArea.vue
@@ -14,7 +14,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:labels:create', 'business:labels:delete']">
         <li><el-button type="primary" @click="$refs.operaLabelsWindow.open('鏂板缓澶у尯淇℃伅')" icon="el-icon-plus" v-permissions="['business:labels:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -42,7 +42,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaLabelsWindow.open('缂栬緫鍖哄煙淇℃伅', row)" icon="el-icon-edit" v-permissions="['business:labels:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/labelsExpress.vue b/admin/src/views/business/labelsExpress.vue
new file mode 100644
index 0000000..d5fe258
--- /dev/null
+++ b/admin/src/views/business/labelsExpress.vue
@@ -0,0 +1,108 @@
+<template>
+  <TableLayout :permissions="['business:labels:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:labels:create', 'business:labels:delete']">
+        <li><el-button type="primary" @click="$refs.OperaLabelExpressWindow.open('鏂板缓蹇�掍俊鎭�')" icon="el-icon-plus" v-permissions="['business:labels:create']">鏂板缓</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        border
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch
+                v-model="row.status"
+                :active-value="1"
+                :inactive-value="0"
+                active-color="#13ce66"
+                inactive-color="#ff4949"
+                @change="statusChange(row)"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:labels:update', 'business:labels:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.OperaLabelExpressWindow.open('缂栬緫蹇�掍俊鎭�', row)" icon="el-icon-edit" v-permissions="['business:labels:update']">缂栬緫</el-button>
+            <el-button style="color: red;" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaLabelExpressWindow ref="OperaLabelExpressWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaLabelExpressWindow from '@/components/business/OperaLabelExpressWindow'
+export default {
+  name: 'ProductLabel',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaLabelExpressWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type: 17
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '蹇�掍俊鎭�',
+      api: '/business/labels',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    statusChange (row) {
+      this.api.updateById({ id: row.id, status: row.status })
+        .then(() => {
+          this.$message.success('鎿嶄綔鎴愬姛')
+        })
+        .catch(e => {
+          this.$message.error('鎿嶄綔鎴愬姛')
+        })
+        .then(() => {
+          this.handlePageChange()
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/labelsYunFee.vue b/admin/src/views/business/labelsYunFee.vue
new file mode 100644
index 0000000..0c9601f
--- /dev/null
+++ b/admin/src/views/business/labelsYunFee.vue
@@ -0,0 +1,115 @@
+<template>
+  <TableLayout :permissions="['business:labels:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:labels:create', 'business:labels:delete']">
+        <li><el-button type="primary" @click="$refs.operaLabelsWindow.open('鏂板缓杩愯垂閰嶇疆淇℃伅')" icon="el-icon-plus" v-permissions="['business:labels:create']">鏂板缓</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        border
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="areas" label="鍖呭惈鍦板尯" min-width="200px" align="center">
+          <template slot-scope="{row}">
+            <div v-if="row.areaList && row.areaList.length" >
+              <span v-for="item in row.areaList">{{item.name}}锛�> </span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch
+                v-model="row.status"
+                :active-value="1"
+                :inactive-value="0"
+                active-color="#13ce66"
+                inactive-color="#ff4949"
+                @change="statusChange(row)"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:labels:update', 'business:labels:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaLabelsWindow.open('缂栬緫杩愯垂淇℃伅', row)" icon="el-icon-edit" v-permissions="['business:labels:update']">缂栬緫</el-button>
+            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaLabelsFeeAreaWindow ref="operaLabelsWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaLabelsFeeAreaWindow from '@/components/business/OperaLabelsFeeAreaWindow'
+export default {
+  name: 'Labels',
+  extends: BaseTable,
+  components: { OperaLabelsFeeAreaWindow, TableLayout, Pagination },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type: 16
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '鏍囩淇℃伅琛�',
+      api: '/business/labels',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    statusChange (row) {
+      this.api.updateById({ id: row.id, status: row.status })
+        .then(() => {
+          this.$message.success('鎿嶄綔鎴愬姛')
+        })
+        .catch(e => {
+          this.$message.error('鎿嶄綔鎴愬姛')
+        })
+        .then(() => {
+          this.handlePageChange()
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/notice.vue b/admin/src/views/business/notice.vue
index c4c9850..7aad408 100644
--- a/admin/src/views/business/notice.vue
+++ b/admin/src/views/business/notice.vue
@@ -14,7 +14,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:notice:create', 'business:notice:delete']">
         <li><el-button type="primary" @click="$refs.operaNoticeWindow.open('鏂板缓娑堟伅閫氱煡')" icon="el-icon-plus" v-permissions="['business:notice:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:notice:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:notice:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -48,7 +48,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaNoticeWindow.open('缂栬緫娑堟伅閫氱煡', row)" icon="el-icon-edit" v-permissions="['business:notice:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:notice:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:notice:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/orgs.vue b/admin/src/views/business/orgs.vue
index c237044..917a8c2 100644
--- a/admin/src/views/business/orgs.vue
+++ b/admin/src/views/business/orgs.vue
@@ -60,7 +60,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaOrgsWindow.open('缂栬緫鏈烘瀯', row)" icon="el-icon-edit" v-permissions="['business:orgs:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:orgs:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:orgs:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/business/planGoods.vue b/admin/src/views/business/planGoods.vue
index 5553dc5..4e7a7bd 100644
--- a/admin/src/views/business/planGoods.vue
+++ b/admin/src/views/business/planGoods.vue
@@ -97,7 +97,7 @@
             <template v-if="row.status==1">
               <el-button type="text" @click="$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', row, 2)" v-permissions="['business:goods:update']">缂栬緫</el-button>
               <el-button type="text" @click="$refs.operaPlatformGoodsSkuWindow.open('骞冲彴SKU', row)">SKU</el-button>
-              <el-button type="text" @click="deleteById(row)" v-permissions="['business:goods:delete']">鍒犻櫎</el-button>
+              <el-button type="text"  style="color: red;" @click="deleteById(row)" v-permissions="['business:goods:delete']">鍒犻櫎</el-button>
             </template>
             <template v-else>
               <el-button type="text" @click="$refs.operaGoodsDetailWindow.open('鍟嗗搧璇︽儏', row, 0)">鏌ョ湅璇︽儏</el-button>
diff --git a/admin/src/views/business/shopLabels.vue b/admin/src/views/business/shopLabels.vue
index db349e7..213a701 100644
--- a/admin/src/views/business/shopLabels.vue
+++ b/admin/src/views/business/shopLabels.vue
@@ -14,7 +14,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:labels:create', 'business:labels:delete']">
         <li><el-button type="primary" @click="$refs.operaLabelsWindow.open('鏂板缓鏍囩')" icon="el-icon-plus" v-permissions="['business:labels:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -35,7 +35,7 @@
           align="center"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
+            <el-button  style="color: red;"type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:labels:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -67,10 +67,10 @@
         name: '',
         type: '2'
       },
-      
+
     }
   },
-  
+
   created () {
     this.config({
       module: '鏍囩淇℃伅琛�',
diff --git a/admin/src/views/business/visiteStore.vue b/admin/src/views/business/visiteStore.vue
index 0e0a179..8dd3b35 100644
--- a/admin/src/views/business/visiteStore.vue
+++ b/admin/src/views/business/visiteStore.vue
@@ -22,7 +22,7 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      
+
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -32,7 +32,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:activity:create', 'business:activity:delete']">
         <li><el-button type="primary" @click="$refs.operaVisiteStoreWindow.open('鏂板缓')" icon="el-icon-plus" v-permissions="['business:activity:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -73,7 +73,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaVisiteStoreWindow.open('缂栬緫', row)" icon="el-icon-edit" v-permissions="['business:activity:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:activity:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -130,7 +130,7 @@
       return temp ? temp.label : '-'
     },
     shopDetail(row) {
-      
+
     }
   },
 }
diff --git a/admin/src/views/system/data-permission.vue b/admin/src/views/system/data-permission.vue
index 0d00995..9d68d0a 100644
--- a/admin/src/views/system/data-permission.vue
+++ b/admin/src/views/system/data-permission.vue
@@ -17,14 +17,14 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:datapermission:create', 'system:datapermission:delete']">
         <li><el-button type="primary" @click="$refs.operaDataPermissionWindow.open('鏂板缓鏁版嵁鏉冮檺')" icon="el-icon-plus" v-permissions="['system:datapermission:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:datapermission:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:datapermission:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
         :data="tableData.list"
         stripe
         border
-        
+
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" align="center" width="55"></el-table-column>
@@ -60,7 +60,7 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaDataPermissionWindow.open('缂栬緫鏁版嵁鏉冮檺', row)" icon="el-icon-edit" v-permissions="['system:datapermission:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:datapermission:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:datapermission:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/department.vue b/admin/src/views/system/department.vue
index bebb2fc..89b0bbb 100644
--- a/admin/src/views/system/department.vue
+++ b/admin/src/views/system/department.vue
@@ -4,7 +4,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:department:create', 'system:department:delete']">
         <li><el-button type="primary" @click="$refs.operaDepartmentWindow.open('鏂板缓閮ㄩ棬')" icon="el-icon-plus" v-permissions="['system:department:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:department:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:department:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -41,7 +41,7 @@
             <el-button type="text" @click="$refs.operaDepartmentWindow.open('缂栬緫閮ㄩ棬', row)" icon="el-icon-edit" v-permissions="['system:department:update']">缂栬緫</el-button>
             <el-button type="text" @click="$refs.operaDepartmentWindow.open('鏂板缓涓嬬骇閮ㄩ棬', null, row)" icon="el-icon-edit" v-permissions="['system:department:create']">鏂板缓涓嬬骇閮ㄩ棬</el-button>
             <el-button type="text" @click="$refs.departmentUserWindow.open(row.id, row.name)" icon="el-icon-user-solid" v-permissions="['system:department:queryUsers']">鏌ョ湅浜哄憳</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:department:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:department:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/dict.vue b/admin/src/views/system/dict.vue
index e3ccae6..bdea152 100644
--- a/admin/src/views/system/dict.vue
+++ b/admin/src/views/system/dict.vue
@@ -17,7 +17,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:dict:create', 'system:dict:delete']">
         <li><el-button type="primary" @click="$refs.operaDictWindow.open('鏂板缓瀛楀吀')" icon="el-icon-plus" v-permissions="['system:dict:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:dict:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="danger"  @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:dict:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -50,7 +50,7 @@
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaDictWindow.open('缂栬緫瀛楀吀', row)" icon="el-icon-edit" v-permissions="['system:dict:update']">缂栬緫</el-button>
             <el-button type="text" @click="$refs.dictDataManagerWindow.open(row.id, row.name)" icon="el-icon-edit" v-permissions="['system:dict:update']">鏁版嵁绠$悊</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:dict:delete']">鍒犻櫎</el-button>
+            <el-button type="text"  style="color: red;" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:dict:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/menu.vue b/admin/src/views/system/menu.vue
index 87fe196..f559d82 100644
--- a/admin/src/views/system/menu.vue
+++ b/admin/src/views/system/menu.vue
@@ -4,7 +4,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']">
         <li><el-button type="primary" @click="$refs.operaMenuWindow.open('鏂板缓涓�绾ц彍鍗�')" icon="el-icon-plus" v-permissions="['system:menu:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">鍒犻櫎</el-button></li>
         <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">涓婄Щ</el-button></li>
         <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">涓嬬Щ</el-button></li>
       </ul>
@@ -16,7 +16,7 @@
         row-key="id"
         stripe
         border
-        
+
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55" align="center" fixed="left"></el-table-column>
@@ -52,7 +52,7 @@
           <template slot-scope="{row}">
             <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('缂栬緫鑿滃崟', row)" v-permissions="['system:menu:update']">缂栬緫</el-button>
             <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('鏂板缓瀛愯彍鍗�', null, row)" v-permissions="['system:menu:create']">鏂板缓瀛愯彍鍗�</el-button>
-            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">鍒犻櫎</el-button>
+            <el-button v-if="!row.fixed" style="color: red;"  type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/permission.vue b/admin/src/views/system/permission.vue
index 311200f..15a59dd 100644
--- a/admin/src/views/system/permission.vue
+++ b/admin/src/views/system/permission.vue
@@ -17,7 +17,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:permission:create', 'system:permission:delete']">
         <li><el-button type="primary" @click="$refs.operaPermissionWindow.open('鏂板缓绯荤粺鏉冮檺')" icon="el-icon-plus" v-permissions="['system:permission:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:permission:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:permission:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -49,7 +49,7 @@
         >
           <template slot-scope="{row}">
             <el-button v-if="!row.fixed" type="text" @click="$refs.operaPermissionWindow.open('缂栬緫绯荤粺鏉冮檺', row)" icon="el-icon-edit" v-permissions="['system:permission:update']">缂栬緫</el-button>
-            <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:permission:delete']">鍒犻櫎</el-button>
+            <el-button v-if="!row.fixed"  style="color: red;" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:permission:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/position.vue b/admin/src/views/system/position.vue
index fb583a2..bf9ae97 100644
--- a/admin/src/views/system/position.vue
+++ b/admin/src/views/system/position.vue
@@ -4,7 +4,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:position:create', 'system:position:delete']">
         <li><el-button type="primary" @click="$refs.operaPositionWindow.open('鏂板缓宀椾綅')" icon="el-icon-plus" v-permissions="['system:position:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:position:delete']">鍒犻櫎</el-button></li>
+        <li><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:position:delete']">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -38,7 +38,7 @@
             <el-button type="text" @click="$refs.operaPositionWindow.open('缂栬緫宀椾綅', row)" icon="el-icon-edit" v-permissions="['system:position:update']">缂栬緫</el-button>
             <el-button type="text" @click="$refs.operaPositionWindow.open('鏂板涓嬬骇宀椾綅', null, row)" icon="el-icon-edit" v-permissions="['system:position:update']">鏂板涓嬬骇宀椾綅</el-button>
             <el-button type="text" @click="$refs.positionUserWindow.open(row.id, row.name)" icon="el-icon-user-solid" v-permissions="['system:position:queryUsers']">鏌ョ湅浜哄憳</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:position:delete']">鍒犻櫎</el-button>
+            <el-button type="text" style="color: red;"  @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:position:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/role.vue b/admin/src/views/system/role.vue
index e35d28c..7b91aa0 100644
--- a/admin/src/views/system/role.vue
+++ b/admin/src/views/system/role.vue
@@ -17,7 +17,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:role:create', 'system:role:delete']">
         <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('鏂板缓瑙掕壊')" icon="el-icon-plus">鏂板缓</el-button></li>
-        <li v-permissions="['system:role:delete']"><el-button @click="deleteByIdInBatch" icon="el-icon-delete">鍒犻櫎</el-button></li>
+        <li v-permissions="['system:role:delete']"><el-button  type="danger" @click="deleteByIdInBatch" icon="el-icon-delete">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -51,7 +51,7 @@
             <el-button type="text" @click="$refs.operaRoleWindow.open('缂栬緫瑙掕壊', row)" icon="el-icon-edit" v-permissions="['system:role:update']">缂栬緫</el-button>
             <el-button type="text" @click="$refs.permissionConfigWindow.open(row)" v-permissions="['system:role:createRolePermission']">閰嶇疆鏉冮檺</el-button>
             <el-button type="text" @click="$refs.menuConfigWindow.open(row)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">鎺堟潈鑿滃崟</el-button>
-            <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">鍒犻櫎</el-button>
+            <el-button v-if="!row.fixed"  style="color: red;" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/admin/src/views/system/user.vue b/admin/src/views/system/user.vue
index 4deb19c..a6592f7 100644
--- a/admin/src/views/system/user.vue
+++ b/admin/src/views/system/user.vue
@@ -26,7 +26,7 @@
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
         <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.operaUserWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li>
-        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>
+        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" type="danger"  @click="deleteByIdInBatch">鍒犻櫎</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -90,7 +90,7 @@
             <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', row)" v-permissions="['system:user:update']">缂栬緫</el-button>
             <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">閰嶇疆瑙掕壊</el-button>
             <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-button>
-            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>
+            <el-button v-if="!row.fixed"  style="color: red;" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/LabelsController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/LabelsController.java
index fd42e6b..8fbd394 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/LabelsController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/LabelsController.java
@@ -35,7 +35,8 @@
     @PostMapping("/create")
     @RequiresPermissions("business:labels:create")
     public ApiResponse create(@RequestBody Labels labels) {
-        return ApiResponse.success(labelsService.create(labels));
+        labelsService.create(labels);
+        return ApiResponse.success(null);
     }
 
     @ApiOperation("鏍规嵁ID鍒犻櫎")
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
index c416c6a..9a78203 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -961,6 +961,8 @@
         BIG_AREA(13, "鍖哄煙鍒嗙被", "鍖哄煙鍒嗙被"),
         APPLICABLE_BRAND(14, "閫傜敤鍝佺墝", "閫傜敤鍝佺墝"),
         SERIES_BRAND(15, "鍝佺墝绯诲垪", "鍝佺墝绯诲垪"),
+        YUN_FEE(16, "杩愯垂閰嶇疆", "杩愯垂閰嶇疆"),
+        EXPRESS_DELIVERY(17, "蹇�掍俊鎭�", "蹇�掍俊鎭�"),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java
index 01d4713..7b90f19 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java
@@ -66,6 +66,9 @@
     @ApiModelProperty(value = "鎵�灞炲ぇ鍖虹紪鐮侊紙鍏宠仈labels)", example = "1")
     @ExcelColumn(name="鎵�灞炲ぇ鍖虹紪鐮侊紙鍏宠仈labels)")
     private Integer bigAreaId;
+    @ApiModelProperty(value = "鎵�灞炶繍璐归厤缃紙鍏宠仈labels)", example = "1")
+    @ExcelColumn(name="鎵�灞炶繍璐归厤缃紪鐮侊紙鍏宠仈labels)")
+    private Integer yunFeeId;
     @ApiModelProperty(value = "鎵�灞炲ぇ鍖哄悕绉�", example = "1")
     @TableField(exist = false)
     private String bigAreaName;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Labels.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Labels.java
index d384a80..0e82332 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Labels.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Labels.java
@@ -80,6 +80,9 @@
     @ApiModelProperty(value = "鍥炬爣")
     @ExcelColumn(name="鍥炬爣")
     private String imgurl;
+    @ApiModelProperty(value = "閰嶇疆鍙傛暟(json),杩愯垂鍙傛暟鏍煎紡{weight0:10,fee0:10,weight1:10,fee1:10},{棣栭噸:10,棣栭噸杩愯垂锛�10,缁噸锛�10,缁噸璐癸細10}")
+    @ExcelColumn(name="閰嶇疆鍙傛暟(json)")
+    private String param;
 
     @ApiModelProperty(value = "绫诲瀷0鍟嗗搧鍒嗙被 1鍟嗗搧鍝佺墝 2鍟嗗鏍囩 3蹇�� 4閫�璐ч�夐」 5鎹㈣揣閫夐」 6閫�娆鹃�夐」 7鍙栨秷璁㈠崟閫夐」 8鍜栧暋鐧剧鍒嗙被 9鍜� 璇㈠垎绫� 10娲诲姩璧涗簨鍒嗙被 11杈句汉鎺㈠簵鍒嗙被", example = "1")
      @TableField(exist = false)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
index f9bbe52..ea8cd73 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
@@ -127,6 +127,9 @@
     @ApiModelProperty(value = "瀹為檯閫傜敤鏃堕噾棰�")
     @TableField(exist = false)
     private BigDecimal validAmount;
+    @ApiModelProperty(value = "鐢ㄦ埛鎵嬫満鍙�")
+    @TableField(exist = false)
+    private String memberPhone;
 
     @ApiModelProperty(value = "浼樻儬閲戦锛堝厓锛�", example = "1")
     @ExcelColumn(name="浼樻儬閲戦锛堝厓锛�",width = 10,index = 7)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java
index cb752f4..f4f382f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java
@@ -31,6 +31,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
@@ -64,6 +65,7 @@
     private GoodsAdminJoinMapper goodsAdminJoinMapper;
 
     @Override
+    @Transactional
     public Integer create(Labels labels) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         labels.setCreator(user.getId());
@@ -72,25 +74,29 @@
         labels.setEditDate(labels.getCreateDate());
         labels.setIsdeleted(Constants.ZERO);
         labels.setStatus(Constants.ZERO);
-    /*  if(labels.getParentId()!=null){
+       /*if(labels.getParentId()!=null){
             labels.setType(Constants.LabelsType.GOODSTYPE.getKey());
         }else{
             labels.setType(Constants.LabelsType.GOODSBRAND.getKey());
         }*/
 
         labelsMapper.insert(labels);
-        if(Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey())
+        if((Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey())
+                ||Constants.equalsInteger(labels.getType(),Constants.LabelsType.YUN_FEE.getKey()))
                 && labels.getAreaIdList()!=null
                 &&labels.getAreaIdList().size()>0){
-            areasMapper.update(null,new UpdateWrapper<Areas>().lambda()
-                    .set(Areas::getBigAreaId,labels.getId())
-                    .in(Areas::getId,labels.getAreaIdList()));
+                areasMapper.update(null,new UpdateWrapper<Areas>().lambda()
+                        .set(Constants.equalsInteger(labels.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId,labels.getId())
+                        .set(Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId,labels.getId())
+                        .in(Constants.equalsInteger(labels.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getId,labels.getAreaIdList())
+                        .in(Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getId,labels.getAreaIdList()));
             areasService.cacheData();
         }
         return labels.getId();
     }
 
     @Override
+    @Transactional
     public void deleteById(Integer id) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         Labels query= labelsJoinMapper.selectById(id);
@@ -113,10 +119,13 @@
         labels.setEditDate(new Date());
         labels.setEditor(user.getId());
         labelsMapper.updateById(labels);
-        if(query!=null && Constants.equalsInteger(query.getType(),Constants.LabelsType.BIG_AREA.getKey())){
+        if(query!=null &&( Constants.equalsInteger(query.getType(),Constants.LabelsType.BIG_AREA.getKey())
+        || Constants.equalsInteger(query.getType(),Constants.LabelsType.YUN_FEE.getKey()))){
             int num =  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
-                    .set(Areas::getBigAreaId, null)
-                    .eq(Areas::getBigAreaId, labels.getId()));
+                    .set(Constants.equalsInteger(query.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId, null)
+                    .eq(Constants.equalsInteger(query.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId, labels.getId())
+                    .set(Constants.equalsInteger(query.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId, null)
+                    .eq(Constants.equalsInteger(query.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId, labels.getId()));
             if(num>0){
                 areasService.cacheData();
             }
@@ -135,6 +144,7 @@
     }
 
     @Override
+    @Transactional
     public void deleteByIdInBatch(List<Integer> ids) {
         if (CollectionUtils.isEmpty(ids)) {
             return;
@@ -151,6 +161,9 @@
             num +=  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
                     .set(Areas::getBigAreaId, null)
                     .eq(Areas::getBigAreaId, labels.getId()));
+            num +=  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
+                    .set(Areas::getYunFeeId, null)
+                    .eq(Areas::getYunFeeId, labels.getId()));
         }
         if(num>0){
             areasService.cacheData();
@@ -158,6 +171,7 @@
     }
 
     @Override
+    @Transactional
     public void updateById(Labels labels) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         labels.setEditDate(new Date());
@@ -170,17 +184,22 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         labelsMapper.updateById(labels);
-        if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){
+        if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())
+            ||Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey())){
             //鍏堟竻绌哄師鏉ユ墍鏈夌粦瀹氱殑鏁版嵁
            int num =  areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
-                    .set(Areas::getBigAreaId, null)
-                    .eq(Areas::getBigAreaId, labels.getId()));
+                    .set(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId, null)
+                    .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId, labels.getId())
+                    .set(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId, null)
+                    .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId, labels.getId()));
             if( labels.getAreaIdList()!=null
                     &&labels.getAreaIdList().size()>0){
                 //璁剧疆鏈�鏂扮粦瀹氱殑鏁版嵁
                 num +=   areasMapper.update(null, new UpdateWrapper<Areas>().lambda()
-                        .set(Areas::getBigAreaId, labels.getId())
-                        .in(Areas::getId, labels.getAreaIdList()));
+                        .set(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId, labels.getId())
+                        .in(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getId, labels.getAreaIdList())
+                        .set(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId, labels.getId())
+                        .in(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getId, labels.getAreaIdList()));
             }
             if(num>0){
                 areasService.cacheData();
@@ -210,18 +229,21 @@
 
     @Override
     public Labels findById(Integer id) {
-        Labels labels=   labelsMapper.selectById(id);
-        if(labels != null){
+        Labels model=   labelsMapper.selectById(id);
+        if(model != null){
             String resourcePath=systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
-            getLablesIcon(labels,resourcePath);
-            if(Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey())){
+            getLablesIcon(model,resourcePath);
+            if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())
+                    ||Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey())){
                 //濡傛灉鏄ぇ鍖轰俊鎭紝鏌ヨ鎵�鏈夌粦瀹氶鐪佷唤淇℃伅
-                labels.setAreaList(areasMapper.selectList(new LambdaQueryWrapper<Areas>()
+                model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper<Areas>()
                         .eq(Areas::getIsdeleted,Constants.ZERO)
-                        .eq(Areas::getBigAreaId,labels.getId())));
+                        .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId,model.getId())
+                        .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId,model.getId())));
+
             }
         }
-        return labels;
+        return model;
     }
 
     @Override
@@ -255,11 +277,13 @@
                     .orderByAsc(Labels::getSortnum));
         }
         for(Labels model:list){
-            if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){
+            if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())
+            ||Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey())){
                 //濡傛灉鏄ぇ鍖轰俊鎭紝鏌ヨ鎵�鏈夌粦瀹氶鐪佷唤淇℃伅
                 model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper<Areas>()
                         .eq(Areas::getIsdeleted,Constants.ZERO)
-                        .eq(Areas::getBigAreaId,model.getId())));
+                        .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId,model.getId())
+                        .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId,model.getId())));
             }
             if(Constants.equalsInteger(labels.getType(),Constants.LabelsType.APPLICABLE_BRAND.getKey())
                     &&Constants.equalsInteger(model.getType(),Constants.LabelsType.APPLICABLE_BRAND.getKey())){
@@ -333,11 +357,13 @@
                if(StringUtils.isNotBlank(model.getImgurl())){
                    model.setImgFullurl(path + model.getImgurl());
                }
-               if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){
+               if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())
+                        || Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey())){
                     //濡傛灉鏄ぇ鍖轰俊鎭紝鏌ヨ鎵�鏈夌粦瀹氶鐪佷唤淇℃伅
                     model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper<Areas>()
                             .eq(Areas::getIsdeleted,Constants.ZERO)
-                            .eq(Areas::getBigAreaId,model.getId())));
+                            .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey()),Areas::getBigAreaId,model.getId())
+                            .eq(Constants.equalsInteger(model.getType(),Constants.LabelsType.YUN_FEE.getKey()),Areas::getYunFeeId,model.getId())));
                }
             }
         }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index c1c50ca..f2b1bdb 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -73,7 +73,6 @@
     public    String addBatch(MemberCouponAddDTO memberCoupon){
         checkAddBatchParamValid(memberCoupon);
 
-        int num = 0;
         List<Coupon> couponList = getCouponListByParam(memberCoupon);
         List<Member> memberList = getMemberListByParam(memberCoupon);
         List<MemberCoupon>  addList = new ArrayList<>();
@@ -90,17 +89,14 @@
                     //鎸ㄤ釜閫�
                     addList.add(initMemberCouponByParam(coupon,member,loginUserInfo,now));
                 }
-                num++;
             }
             index++;
         }
-
-
         if(addList.size()>0){
             //鎵归噺鎻掑叆鏁版嵁
             memberCouponMapper.insert(addList);
         }
-        return "鎿嶄綔鎴愬姛,鎴愬姛浜哄憳鏁伴噺锛�"+num+",鍏卞彂鏀句紭鎯犲埜鏁伴噺锛�"+addList.size();
+        return "鎿嶄綔鎴愬姛,鎴愬姛浜哄憳鏁伴噺锛�"+memberList.size()+",鍏卞彂鏀句紭鎯犲埜鏁伴噺锛�"+addList.size();
 
     }
 
@@ -115,6 +111,7 @@
         insert.setMemberId(member.getId());
         insert.setShopId(coupon.getShopId());
         insert.setType(coupon.getType());
+        insert.setCouponType(coupon.getType());
         insert.setLimitPrice(coupon.getLimitPrice());
         insert.setPrice(coupon.getPrice());
         if(Constants.equalsObject(coupon.getUseType(),Constants.ZERO)){
@@ -176,12 +173,13 @@
         if(list == null || list.size()==0){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥浼樻儬鍒告暟鎹�,璇峰埛鏂伴〉闈㈤噸璇曪紒");
         }
-
         return  list;
     }
 
     private  void checkAddBatchParamValid(MemberCouponAddDTO memberCoupon) {
-        if(memberCoupon.getAddType() == null || memberCoupon.getAddCouponList()==null || memberCoupon.getAddCouponList().size()==0){
+        if(memberCoupon.getAddType() == null
+                || memberCoupon.getAddCouponList()==null
+                || memberCoupon.getAddCouponList().size()==0){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         if(Constants.equalsObject(memberCoupon.getAddType(),Constants.ZERO)){
@@ -194,7 +192,7 @@
             if( StringUtils.isBlank(memberCoupon.getAddMemberPhones())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
-            String[] ss =memberCoupon.getAddMemberPhones().split("\n");
+            String[] ss =memberCoupon.getAddMemberPhones().replace(" ","").split("\n");
             if(ss == null ||ss.length==0){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
@@ -316,6 +314,7 @@
         MPJLambdaWrapper<MemberCoupon> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.selectAll(MemberCoupon.class);
+        queryWrapper.selectAs(Member::getPhone,MemberCoupon::getMemberPhone);
         queryWrapper.selectAs(Member::getNickname,MemberCoupon::getNikeName);
         queryWrapper.selectAs(Goodsorder::getCode,MemberCoupon::getOrderCode);
         queryWrapper.selectAs(Goodsorder::getCouponPrice,MemberCoupon::getCouponPrice);//浼樻儬閲戦
@@ -340,6 +339,7 @@
         IPage<MemberCoupon> result = memberCouponJoinMapper.selectJoinPage(page, MemberCoupon.class, queryWrapper);
         if(result!=null && result.getRecords()!=null){
             for(MemberCoupon model :result.getRecords()){
+                model.setNikeName(StringUtils.defaultString(model.getNikeName(),"")+" "+StringUtils.defaultString(model.getMemberPhone(),""));
                 if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)
                         && model.getEndDate()!=null
                         && model.getEndDate().before(new Date())){
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index de2e861..2c90010 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -40,8 +40,8 @@
         loginLog.setLoginUsername(dto.getUsername());
         loginLog.setLoginTime(new Date());
         loginLog.setSystemVersion(systemVersion);
-        loginLog.setIp(Utils.User_Client.getIP(request));
-        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
+//        loginLog.setIp(Utils.User_Client.getIP(request));
+//        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
         loginLog.setPlatform(Utils.User_Client.getPlatform(request));
         loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
         loginLog.setOsInfo(Utils.User_Client.getOS(request));

--
Gitblit v1.9.3