Browse Source

Merge branch 'master' of http://git.tjyourong.com.cn/ctop/adsp-vue

魏志佳 4 years ago
parent
commit
2b94582feb

+ 615 - 0
src/views/modules/Statistics/refuseDataCreatNew.vue

@@ -0,0 +1,615 @@
+<style></style>
+<template>
+  <div class="data-refuse-statistics">
+    <a-row class="image-list-heading vm-panel">
+      <a-row type="flex" align="middle" justify="space-between" class="panel-body">
+        <div class="search-bar" style="width:100%;display:flex">
+          <span style="line-height:35px;margin-left:15px">账户选择:</span>
+          <treeselect :appId.sync="appId" :multiple="false" />
+          <a-button type="primary" style="margin-left:10px" @click="(ipagination.current=1);addUser()">搜索</a-button>
+        </div>
+      </a-row>
+    </a-row>
+    <a-row :gutter="10" style="margin-top:10px">
+      <a-col :span="24">
+        <a-card style="width:100%;">
+          <div style="display:flex;margin:0 0 20px 0;position:relative">
+            <a-input placeholder="请输出要查找的创意名称" style="width:300px;" v-model="keyWord" />
+            <a-button type="primary" style="margin-left:10px" @click="addUserKey">搜索</a-button>
+            <a-button type="primary" style="margin-left:10px" @click="reset()">刷新列表</a-button>
+            <a-button type="primary" style="margin-left:10px" @click="clickAgain" v-if="selectedRowKeys.length>0"
+              :loading="loadingList">一键重提
+            </a-button>
+            <a-button type="primary" style="position:absolute;right:0" @click="syncCreative"
+              :loading="loadingSyncCreative">
+              同步创意
+            </a-button>
+          </div>
+          <!-- /MaterialRefuse/syncCreative -->
+          <a-table :columns="columns" :dataSource="dataList" bordered :loading="loading" size="middle"
+            :pagination="ipagination" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+            <!-- <div slot="videoUrl" slot-scope="videoUrl">
+              <video class="video" :src="videoUrl" controls="controls" style="height:200px;width:112.5px">
+                您的浏览器不支持 video 标签。
+              </video>
+            </div> -->
+
+
+            <div slot="coverUrl" slot-scope="coverUrl">
+              <img :src="coverUrl" controls="controls" style="height:200px;width:112.5px" />
+            </div>
+            <template slot="creativeName" slot-scope="text, record">
+              <div>
+                {{ text }}
+                <a-icon type="edit" style="cursor: pointer;" @click="onCellChange(record, 'creativeName')" />
+              </div>
+            </template>
+            <template slot="description" slot-scope="text, record">
+              <div>
+                {{ text }}
+                <a-icon type="edit" style="cursor: pointer;" @click="onCellChange(record, 'description')" />
+              </div>
+            </template>
+          </a-table>
+        </a-card>
+      </a-col>
+    </a-row>
+    <a-modal :title="editTitle" :visible="visible" @ok="handleOk" :confirmLoading="confirmLoading"
+      @cancel="handleCancel">
+      <a-textarea v-model="editWord" autosize />
+    </a-modal>
+    <a-modal title="一键重提" @cancel="handleClose" :visible="visibleAgain" @ok="handleOkAgain"
+      :confirmLoading="againLoading">
+      <a-form :form="form">
+        <a-form-item label="是否修改" :labelCol="{ lg: { span: 6 }, sm: { span: 6 } }"
+          :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }">
+          <a-radio-group buttonStyle="solid" v-decorator="[
+          'type',
+           { initialValue: 0} ]">
+            <a-radio-button :value="0">否</a-radio-button>
+            <a-radio-button :value="1">是</a-radio-button>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item label="广告语" :labelCol="{ lg: { span: 6 }, sm: { span: 6 } }"
+          :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }" v-if="getData('type')==1">
+          <a-input v-decorator="[
+          'updateDescription'
+        ]" :max="10" :min="1" style="width:100%">
+          </a-input>
+          <a @click="showTitle()">推荐标题</a><a style="margin-left:10px" @click="showCunTitle()">标题收藏</a>
+        </a-form-item>
+        <!-- <a-form-item label="行动号召" :labelCol="{ lg: { span: 6 }, sm: { span: 6 } }"
+          :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }" v-if="getData('type')==1">
+          <a-select v-decorator="['updateActionBarText']" showSearch allowClear placeholder="选择行动号召按钮文案"
+            optionFilterProp="children" :filterOption="filterOption">
+            <a-select-option v-for="appModel in appList" :key="appModel.id" :value="appModel.actionBarText">
+              {{ appModel.actionBarText }}
+            </a-select-option>
+          </a-select>
+        </a-form-item> -->
+      </a-form>
+    </a-modal>
+    <a-modal v-model="visibleFail" title="重提信息" :footer="null">
+      <div v-if="fail">
+        修改成功条数:{{ fail.successCount }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;失败条数:{{
+              fail.failCount
+            }}
+        <div style="margin-top:20px">
+          <p v-for="(item, index) of fail.failInfo" :key="index">
+            <span>名称:{{ item.campaignName?item.campaignName:item.unitName }}</span><br />
+            <span>错误信息:{{ item.message }}</span>
+          </p>
+        </div>
+      </div>
+    </a-modal>
+    <a-modal title="推荐标题" v-model="titleVisible" :width="1000" :footer="null">
+      <a-row :gutter="10">
+        <a-col :sm="10" style="margin-bottom: 20px;z-index: 10">
+          <a-card class="search-box" style="min-height:500px">
+            <div style="margin-bottom:30px">
+              <span style="display:inline-block;width:80px">行业</span>
+              <a-cascader style="margin-top: 1rem;width:300px" v-model="dataOne" :options="options"
+                :showSearch="{ filter }" expandTrigger="hover" @change="onChangeTitle" placeholder="请选择行业">
+                <a-icon type="smile" slot="suffixIcon" class="test" />
+              </a-cascader>
+            </div>
+            <div style="margin-bottom:30px">
+              <span style="display:inline-block;width:80px">关键词</span>
+              <a-input placeholder="请输入关键词" v-model="value" style="width: 300px" />
+            </div>
+            <span style="display:inline-block;width:80px;float:left"></span>
+            <a-button type="primary" @click="searchQuery" :disabled="value == ''">生成</a-button>
+          </a-card>
+        </a-col>
+        <a-col :sm="14" style="margin-bottom: 20px;z-index: 10">
+          <a-card class="search-box" style="over-flow:auto">
+            <a-list size="large" bordered :dataSource="title">
+              <a-list-item slot="renderItem" slot-scope="item">
+                <a slot="actions" @click="okTitle(item)">选择</a>
+
+
+                {{ item }}
+              </a-list-item>
+            </a-list>
+          </a-card>
+        </a-col>
+      </a-row>
+    </a-modal>
+    <a-modal title="收藏标题" v-model="cunTitleVisible" :width="1000" :footer="null">
+      <a-row :gutter="10">
+        <a-col :sm="24" style="margin-bottom: 20px;z-index: 10">
+          <a-card class="search-box" style="over-flow:auto">
+            <a-list size="large" bordered :dataSource="cunTitleList">
+              <a-list-item slot="renderItem" slot-scope="item">
+
+                <div slot="actions">
+                  <a @click="okTitleCun(item)">选择</a>
+                  <!-- <a-divider type="vertical" />
+                  <a @click="removeTitleCun(item)">删除</a> -->
+                </div>
+                {{ item.title }}
+              </a-list-item>
+            </a-list>
+          </a-card>
+        </a-col>
+      </a-row>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+    getRefuseCreative,
+    updateCreative,
+    selectByCreateName
+  } from '@api/statistics'
+  import axios from 'axios'
+  import EditableCell from './components/EditableCell'
+  import {
+    mapGetters
+  } from 'vuex'
+  import {
+    deleteAction,
+    getAction,
+    postAction
+  } from '@/api/manage'
+  import Treeselect from './components/Treeselect.vue'
+
+  import {
+    stopOtherVideo,
+    closeAllVideoFun
+  } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
+  const columns = [{
+      title: '账号Id',
+      dataIndex: 'accountId',
+      key: 'accountId',
+      align: 'center'
+    },
+    {
+      title: '计划Id',
+      dataIndex: 'campaignId',
+      key: 'campaignId',
+      align: 'center'
+    },
+    {
+      title: '广告组id',
+      dataIndex: 'unitId',
+      key: 'unitId',
+      align: 'center'
+    },
+    {
+      title: '创意id',
+      dataIndex: 'creativeId',
+      key: 'photoClick',
+      align: 'center'
+    },
+    {
+      title: '创意名称',
+      dataIndex: 'creativeName',
+      key: 'creativeName',
+      align: 'left',
+      scopedSlots: {
+        customRender: 'creativeName'
+      }
+    },
+    // {
+    //   title: '视频',
+    //   dataIndex: 'videoUrl',
+    //   key: 'videoUrl',
+    //   align: 'center',
+    //   scopedSlots: {
+    //     customRender: 'videoUrl'
+    //   }
+    // },
+    {
+      title: '封面',
+      dataIndex: 'coverUrl',
+      key: 'coverUrl',
+      align: 'center',
+      scopedSlots: {
+        customRender: 'coverUrl'
+      }
+    },
+    {
+      title: '拒绝原因',
+      dataIndex: 'reviewDetail',
+      key: 'reviewDetail',
+      align: 'left'
+    },
+
+    {
+      title: '广告语',
+      dataIndex: 'description',
+      key: 'description',
+      align: 'left',
+      scopedSlots: {
+        customRender: 'description'
+      }
+    }
+  ]
+
+  export default {
+    name: 'refuse-data',
+    components: {
+      EditableCell,
+      Treeselect
+    },
+
+    data: function () {
+      return {
+        title: '被拒创意列表',
+        visibleFail: false,
+        visibleAgain: false,
+        againLoading: false,
+        fail: null,
+        appId: null,
+        loading: false,
+        columns,
+        dataList: [],
+        titleVisible: false,
+        cunTitleVisible: false,
+        keyWord: '',
+        editTitle: '',
+        confirmLoading: false,
+        visible: false,
+        editWord: '',
+        nowData: null,
+        selectedRowKeys: [],
+        selectedRowKeysValue: [],
+        loadingList: false,
+        loadingSyncCreative: false,
+        ipagination: {
+          current: 1,
+          pageSize: 50,
+          showTotal: (total, range) => {
+            return range[0] + '-' + range[1] + ' 共' + total + '条'
+          },
+          showQuickJumper: true,
+          //   showSizeChanger: true,
+          total: 0,
+          onChange: current => {
+            // 切换分页时的回调,
+            // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
+            this.ipagination.current = current
+            this.selectedRowKeys = []
+            this.selectedRowKeysValue = []
+            this.addUser()
+          }
+        },
+        form: this.$form.createForm(this),
+        appList: [],
+        options: [],
+        cunTitleList: [],
+        title: [],
+        dataOne: [],
+        value: ''
+      }
+    },
+    filters: {
+      typeStatus(type) {
+        // 2 - 提升应用安装;
+        // 3 - 获取电商下单;
+        // 4 - 推广品牌活动;
+        // 5 - 收集销售线索;
+        var data = ['', '', '提升应用安装', '获取电商下单', '推广品牌活动', '收集销售线索']
+        return data[type]
+      },
+      status(sta) {
+        var data = {
+          '-1': '不限',
+          1: '已暂停',
+          3: '计划超预算',
+          4: '有效',
+          6: '余额不足'
+        }
+        return data[sta]
+      },
+      putStatus(sta) {
+        var data = {
+          1: '投放中',
+          2: '暂停'
+        }
+        return data[sta]
+      },
+      createChannel(sta) {
+        var data = {
+          0: '投放后台',
+          1: '汇创助手'
+        }
+        return data[sta]
+      }
+    },
+    watch: {
+      appId(n, o) {
+        console.log(n, o)
+        if (n != o) {
+          this.ipagination.current = 1
+        }
+      },
+      visibleFail(n, o) {
+        if (!n) {
+          this.visibleAgain = false
+          this.selectedRowKeys = []
+          this.selectedRowKeysValue = []
+          this.addUser()
+        }
+      }
+    },
+    methods: {
+      filter(inputValue, path) {
+        return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1)
+      },
+      onChangeTitle(value, selectedOptions) {
+        console.log(value, selectedOptions)
+        this.dataOne = value
+        this.value = ''
+        this.title = []
+      },
+      okTitleCun(item) {
+        console.log(item)
+        this.form.setFieldsValue({
+          updateDescription: item.title
+        })
+        this.cunTitleVisible = false;
+        this.cunTitleList = []
+      },
+
+      okTitle(item) {
+        this.form.setFieldsValue({
+          updateDescription: item
+        })
+        this.titleVisible = false;
+        this.dataOne = []
+        this.value = ""
+        this.title = []
+      },
+      searchQuery() {
+        // /ctop/creativeTitle/titleSuggestion
+        console.log(this.value)
+        getAction('/ctop/creativeTitle/titleSearch', {
+          firstCategory: this.dataOne[0],
+          secondCategory: this.dataOne[1],
+          keywords: this.value
+        }).then(res => {
+          console.log(res)
+          this.title = res.result ? res.result : []
+        })
+        // firstCategory,secondCategory,keywords
+      },
+      filterOption(input, option) {
+        return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      },
+      getData(className) {
+        return this.form.getFieldValue(className)
+      },
+      syncCreative() {
+
+        this.loadingSyncCreative = true
+        var params = {}
+        //  localStorage.setItem('accountIdCreat', record.campaignId)
+        // localStorage.setItem('accountIdCreatNow', this.appId)
+        params.accountId = this.appId
+        getAction('/MaterialRefuse/syncCreative', params).then(res => {
+          if (res.success) {
+            this.loadingSyncCreative = false
+            this.$message.success("同步成功")
+            this.reset()
+          } else {
+            this.loadingSyncCreative = false
+            this.$message.error(res.message)
+          }
+        })
+      },
+      clickAgain() {
+        // this.loadingList = true
+        this.visibleAgain = true
+        // getAction('/MaterialRefuse/getAllActionBarText').then(res => {
+        //   if (res.success) {
+        //     this.appList = res.result
+        //   }
+        // })
+        // var params = {}
+        // params.accountId = this.appId + ''
+        // params.creativeArr = this.selectedRowKeysValue
+        // postAction('/MaterialRefuse/batchUpdateCreative', params).then(res => {
+        //   if (res.success) {
+        //     this.loadingList = false
+        //     this.selectedRowKeysValue = []
+        //     this.selectedRowKeys = []
+        //     this.visibleFail = true
+        //     this.fail = res.result
+        //     this.addUser()
+        //   } else {
+        //     this.loadingList = false
+        //     this.visibleFail = true
+        //     this.fail = res.result
+        //     this.$message.error(res.message)
+        //   }
+        // })
+      },
+      showTitle() {
+        this.titleVisible = true;
+        this.getHangye()
+      },
+      showCunTitle() {
+        this.cunTitleVisible = true
+        this.getCunTitle()
+      },
+      getCunTitle() {
+        var params = {}
+        params.accountId = this.appId
+        params.userId = this.userInfo().id
+        params.pageNo = 1
+        params.pageSize = 500
+        getAction('/kuaishou/kuaiShouTitleCollection/list', params).then(res => {
+          if (res.success) {
+            console.log(res.result)
+            this.cunTitleList = res.result.records
+          }
+        })
+      },
+      getHangye() {
+        getAction('/ctop/creativeTitle/getTitleLabel', '').then(res => {
+          console.log(res)
+          if (res.success) {
+            this.options = res.result.map(item => {
+              return {
+                label: item.label,
+                value: item.value,
+                children: item.children.length > 0 ? [{
+                  label: '不限',
+                  value: 0
+                }].concat(item.children) : [{
+                  label: '不限',
+                  value: 0
+                }]
+              }
+            })
+            this.options = [{
+              label: '不限',
+              value: 0
+            }].concat(this.options)
+            if (this.dataOne.length > 0) {
+              return
+            } else {
+              this.dataOne = [0]
+            }
+
+          }
+        })
+      },
+      onSelectChange(selectedRowKeys, selectionRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRowKeysValue = selectionRows.map(item => {
+          return {
+            description: item.description,
+            creativeId: item.creativeId
+          }
+        })
+        //    this.selectedRowKeysValue.length > 0 ? this.selectedRowKeysValue :
+      },
+      handleOkAgain(e) {
+        this.againLoading = true
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            var params = {
+
+              ...values,
+              accountId: this.appId,
+              creativeArr: this.selectedRowKeysValue
+            }
+            postAction('/MaterialRefuse/batchUpdateCreative', params).then(res => {
+              if (res.success) {
+                // this.visibleFail = true
+                this.visibleAgain = false
+                this.selectedRowKeys = []
+                this.selectedRowKeysValue = []
+                this.addUser()
+                this.againLoading = false
+                this.$message.success(res.message)
+              } else {
+                this.againLoading = false
+                this.$message.error(res.message)
+              }
+            })
+          }
+        })
+      },
+      handleOk(e) {
+        this.confirmLoading = true
+        var params = {}
+        params.accountId = this.nowData.accountId
+        params.campaignId = this.nowData.campaignId
+        params.unitId = this.nowData.unitId
+        params.creativeId = this.nowData.creativeId
+        params.creativeName = this.editTitle == '创意名称修改' ? this.editWord : this.nowData.creativeName
+        params.description = this.editTitle == '广告语修改' ? this.editWord : this.nowData.description
+        updateCreative(params).then(res => {
+          if (res.code == 0) {
+            this.addUser()
+            this.visible = false
+            this.confirmLoading = false
+          } else {
+            this.$message.error(res.message)
+            this.visible = false
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel(e) {
+        this.visible = false
+      },
+      handleClose(e) {
+        this.visibleAgain = false
+        this.form.resetFields()
+      },
+      onCellChange(item, dataIndex) {
+        this.editWord = item[dataIndex]
+        this.editTitle = dataIndex == 'creativeName' ? '创意名称修改' : '广告语修改'
+        this.nowData = item
+        this.visible = true
+      },
+      moment,
+      ...mapGetters(['nickname', 'avatar', 'userInfo']),
+      addUser() {
+        this.loading = true
+        var params = {}
+        //  localStorage.setItem('accountIdCreat', record.campaignId)
+        // localStorage.setItem('accountIdCreatNow', this.appId)
+        params.accountId = this.appId
+        // params.campaignId = localStorage.getItem('accountIdCreat')
+        params.pageSize = this.ipagination.pageSize
+        params.pageNo = this.ipagination.current
+        getAction('/MaterialRefuse/getRefuseCreative', params).then(res => {
+          if (res.code == 0) {
+            this.dataList = res.result.records.map((v, index) => {
+              return {
+                ...v,
+                key: index
+              }
+            })
+            this.list = this.dataList
+            this.loading = false
+            this.ipagination.total = res.result.total
+          }
+        })
+      },
+      addUserKey() {
+        this.dataList = this.list.filter(item => {
+          return item.creativeName.toLowerCase().indexOf(this.keyWord.toLowerCase()) > -1
+        })
+      },
+      reset() {
+        this.addUser()
+      }
+    },
+    distoryed() {},
+    updated() {
+      stopOtherVideo()
+    },
+    mounted: function () {
+      this.$nextTick(() => {})
+    }
+  }
+</script>

+ 4 - 4
src/views/modules/kuaishouapp/account/accountIndex.vue

@@ -1,13 +1,13 @@
 <style>
   .account-index .ant-card-body .count {
     display: inline-block;
-    height: 32px;
-    line-height: 32px;
+    /* height: 32px; */
+    /* line-height: 32px; */
   }
 
-  .account-index .ant-table td {
+  /* .account-index .ant-table td {
     white-space: nowrap;
-  }
+  } */
 </style>
 <template>
   <div class="account-index">

+ 4 - 4
src/views/modules/kuaishouapp/account/advertisingGroup.vue

@@ -1,17 +1,17 @@
 <style>
   .advertising-group .ant-card-body .count {
     display: inline-block;
-    height: 32px;
-    line-height: 32px;
+    /* height: 32px;
+    line-height: 32px; */
   }
 
   .checked .ant-checkbox-wrapper {
     width: 140px;
   }
 
-  .advertising-group .ant-table td {
+  /* .advertising-group .ant-table td {
     white-space: nowrap;
-  }
+  } */
 
   .ant-tabs {
     overflow: visible;

+ 4 - 4
src/views/modules/kuaishouapp/account/originality.vue

@@ -1,13 +1,13 @@
 <style>
   .account-statistics .ant-card-body .count {
     display: inline-block;
-    height: 32px;
-    line-height: 32px;
+    /* height: 32px;
+    line-height: 32px; */
   }
 
-  .creative-name .ant-table td {
+  /* .creative-name .ant-table td {
     white-space: nowrap;
-  }
+  } */
 
   .else-label .ant-form-item-label label::after {
     content: '';

+ 10 - 6
src/views/modules/kuaishouapp/account/stepForm/Step3.vue

@@ -322,7 +322,7 @@
         <span v-if="messageTip" style="color:red">{{messageTip}}</span>
       </a-form-item>
     </a-modal>
-    <a-modal :maskClosable="false" title="抽帧展示" v-model="chouzhen" width="60%">
+    <a-modal :maskClosable="false" title="抽帧展示" v-model="chouzhen" :width="1000">
       <template slot="footer">
         <a-button key="back" @click="chouzhen=false">关闭</a-button>
         <a-button key="submit" type="primary" @click="handleOkChouzhen">
@@ -336,22 +336,24 @@
       <ul v-if="chouzhenList.length>0" style="height:600px;overflow:auto;padding-left:0" class="step3-modal">
 
         <a-checkbox-group v-model="checkList" @change="onChange" style="width:100%;">
-          <li v-for="(item,index) of chouzhenList" :key="index" class="chouzhen" style="height:355px"
+          <li v-for="(item,index) of chouzhenList" :key="index" class="chouzhen" style="height:320px"
             :class="{'first':index == 0}">
-
-
             <a-checkbox :value="item.signature"
               style="position:absolute;z-index: 100;width:100%;height:100%;right:0;top:0;float:right">
               <img :src="item.url" alt="" style="width:100%">
 
             </a-checkbox>
-
+            <a style="position:absolute;bottom:0;width:100%;text-align:center;margin-left: -10px;z-index: 100;"
+              @click.stop="(showImageStr=item.url);(showImageChouzhen=true)">查看封面</a>
           </li>
         </a-checkbox-group>
       </ul>
 
     </a-modal>
+    <a-modal title="抽帧详情" v-model="showImageChouzhen" :width="400" :footer="null">
 
+      <img :src="showImageStr" style="width:100%" />
+    </a-modal>
 
     <a-modal :maskClosable="false" title="选择素材" v-model="visibleMatemal" @ok="handleOkShow" :width="1000">
       <a-tabs type="card" @change="callback" v-model="active" class="check-video">
@@ -399,7 +401,7 @@
           @change="getDataSource" />
       </div>
     </a-modal>
-    <a-modal title="查看视频" v-model="visibleVideo" :width="300" :footer="null">
+    <a-modal title="查看视频" v-model="visibleVideo" :width="400" :footer="null">
       <video class="video" :src="videoUrlShow" controls="controls" style="width:100%">
         您的浏览器不支持 video 标签。
       </video>
@@ -525,6 +527,8 @@
     },
     data() {
       return {
+        showImageChouzhen: false,
+        showImageStr: null,
         tongbuLoading: false,
         showTrackUrlNameElse: true,
         clickTrackUrlShow: false,

+ 6 - 1
src/views/modules/material/videoMaterial.vue

@@ -1291,11 +1291,14 @@
       </template>
       <ul v-if="chouzhenList.length>0" style="height:600px;overflow:auto">
         <li v-for="(item,index) of chouzhenList" :key="index" class="chouzhen" :class="{'first':index == 0}">
-          <img :src="item.url" alt="" style="width:100%">
+          <img :src="item.url" alt="" style="width:100%" @click="(showImageStr=item.url);(showImageChouzhen=true)">
         </li>
 
       </ul>
       <div style="clear:both"></div>
+      <a-modal title="图片预览" v-model="showImageChouzhen" :footer="null">
+        <img :src="showImageStr"  style="width:100%"/>
+      </a-modal>
     </a-modal>
 
     <account-check ref="check" @synchro="implement"></account-check>
@@ -1332,6 +1335,8 @@
 
     data() {
       return {
+        showImageChouzhen:false,
+        showImageStr:null,
         coverPreviewVisible: false,
         chouzhen: false,
         chouzhenList: [],