فهرست منبع

1、AR发行配置

huangmp 7 ماه پیش
والد
کامیت
5c4e183b9a

+ 20 - 5
src/views/modules/ar/arAssets/add-or-update.vue

@@ -36,6 +36,7 @@
         <el-radio-group v-model="dataForm.assetsType">
           <el-radio label="Video">视频</el-radio>
           <el-radio label="Model">模型</el-radio>
+          <el-radio label="Audio">音频</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item
@@ -51,11 +52,17 @@
           <el-radio label="D3CXK">大3寸</el-radio>
         </el-radio-group>
       </el-form-item>
+      <el-form-item
+        label="爱豆名称"
+        prop="idolName"
+      >
+        <el-input style="width: 220px" v-model="dataForm.idolName"></el-input>
+      </el-form-item>
       <el-row>
         <el-form-item label="素材资源" prop="frontUrl">
           <el-row>
             <div style="display: flex; flex-wrap: wrap">
-              <div v-for="(item, index) in dataForm.assetsList" :key="index" v-if="dataForm.assetsType === 'Video'">
+              <div v-for="(item, index) in dataForm.assetsList" :key="index" v-if="dataForm.assetsType === 'Video' || dataForm.assetsType === 'Audio'">
                 <video
                   v-if="item.url"
                   :src="item.url"
@@ -105,13 +112,15 @@ export default {
     return {
       visible: false,
       showFileList: false,
+      shopId: this.$store.state.user.shopId,
       dataForm: {
         assetsId: null,
         assetsName: null,
         assetsType: 'Video',
         assetsList: [],
         assetsUrl: null,
-        cardType: null,
+        cardType: 'D3CXK',
+        idolName: null,
         shopId: this.$store.state.user.shopId
       },
       uploadMultiple: true,
@@ -178,8 +187,12 @@ export default {
       const formData = new FormData()
       formData.append('file', file)
       formData.append('type', 4)
+      let url = '/admin/file/wsjUpload'
+      if(this.shopId === 9){
+        url = '/admin/file/aiarUpload'
+      }
       this.$http({
-        url: this.$http.adornUrl('/admin/file/wsjUpload'),
+        url: this.$http.adornUrl(url),
         method: 'post',
         headers: {
           'Content-Type': file.type
@@ -235,7 +248,7 @@ export default {
               type: 'success',
               duration: 500,
               onClose: () => {
-                this.visible = false
+                this.handleClose()
                 this.$emit('refreshDataList', this.page)
               }
             })
@@ -248,13 +261,15 @@ export default {
     }, 500),
 
     handleClose(){
+      this.visible = false
       this.dataForm = {
         assetsId: null,
         assetsName: null,
         assetsType: 'Video',
         assetsList: [],
         assetsUrl: null,
-        cardType: null
+        cardType: null,
+        idolName: null
       }
     }
   }

+ 36 - 0
src/views/modules/ar/arAssets/index.vue

@@ -1,5 +1,28 @@
 <template>
   <div class="mod-ar-arIssue">
+    <!-- 搜索相关区域 -->
+    <div class="search-bar">
+      <el-form :inline="true" class="search-form" ref="searchForm" :model="searchForm" label-width="auto" size="small">
+        <div class="input-row">
+          <el-form-item prop="assetsName" label="搜索资源" class="search-form-item">
+            <el-input v-model="searchForm.assetsName"></el-input>
+          </el-form-item>
+          <el-form-item prop="assetsType" label="搜索资源" class="search-form-item">
+            <el-select v-model="searchForm.assetsType" clearable="">
+              <el-option key="Audio" label="音频" value="Audio"></el-option>
+              <el-option key="Video" label="视频" value="Video"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="assetsName" label="爱豆名称" class="search-form-item">
+            <el-input v-model="searchForm.idolName"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <div class="default-btn primary-btn" @click="searchChange(searchForm)">{{$t('crud.searchBtn')}}</div>
+            <div class="default-btn" @click="resetSearchForm('searchForm')">{{$t('shop.resetMap')}}</div>
+          </el-form-item>
+        </div>
+      </el-form>
+    </div>
     <div class="main-container">
       <div class="operation-bar">
         <div v-if="isAuth('ar:arAssets:save')" class="default-btn primary-btn" @click="addOrUpdateHandle()">{{ $t('crud.addBtn') }}</div>
@@ -11,16 +34,29 @@
             row-class-name="table-row-low"
             style="width: 100%"
           >
+            <el-table-column
+              label="资源ID"
+              prop="assetsId"
+              align="center"
+            >
+            </el-table-column>
             <el-table-column
               label="资源名称"
               prop="assetsName"
               align="center"
             >
             </el-table-column>
+            <el-table-column
+              label="爱豆名称"
+              prop="idolName"
+              align="center"
+            >
+            </el-table-column>
             <el-table-column label="资源类型" prop="assetsType" align="center">
               <template slot-scope="scope">
                 <el-tag v-if="scope.row.assetsType === 'Video'" type="primary">视频</el-tag>
                 <el-tag v-if="scope.row.assetsType === 'Model'" type="success">模型</el-tag>
+                <el-tag v-if="scope.row.assetsType === 'Audio'" type="success">音频</el-tag>
               </template>
             </el-table-column>
             <el-table-column label="适用卡片" prop="cardType" align="center">

+ 9 - 1
src/views/modules/ar/arIssueConfig/interactive-config.vue

@@ -213,8 +213,16 @@
         video.endOptions.splice(optionIndex, 1)
       },
       closeDialog(){
-        this.visible = false;
+        this.visible = false
         this.videoList = []
+        this.dataForm = {
+          assetsType: null,
+          screenOrientation: null,
+          assetsPackageObj:{
+            frameUrl: null,
+            videoList: []
+          }
+        }
       },
     }
   }

