chenrui преди 9 месеца
родител
ревизия
fb43c1ee60

+ 16 - 5
src/api/shopBanner.js

@@ -48,13 +48,24 @@ export const updateShopBanner = (params) => {
   })
 }
 
-export const warehouseLocDel = params => {
+// 查看详情
+export const shopBannerDetail = (params) => {
   return axios({
-    url: `/warehouseLoc/delete/${params.sn}`,
-    data: {},
-    method: 'get',
+    url: '/shopBanner/view',
+    data: params,
+    method: 'post'
+  })
+}
+
+// 查看经销商  导出
+export const shopBannerExport = params => {
+  return axios.request({
+    url: '/shopBanner/exportList',
+    method: 'post',
+    data: params,
+    responseType: 'blob',
     headers: {
-      'module': encodeURIComponent('删除')
+      'module': encodeURIComponent('导出')
     }
   })
 }

+ 1 - 6
src/api/shopPromo.js

@@ -62,11 +62,6 @@ export const updateShopBanner = (params) => {
     method: 'post'
   })
 }
-// shopPromo/updateShopBanner 修改商城轮播图
-// {
-//     "promoSn":"sn",
-//     "shopBannerFlag": "轮播图标记 0 否 1 是"
-// }
 
 //  促销活动  保存
 export const saveShopPromo = (params) => {
@@ -77,7 +72,7 @@ export const saveShopPromo = (params) => {
   })
 }
 
-// 获取已选产品列表  有分页
+// 选择产品 获取已选产品列表  有分页
 export const chooseProductList = (params) => {
   const url = `/shopPromoProduct/queryPage/${params.pageNo}/${params.pageSize}`
   delete params.pageNo

+ 12 - 0
src/config/router.config.js

@@ -3719,6 +3719,18 @@ export const asyncRouterMap = [
                   replaceTab: true
                   // permission: 'B_homepageCarouselImgAdd'
                 }
+              },
+              {
+                path: 'edit/:sn',
+                name: 'carouselImageEdit',
+                component: () => import(/* webpackChunkName: "easyPassManagement" */ '@/views/easyPassManagement/homepageCarouselImg/edit.vue'),
+                meta: {
+                  title: '编辑轮播图',
+                  icon: 'file-ppt',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'B_homepageCarouselImgEdit'
+                }
               }
             ]
           }

+ 46 - 112
src/views/easyPassManagement/homepageCarouselImg/detailModal.vue

@@ -17,32 +17,31 @@
           :rules="rules"
           :label-col="formItemLayout.labelCol"
           :wrapper-col="formItemLayout.wrapperCol" >
-          <a-form-model-item label="轮播图名称" prop="title">
-            {{ form.title }}
+          <a-form-model-item label="轮播图名称" prop="bannerName">
+            {{ form.bannerName }}
           </a-form-model-item>
-          <a-form-model-item label="轮播时间" prop="validType" >
+          <a-form-model-item label="轮播时间" prop="time" >
             <span>
-             {{ form.promoRule.validStartDate }}~{{ form.promoRule.validEndDate }}
+              {{ form.bannerStartDate }}~{{ form.bannerEndDate }}
             </span>
           </a-form-model-item>
           <a-form-model-item label="轮播图排序" prop="sort">
             {{ form.sort }}
           </a-form-model-item>
-          <a-form-model-item label="参与经销商" prop="sort">
-           <span>{{ form.sort }}</span>
-            <div class="buyerBox">
-              <a-tag closable v-for="con in chooseDealerList" id="promotionList-dealerSn" :key="con.dealerSn" @close="delBuyerName(con)">
+          <a-form-model-item label="参与经销商" prop="allDealerFlag">
+            <span>{{ form.allDealerFlag=='1'?'全部经销商':'部分经销商' }}</span>
+            <div class="buyerBox" v-if="form.dealerList&&form.dealerList.length>0">
+              <a-tag v-for="con in form.dealerList" id="promotionList-dealerSn" :key="con.dealerSn" @close="delBuyerName(con)">
                 {{ con.dealerName }}
               </a-tag>
             </div>
           </a-form-model-item>
