소스 검색

首页轮播图

chenrui 9 달 전
부모
커밋
ff182dca44

+ 38 - 0
src/api/shopBanner.js

@@ -0,0 +1,38 @@
+import { axios } from '@/utils/request'
+
+//  首页轮播图列表  有分页
+export const shopBannerList = (params) => {
+  const url = `/shopBanner/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('列表查询')
+    }
+  })
+}
+
+//  首页轮播图  保存
+export const saveShopBanner = (params) => {
+  const url = '/shopBanner/saveShopBanner '
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
+
+// 删除仓位
+export const warehouseLocDel = params => {
+  return axios({
+    url: `/warehouseLoc/delete/${params.sn}`,
+    data: {},
+    method: 'get',
+    headers: {
+      'module': encodeURIComponent('删除')
+    }
+  })
+}

+ 2 - 3
src/views/easyPassManagement/homepageCarouselImg/chooseDealer.vue

@@ -185,15 +185,14 @@ export default {
       this.$refs.subarea.clearData()
     },
     // 批量添加
-    async handleBatchAudit () {
+    handleBatchAudit () {
       const _this = this
       if (this.rowSelectionInfo && this.rowSelectionInfo.selectedRowKeys && this.rowSelectionInfo.selectedRowKeys.length < 1) {
         _this.$message.warning('请在列表勾选后再进行批量操作!')
         return
       }
-      const dealerInfoList = await getDealerListInfo({ dealerSnList: _this.selectedRowKeys })
       this.spinning = false
-      this.$emit('plAdd', dealerInfoList.data)
+      this.$emit('ok', this.rowSelectionInfo.selectedRows)
     }
   },
   watch: {

+ 77 - 180
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="pageType==='edit'" 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;">促销名称:{{ promotionName||'--' }}</span>
         </template>
       </a-page-header>
       <!-- 表单 -->
@@ -20,20 +20,20 @@
         >
           <a-row>
             <a-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
-              <a-form-model-item label="轮播图名称" prop="title" :label-col="{span:4}" :wrapper-col="{span:16}">
+              <a-form-model-item label="轮播图名称" prop="bannerName" :label-col="{span:4}" :wrapper-col="{span:16}">
                 <a-input
-                  id="promotionEdit-title"
+                  id="promotionEdit-bannerName"
                   :maxLength="30"
-                  v-model.trim="form.title"
+                  v-model.trim="form.bannerName"
                   placeholder="请输入轮播图名称(最多30个字符)"
-                  :disabled="isDisabled"
                   allowClear/>
               </a-form-model-item>
             </a-col>
             <a-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
-              <a-form-model-item label="轮播时间" prop="sort" :label-col="{span:4}" :wrapper-col="{span:16}">
+              <a-form-model-item label="轮播时间" prop="time" :label-col="{span:4}" :wrapper-col="{span:16}">
                 <a-range-picker
-                  v-model="time"
+                  v-model="form.time"
+                  style="width:100%"
                   :format="dateFormat"
                   id="promotionEdit-time"
                   @change="dateChange"
@@ -42,10 +42,10 @@
                   :placeholder="['开始时间', '结束时间']" />
               </a-form-model-item>
             </a-col>
-            <a-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
-              <a-form-model-item label="轮播图排序" prop="sort" :label-col="{span:4}" :wrapper-col="{span:16}">
+            <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <a-form-model-item label="轮播图排序" prop="sort">
                 <a-input-number
-                  style="width:100%"
+                  style="width:40%"
                   id="promotionEdit-sort"
                   :disabled="isDisabled"
                   allowClear
@@ -56,21 +56,21 @@
               </a-form-model-item>
             </a-col>
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-              <a-form-model-item label="参与经销商" prop="imageSet">
+              <a-form-model-item label="参与经销商" prop="allDealerFlag">
                 <a-row :gutter="15">
                   <a-col :md="10" :sm="24">
                     <a-select
                       style="width:98%;"
-                      id="promotionList-dealerScope"
-                      v-model="form.dealerScope"
+                      id="promotionList-allDealerFlag"
+                      v-model="form.allDealerFlag"
                       placeholder="请选择参与经销商"
                       @change="changeDealerScope"
                       allowClear>
-                      <a-select-option id="promotionList-dealerScope-all" value="ALL_DEALER">全部客户</a-select-option>
-                      <a-select-option id="promotionList-dealerScope-some" value="SOME_DEALER">部分客户</a-select-option>
+                      <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.dealerScope && form.dealerScope!='ALL_DEALER' ">
+                  <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-col>
                   <a-col :md="5" :sm="24" v-show="chooseDealerList && chooseDealerList.length>0">
@@ -87,11 +87,11 @@
               </a-form-model-item>
             </a-col>
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-              <a-form-model-item label="封面图片" prop="imageSet">
+              <a-form-model-item label="封面图片" prop="imageUrl">
                 <Upload
                   class="upload"
-                  id="promotionEdit-imageSet"
-                  v-model="form.imageSet"
+                  id="promotionEdit-imageUrl"
+                  v-model="form.imageUrl"
                   ref="imageSet"
                   :fileSize="10"
                   :maxNums="1"
@@ -107,8 +107,6 @@
                   id="promotion-contentType"
                   code="PROMO_CONTENT_TYPE"
                   showType="radio"
-                  :disabled="isDisabled"
-                  @change="changeContentType"
                   allowClear></v-select>
               </a-form-model-item>
             </a-col>
@@ -120,12 +118,9 @@
                   class="promotionEdit-editor"
                   @on-change="editorChange"
                   :cache="false"></editor>
-                <!-- v-show="pageType === 'add'||(pageType === 'edit'&&!isDisabled)" -->
-                <div v-if="(pageType === 'edit')&&isDisabled" class="box" v-html="form.content"></div>
               </a-form-model-item>
               <a-form-model-item label="上传视频" prop="content" v-show="form.contentType =='VIDEO'">
                 <Upload
-                  v-if="pageType==='add'||(pageType==='edit'&&!isDisabled)"
                   class="upload"
                   id="promotionEdit-videoSet"
                   v-model="form.content"
@@ -135,46 +130,18 @@
                   :maxNums="1"
                   @change="changeVideo"
                 ></Upload>
-                <div v-else>
-                  <video
-                    ref="videoPlayer"
-                    width="230"
-                    height="150"
-                    controls
-                    loop
-                    controlsList="nodownload">
-                    <source :src="form.content" type="video/mp4">
-                  </video>
-                </div>
                 <span class="upload-desc">说明:文件最大100M;视频:mp4.avi.flv</span>
               </a-form-model-item>
               <a-form-model-item label="跳转链接" prop="contentLink" v-if="form.contentType =='LINK'">
                 <a-input
                   style="width:50%;"
-                  :disabled="form.linkType==='1'||(pageType==='edit'&&isDisabled)"
+                  :disabled="true"
                   id="promotionEdit-contentLink"
                   :maxLength="100"
                   v-model.trim="form.contentLink"
                   placeholder="请输入跳转链接"
                   @blur="handleLink"
                   allowClear />
-                <a-select
-                  id="promotionEdit-linkType"
-                  :disabled="isDisabled"
-                  default-value="货架促销"
-                  @change="handleLinkType"
-                  style="width: 120px;margin-left:10px;"
-                  v-model="form.linkType">
-                  <a-select-option value="1">
-                    货架促销
-                  </a-select-option>
-                  <a-select-option value="2">
-                    其他
-                  </a-select-option>
-                </a-select>
-                <!-- <span class="tip upload-desc">
-                  选择【货架促销】,促销内容会同步显示在促销模块内
-                </span> -->
               </a-form-model-item>
             </a-col>
           </a-row>
@@ -189,7 +156,6 @@
         id="productInfoEdit-submit-btn"
         size="large"
         @click="handleSave('all')"
-        v-if="form.contentType !='LINK'|| isShowNextStep ||(form.contentType ==='LINK'&&form.linkType ==='2')"
         style="padding: 0 60px;">保存</a-button>
     </div>
     <!-- 选择经销商 -->
@@ -207,6 +173,8 @@ import chooseDealer from './chooseDealer'
 // 接口
 import { productTypeQuery } from '@/api/productType'
 import { promoActivePublish, promoActiveDetail, saveBatchEntity, promoCreateBatch, deleteByProductType } from '@/api/promoActive'
+import { saveShopBanner } from '@/api/shopBanner'
+
 export default {
   name: 'ProductBrandEditModal',
   mixins: [commonMixin],
@@ -224,32 +192,19 @@ export default {
       openDealerModal: false,
       // 链接配置内容
       form: {
-        promoActiveSn: undefined, // 促销活动sn
-        title: '', // 标题
-        imageSet: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '', // 内容
-        contentLink: '', // 链接内容
+        bannerSn: undefined, // 轮播图sn
+        bannerName: '', // 轮播图名称
+        time: [], // 轮播时间
+        bannerStartDate: undefined,
+        bannerEndDate: undefined,
         sort: undefined, // 排序
-        publishFlag: '0', // 是否发布
-        linkType: '1',
-        dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        promoRule: {
-          ruleType: 'ticket', // 基本规则类型
-          ruleName: '', // 券名称
-          ruleTitle: '', // 副标题
-          ruleBaseType: 'category', // 券生成方式
-          ruleExplain: '', // 使用说明
-          validType: undefined, // 券有效期类型
-          validStartDate: undefined, // 券生效时间
-          validEndDate: undefined, // 券失效时间
-          validDays: undefined, // 券有效期天数
-          dealerEditFlag: '0', // 加盟商编辑 1是 0否
-          publishFlag: '0', // 是否发布
-          range: '1'
-        }
+        allDealerFlag: '1', // 参与经销商 0 部分 1全部
+        dealerSnList: [], // 已选经销商sn列表
+        imageUrl: '', // 图片
+        contentType: 'IMAGE_CONTENT', // 内容类型
+        content: '' // 内容
       },
-      time: [], // 有效期
+
       dateFormat: 'YYYY-MM-DD', // 有效期时间格式
       promotionName: '', // 促销名称
       pageType: undefined, // 页面类型
@@ -261,37 +216,37 @@ export default {
       productTypeList: [], // 产品范围    列表数据
       // 表单验证规则
       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' }],
-        'promoRule.ruleType': [{ required: true, message: '请选择基本规则', trigger: 'change' }],
-        'promoRule.ruleName': [{ required: true, message: '请输入券名称', trigger: ['change', 'blur'] }],
-        'promoRule.ruleBaseType': [{ required: true, message: '请选择生成方式', trigger: 'change' }],
-        'promoRule.validType': [{ required: true, message: '请选择券有效期类型', trigger: 'change' }],
-        'promoRule.publishFlag': [{ required: true, message: '请选择是否发布', trigger: 'change' }],
-        'promoRule.dealerEditFlag': [{ required: true, message: '请选择加盟商是否可编辑', trigger: 'change' }],
-        'promoRule.range': [{ required: true, message: '请选择', trigger: 'blur' }],
-        dealerEditFlag: [{ required: true, message: '请选择加盟商是否可编辑', trigger: 'change' }]
+        content: [{ required: true, message: '请输入对应内容', trigger: ['blur', 'change'] }]
       }
     }
   },
   methods: {
-
-    addDealerOk () {},
+    addDealerOk (list) {
+      const dealerArr = list.map(item => {
+        return {
+          dealerName: item.dealerName,
+          dealerSn: item.dealerSn
+        }
+      })
+      this.chooseDealerList = dealerArr
+      this.openDealerModal = false
+    },
     // 禁用日期时间
     disabledDate (current) {
       return current && current < moment().startOf('day')
     },
     // 券有效期时间
     dateChange (date, dateString) {
-      this.time = date
+      this.form.time = date
       if (dateString[0] != '' && dateString[1] != '') {
-        this.form.promoRule.validStartDate = dateString[0] + ' 00:00:00'
-        this.form.promoRule.validEndDate = dateString[1] + ' 23:59:59'
+        this.form.bannerStartDate = dateString[0] + ' 00:00:00'
+        this.form.bannerEndDate = dateString[1] + ' 23:59:59'
       }
     },
     closeDealerModal () {
@@ -386,6 +341,7 @@ export default {
       // 验证组件必填项
       _this.$refs.ruleForm.validate(valid => {
         if (valid) {
+          console.log('111111111:')
           _this.savePartInfo(type)
         }
       })
@@ -393,57 +349,25 @@ export default {
     // 保存
     savePartInfo (type) {
       const _this = this
-      _this.form.promoActiveSn = this.$route.params.sn
-      var formData = JSON.parse(JSON.stringify(_this.form))
-      formData.imageSet = formData.imageSet ? formData.imageSet.split(',') : []
-      // 跳转链接
-      if (formData.contentType == 'LINK') {
-        delete formData.contentLink
-        if (_this.productRangeList && _this.productRangeList.length > 0) {
-          formData.promoRule.productRangeList = _this.productRangeList.map(item => { return { productTypeSn: item } })
+      if (_this.form.allDealerFlag == '0') {
+        if (_this.chooseDealerList && _this.chooseDealerList.length == 0) {
+          _this.$message.warning('请选择参与经销商!')
+          return
         }
-        // 促销活动
-        if (_this.form.linkType === '1') {
-          if (_this.form.promoRule.validType === 'FIXED') {
-            if (!_this.form.promoRule.validStartDate || _this.form.promoRule.validStartDate.validEndDate) {
-              _this.$message.warning('请输入券有效期!')
-              return false
-            }
-          } else {
-            if (!_this.form.promoRule.validDays) {
-              _this.$message.warning('请输入券有效期!')
-              return false
-            }
-          }
-          formData.publishFlag = _this.form.promoRule.publishFlag
-          formData.dealerEditFlag = _this.form.promoRule.dealerEditFlag
-        } else {
-          formData.promoRule = undefined
-        }
-        if (_this.$refs.chooseProductList) {
-          const numInfo = _this.$refs.chooseProductList.getDataNum()
-          if (numInfo == 0) {
-            _this.$message.warning('请选择返券产品!')
-            return
-          }
-        }
-      } else {
-        formData.promoRule = undefined
+        _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
       _this.spinning = true
-
-      promoActivePublish(formData).then(res => {
+      saveShopBanner(formData).then(res => {
         if (res.status == 200) {
           _this.$message.success(res.message)
-          if (type === 'all') {
-            _this.$nextTick(() => {
-              _this.handleBack()
-              _this.resetSearchForm()
-            })
-          } else {
-            _this.isShowNextStep = true
-            _this.getDetail()
-          }
+          _this.$nextTick(() => {
+            _this.handleBack()
+            _this.resetSearchForm()
+          })
           _this.spinning = false
         } else {
           _this.spinning = false
@@ -452,7 +376,7 @@ export default {
     },
     //  图片上传
     changeImage (file) {
-      this.form.imageSet = file
+      this.form.imageUrl = file
     },
     // 视频上传
     changeVideo (file) {
@@ -476,31 +400,17 @@ export default {
         this.$refs.editor.setHtml('')
       }
       this.form = {
-        promoActiveSn: undefined, // 促销活动sn
-        title: '', // 标题
-        imageSet: '', // 图片
-        contentType: 'IMAGE_CONTENT', // 内容类型
-        content: '', // 内容
-        contentLink: '', // 链接内容
+        bannerSn: undefined, // 轮播图sn
+        bannerName: '', // 轮播图名称
+        time: [], // 轮播时间
+        bannerStartDate: undefined, // 轮播图活动开始时间
+        bannerEndDate: undefined, // 轮播图活动结束时间
         sort: undefined, // 排序
-        publishFlag: '0', // 是否发布
-        linkType: '1',
-        dealerEditFlag: '0', // 加盟商编辑 1是 0否
-        productRangeList: [], // 产品范围列表
-        promoRule: {
-          ruleType: 'ticket', // 基本规则类型
-          ruleName: '', // 券名称
-          ruleTitle: '', // 副标题
-          ruleBaseType: 'category', // 券生成方式
-          ruleExplain: '', // 使用说明
-          validType: undefined, // 券有效期类型
-          validStartDate: undefined, // 券生效时间
-          validEndDate: undefined, // 券失效时间
-          validDays: undefined, // 券有效期天数
-          dealerEditFlag: '0', // 加盟商编辑 1是 0否
-          publishFlag: '0', // 是否发布
-          range: '1'
-        } // 链接配置内容
+        allDealerFlag: '1', // 参与经销商 0 部分 1全部
+        dealerSnList: [], // 已选经销商sn列表
+        imageUrl: '', // 图片
+        contentType: 'IMAGE_CONTENT', // 内容类型
+        content: '' // 内容
       }
       this.isShowNextStep = false
       this.isDisabled = false
@@ -521,19 +431,6 @@ export default {
         }
       })
     },
-    // 选择内容类型
-    changeContentType (e) {
-      if (e === 'LINK') {
-        this.form.linkType = '1'
-        this.form.contentLink = '/pagesB/promoDetail'
-        this.form.content = '/pagesB/promoDetail'
-      } else {
-        this.form.linkType = undefined
-        this.form.contentLink = ''
-        this.form.content = ''
-      }
-      this.form.contentType = e
-    },
     // 填入link内容
     handleLink (con) {
       if (!con.target.value || con.target.value != '/pagesB/promoDetail') {

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

@@ -60,12 +60,12 @@
           </template>
           <!-- 促销时间 -->
           <template slot="promotionTime" slot-scope="text, record">
-            <span>{{ record.activeDateStart }}至{{ record.activeDateEnd }}</span>
+            <span>{{ record.bannerStartDate }}至{{ record.bannerEndDate }}</span>
           </template>
           <!-- 参与客户 -->
           <template slot="joinCustomers" slot-scope="text, record">
-            <span class="customerBox" @click="handleCustomers(record)" :id="'carouselImage-seeDealerInfo-'+record.id" v-if="record.dealerSnList&&record.dealerSnList.length>0">共有<span class="link-bule">{{ record.dealerSnList.length }}</span>个客户</span>
-            <span v-else>共有0个客户</span>
+            <span class="customerBox" @click="handleCustomers(record)" :id="'carouselImage-seeDealerInfo-'+record.id" v-if="record.allDealerFlag&&record.allDealerFlag=='0'">共有<span class="link-bule">{{ record.dealerQty }}</span>个客户</span>
+            <span v-else>全部经销商</span>
           </template>
           <!-- 促销描述 -->
           <template slot="salesDesc" slot-scope="text, record">
@@ -81,7 +81,7 @@
           <!-- 促销展示 -->
           <template slot="salesShow" slot-scope="text, record">
             <div @click="handleCheckImg(record)" :id="'carouselImage-seeImgInfo-'+record.id">
-              <img :src="record.imageSet[0]" alt="图片走丢啦" width="60" />
+              <img :src="record.imageUrl" alt="图片走丢啦" width="60"/>
             </div>
             <!-- <span v-else>--</span> -->
           </template>
@@ -148,6 +148,7 @@ import imgShowModal from '@/views/easyPassManagement/shoppingManagement/imgShowM
 import detailModal from './detailModal'
 // 接口
 import { promoActiveList, promoActiveDel } from '@/api/promoActive'
+import { shopBannerList } from '@/api/shopBanner'
 export default {
   name: 'PromotionList',
   mixins: [commonMixin],
@@ -175,7 +176,7 @@ export default {
         this.disabled = true
         this.spinning = true
         const params = Object.assign(parameter, this.queryParam)
-        return promoActiveList(params).then(res => {
+        return shopBannerList(params).then(res => {
           let data
           if (res.status == 200) {
             data = res.data
@@ -192,7 +193,7 @@ export default {
       columns: [// 表头
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '创建时间', dataIndex: 'createDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '轮播图名称', dataIndex: 'name', width: '13%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '轮播图名称', dataIndex: 'bannerName', width: '13%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '轮播时间', scopedSlots: { customRender: 'promotionTime' }, width: '13%', align: 'center' },
         { title: '参与经销商', scopedSlots: { customRender: 'joinCustomers' }, width: '8%', align: 'center' },
         { title: '封面展示', scopedSlots: { customRender: 'salesShow' }, width: '6%', align: 'center' },
@@ -225,7 +226,7 @@ export default {
       this.openCheckedImgModal = true
       const _this = this
       _this.$nextTick(() => {
-        _this.$refs.checkedImg.pageInit(record.imageSet[0])
+        _this.$refs.checkedImg.pageInit(record.imageUrl)
       })
     },
     // 删除