+ 215 - 0
src/views/modules/ar/arIssueConfig/video-config.vue

@@ -0,0 +1,215 @@
+<template>
+  <el-dialog
+    title="视频配置"
+    :close-on-click-modal="false"
+    :append-to-body="true"
+    width="50%"
+    v-if="visible"
+    @close="closeDialog"
+    :visible.sync="visible">
+    <el-form :model="dataForm" size="small" label-width="100px">
+      <el-divider>基础配置</el-divider>
+      <el-row>
+        <el-form-item label="屏幕方向" prop="screenOrientation">
+          <el-radio-group v-model="dataForm.screenOrientation">
+            <el-radio label="landscape">横屏展示</el-radio>
+            <el-radio label="portrait">竖屏展示</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-row>
+      <el-divider>视频配置</el-divider>
+      <el-row
+        v-if="videoList"
+        v-for="(video, videoIndex) in videoList">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="选择视频资源" prop="newReceiverInfo">
+              <el-select
+                size="large"
+                style="width: 300px"
+                v-model="video.videoId"
+                placeholder="请选择资源"
+                :remote-method="getAssetsListByName"
+                @change="handleChange"
+                clearable filterable remote>
+                <el-option
+                  style="height: 156px"
+                  v-for="assets in assetsList"
+                  :key="assets.assetsId"
+                  :label="assets.assetsName"
+                  :value="assets.assetsId">
+                  <span style="float: left; height: 104px; line-height: 156px">{{ assets.assetsName }}</span>
+                  <span style="float: right; color: #8492a6; font-size: 13px">
+                    <video
+                      :src="resourcesUrl + assets.assetsUrl"
+                      controls="controls"
+                      style="width: 111px; height: 156px"
+                    />
+                  </span>
+                </el-option>
+              </el-select>
+              <span>{{video.videoName}}</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-button size="medium" type="danger" @click.prevent="removeVideo(videoIndex)">删除</el-button>
+          </el-col>
+        </el-row>
+        <el-divider></el-divider>
+      </el-row>
+      <el-row>
+        <el-button size="medium" type="primary" @click="addVideo">新增视频</el-button>
+      </el-row>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button class="default-btn" @click="visible = false">{{$t("crud.filter.cancelBtn")}}</el-button>
+      <el-button class="default-btn primary-btn" type="primary" @click="dataFormSubmit()">{{$t("crud.filter.submitBtn")}}</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  export default {
+    components: {
+
+    },
+    data () {
+      return {
+        visible: false,
+        assetsList:[],
+        prodId: null,
+        videoList: [],
+        resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
+        dataForm:{
+          issueId: null,
+          assetsType: null,
+          screenOrientation: null,
+          assetsPackageObj:{
+            frameUrl: null,
+            videoList: []
+          }
+        },
+      }
+    },
+
+    created() {
+    },
+
+    methods: {
+      handleChange(value){
+        this.$http({
+          url: this.$http.adornUrl('/ar/arAssets/info/' + value),
+          method: 'get'
+        }).then(({data}) => {
+          this.assetsList = data
+        })
+      },
+      init (issuePicId, issueId) {
+        this.dataForm.issuePicId = issuePicId || null
+        this.dataForm.issueId = issueId || null
+        this.visible = true
+        this.$nextTick(() => {
+          if (this.dataForm.issuePicId) {
+            this.$http({
+              url: this.$http.adornUrl('/ar/arIssuePicAssetsConfig/infoByPicId/' + this.dataForm.issuePicId),
+              method: 'get',
+              params: this.$http.adornParams()
+            }).then(({data}) => {
+              if(data){
+                this.dataForm.issueId = data.issueId
+                this.dataForm.issuePicId = data.issuePicId
+                this.dataForm.configId = data.configId
+                this.dataForm.assetsType = data.assetsType
+                this.dataForm.screenOrientation = data.screenOrientation
+                this.dataForm.assetsPackageObj = data.assetsPackageObj
+                this.videoList = data.assetsPackageObj.videoList
+                if(this.videoList.length > 0){
+                  this.getAssetsListById(this.dataForm.issueId, this.videoList[0].videoId)
+                }else{
+                  this.getAssetsListById(this.dataForm.issueId)
+                }
+              }
+            })
+          }
+        })
+      },
+      // 表单提交
+      dataFormSubmit () {
+        let url = '/ar/arIssuePicAssetsConfig/saveConfig'
+        if(this.dataForm.configId){
+          url = '/ar/arIssuePicAssetsConfig/updateConfig'
+        }
+        this.dataForm.assetsPackageObj.videoList = this.videoList
+        this.$http({
+          url: this.$http.adornUrl(url),
+          method: 'post',
+          data: this.$http.adornData(this.dataForm)
+        }).then(({data}) => {
+          this.$message({
+            message: this.$i18n.t('publics.operation'),
+            type: 'success'
+          });
+          this.closeDialog()
+        })
+      },
+      getAssetsListByName(assetsName){
+        this.$http({
+          url: this.$http.adornUrl('/ar/arAssets/listByName'),
+          method: 'get',
+          params: this.$http.adornParams({assetsName: assetsName})
+        }).then(({data}) => {
+          this.assetsList = data
+        })
+      },
+      getAssetsListById(issueId, assetsId){
+        this.$http({
+          url: this.$http.adornUrl('/ar/arAssets/listByName'),
+          method: 'get',
+          params: this.$http.adornParams({issueId: this.dataForm.issueId, assetsId: assetsId})
+        }).then(({data}) => {
+          this.assetsList = data
+        })
+      },
+      addVideo(){
+        if(!this.videoList){
+          this.videoList = []
+        }
+        this.videoList.push({
+          videoId: null
+        });
+        this.getAssetsListById();
+      },
+      removeVideo(videoIndex){
+        this.videoList.splice(videoIndex, 1)
+      },
+      addOptions(videoIndex){
+        const video = this.videoList[videoIndex]
+        const endOption = {optionName: '', jumpToVideoId: null}
+        if(video.endOptions){
+          let endOptions = video.endOptions
+          endOptions.push(endOption)
+          this.$set(this.videoList[videoIndex], "endOptions", endOptions);
+        }else{
+          let endOptions = [endOption]
+          this.$set(this.videoList[videoIndex], "endOptions", endOptions);
+        }
+      },
+      removeOptions(assetsIndex, optionIndex){
+        let video = this.videoList[assetsIndex]
+        video.endOptions.splice(optionIndex, 1)
+      },
+      closeDialog(){
+        this.visible = false
+        this.videoList = []
+        this.dataForm = {
+          assetsType: null,
+          screenOrientation: null,
+          assetsPackageObj:{
+            frameUrl: null,
+            videoList: []
+          }
+        }
+      },
+    }
+  }
+</script>