-          <a-form-model-item label="封面图片" prop="imageSet">
+          <a-form-model-item label="封面图片" prop="imageUrl">
             <img
-              :src="con"
+              :src="form.imageUrl"
               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>
@@ -50,8 +49,20 @@
           <a-form-model-item label="内容类型" prop="contentType">
             {{ form.contentType==='IMAGE_CONTENT'?'图文展示':form.contentType==='VIDEO'?'视频展示':'跳转链接' }}
           </a-form-model-item>
-          <a-form-model-item label="内容" prop="content" >
-            <div class="box" v-html="form.content"></div>
+          <a-form-model-item label="内容" prop="content">
+            <div style="border:1px solid #efefef;border-radius:8px;padding:10px 20px;" v-if="form.contentType==='IMAGE_CONTENT'" v-html="form.content"></div>
+            <div v-else-if="form.contentType==='VIDEO'">
+              <video
+                ref="videoPlayer"
+                width="230"
+                height="150"
+                controls
+                loop
+                controlsList="nodownload">
+                <source :src="form.content" type="video/mp4">
+              </video>
+            </div>
+            <div v-else>{{ form.content }}</div>
           </a-form-model-item>
         </a-form-model>
         <div class="btn-cont">
@@ -67,8 +78,7 @@ import { commonMixin } from '@/utils/mixin'
 // 组件
 import { STable } from '@/components'
 // 接口
-import { productTypeQuery } from '@/api/productType'
-import { promoActiveDetail, promoRuleProductList } from '@/api/promoActive'
+import { shopBannerDetail } from '@/api/shopBanner'
 
 export default {
   name: 'DetailModal',
@@ -95,80 +105,29 @@ export default {
       },
       productTypeList: [], // 产品范围数据
       productRangeList: [], // 已选产品范围
-      chooseDealerList:[{},{}],
+      chooseDealerList: [{}, {}],
       form: {
-        promoActiveSn: undefined, // 促销活动sn
-        title: '', // 标题
-        imageSet: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '', // 内容
-        contentLink: '', // 链接内容
+        bannerSn: undefined, // 轮播图sn
+        bannerName: '', // 轮播图名称
+        time: [], // 轮播时间
+        bannerStartDate: undefined,
+        bannerEndDate: undefined,
         sort: undefined, // 排序
-        ruleEnableFlag: '1', // 参数配置 1勾选配置  0不能配置
-        publishFlag: '0', // 是否发布 0 否 1是
-        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', // 参与经销商 0 部分 1全部
+        dealerSnList: [], // 已选经销商sn列表
+        imageUrl: '', // 图片
+        contentType: 'IMAGE_CONTENT', // 内容类型
+        content: '' // 内容
       },
-      imageSet: [], // 封面图
-      columns: [// 表头
-        { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '产品编码', dataIndex: 'productCode', width: '12%', 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: '10%', align: 'right', customRender: text => { return ((text || text == 0) ? this.toThousands(text) : '--') } },
-        { title: '返券金额', dataIndex: 'ruleValue', width: '10%', 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' }],
+        bannerName: [{ required: true, message: '请输入轮播图名称', trigger: 'blur' }],
+        time: [{ required: true, message: '请选择轮播时间', trigger: 'change' }],
         sort: [{ required: true, message: '请输入排序数字', trigger: 'blur' }],
+        allDealerFlag: [{ required: true, message: '请选择参与经销商', trigger: 'change' }],
+        imageUrl: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
         contentType: [{ required: true, message: '请选择内容类型', trigger: 'change' }],
-        content: [{ required: true, message: '请输入对应内容', trigger: ['blur', 'change'] }],
-        contentLink: [{ required: true, message: '请输入对应内容', trigger: 'blur' }],
-        publishFlag: [{ required: true, message: '请选择是否发布', trigger: 'change' }],
-        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' }],
-        validType: [{ required: true, message: '请选择券有效期类型', trigger: 'change' }],
-        ruleDetailList: [{ type: 'array', 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 => {
-          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
-            }
-            this.disabled = false
-          }
-          this.spinning = false
-          return data
-        })
+        content: [{ required: true, message: '请输入对应内容', trigger: ['blur', 'change'] }]
       }
     }
   },
