doum
19 小时以前 82203a196fa700adfc379b2b453b2266266c940c
经销商管理
已添加4个文件
已修改51个文件
819 ■■■■ 文件已修改
admin/src/components/base/BaseOpera.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaAreasWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaArticleLabelsWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaArticleWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaBannerWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaBannerZhuanquWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaGoodsBrandWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaGoodsLabelsWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaHotCityWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaLabelExpressWindow.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaLabelsAreaWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaLabelsFeeAreaWindow.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaLabelsWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMemberCouponWindow.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaShopLabelsWindow.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/system/dict/DictDataManagerWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/activity.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/areas.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/article.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/articleLabels.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/banner.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/bannerZhuanqu.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/coupon.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/creation.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/goodsBrand.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/goodsLabels.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/goodsSku.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/hotCity.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/information.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/integralGoods.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/labels.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/labelsArea.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/labelsExpress.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/labelsYunFee.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/notice.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/orgs.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/planGoods.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/shopLabels.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visiteStore.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/data-permission.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/department.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/dict.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/menu.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/permission.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/position.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/role.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/user.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_admin/src/main/java/com/doumee/api/business/LabelsController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Labels.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/LabelsServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 => {
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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()
    }
  }
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>
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>
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>
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>
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>
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 },
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>
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>
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>
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) {
    }
  },
}
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>
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>
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>
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>
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) {
    }
  },
}
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(() => {
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>
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>
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>
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>
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>
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>
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>
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: '标签信息表',
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) {
    }
  },
}
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>
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>
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>
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>
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>
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>
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>
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>
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删除")
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;
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;
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)
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)
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())));
               }
            }
        }
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())){
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));