+ 15 - 1
src/views/modules/ar/arIssuePic/add-or-update.vue

@@ -59,6 +59,17 @@
           style="width: 250px"
         ></el-input>
       </el-form-item>
+        <el-form-item
+          label="可获积分"
+          prop="activeScore"
+        >
+          <el-input
+            v-model="dataForm.activeScore"
+            placeholder="请输入收集可获积分"
+            size="small"
+            style="width: 250px"
+          ></el-input>
+        </el-form-item>
       <el-row>
         <el-form-item prop="picType" label="柄图尺寸">
           <el-radio-group v-model="dataForm.picType">
@@ -148,6 +159,7 @@ export default {
         picType: "6x9",
         back: {},
         issuePicLevel: null,
+        activeScore: null,
         shopId: this.$store.state.user.shopId
       },
       lang: localStorage.getItem('lang'),
@@ -220,6 +232,7 @@ export default {
           this.dataForm.backUrl = data.backUrl
           this.dataForm.picType = data.picType
           this.dataForm.issuePicLevel = data.issuePicLevel
+          this.dataForm.activeScore = data.activeScore
           let front = {name: data.issuePicName, url: this.resourcesUrl + this.dataForm.frontUrl, path: this.dataForm.frontUrl}
           let back = {name: data.issuePicName, url: this.resourcesUrl + this.dataForm.backUrl, path: this.dataForm.backUrl}
           if(front.path){
@@ -285,7 +298,8 @@ export default {
         frontList: [],
         back:{},
         picType: "6x9",
-        shopId: this.$store.state.user.shopId
+        shopId: this.$store.state.user.shopId,
+        activeScore: null
       }
     },
 

+ 31 - 5
src/views/modules/ar/arIssuePic/index.vue

@@ -45,10 +45,10 @@
             <el-table-column label="正面" prop="frontUrl" align="center">
               <template slot-scope="scope">
                 <el-image
-                  style="width: 100px; height: 100px"
+                  style="width: 120px; height: 120px"
                   :src="resourcesUrl + scope.row.frontUrl"
                   v-if="scope.row.frontUrl"
-                  fit="fill"
+                  fit="contain"
                   @click="previewPic(scope.row.frontUrl)"
                 />
               </template>
@@ -57,14 +57,26 @@
             <el-table-column label="背面" prop="backUrl" align="center">
               <template slot-scope="scope">
                 <el-image
-                  style="width: 100px; height: 100px"
+                  style="width: 120px; height: 120px"
                   :src="resourcesUrl + scope.row.backUrl"
                   v-if="scope.row.backUrl"
-                  fit="fill"
+                  fit="contain"
                   @click="previewPic(scope.row.backUrl)"
                 />
               </template>
             </el-table-column>
+            <!-- 背面图 -->
+            <el-table-column label="二维码" prop="qrCodeUrl" align="center">
+              <template slot-scope="scope">
+                <el-image
+                  style="width: 120px; height: 120px"
+                  :src="resourcesUrl + scope.row.qrCodeUrl"
+                  v-if="scope.row.qrCodeUrl"
+                  fit="contain"
+                  @click="previewPic(scope.row.qrCodeUrl)"
+                />
+              </template>
+            </el-table-column>
             <el-table-column
               align="center"
               :label="$t('crud.menu')"
@@ -72,7 +84,10 @@
             >
               <template slot-scope="scope">
                 <div class="text-btn-con">
-                  <div v-if="isAuth('ar:arIssue:update')" class="default-btn text-btn" @click="interactiveConfigHandle(scope.row.issuePicId)">互动配置</div>
+                  <div v-if="isAuth('ar:arIssue:update')" class="default-btn text-btn">
+                    <div v-if="shopId === 8"  @click="interactiveConfigHandle(scope.row.issuePicId)">互动配置</div>
+                    <div v-else @click="videoConfigHandle(scope.row.issuePicId)">视频配置</div>
+                  </div>
                   <div v-if="isAuth('ar:arIssue:update')" class="default-btn text-btn" @click="issueConfigHandle(scope.row.issuePicId)">发行配置</div>
                   <div v-if="isAuth('ar:arIssue:update')" class="default-btn text-btn" @click="frameConfigHandle(scope.row.issuePicId)">边框配置</div>
                   <div v-if="isAuth('ar:arIssue:update')" class="default-btn text-btn" @click="updateHandle(scope.row.issuePicId)">{{ $t('text.updateBtn') }}</div>
@@ -100,6 +115,7 @@
       </el-dialog>
       <config-add-or-update ref="configAddOrUpdate" v-if="configVisible"></config-add-or-update>
       <interactive-config ref="interactiveConfigAddOrUpdate" v-if="interactiveConfigVisible"></interactive-config>
+      <video-config ref="videoConfigAddOrUpdate" v-if="videoConfigVisible"></video-config>
       <frame-config-add-or-update ref="frameConfigAddOrUpdate" v-if="frameConfigVisible"></frame-config-add-or-update>
     </div>
   </el-drawer>
@@ -110,6 +126,7 @@
 import AddOrUpdate from './add-or-update'
 import ConfigAddOrUpdate from '../arIssueConfig/add-or-update'
 import InteractiveConfig from "../arIssueConfig/interactive-config";
+import VideoConfig from "../arIssueConfig/video-config";
 import FrameConfigAddOrUpdate from "./frame-add-or-update";
 export default {
   data () {
@@ -132,10 +149,13 @@ export default {
       configVisible: false,
       frameConfigVisible: false,
       interactiveConfigVisible: false,
+      videoConfigVisible: false,
+      shopId: this.$store.state.user.shopId
     }
   },
   components: {
     InteractiveConfig,
+    VideoConfig,
     AddOrUpdate,
     ConfigAddOrUpdate,
     FrameConfigAddOrUpdate
@@ -202,6 +222,12 @@ export default {
         this.$refs.interactiveConfigAddOrUpdate.init(issuePicId, this.issueId)
       })
     },
+    videoConfigHandle(issuePicId){
+      this.videoConfigVisible = true
+      this.$nextTick(() => {
+        this.$refs.videoConfigAddOrUpdate.init(issuePicId, this.issueId)
+      })
+    },
     deleteHandle (issuePicId) {
       this.$confirm(this.$i18n.t('admin.isDeleOper') + '?', this.$i18n.t('text.tips'), {
         confirmButtonText: this.$i18n.t('crud.filter.submitBtn'),

+ 66 - 13
src/views/modules/ar/arIssueUserCard/index.vue

@@ -5,6 +5,44 @@
     :direction="direction"
     size="60%"
     :before-close="handleClose">
+    <div class="search-bar">
+      <el-form :inline="true" class="search-form" ref="searchForm" :model="searchForm" label-width="auto" size="small">
+        <div class="input-row">
+          <el-form-item prop="cardLevel" label="等级" class="search-form-item">
+            <el-select
+              v-model="searchForm.cardLevel"
+              clearable
+              placeholder="确权状态"
+              size="small">
+              <el-option key="1" label="UR*卡" value="UR*卡"></el-option>
+              <el-option key="2" label="UR卡" value="UR卡"></el-option>
+              <el-option key="3" label="SSR卡" value="SSR卡"></el-option>
+              <el-option key="4" label="SR卡" value="SR卡"></el-option>
+              <el-option key="5" label="FR卡" value="FR卡"></el-option>
+              <el-option key="6" label="R卡" value="R卡"></el-option>
+              <el-option key="7" label="N卡" value="N卡"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="confirmStatus" label="确权状态" class="search-form-item">
+            <el-select
+              v-model="searchForm.confirmStatus"
+              clearable
+              placeholder="确权状态"
+              size="small">
+              <el-option key="1" label="已确权" value="CONFIRMED"></el-option>
+              <el-option key="0" label="待确权" value="WAIT_CONFIRM"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="nickName" label="用户名" class="search-form-item">
+            <el-input type="text" v-model="searchForm.nickName" placeholder="请完整输入用户名"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <div class="default-btn primary-btn" @click="searchChange(true)">{{$t('crud.searchBtn')}}</div>
+            <div class="default-btn" @click="resetSearchForm('searchForm')">{{$t('shop.resetMap')}}</div>
+          </el-form-item>
+        </div>
+      </el-form>
+    </div>
     <div class="mod-ar-arIssuePic" style="margin-left: 24px">
       <div class="main-container">
         <!--<div class="operation-bar">
@@ -37,7 +75,7 @@
               </template>
             </el-table-column>
             <!-- 背面图 -->
-            <el-table-column label="背面图" prop="backUrl" align="center">
+            <!--<el-table-column label="背面图" prop="backUrl" align="center">
               <template slot-scope="scope">
                 <el-image
                   style="width: 100px; height: 100px"
@@ -47,25 +85,32 @@
                   @click="previewPic(scope.row.backUrl)"
                 />
               </template>
-            </el-table-column>
+            </el-table-column>-->
             <!-- 背面图 -->
-            <el-table-column label="二维码" prop="arCodeUrl" align="center">
+            <el-table-column label="等级" prop="cardLevel" align="center">
               <template slot-scope="scope">
-                <el-image
-                  style="width: 100px; height: 100px"
-                  :src="resourcesUrl + scope.row.arCodeUrl"
-                  v-if="scope.row.backUrl"
-                  fit="fill"
-                  @click="previewPic(scope.row.arCodeUrl)"
-                />
+                <el-tag v-if="scope.row.cardLevel === 'UR*卡'" type="danger">UR*卡</el-tag>
+                <el-tag v-if="scope.row.cardLevel === 'UR卡'" type="danger">UR卡</el-tag>
+                <el-tag v-if="scope.row.cardLevel === 'SSR卡'" type="warning">SSR卡</el-tag>
+                <el-tag v-if="scope.row.cardLevel === 'SR卡'" type="primary">SR</el-tag>
+                <el-tag v-if="scope.row.cardLevel === 'FR卡'" type="success">FR</el-tag>
+                <el-tag v-if="scope.row.cardLevel === 'R卡'" type="info">R卡</el-tag>
+                <el-tag v-if="scope.row.cardLevel === 'N卡'" type="info">N卡</el-tag>
               </template>
             </el-table-column>
-            <el-table-column label="资源类型" prop="assetsType" align="center">
+            <el-table-column label="确权状态" prop="confirmStatus" align="center">
               <template slot-scope="scope">
-                <el-tag v-if="scope.row.assetsType === 'Video'" type="primary">视频</el-tag>
-                <el-tag v-if="scope.row.assetsType === 'Model'" type="success">模型</el-tag>
+                <el-tag v-if="scope.row.confirmStatus === 'CONFIRMED'" type="success">已确权</el-tag>
+                <el-tag v-if="scope.row.confirmStatus === 'WAIT_CONFIRM'" type="warning">待确权</el-tag>
               </template>
             </el-table-column>
+            <el-table-column
+              label="确权用户"
+              prop="nickName"
+              align="center"
+              width="200px"
+            >
+            </el-table-column>
             <el-table-column
               align="center"
               prop="confirmTime"
@@ -138,6 +183,14 @@ export default {
   mounted () {
   },
   methods: {
+    /**
+     * 重置表单
+     * @param {String} formName 表单名称
+     */
+    resetSearchForm (formName) {
+      this.$refs[formName].resetFields()
+      this.getDataList()
+    },
     getDataList (page, params) {
       this.dataListLoading = true
       this.$http({

+ 0 - 1
src/views/modules/prod/scoreProdInfo.vue

@@ -28,7 +28,6 @@
 
       <prod-transport
         v-model="dataForm.deliveryTemplateId"
-        v-if="mold === 0"
       ></prod-transport>
       <el-tabs type="card">
         <el-tab-pane label="中文信息">

+ 2 - 1
src/views/modules/score/score-config.vue

@@ -359,7 +359,8 @@ export default {
         shopScoreSwitch: false,
         getDiscount: 0,
         shopUseScore: 0,
-        categoryConfigs: []
+        categoryConfigs: [],
+        shopId: this.$store.state.user.shopId,
       },
       shopId: this.$store.state.user.shopId,
       useDiscountRange: 0,

+ 19 - 6
src/views/modules/shop/feature/create/edit/components/hot-area/index.vue

@@ -164,7 +164,9 @@
       <div class="custom-path-con">
         <span>{{$t('shopFeature.tabNav.routeLink')}}</span>
         <el-input style="margin-rigth: 10px;" :placeholder="$i18n.t('shopFeature.tabNav.pleaseFillThePath')" size="small" v-model="customPath">
-
+        </el-input>
+        <span>页面名称</span>
+        <el-input style="margin-rigth: 10px;" :placeholder="页面名称" size="small" v-model="customTitle">
         </el-input>
       </div>
       <div slot="footer" style="text-align: right;">
@@ -251,12 +253,17 @@ export default {
           type: 4,
           title: this.$i18n.t('shopFeature.tabNav.customPath'),
           link: ''
-        }
+        },
         // {
         //   type: 5,
         //   title: this.$i18n.t('shopFeature.headerAd.microPage'),
         //   link: ''
         // }
+        {
+          type: 6,
+          title: 'H5页面',
+          link: ''
+        }
       ],
       resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
       dataForm: {
@@ -267,6 +274,8 @@ export default {
       dialogChoosePages: false,
       isGetChooseFeature: false, // 是否可以返回微页面
       customPath: '', // 自定义路径
+      customTitle: '',
+      type: null,
       showPathInputDialog: false // 自定义路径输入弹窗
     }
   },
@@ -298,6 +307,9 @@ export default {
         case 5:
           str = that.$i18n.t('shopFeature.tabNav.microPage')
           break
+        case 6:
+          str = 'H5页面'
+          break
       }
       return str
     }
@@ -319,7 +331,7 @@ export default {
         })
         return
       }
-      if (type === 4) {
+      if (type === 4 || type === 6) {
         this.customPath = this.dialogHot ? this.cacheImageActiveBox[boxIndex].link : this.formData.imageList[this.currentEditIndex].activeBoxs[boxIndex].link
         this.showPathInputDialog = true
       }
@@ -467,9 +479,10 @@ export default {
         return
       }
       // 自定义路径: 弹出路径输入框
-      if (eve.linkItem.type === 4) {
+      if (eve.linkItem.type === 4 || eve.linkItem.type === 6) {
         this.showPathInputDialog = true
         this.customPath = ''
+        this.type = eve.linkItem.type
         return
       }
       // 微页面: 弹窗选择一个页面
@@ -492,9 +505,9 @@ export default {
         return
       }
       this.setLinkInfo({
-        title: this.customPath,
+        title: this.customTitle,
         link: this.customPath,
-        type: 4
+        type: this.type
       })
       this.showPathInputDialog = false
       this.customPath = ''

+ 14 - 2
src/views/modules/shop/feature/create/edit/components/image_ad/index.vue

@@ -117,7 +117,7 @@
                       <div class="ad-image-title">
                         {{$t('shopFeature.imageAd.picTit')}}
                       </div>
-                      <el-input v-model="item.imgTit"
+                      <el-input v-model="item.title"
                                   size="mini"
                                   :placeholder="$i18n.t('shopFeature.imageAd.picTit')" />
                       <div class="ad-image-link">
@@ -311,12 +311,17 @@ export default {
           type: 4,
           title: this.$i18n.t('shopFeature.tabNav.customPath'),
           link: ''
-        }
+        },
         // {
         //   type: 5,
         //   title: this.$i18n.t('shopFeature.headerAd.microPage'),
         //   link: ''
         // }
+        {
+          type: 6,
+          title: 'H5页面',
+          link: ''
+        }
       ],
       commandInfo: {}, // 选择跳转的信息
       resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
@@ -364,6 +369,9 @@ export default {
         case 5:
           str = that.$i18n.t('shopFeature.tabNav.microPage')
           break
+        case 6:
+          str = 'H5页面'
+          break
       }
       return str
     }
@@ -488,6 +496,10 @@ export default {
       if (eve.linkItem.type === 5) {
         this.choosePage()
       }
+      if (eve.linkItem.type === 6) {
+        this.showPathInputDialog = true
+        return
+      }
       this.setLinkInfo({
         title: this.commandInfo.title,
         link: this.commandInfo.link