Parcourir la source

Merge commit '757c5bbdcf196a946b696df5d7a3b37ae5991a51' into HEAD

gitadmin il y a 8 mois
Parent
commit
056b3933d0

+ 142 - 0
src/api/shopPromo.js

@@ -0,0 +1,142 @@
+import { axios } from '@/utils/request'
+
+//  促销活动 列表  有分页
+export const shopPromoList = (params) => {
+  const url = `/shopPromo/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
+// 促销活动 关闭
+export const closeActive = (params) => {
+  return axios({
+    url: `/promoActive/closeActive/${params.sn}`,
+    method: 'get'
+  })
+}
+// 促销活动 开启
+export const publishActive = (params) => {
+  return axios({
+    url: `/promoActive/publishActive/${params.sn}`,
+    method: 'get'
+  })
+}
+
+//  促销活动 详情
+export const shopPromoDetail = (params) => {
+  const url = `/shopPromo/findBySn/${params.sn}`
+  return axios({
+    url: url,
+    method: 'get'
+  })
+}
+
+// 促销活动 发布修改
+export const promoActivePublish = (params) => {
+  return axios({
+    url: '/promoRuleDetail/updateList',
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('发布修改')
+    }
+  })
+}
+
+// 促销活动 选择产品列表
+export const shopPromoProductList = (params) => {
+  const url = `/shopPromoProduct/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('列表查询')
+    }
+  })
+}
+
+// 新增一行
+export const getNewScopeSn = (params) => {
+  return axios({
+    url: '/promoActive/getNewSn',
+    data: params,
+    method: 'get'
+  })
+}
+
+// 修理厂促销   保存产品范围
+export const saveBatchEntity = (params) => {
+  return axios({
+    url: '/promoRuleProductRange/saveBatchEntity',
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('保存产品范围')
+    }
+  })
+}
+// 批量创建产品
+export const promoCreateBatch = (params) => {
+  return axios({
+    url: '/promoRuleProduct/createBatch',
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('批量创建产品')
+    }
+  })
+}
+export const promoUpdateBatch = (params) => {
+  return axios({
+    url: '/promoRuleProduct/updateBatch',
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('批量创建产品')
+    }
+  })
+}
+// 获取已选产品列表数据  有分页
+export const promoRuleProductList = (params) => {
+  const url = `/promoRuleProduct/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('列表查询')
+    }
+  })
+}
+
+// 批量删除
+export const deleteBatch = (params) => {
+  return axios({
+    url: '/promoRuleProduct/deleteBatch',
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('批量删除')
+    }
+  })
+}
+// 删除产品范围  数据变化 promoActiveSn  productTypeSnList
+export const deleteByProductType = (params) => {
+  return axios({
+    url: '/promoRuleProduct/deleteByProductType',
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('批量删除')
+    }
+  })
+}

+ 185 - 204
src/views/promotionManagement/promotionInfo/detailModal.vue

@@ -17,108 +17,104 @@
           :rules="rules"
           :label-col="formItemLayout.labelCol"
           :wrapper-col="formItemLayout.wrapperCol" >
-          <a-form-model-item label="标题" prop="title">
-            {{ form.title }}
-          </a-form-model-item>
-          <a-form-model-item label="排序" prop="sort">
-            {{ form.sort }}
-          </a-form-model-item>
-          <a-form-model-item label="封面图片" prop="imageSet">
-            <img
-              :src="con"
-              alt="图片走丢了"
-              width="80"
-              height="80"
-              v-for="(con,i) in imageSet"
-              style="margin-right:10px;object-fit: cover;"
-              :key="i"/>
-            <div class="upload-desc">说明:单张大小小于10Mb;建议尺寸:宽(420px)*高(230px)</div>
-          </a-form-model-item>
-          <a-form-model-item label="内容类型" prop="contentType">
-            {{ form.contentType==='IMAGE_CONTENT'?'图文展示':form.contentType==='VIDEO'?'视频展示':'跳转链接' }}
-          </a-form-model-item>
-          <div v-if="form.contentType==='IMAGE_CONTENT'">
-            <a-form-model-item label="内容" prop="content" >
-              <div class="box" v-html="form.content"></div>
-            </a-form-model-item>
-          </div>
-          <div v-if="form.contentType==='VIDEO'">
-            <a-form-model-item label="内容" prop="content" >
-              <video
-                ref="videoPlayer"
-                width="230"
-                height="150"
-                controls
-                loop
-                controlsList="nodownload">
-                <source :src="form.content" type="video/mp4">
-              </video>
-            </a-form-model-item>
-          </div>
-          <div v-if="form.contentType==='LINK'">
-            <a-form-model-item label="内容" prop="ruleType">
-              {{ form.content }}
-            </a-form-model-item>
-          </div>
-          <div v-show="form.contentType==='LINK'&&form.content === '/pagesB/promoDetail'">
-            <a-form-model-item label="基本规则" prop="ruleType">
-              {{ form.promoRule&&form.promoRule.ruleType?form.promoRule.ruleType==='ticket'?'指定产品返代金券':'--':'--' }}
-            </a-form-model-item>
-            <a-form-model-item label="券名称" prop="ruleName">
-              {{ form.promoRule&&form.promoRule.ruleName?form.promoRule.ruleName:'--' }}
-            </a-form-model-item>
-            <a-form-model-item label="券副标题" prop="ruleTitle">
-              {{ form.promoRule&&form.promoRule.ruleTitle?form.promoRule.ruleTitle:'--' }}
-            </a-form-model-item>
-            <a-form-model-item label="生成方式" prop="ruleBaseType">
-              {{ form.promoRule&&form.promoRule.ruleBaseType?form.promoRule.ruleBaseType==='bill'?'按订单生成券':'按订单产品款数生成券':'--' }}
-            </a-form-model-item>
-            <a-form-model-item label="券有效期" prop="validType" >
-              <span>
-                {{ form.promoRule&&form.promoRule.validType?form.promoRule.validType==='FIXED'?'固定日期':'领取后,立即生效,':'--' }}
-              </span>
-              <span class="timeBox" v-if="form.promoRule&&form.promoRule.validType&&form.promoRule.validType==='FIXED'">{{ form.promoRule.validStartDate }}~{{ form.promoRule.validEndDate }}</span>
-              <span class="timeBox" v-else>有效期{{ form.promoRule&&form.promoRule.validDays?form.promoRule.validDays:'--' }}天</span>
-            </a-form-model-item>
-            <a-form-model-item label="券适用范围" prop="range" >
-              全部产品
-            </a-form-model-item>
-            <a-form-model-item label="使用说明" prop="ruleExplain" >
-              {{ form.promoRule&&form.promoRule.ruleExplain?form.promoRule.ruleExplain:'--' }}
-            </a-form-model-item>
-            <a-form-model-item label="产品范围" prop="productRangeList" >
-              <div v-if="productRangeList&&productRangeList.length>0" style="margin-bottom:10px;">
-                <a-tree-select
-                  v-model="productRangeList"
-                  :tree-data="productTypeList"
-                  tree-checkable
-                  :disabled="true"
-                  :getPopupContainer="triggerNode => triggerNode.parentNode"
-                  :replaceFields="{children:'children',title: 'productTypeName',key: 'productTypeSn',value: 'productTypeSn'}"
-                  placeholder="请选择产品范围" />
-              </div>
-              <div v-else>--</div>
-            </a-form-model-item>
-            <a-form-model-item label="返券产品" prop="publishFlag" >
-              <div class="productTable">
-                <s-table
-                  class="sTable"
-                  ref="table"
-                  size="small"
-                  :rowKey="(record) => record.id"
-                  :columns="columns"
-                  :data="loadData"
-                  :defaultLoadData="false"
-                  :style="{ maxHeight: 300+'px' }"
-                  :scroll="{ y:230 }"
-                  bordered>
-                </s-table>
-              </div>
-            </a-form-model-item>
-          </div>
+          <a-row>
+            <a-col :xs="12" :sm="12">
+              <a-form-model-item label="促销名称" prop="promoName" :label-col="{span:8}" :wrapper-col="{span:14}">
+                {{ form.promoName }}
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="12" :sm="12">
+              <a-form-model-item label="促销时间" prop="promoName" :label-col="{span:8}" :wrapper-col="{span:14}">
+                {{ form.promoStartDate }}~{{ form.promoEndDate }}
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="12" :sm="12">
+              <a-form-model-item label="排序" prop="sort" :label-col="{span:8}" :wrapper-col="{span:14}">
+                {{ form.sort||form.sort==0?form.sort:'--' }}
+              </a-form-model-item>
+            </a-col>
+            <!-- <a-col :xs="12" :sm="12">
+              <a-form-model-item label="参与经销商" prop="allDealerFlag" :label-col="{span:8}" :wrapper-col="{span:14}">
+                {{ form.allDealerFlag=='1'?'全部经销商':'部分经销商' }}
+              </a-form-model-item>
+            </a-col> -->
+            <a-col :xs="24" :sm="24">
+              <a-form-model-item label="封面图片" prop="imageUrl">
+                <img
+                  :src="form.imageUrl"
+                  alt="图片走丢了"
+                  width="80"
+                  height="80"
+                  style="margin-right:10px;object-fit: cover;"/>
+                <div class="upload-desc">说明:单张大小小于10Mb;建议尺寸:宽(420px)*高(230px)</div>
+              </a-form-model-item>
+            </a-col>
+            <a-col :xs="24" :sm="24">
+              <a-form-model-item label="促销描述" prop="description" >
+                {{ form.description||'--' }}
+              </a-form-model-item>
+            </a-col>
+            <!-- <a-col :xs="24" :sm="24">
+              <a-form-model-item label="加盟商开关权限:" prop="dealerOpenFlag" >
+                {{ form.dealerOpenFlag?form.dealerOpenFlag==='1'?'是':'否':'--' }}
+              </a-form-model-item>
+            </a-col> -->
+            <div v-if="form.promoType==='BUY_PROD_GIVE_VALID'">
+              <a-col :xs="12" :sm="12">
+                <a-form-model-item label="券名称" prop="validName" :label-col="{span:8}" :wrapper-col="{span:14}">
+                  {{ form.validName }}
+                </a-form-model-item>
+              </a-col>
+              <a-col :xs="12" :sm="12">
+                <a-form-model-item label="券副标题" :label-col="{span:8}" :wrapper-col="{span:14}">
+                  {{ form.validTitle ||'--' }}
+                </a-form-model-item>
+              </a-col>
+              <!-- <a-col :xs="24" :sm="24">
+                <a-form-model-item label="生成方式" prop="validBaseType">
+                  {{ form.validBaseTypeDictValue||'--' }}
+                </a-form-model-item>
+              </a-col> -->
+              <a-col :xs="24" :sm="24">
+                <a-form-model-item label="券有效期" prop="validType">
+                  <span>{{ form.validType==='FIXED'?'固定日期':'领取后,立即生效' }}</span>
+                  <span style="margin-left:10px;" v-if="form.validType==='FIXED'">{{ form.validStartDate }}~{{ form.validEndDate }}</span>
+                  <span style="margin-left:10px;" v-else>有效期{{ form.validDays }}天</span>
+                </a-form-model-item>
+              </a-col>
+              <a-col :xs="24" :sm="24">
+                <a-form-model-item label="券适用范围" prop="validScope">
+                  {{ form.validScope=='1'?'全部产品':'--' }}
+                </a-form-model-item>
+              </a-col>
+              <a-col :xs="24" :sm="24">
+                <a-form-model-item label="使用说明">
+                  {{ form.validInfo||'--' }}
+                </a-form-model-item>
+              </a-col>
+            </div>
+            <a-col :xs="24" :sm="24">
+              <a-form-model-item :label="form.promoType==='BUY_PROD_GIVE_PROD'?'满赠规则': form.promoType==='PROMO_PROD'?'优惠方式':'返券产品'" prop="promoName" >
+                <div class="productTable">
+                  <s-table
+                    class="sTable"
+                    ref="table"
+                    size="small"
+                    :rowKey="(record) => record.id"
+                    :columns="columns"
+                    :data="loadData"
+                    :defaultLoadData="false"
+                    :style="{ maxHeight: 300+'px' }"
+                    :scroll="{ y:230 }"
+                    bordered>
+                  </s-table>
+                </div>
+              </a-form-model-item>
+            </a-col>
+          </a-row>
         </a-form-model>
         <div class="btn-cont">
-          <a-button id="promotion-basicInfo-modal-back" @click="isShow = false">关闭</a-button>
+          <a-button id="promotion-basicInfo-modal-close" @click="isShow = false">关闭</a-button>
         </div>
       </div>
     </a-spin>
@@ -127,9 +123,10 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+// 组件
 import { STable } from '@/components'
-import { productTypeQuery } from '@/api/productType'
-import { promoActiveDetail, promoRuleProductList } from '@/api/promoActive'
+// 接口
+import { shopPromoDetail, shopPromoProductList } from '@/api/shopPromo'
 
 export default {
   name: 'DetailModal',
@@ -140,7 +137,7 @@ export default {
       type: Boolean,
       default: false
     },
-    itemSn: {
+    itemSn: {// 活动sn
       type: String,
       default: ''
     }
@@ -149,72 +146,64 @@ export default {
     return {
       isShow: this.openModal, //  是否打开弹框
       spinning: false,
+      // form表单label布局
       formItemLayout: {
         labelCol: { span: 4 },
         wrapperCol: { span: 18 }
       },
-      productTypeList: [],
-      productRangeList: [],
+      productTypeList: [], // 产品范围数据
+      productRangeList: [], // 已选产品范围
       form: {
-        promoActiveSn: undefined, // 促销活动sn
-        title: '', // 标题
-        imageSet: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '', // 内容
-        contentLink: '', // 链接内容
+        promoType: undefined, // 促销类型
+        promoName: '', // '促销名称'
+        time: [], // 促销时间
+        promoStartDate: undefined, // 促销时间-开始
+        promoEndDate: undefined, // 促销时间-结束
         sort: undefined, // 排序
-        ruleEnableFlag: '1', // 参数配置 1勾选配置  0不能配置
-        publishFlag: '0',
-        dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        promoRule: {
-          ruleType: 'ticket', // 基本规则类型
-          productRangeFlag: '', // 产品范围标记 0无  1有产品范围
-          productRangeList: [], // 产品范围列表
-          ruleName: '', // 券名称
-          ruleTitle: '', // 副标题
-          ruleBaseType: 'category', // 券生成方式
-          ruleExplain: '', // 使用说明
-          validType: undefined, // 券有效期类型
-          validStartDate: undefined, // 券生效时间
-          validEndDate: undefined, // 券失效时间
-          validDays: undefined, // 券有效期天数
-          range: '1'
-        }
+        allDealerFlag: '1', // 全部经销商 1   部分经销商0'
+        imageUrl: undefined, // 促销封面图
+        description: '', // '促销描述'
+        dealerEditFlag: '0', // 加盟商编辑 0否 1是
+        dealerOpenFlag: '0', // 加盟商开关权限 0否 1是
+        rangeList: [], // 选择产品列表
+        discountType: 'STRAIGHT_DOWN', // 特价产品 - 优惠方式'
+        validName: '', // 券名称
+        validTitle: '', // 券副标题
+        validBaseType: undefined, // 券生成方式
+        validType: undefined, // 券有效期类型
+        validStartDate: undefined, // 券生效时间
+        validEndDate: undefined, // 券失效时间
+        validDays: undefined, // 券有效期天数
+        validScope: '1', // 券适用范围标记 1-全部 0-指定  死值 1
+        validInfo: '' // 使用说明
       },
-      imageSet: [],
-      columns: [
-        { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '产品编码', dataIndex: 'productCode', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '原厂编码', dataIndex: 'origCode', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '活动价', dataIndex: 'price', width: '12%', align: 'right', customRender: text => { return ((text || text == 0) ? this.toThousands(text) : '--') } },
-        { title: '返券金额', dataIndex: 'ruleValue', width: '12%', align: 'right', customRender: text => { return ((text || text == 0) ? this.toThousands(text) : '--') } },
-        { title: '参考终端价', dataIndex: 'terminalPrice', width: '10%', align: 'right', customRender: text => { return ((text || text == 0) ? this.toThousands(text) : '--') } }
-      ],
+      // 表单验证规则
       rules: {
-        title: [{ required: true, message: '请输入标题名称', trigger: 'blur' }],
-        imageSet: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
+        promoName: [{ required: true, message: '请输入促销名称', trigger: 'blur' }],
+        time: [{ required: true, message: '请选择促销时间', trigger: 'change' }],
         sort: [{ required: true, message: '请输入排序数字', trigger: 'blur' }],
-        contentType: [{ required: true, message: '请选择内容类型', trigger: 'change' }],
-        content: [{ required: true, message: '请输入对应内容', trigger: ['blur', 'change'] }],
-        contentLink: [{ required: true, message: '请输入对应内容', trigger: 'blur' }],
-        range: [{ required: true, message: '请选择券适用范围', trigger: 'change' }],
-        ruleType: [{ required: true, message: '请选择基本规则', trigger: 'change' }],
-        ruleName: [{ required: true, message: '请输入券名称', trigger: ['change', 'blur'] }],
-        ruleBaseType: [{ required: true, message: '请选择生成方式', trigger: 'change' }],
+        allDealerFlag: [{ required: true, message: '请选择参与经销商', trigger: 'change' }],
+        imageUrl: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
+        description: [{ required: true, message: '请输入促销描述内容', trigger: 'blur' }],
+        dealerOpenFlag: [{ required: true, message: '请选择加盟商开关权限', trigger: 'change' }],
+        rangeList: [{ required: true, message: '请选择促销产品', trigger: 'change' }],
+        validName: [{ required: true, message: '请输入券名称', trigger: ['change', 'blur'] }],
+        validBaseType: [{ required: true, message: '请选择生成方式', trigger: 'change' }],
         validType: [{ required: true, message: '请选择券有效期类型', trigger: 'change' }],
-        ruleDetailList: [{ type: 'array', required: true, message: '请选择券内容', trigger: 'blur' }]
+        validScope: [{ required: true, message: '请选择券适用范围', trigger: 'blur' }]
       },
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
         const params = Object.assign(parameter, this.queryParam)
-        params.promoActiveSn = this.itemSn
-        return promoRuleProductList(params).then(res => {
+        params.promoSn = this.itemSn
+        // 获取详情  已选参与活动产品数据
+        return shopPromoProductList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
+            // 计算表格序号
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
@@ -227,68 +216,63 @@ export default {
       }
     }
   },
+  computed: {
+    columns () {
+      const _this = this
+      const arr = [
+        { title: '序号', dataIndex: 'no', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品编码', dataIndex: 'productCode', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品名称', dataIndex: 'productName', width: '28%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '原厂编码', dataIndex: 'productOrigCode', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '商城售价', dataIndex: 'shopProductPrice', width: '10%', align: 'right', customRender: text => { return ((text || text == 0) ? _this.toThousands(text) : '--') } }
+      ]
+      if (_this.form.promoType === 'BUY_PROD_GIVE_PROD') {
+        arr.splice(4, 0, { title: '买', dataIndex: 'conditionValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } })
+        arr.splice(5, 0, { title: '赠', dataIndex: 'resultValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } })
+      } else if (_this.form.promoType === 'PROMO_PROD') {
+        arr.splice(5, 0, { title: '特价价格', dataIndex: 'conditionValue', width: '10%', align: 'right', customRender: text => { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
+      } else {
+        arr.splice(5, 0, { title: '返券金额', dataIndex: 'resultValue', width: '10%', align: 'center', customRender: text => { return ((text || text == 0) ? _this.toThousands(text) : '--') } })
+      }
+      return arr
+    }
+  },
   methods: {
     // 重置
     resetSearchForm () {
       this.form = {
-        promoActiveSn: undefined, // 促销活动sn
-        title: '', // 标题
-        imageSet: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '', // 内容
-        contentLink: '', // 链接内容
+        promoType: undefined, // 促销类型
+        promoName: '', // '促销名称'
+        time: [], // 促销时间
+        promoStartDate: undefined, // 促销时间-开始
+        promoEndDate: undefined, // 促销时间-结束
         sort: undefined, // 排序
-        ruleEnableFlag: '1', // 参数配置 1勾选配置  0不能配置
-        publishFlag: '0',
-        dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        promoRule: {
-          ruleType: 'ticket', // 基本规则类型
-          productRangeFlag: '', // 产品范围标记 0无  1有产品范围
-          productRangeList: [], // 产品范围列表
-          ruleName: '', // 券名称
-          ruleTitle: '', // 副标题
-          ruleBaseType: 'category', // 券生成方式
-          ruleExplain: '', // 使用说明
-          validType: undefined, // 券有效期类型
-          validStartDate: undefined, // 券生效时间
-          validEndDate: undefined, // 券失效时间
-          validDays: undefined, // 券有效期天数
-          range: '1'
-        }
+        allDealerFlag: '1', // 全部经销商 1   部分经销商0'
+        imageUrl: undefined, // 促销封面图
+        description: '', // '促销描述'
+        dealerEditFlag: '0', // 加盟商编辑 0否 1是
+        dealerOpenFlag: '0', // 加盟商开关权限 0否 1是
+        rangeList: [], // 选择产品列表
+        discountType: 'STRAIGHT_DOWN', // 特价产品 - 优惠方式'
+        validName: '', // 券名称
+        validTitle: '', // 券副标题
+        validBaseType: undefined, // 券生成方式
+        validType: undefined, // 券有效期类型
+        validStartDate: undefined, // 券生效时间
+        validEndDate: undefined, // 券失效时间
+        validDays: undefined, // 券有效期天数
+        validScope: '1', // 券适用范围标记 1-全部 0-指定  死值 1
+        validInfo: '' // 使用说明
       }
-      this.imageSet = []
-      this.productRangeList = []
     },
     // 获取列表详情
     getDetail () {
-      promoActiveDetail({ sn: this.itemSn }).then(res => {
+      shopPromoDetail({ sn: this.itemSn }).then(res => {
         if (res.status == 200) {
-          if (res.data.contentType === 'LINK') {
-            console.log('加载产品范围')
-            this.$nextTick(() => {
-              this.getTreeData()
-            })
-            if (res.data.promoRule && res.data.promoRule.productRangeList && res.data.promoRule.productRangeList.length > 0) {
-              this.productRangeList = res.data.promoRule.productRangeList.map(item => { return item.productTypeSn })
-            } else {
-              this.productRangeList = []
-            }
-          }
-          if (res.data.images) {
-            this.form.imageSet = res.data.images
-            this.imageSet = res.data.images.split(',')
-          }
           this.form = res.data
-        }
-      })
-    },
-    // 获取产品范围数据
-    getTreeData () {
-      productTypeQuery({}).then(res => {
-        if (res.status == 200) {
-          this.productTypeList = res.data
-        } else {
-          this.productTypeList = []
+          this.$nextTick(() => {
+            this.$refs.table.refresh(true)
+          })
         }
       })
     }
@@ -305,9 +289,6 @@ export default {
         this.resetSearchForm()
       } else {
         this.getDetail()
-        this.$nextTick(() => {
-          this.$refs.table.refresh(true)
-        })
       }
     }
   }

+ 37 - 58
src/views/promotionManagement/promotionInfo/list.vue

@@ -5,39 +5,39 @@
       <div ref="tableSearch" class="table-page-search-wrapper">
         <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
           <a-row :gutter="15">
-            <a-col :md="6" :sm="24">
+            <a-col :md="5" :sm="24">
               <a-form-item label="发布时间">
                 <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
               </a-form-item>
             </a-col>
-            <a-col :md="6" :sm="24">
+            <a-col :md="5" :sm="24">
               <a-form-item label="促销名称">
-                <a-input id="promotionInfoList-name" v-model.trim="queryParam.name" allowClear placeholder="请输入促销名称"/>
+                <a-input id="promotionInfoList-promoName" v-model.trim="queryParam.promoName" allowClear placeholder="请输入促销名称"/>
               </a-form-item>
             </a-col>
-            <!-- <a-col :md="4" :sm="24">
-              <a-form-item label="显示状态">
-                <a-select
-                  v-model="queryParam.showFlag"
-                  placeholder="请选择显示状态"
-                  allowClear>
-                  <a-select-option :value="1">已显示</a-select-option>
-                  <a-select-option :value="0">未显示</a-select-option>
-                </a-select>
+            <a-col :md="5" :sm="24">
+              <a-form-item label="促销类型">
+                <v-select
+                  v-model="queryParam.promoType"
+                  ref="sourceType"
+                  id="promotionInfoList-promoType"
+                  code="SHOP_PROMO_PROMO_TYPE"
+                  placeholder="请选择促销类型"
+                  allowClear></v-select>
               </a-form-item>
-            </a-col> -->
-            <a-col :md="6" :sm="24">
+            </a-col>
+            <a-col :md="5" :sm="24">
               <a-form-item label="促销状态">
                 <v-select
-                  v-model="queryParam.dealerPublishState"
+                  v-model="queryParam.promoState"
                   ref="sourceType"
-                  id="promotionInfoList-dealerPublishState"
-                  code="PROMO_STATE"
+                  id="promotionInfoList-promoState"
+                  code="SHOP_PROMO_PROMO_STATE"
                   placeholder="请选择促销状态"
                   allowClear></v-select>
               </a-form-item>
             </a-col>
-            <a-col :md="6" :sm="24">
+            <a-col :md="4" :sm="24">
               <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="promotionInfoList-refresh">查询</a-button>
               <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="promotionInfoList-reset">重置</a-button>
             </a-col>
@@ -58,32 +58,12 @@
         bordered>
         <!-- 促销时间 -->
         <template slot="promotionTime" slot-scope="text, record">
-          <span>{{ record.activeDateStart }}至{{ record.activeDateEnd }}</span>
-        </template>
-        <!-- 促销描述 -->
-        <template slot="desc" slot-scope="text, record">
-          <a-tooltip placement="rightBottom" v-if="record.description&&record.description.length>60">
-            <template slot="title">
-              <span>{{ record.description }}</span>
-            </template>
-            <div class="desc font1" @click="handleDescModal(record)">{{ record.description }}</div>
-          </a-tooltip>
-          <div v-else class="desc font1" @click="handleDescModal(record)">{{ record.description }}</div>
-        </template>
-        <!-- 状态 -->
-        <template slot="dealerPublishState" slot-scope="text, record">
-          <span v-if="record.dealerPublishState">
-            {{ record.dealerPublishState == 'PUBLISH'?'已开启':record.dealerPublishState == 'END'?'已结束':record.dealerPublishState == 'CLOSE'?'已关闭' :'未开启' }}
-          </span>
-          <span v-else>--</span>
+          <span>{{ record.promoStartDate }}至{{ record.promoEndDate }}</span>
         </template>
         <!-- 促销展示 -->
         <template slot="salesShow" slot-scope="text, record">
-          <div @click="handleSaleShow(record)" v-if="record.contentType!='LINK'&&record.images && record.images.length>0">
-            <img :src="record.images[0]" alt="图片走丢啦" width="60" />
-          </div>
-          <div v-else-if="record.contentType=='LINK'&&record.images && record.images.length>0">
-            <img :src="record.images[0]" alt="图片走丢啦" width="60" />
+          <div @click="handleDescModal(record)" v-if="record.imageUrl">
+            <img :src="record.imageUrl" alt="图片走丢啦" width="60" />
           </div>
           <span v-else>--</span>
         </template>
@@ -119,10 +99,8 @@
         </template>
       </s-table>
     </a-spin>
-    <!-- 促销描述 -->
-    <promotion-desc-modal :con="descInfo" :openModal="openDescModal" @close="openDescModal = false"/>
     <!-- 促销展示 -->
-    <promotion-show-modal ref="promotionShow" :openModal="openShowModal" @close="openShowModal = false"/>
+    <promotion-desc-modal :con="descInfo" :openModal="openDescModal" @close="openDescModal = false"/>
     <!-- 查看 -->
     <detail-Modal :openModal="openDetailModal" :itemSn="itemId" @close="closeDetailModal" @ok="$refs.table.refresh()" />
   </a-card>
@@ -135,7 +113,8 @@ import rangeDate from '@/views/common/rangeDate.vue'
 import promotionDescModal from './promotionDescModal'
 import promotionShowModal from './promotionShowModal'
 import detailModal from './detailModal'
-import { promoActiveList, closeActive, publishActive } from '@/api/promoActive'
+import { shopPromoList } from '@/api/shopPromo'
+import { closeActive, publishActive } from '@/api/promoActive'
 
 export default {
   name: 'UrgentOffsetList',
@@ -151,29 +130,28 @@ export default {
       queryParam: { //  查询条件
         beginDate: undefined,
         endDate: undefined,
-        name: '', //  促销名称
-        dealerPublishState: undefined// 促销状态
+        promoName: '', //  促销名称
+        promoType: '', // 促销类型
+        promoState: undefined// 促销状态
       },
       descInfo: '', // 促销描述
       disabled: false, //  查询、重置按钮是否可操作
       openDetailModal: false,
       columns: [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
-        { title: '发布时间', dataIndex: 'publishTime', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '促销名称', dataIndex: 'name', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '标题', dataIndex: 'title', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '发布时间', dataIndex: 'createDate', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '促销名称', dataIndex: 'promoName', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '促销时间', scopedSlots: { customRender: 'promotionTime' }, width: '20%', align: 'center' },
-        { title: '促销描述', scopedSlots: { customRender: 'desc' }, width: '20%', align: 'center' },
+        { title: '促销类型', dataIndex: 'promoTypeDictValue', width: '20%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '促销展示', scopedSlots: { customRender: 'salesShow' }, width: '10%', align: 'center' },
-        // { title: '显示状态', scopedSlots: { customRender: 'showStatus' }, width: '10%', align: 'center' },
-        { title: '状态', scopedSlots: { customRender: 'dealerPublishState' }, width: '10%', align: 'center' },
+        { title: '状态', dataIndex: 'promoStateDictValue', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        return promoActiveList(Object.assign(parameter, this.queryParam)).then(res => {
+        return shopPromoList(Object.assign(parameter, this.queryParam)).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
@@ -194,7 +172,7 @@ export default {
     // 打开详情
     handleSee (row) {
       this.openDetailModal = true
-      this.itemId = row.promoActiveSn
+      this.itemId = row.promoSn
     },
     // 关闭详情
     closeDetailModal () {
@@ -208,7 +186,7 @@ export default {
     },
     // 查看促销描述
     handleDescModal (row) {
-      this.descInfo = row.description
+      this.descInfo = row.imageUrl
       const _this = this
       this.$nextTick(() => {
         _this.openDescModal = true
@@ -282,8 +260,9 @@ export default {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = undefined
       this.queryParam.endDate = undefined
-      this.queryParam.name = ''
-      this.queryParam.dealerPublishState = undefined
+      this.queryParam.promoName = ''
+      this.queryParam.promoType = undefined
+      this.queryParam.promoState = undefined
       this.$refs.table.refresh(true)
     },
     pageInit () {

+ 12 - 3
src/views/promotionManagement/promotionInfo/promotionDescModal.vue

@@ -9,7 +9,7 @@
     @cancel="isShow=false"
     :width="500">
     <div class="promotionDesc-con">
-      <p>{{ con }}</p>
+      <img :src="con" alt="图片走丢了" />
     </div>
     <div class="btn-cont">
       <a-button type="primary" id="promotionDesc-modal-back" @click="isShow = false">关闭</a-button>
@@ -34,7 +34,7 @@ export default {
   },
   data () {
     return {
-      modalTit: '促销描述',
+      modalTit: '预览',
       isShow: this.openModal //  是否打开弹框
     }
   },
@@ -56,7 +56,16 @@ export default {
 <style lang="less">
   .promotionDesc-modal{
     .promotionDesc-con{
-       text-align: center;
+      width:90%;
+      margin:0 auto;
+      max-height:700px;
+      overflow-y:scroll;
+      scrollbar-width: none;
+      img{
+         width:100%;
+         height:auto;
+         object-fit:cover;
+       }
     }
     .btn-cont {
       text-align: center;

+ 1 - 0
src/views/salesManagement/salesQuery/edit.vue

@@ -14,6 +14,7 @@
             @click="handleEdit"
             style="margin-left:10px"
             key="0">编辑客户信息</a-button>
+          <span style="margin-right:10px;color: #ED1C24;" v-if="detailData.sourceType==='XPRH_PURCHASE'">请注意:该销售单若为促销订单,增删改产品会影响促销活动</span>
         </template>
         <!-- 操作区,位于 title 行的行尾 -->
         <template slot="extra" v-if="$hasPermissions('B_salesPrint')">

+ 1 - 1
src/views/salesManagement/salesQueryNew/chooseProductModal.vue

@@ -183,11 +183,11 @@
         <template slot="action" slot-scope="text, record">
           <span style="color:#999;" v-if="hasChecked(record)">已添加</span>
           <a-button
+            v-else
             size="small"
             type="link"
             class="button-primary"
             @click="handleAdd(record)"
-            v-else
             id="productInfoList-edit-btn">添加</a-button>
           <a-button
             size="small"

+ 1 - 0
src/views/salesManagement/salesQueryNew/edit.vue

@@ -17,6 +17,7 @@
           @click="handleEdit"
           key="0"><a-icon type="edit" /> 编辑</a-button>
         <a-button id="purchaseNewOrderEdit-back-btn" type="link" @click="handleBack" class="button-default"> <a-icon type="rollback" /> 返回列表</a-button>
+        <span style="margin-right:10px;color: #ED1C24;" v-if="detailData.sourceType==='XPRH_PURCHASE'">请注意:该销售单若为促销订单,增删改产品会影响促销活动</span>
       </template>
       <!-- 操作区,位于 title 行的行尾 -->
       <template slot="extra" v-if="$hasPermissions('B_salesPrint')">