@@ -205,36 +164,11 @@ export default {
     },
     // 获取列表详情
     getDetail () {
-      promoActiveDetail({ sn: this.itemSn }).then(res => {
+      shopBannerDetail({ bannerSn: 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.imageSet) {
-            this.form.imageSet = res.data.imageSet.join(',')
-            this.imageSet = res.data.imageSet
-          }
           this.form = res.data
         }
       })
-    },
-    // 获取产品范围数据
-    getTreeData () {
-      productTypeQuery({}).then(res => {
-        if (res.status == 200) {
-          this.productTypeList = res.data
-        } else {
-          this.productTypeList = []
-        }
-      })
     }
   },
   watch: {
@@ -247,11 +181,11 @@ export default {
       if (!newValue) {
         this.$emit('close')
         this.resetSearchForm()
-      } else {
+      }
+    },
+    itemSn (newValue, oldValue) { // 查看详情
+      if (this.isShow && newValue) {
         this.getDetail()
-        this.$nextTick(() => {
-          this.$refs.table.refresh(true)
-        })
       }
     }
   }

+ 30 - 158
src/views/easyPassManagement/homepageCarouselImg/edit.vue

@@ -5,7 +5,7 @@
         <!-- 自定义的二级文字标题 -->
         <template slot="subTitle">
           <a id="promotionEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" />返回列表</a>
-          <span v-if="$route.params.sn" style="margin: 0 10px 0 20px;color: #666;font-size: 14px;font-weight: 600;">促销名称:{{ promotionName||'--' }}</span>
+          <span v-if="$route.params.sn" style="margin: 0 10px 0 20px;color: #666;font-size: 14px;font-weight: 600;">促销名称:{{ form.bannerName||'--' }}</span>
         </template>
       </a-page-header>
       <!-- 表单 -->
@@ -37,7 +37,7 @@
                   :format="dateFormat"
                   id="promotionEdit-time"
                   @change="dateChange"
-                  :disabled="isDisabled"
+                  :disabled="$route.params.sn"
                   :disabled-date="disabledDate"
                   :placeholder="['开始时间', '结束时间']" />
               </a-form-model-item>
@@ -47,7 +47,6 @@
                 <a-input-number
                   style="width:40%"
                   id="promotionEdit-sort"
-                  :disabled="isDisabled"
                   allowClear
                   placeholder="请输入轮播图排序数字(数字越大越靠后)"
                   v-model="form.sort"
@@ -65,20 +64,21 @@
                       v-model="form.allDealerFlag"
                       placeholder="请选择参与经销商"
                       @change="changeDealerScope"
+                      :disabled="$route.params.sn"
                       allowClear>
                       <a-select-option id="promotionList-dealerScope-all" value="1">全部经销商</a-select-option>
                       <a-select-option id="promotionList-dealerScope-some" value="0">部分经销商</a-select-option>
                     </a-select>
                   </a-col>
                   <a-col :md="2" :sm="24" v-show="form.allDealerFlag && form.allDealerFlag!='1' ">
-                    <a-button id="promotionList-basicInfo-dealerScope" type="primary" :loading="spinning" @click="handleDealerModal">选择</a-button>
+                    <a-button id="promotionList-basicInfo-dealerScope" type="primary" :loading="spinning" :disabled="$route.params.sn" @click="handleDealerModal">选择</a-button>
                   </a-col>
                   <a-col :md="5" :sm="24" v-show="chooseDealerList && chooseDealerList.length>0">
                     已{{ chooseDealerList.length }}选项
                   </a-col>
                   <a-col :md="24" :sm="24" v-show="chooseDealerList && chooseDealerList.length>0">
                     <div class="buyerBox">
-                      <a-tag closable v-for="con in chooseDealerList" id="promotionList-dealerSn" :key="con.dealerSn" @close="delBuyerName(con)">
+                      <a-tag :closable="$route.params.sn" v-for="con in chooseDealerList" id="promotionList-dealerSn" :key="con.dealerSn" @close="delBuyerName(con)">
                         {{ con.dealerName }}
                       </a-tag>
                     </div>
@@ -107,17 +107,20 @@
                   id="promotion-contentType"
                   code="PROMO_CONTENT_TYPE"
                   showType="radio"
+                  :disabled="$route.params.sn"
                   allowClear></v-select>
               </a-form-model-item>
             </a-col>
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
               <a-form-model-item label="内容" prop="content" v-show="form.contentType =='IMAGE_CONTENT'">
                 <editor
+                  v-show="!$route.params.sn"
                   id="promotionEdit-editor"
                   ref="editor"
                   class="promotionEdit-editor"
                   @on-change="editorChange"
                   :cache="false"></editor>
+                <div style="border:1px solid #efefef;border-radius:8px;padding:10px 20px;" v-if="$route.params.sn" v-html="form.content"></div>
               </a-form-model-item>
               <a-form-model-item label="上传视频" prop="content" v-show="form.contentType =='VIDEO'">
                 <Upload
@@ -126,6 +129,7 @@
                   v-model="form.content"
                   fileType="video/mp4"
                   ref="videoSet"
+                  :disabled="$route.params.sn"
                   :fileSize="100"
                   :maxNums="1"
                   @change="changeVideo"
@@ -171,9 +175,7 @@ import { VSelect, Upload } from '@/components'
 import Editor from '@/components/WEeditor'
 import chooseDealer from './chooseDealer'
 // 接口
-import { productTypeQuery } from '@/api/productType'
-import { promoActivePublish, promoActiveDetail, saveBatchEntity, promoCreateBatch, deleteByProductType } from '@/api/promoActive'
-import { saveShopBanner } from '@/api/shopBanner'
+import { saveShopBanner, shopBannerDetail } from '@/api/shopBanner'
 
 export default {
   name: 'ProductBrandEditModal',
@@ -201,8 +203,10 @@ export default {
         allDealerFlag: '1', // 参与经销商 0 部分 1全部
         dealerSnList: [], // 已选经销商sn列表
         imageUrl: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '' // 内容
+        contentType: 'LINK', // 内容类型
+        content: '', // 内容
+        contentLink: '/pagesB/promoDetail',
+        state: 'UNPUBLISH'
       },
 
       dateFormat: 'YYYY-MM-DD', // 有效期时间格式
@@ -227,6 +231,7 @@ export default {
     }
   },
   methods: {
+    // 部分经销商  选择经销商成功
     addDealerOk (list) {
       const dealerArr = list.map(item => {
         return {
@@ -241,7 +246,7 @@ export default {
     disabledDate (current) {
       return current && current < moment().startOf('day')
     },
-    // 券有效期时间
+    // 轮播时间
     dateChange (date, dateString) {
       this.form.time = date
       if (dateString[0] != '' && dateString[1] != '') {
@@ -249,89 +254,37 @@ export default {
         this.form.bannerEndDate = dateString[1] + ' 23:59:59'
       }
     },
+    // 关闭 选择经销商弹窗
     closeDealerModal () {
       this.openDealerModal = false
     },
+    // 打开 选择经销商弹窗
     handleDealerModal () {
       this.openDealerModal = true
     },
     changeDealerScope () {},
-    // 打开产品弹窗
-    insterProduct (obj) {
-      if (obj && Object.keys(obj).length > 0) {
-        this.chooseTypeList = obj.typeArr
-      }
-      this.showProModal = true
-    },
-    // 关闭产品弹窗
-    closeProductModal () {
-      this.showProModal = false
-    },
     // 返回列表
     handleBack () {
       this.$router.push({ name: 'carouselImageList', query: { closeLastOldTab: true } })
     },
-    //  详情  挨个赋值原因:该接口和修理厂促销列表详情用的同一个接口,给后端传值过滤多余参数
+    //  详情
     getDetail () {
       const _this = this
-      promoActiveDetail({ sn: this.$route.params.sn }).then(res => {
+      shopBannerDetail({ bannerSn: this.$route.params.sn }).then(res => {
         if (res.status == 200) {
-          // 编辑按钮时,publishState 已发布,只能编辑是否发布;publishState已关闭,都可以编辑
-          if (_this.pageType === 'edit') {
-            _this.isDisabled = res.data.publishState === 'PUBLISH'
-            _this.form.promoRule.publishFlag = res.data.publishFlag
-            _this.form.promoRule.dealerEditFlag = res.data.dealerEditFlag
-          }
-          _this.form.publishFlag = res.data.publishFlag
-          _this.form.dealerEditFlag = res.data.dealerEditFlag
-          _this.form.promoActiveSn = res.data.promoActiveSn
-          _this.form.title = res.data.title
-          _this.form.contentType = res.data.contentType
-          _this.form.sort = res.data.sort
-          _this.imageSet = res.data.imageSet
-          if (res.data.imageSet) {
-            const images = res.data.imageSet.join(',')
-            _this.form.imageSet = images
-            if (this.pageType === 'add' || (this.pageType === 'edit' && res.data.publishState != 'PUBLISH')) {
-              _this.$refs.imageSet.setFileList(images)
-            }
-          }
-          _this.form.content = res.data.content
-          _this.promotionName = res.data.name || ''
-          _this.form.dealerEditFlag = res.data.dealerEditFlag
           if (res.data.contentType == 'IMAGE_CONTENT') {
             _this.$refs.editor.setHtml(res.data.content)
           } else if (res.data.contentType == 'VIDEO') {
-            if (res.data.publishState != 'PUBLISH') {
-              _this.$refs.videoSet.setFileList(res.data.content)
-            }
+            _this.$refs.videoSet.setFileList(res.data.content)
           } else if (res.data.contentType == 'LINK') {
             _this.form.contentLink = res.data.content
-            _this.form.linkType = res.data.content != '/pagesB/promoDetail' ? '2' : '1'
-            if (res.data.promoRule) {
-              _this.isShowNextStep = true
-              _this.form.promoRule.range = '1'
-              _this.time = [res.data.promoRule.validStartDate, res.data.promoRule.validEndDate]
-              if (res.data.promoRule.productRangeList && res.data.promoRule.productRangeList.length > 0) {
-                _this.productRangeList = res.data.promoRule.productRangeList.map(item => { return item.productTypeSn })
-              }
-            }
-            _this.form.promoRule = { ..._this.form.promoRule, ...res.data.promoRule }
           }
+          _this.$refs.imageSet.setFileList(res.data.imageUrl)
+          _this.form = res.data
+          _this.form.time = [res.data.bannerStartDate, res.data.bannerEndDate]
         }
       })
     },
-    // 券有效期 change
-    handleValidType (con) {
-      this.form.promoRule.validType = con
-      if (con === 'FIXED') {
-        this.form.promoRule.validDays = undefined
-      } else {
-        this.time = []
-        this.form.promoRule.validStartDate = undefined
-        this.form.promoRule.validEndDate = undefined
-      }
-    },
     //  确定保存  验证必填
     handleSave (type) {
       const _this = this
@@ -341,7 +294,6 @@ export default {
       // 验证组件必填项
       _this.$refs.ruleForm.validate(valid => {
         if (valid) {
-          console.log('111111111:')
           _this.savePartInfo(type)
         }
       })
@@ -356,10 +308,10 @@ export default {
         }
         _this.form.dealerSnList = _this.chooseDealerList.map(con => con.dealerSn)
       }
-      console.log('222222:', _this.form)
       _this.form.bannerSn = _this.$route.params.sn || undefined
       var formData = JSON.parse(JSON.stringify(_this.form))
       delete formData.time
+      delete formData.contentLink
       _this.spinning = true
       saveShopBanner(formData).then(res => {
         if (res.status == 200) {
@@ -409,8 +361,10 @@ export default {
         allDealerFlag: '1', // 参与经销商 0 部分 1全部
         dealerSnList: [], // 已选经销商sn列表
         imageUrl: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '' // 内容
+        contentType: 'LINK', // 内容类型
+        content: '', // 内容
+        contentLink: '/pagesB/promoDetail',
+        state: 'UNPUBLISH'
       }
       this.isShowNextStep = false
       this.isDisabled = false
@@ -421,93 +375,11 @@ export default {
         this.$refs.ruleForm.resetFields()
       }
     },
-    // 获取产品范围数据
-    getTreeData () {
-      productTypeQuery({}).then(res => {
-        if (res.status == 200) {
-          this.productTypeList = res.data
-        } else {
-          this.productTypeList = []
-        }
-      })
-    },
-    // 填入link内容
-    handleLink (con) {
-      if (!con.target.value || con.target.value != '/pagesB/promoDetail') {
-        this.form.linkType = '2'
-      } else {
-        this.form.linkType = '1'
-      }
-      this.form.contentLink = con.target.value
-    },
-    // 选择货架促销填入默认值
-    handleLinkType (val) {
-      this.form.contentLink = val === '2' ? '' : '/pagesB/promoDetail'
-    },
-    // 添加产品
-    handleAddProduct () {
-      this.chooseTypeList = this.productRangeList
-      this.showProModal = true
-    },
-    // 批量添加
-    handleBatchAdd () {
-      if (!this.form.promoRule.ruleValue) {
-        this.$message.warning('请输入返券金额(需大于0)!')
-        return
-      }
-      this.$refs.chooseProductList.editMorePrice(this.form.promoRule.ruleValue)
-    },
-    // 添加产品成功
-    addProductSuccess (list) {
-      const productArr = list.map(item => {
-        return {
-          promoActiveSn: this.$route.params.sn,
-          promoRuleSn: this.form.promoRule.promoRuleSn,
-          productCode: item.code,
-          productSn: item.productSn,
-          ruleValue: this.form.promoRule.ruleValue,
-          price: item.terminalPrice
-        }
-      })
-      promoCreateBatch(productArr).then(res => {
-        if (res.status == 200) {
-          this.showProModal = false
-          // 获取产品列表 有分页
-          this.$refs.chooseProductList.pageInit()
-        }
-      })
-    },
-    // 选择产品范围
-    onChangeTree (e) {
-      deleteByProductType({ promoActiveSn: this.$route.params.sn, productTypeSnList: this.productRangeList || [] }).then(res => {
-        if (res.status == 200) {
-          this.$refs.chooseProductList.pageInit()
-        }
-      })
-      // 保存产品范围
-      const newArr = this.productRangeList.map(item => {
-        return {
-          promoActiveSn: this.$route.params.sn,
-          promoRuleSn: this.form.promoRule.promoRuleSn,
-          productTypeSn: item
-        }
-      })
-      saveBatchEntity({ list: newArr, promoActiveSn: this.$route.params.sn }).then(res => {
-        if (res.status == 200) {
-          console.log('保存产品范围成功')
-        }
-      })
-    },
     // 初始化
     pageInit () {
-      this.pageType = this.$route.params.pageType
-      if (this.pageType === 'edit') {
+      if (this.$route.params.sn) {
         this.getDetail()
       }
-      console.log('加载产品范围')
-      this.$nextTick(() => {
-        this.getTreeData()
-      })
     }
   },
   mounted () {

+ 8 - 27
src/views/easyPassManagement/homepageCarouselImg/list.vue

@@ -41,7 +41,7 @@
       <a-spin :spinning="spinning" tip="Loading...">
         <!-- 操作按钮 -->
         <div class="table-operator" v-if="$hasPermissions('B_promotionManagementAdd')">
-          <a-button type="primary" id="carouselImage-add-btn" @click="handleAddOrEdit()">新增</a-button>
+          <a-button type="primary" id="carouselImage-add-btn" @click="handleAddOrEdit">新增</a-button>
         </div>
         <s-table
           class="sTable fixPagination"
@@ -133,7 +133,7 @@
       <!-- 封面展示 -->
       <imgShowModal v-drag ref="checkedImg" :openModal="openCheckedImgModal" @close="openCheckedImgModal=false"></imgShowModal>
       <!-- 查看 -->
-      <detail-Modal :openModal="openDetailModal" :itemSn="itemId" @close="closeDetailModal" @ok="$refs.table.refresh()"/>
+      <detail-Modal :openModal="openDetailModal" :itemSn="itemId" @close="closeDetailModal" @ok="openDetailModal=false"/>
     </a-card>
   </div>
 </template>
@@ -147,7 +147,6 @@ import lookUpCustomersModal from '@/views/easyPassManagement/promotionalActiviti
 import imgShowModal from '@/views/easyPassManagement/shoppingManagement/imgShowModal'
 import detailModal from './detailModal'
 // 接口
-import { promoActiveList, promoActiveDel } from '@/api/promoActive'
 import { shopBannerList, updateShopBanner } from '@/api/shopBanner'
 export default {
   name: 'PromotionList',
@@ -206,8 +205,11 @@ export default {
   methods: {
     // 新增  编辑
     handleAddOrEdit (row) {
-      // const newType = row ? 'edit' : 'add'
-      this.$router.push({ name: 'carouselImageAdd' })
+      if (!row) {
+        this.$router.push({ name: 'carouselImageAdd' })
+      } else {
+        this.$router.push({ name: 'carouselImageEdit', params: { sn: row.bannerSn } })
+      }
     },
     //  创建时间  change
     dateCreateChange (date) {
@@ -238,27 +240,6 @@ export default {
       this.queryParam.state = undefined
       this.$refs.table.refresh(true)
     },
-    // 删除
-    handleDel (row) {
-      const _this = this
-      this.$confirm({
-        title: '提示',
-        content: '点击确定,该内容将会被删除,不可再恢复!',
-        centered: true,
-        onOk () {
-          _this.spinning = true
-          promoActiveDel({ sn: row.promoActiveSn }).then(res => {
-            if (res.status == 200) {
-              _this.$message.success(res.message)
-              _this.$refs.table.refresh()
-              _this.spinning = false
-            } else {
-              _this.spinning = false
-            }
-          })
-        }
-      })
-    },
     // 发布  关闭  删除
     closeReleaseDel (row, val) {
       const _this = this
@@ -294,7 +275,7 @@ export default {
     // 打开详情
     handleSee (row) {
       this.openDetailModal = true
-      this.itemId = row.promoActiveSn
+      this.itemId = row.bannerSn
     },
     // 关闭详情
     closeDetailModal () {

+ 57 - 88
src/views/easyPassManagement/promotionalActivities/detailModal.vue

@@ -95,8 +95,7 @@ import { commonMixin } from '@/utils/mixin'
 // 组件
 import { STable } from '@/components'
 // 接口
-import { productTypeQuery } from '@/api/productType'
-import { promoActiveDetail, promoRuleProductList } from '@/api/promoActive'
+import { shopPromoDetail, chooseProductList } from '@/api/shopPromo'
 
 export default {
   name: 'DetailModal',
@@ -124,32 +123,30 @@ export default {
       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', // 是否发布 0 否 1是
-        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: '', // 使用说明
+        productNum: undefined
       },
-      imageSet: [], // 封面图
       columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品编码', dataIndex: 'productCode', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -161,19 +158,18 @@ export default {
       ],
       // 表单验证规则
       rules: {
-        title: [{ required: true, message: '请输入标题名称', trigger: 'blur' }],
-        imageSet: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
+        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' }],
-        publishFlag: [{ required: true, message: '请选择是否发布', trigger: 'change' }],
-        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' }],
+        productNum: [{ required: true, message: '选择产品不能为空', trigger: ['change', 'blur'] }]
       },
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -182,7 +178,7 @@ export default {
         const params = Object.assign(parameter, this.queryParam)
         params.promoActiveSn = this.itemSn
         // 获取详情  已选参与活动产品数据
-        return promoRuleProductList(params).then(res => {
+        return chooseProductList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
@@ -203,65 +199,38 @@ export default {
     // 重置
     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: '', // 使用说明
+        productNum: undefined
       }
-      this.imageSet = []
     },
     // 获取列表详情
     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.imageSet) {
-            this.form.imageSet = res.data.imageSet.join(',')
-            this.imageSet = res.data.imageSet
-          }
           this.form = res.data
         }
       })
-    },
-    // 获取产品范围数据
-    getTreeData () {
-      productTypeQuery({}).then(res => {
-        if (res.status == 200) {
-          this.productTypeList = res.data
-        } else {
-          this.productTypeList = []
-        }
-      })
     }
   },
   watch: {

+ 0 - 1
src/views/easyPassManagement/promotionalActivities/edit.vue

@@ -358,7 +358,6 @@ export default {
       // 链接配置内容
       form: {
         promoType: undefined, // 促销类型
-
         promoName: '', // '促销名称'
         time: [], // 促销时间
         promoStartDate: undefined, // 促销时间-开始

+ 7 - 6
src/views/easyPassManagement/promotionalActivities/lookUpCustomersModal.vue

@@ -4,7 +4,7 @@
     class="lookUpCustomers-modal"
     :footer="null"
     :maskClosable="false"
-    title="参与客户"
+    title="参与经销商"
     v-model="isShow"
     @cancel="isShow = false"
     width="60%">
@@ -58,7 +58,8 @@
           bordered>
           <!-- 地区 -->
           <template slot="address" slot-scope="text, record">
-            {{ record.provinceName }}/{{ record.cityName }}/{{ record.districtName }}
+            <span v-if="record.dealerEntity&&record.dealerEntity.provinceName">{{ record.dealerEntity.provinceName }}/{{ record.dealerEntity.cityName }}/{{ record.dealerEntity.districtName }}</span>
+            <span v-else>--</span>
           </template>
         </s-table>
       </a-card>
@@ -79,7 +80,7 @@ import subarea from '@/views/common/subarea.js'
 import AreaList from '@/views/common/areaList.js'
 // 接口
 import { dealerExport } from '@/api/promoTerminal'
-import { shopBannerSeeDealer } from '@/api/shopBanner'
+import { shopBannerSeeDealer, shopBannerExport } from '@/api/shopBanner'
 export default {
   name: 'LookUpCustomersModal',
   components: { STable, ProductType, subarea, AreaList },
@@ -136,8 +137,8 @@ export default {
         { title: '区域', dataIndex: 'subareaArea.subareaName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '分区', dataIndex: 'subareaArea.subareaAreaName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '经销商名称', dataIndex: 'dealerName', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '商户类型', dataIndex: 'dealerLevelDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '商户级别', dataIndex: 'dealerTypeDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } }
+        { title: '商户类型', dataIndex: 'dealerEntity.dealerLevelDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '商户级别', dataIndex: 'dealerEntity.dealerTypeDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } }
       ]
     }
   },
@@ -179,7 +180,7 @@ export default {
       const _this = this
       _this.exportLoading = true
       _this.spinning = true
-      hdExportExcel(dealerExport, _this.queryParam, '促销经销商列表导出', function () {
+      hdExportExcel(shopBannerExport, _this.queryParam, '首页轮播图参与经销商列表导出', function () {
         _this.exportLoading = false
         _this.spinning = false
         _this.showExport = true