|
@@ -68,6 +68,9 @@
|
|
.cover_carousel_con .slick-dots {
|
|
.cover_carousel_con .slick-dots {
|
|
bottom: 55px;
|
|
bottom: 55px;
|
|
}
|
|
}
|
|
|
|
+.add-image-material .draggable-list {
|
|
|
|
+ display: block !important;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
.tag-video {
|
|
.tag-video {
|
|
@@ -269,7 +272,8 @@ a {
|
|
</a-col>
|
|
</a-col>
|
|
<a-col :md="8" :sm="8">
|
|
<a-col :md="8" :sm="8">
|
|
<a-form-item label="时间选择">
|
|
<a-form-item label="时间选择">
|
|
- <a-date-picker v-model="queryParam.createTime" format="YYYY-MM-DD" style="width:100%" />
|
|
|
|
|
|
+ <!-- <a-date-picker v-model="queryParam.createTime" format="YYYY-MM-DD" style="width:100%" /> -->
|
|
|
|
+ <a-input placeholder="请输入查询时间" v-model="queryParam.createTime"></a-input>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
<a-col :md="8" :sm="8">
|
|
<a-col :md="8" :sm="8">
|
|
@@ -566,14 +570,14 @@ a {
|
|
</div>
|
|
</div>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
</a-tabs>
|
|
</a-tabs>
|
|
- <a-modal title="封面上传" v-model="addImageVisible">
|
|
|
|
|
|
+ <a-modal title="封面上传" @cancel="closeImage" @afterClose="closeImage" v-model="addImageVisible">
|
|
<template slot="footer">
|
|
<template slot="footer">
|
|
<a-button key="back" @click="closeImage">取消</a-button>
|
|
<a-button key="back" @click="closeImage">取消</a-button>
|
|
<a-button key="submit" type="primary" @click="handleOkImage">
|
|
<a-button key="submit" type="primary" @click="handleOkImage">
|
|
确定
|
|
确定
|
|
</a-button>
|
|
</a-button>
|
|
</template>
|
|
</template>
|
|
- <a-form-item :label-col="labelCol" :wrapper-col="wrapperCol" label="" class="add-image-material">
|
|
|
|
|
|
+ <a-form-item label="" class="add-image-material">
|
|
<upload-to-ali
|
|
<upload-to-ali
|
|
style="width:100%"
|
|
style="width:100%"
|
|
v-model="urlListImage.url"
|
|
v-model="urlListImage.url"
|
|
@@ -630,7 +634,7 @@ a {
|
|
</div>
|
|
</div>
|
|
</a-modal>
|
|
</a-modal>
|
|
|
|
|
|
- <a-modal title="添加素材" v-model="visible" :maskClosable="false" :width="800">
|
|
|
|
|
|
+ <a-modal title="添加素材" v-model="visible" @cancel="close" @afterClose="close" :maskClosable="false" :width="800">
|
|
<template slot="footer">
|
|
<template slot="footer">
|
|
<a-button key="back" @click="close">取消</a-button>
|
|
<a-button key="back" @click="close">取消</a-button>
|
|
<a-button key="submit" type="primary" :disabled="!confirmLoading" @click="handleOk">
|
|
<a-button key="submit" type="primary" :disabled="!confirmLoading" @click="handleOk">
|
|
@@ -822,18 +826,30 @@ a {
|
|
您的浏览器不支持 video 标签。
|
|
您的浏览器不支持 video 标签。
|
|
</video>
|
|
</video>
|
|
<div class="downLoad" style="height:50%;overflow:auto">
|
|
<div class="downLoad" style="height:50%;overflow:auto">
|
|
|
|
+ <a-button @click="onCheckAllImageChange" v-if="model.length > 0">{{
|
|
|
|
+ checkAllImage ? '取消 ( ' + checkArrImage.length + ' )' : '全选'
|
|
|
|
+ }}</a-button>
|
|
<ul class="actor-photo-list" :style="{ width: 25 * model.length + '%' }" v-if="model.length > 0">
|
|
<ul class="actor-photo-list" :style="{ width: 25 * model.length + '%' }" v-if="model.length > 0">
|
|
<a-checkbox-group
|
|
<a-checkbox-group
|
|
v-model="checkArrImage"
|
|
v-model="checkArrImage"
|
|
style="width:100%; display: flex;padding-left: 0;"
|
|
style="width:100%; display: flex;padding-left: 0;"
|
|
- @change="onChangeCheck"
|
|
|
|
|
|
+ @change="onChangeCheckImage"
|
|
>
|
|
>
|
|
<li v-for="(item, index) of model" :key="index">
|
|
<li v-for="(item, index) of model" :key="index">
|
|
- <a-checkbox :value="item" style="position:absolute;z-index: 100"></a-checkbox
|
|
|
|
|
|
+ <a-checkbox :value="item.id" style="position:absolute;z-index: 100"></a-checkbox
|
|
><img class="video" :src="item.url" @click="coverPreviewShowModal(item, index)" />
|
|
><img class="video" :src="item.url" @click="coverPreviewShowModal(item, index)" />
|
|
- <span class="tag-video">{{
|
|
|
|
- item.status == 0 ? '未审核' : item.status == 1 ? '已批准' : '已驳回'
|
|
|
|
- }}</span>
|
|
|
|
|
|
+ <span
|
|
|
|
+ class="tag-video"
|
|
|
|
+ :style="{
|
|
|
|
+ backgroundColor:
|
|
|
|
+ item.status == 0
|
|
|
|
+ ? 'rgba(0, 0, 0)'
|
|
|
|
+ : item.status == 1
|
|
|
|
+ ? 'rgba(0, 180, 100)'
|
|
|
|
+ : 'red'
|
|
|
|
+ }"
|
|
|
|
+ >{{ item.status == 0 ? '未审核' : item.status == 1 ? '已批准' : '已驳回' }}</span
|
|
|
|
+ >
|
|
</li>
|
|
</li>
|
|
</a-checkbox-group>
|
|
</a-checkbox-group>
|
|
</ul>
|
|
</ul>
|
|
@@ -844,14 +860,27 @@ a {
|
|
</div>
|
|
</div>
|
|
<a-modal title="图片预览" v-model="coverPreviewVisible" :footer="null">
|
|
<a-modal title="图片预览" v-model="coverPreviewVisible" :footer="null">
|
|
<a-carousel arrows class="cover_carousel_con">
|
|
<a-carousel arrows class="cover_carousel_con">
|
|
- <div v-for="(item, index) in model" :key="index" class="content">
|
|
|
|
|
|
+ <div v-for="(item, index) in modelNew" :key="index" class="content">
|
|
<img :src="item.url" :width="300" />
|
|
<img :src="item.url" :width="300" />
|
|
<div style="margin-top:10px">
|
|
<div style="margin-top:10px">
|
|
- <a-button type="primary">
|
|
|
|
|
|
+ <a-button type="primary" @click="editImage(item, '1')">
|
|
通过审核
|
|
通过审核
|
|
</a-button>
|
|
</a-button>
|
|
<a-divider type="vertical" />
|
|
<a-divider type="vertical" />
|
|
- <a-button type="primary">驳回</a-button>
|
|
|
|
|
|
+ <a-popconfirm @confirm="editImage(item, '2')">
|
|
|
|
+ <div slot="title">
|
|
|
|
+ <div>
|
|
|
|
+ 驳回原因:
|
|
|
|
+ <a-textarea
|
|
|
|
+ placeholder="请输入原因"
|
|
|
|
+ v-model="refuseReasonImage"
|
|
|
|
+ :autosize="{ minRows: 3, maxRows: 10 }"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <a-button type="primary">驳回</a-button>
|
|
|
|
+ <!-- @click="edit(null, '0', '2')" -->
|
|
|
|
+ </a-popconfirm>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<a-icon
|
|
<a-icon
|
|
@@ -961,7 +990,7 @@ a {
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
<a-form-item
|
|
<a-form-item
|
|
- label="审核"
|
|
|
|
|
|
+ label="视频审核"
|
|
v-if="
|
|
v-if="
|
|
active != '2' &&
|
|
active != '2' &&
|
|
(role.roleCode == 'operator' ||
|
|
(role.roleCode == 'operator' ||
|
|
@@ -1023,55 +1052,29 @@ a {
|
|
</a-popconfirm>
|
|
</a-popconfirm>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</div>
|
|
</div>
|
|
- <!-- <div class="downLoad">
|
|
|
|
- <a-form-item label="封面" style="width:120%">
|
|
|
|
- <a-table
|
|
|
|
- bordered
|
|
|
|
- size="middle"
|
|
|
|
- :columns="goodsColumns"
|
|
|
|
- :dataSource="model"
|
|
|
|
- :pagination="{ pageSize: 4 }"
|
|
|
|
- :scroll="{ y: 200 }"
|
|
|
|
|
|
+ <div>
|
|
|
|
+ <a-form-item label="封面审核" style="width:120%">
|
|
|
|
+ <a-button type="primary" :disabled="checkArrImage.length == 0" @click="editImageAll('1')"
|
|
|
|
+ >通过审核</a-button
|
|
>
|
|
>
|
|
- <div slot="url" slot-scope="text, record, index">
|
|
|
|
|
|
+ <a-popconfirm @confirm="editImageAll('2')" v-show="active != '2'">
|
|
|
|
+ <div slot="title">
|
|
<div>
|
|
<div>
|
|
- <img style="max-width:100px" :src="text" @click="coverPreviewShowModal(record, index)" />
|
|
|
|
|
|
+ 驳回原因:
|
|
|
|
+ <a-textarea
|
|
|
|
+ placeholder="请输入原因"
|
|
|
|
+ v-model="refuseReasonImage"
|
|
|
|
+ :autosize="{ minRows: 3, maxRows: 10 }"
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
- <a-modal title="图片预览" v-model="coverPreviewVisible" :footer="null">
|
|
|
|
- <a-carousel arrows class="cover_carousel_con">
|
|
|
|
- <div v-for="(item, index) in model" :key="index" class="content">
|
|
|
|
- <img :src="item.url" :width="300" />
|
|
|
|
- <div style="margin-top:10px">
|
|
|
|
- <a-button type="primary" @click="handleOk">
|
|
|
|
- 通过审核
|
|
|
|
- </a-button>
|
|
|
|
- <a-divider type="vertical" />
|
|
|
|
- <a-button type="primary" @click="close">驳回</a-button>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <a-icon
|
|
|
|
- type="left-circle"
|
|
|
|
- slot="prevArrow"
|
|
|
|
- slot-scope
|
|
|
|
- style="left: 10px;zIndex: 9;font-size:30px;color:black"
|
|
|
|
- />
|
|
|
|
- <a-icon
|
|
|
|
- type="right-circle"
|
|
|
|
- slot="nextArrow"
|
|
|
|
- slot-scope
|
|
|
|
- style="right: 10px;zIndex: 9;font-size:30px;color:black"
|
|
|
|
- />
|
|
|
|
- </a-carousel>
|
|
|
|
- </a-modal>
|
|
|
|
- </div>
|
|
|
|
- <div slot="action" slot-scope="text, record">
|
|
|
|
- <a>通过{{ record.key }}</a>
|
|
|
|
- <a-divider type="vertical" />
|
|
|
|
- <a>驳回</a>
|
|
|
|
</div>
|
|
</div>
|
|
- </a-table>
|
|
|
|
|
|
+ <a-button type="primary" :disabled="checkArrImage.length != 1" style="margin-left:10px"
|
|
|
|
+ >驳回</a-button
|
|
|
|
+ >
|
|
|
|
+ <!-- @click="edit(null, '0', '2')" -->
|
|
|
|
+ </a-popconfirm>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
- </div> -->
|
|
|
|
|
|
+ </div>
|
|
</a-form>
|
|
</a-form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -1086,7 +1089,7 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin'
|
|
import JEllipsis from '@/components/jeecg/JEllipsis'
|
|
import JEllipsis from '@/components/jeecg/JEllipsis'
|
|
import UploadToAli from '@femessage/upload-to-ali'
|
|
import UploadToAli from '@femessage/upload-to-ali'
|
|
import { fileCheck, fileInsertV2, fileEdit, fileCheckImage } from '@/api/actor'
|
|
import { fileCheck, fileInsertV2, fileEdit, fileCheckImage } from '@/api/actor'
|
|
-import { getAction, postAction, postFile, deleteAction } from '@/api/manage'
|
|
|
|
|
|
+import { getAction, postAction, postFile, deleteAction, putAction } from '@/api/manage'
|
|
import qs from 'qs'
|
|
import qs from 'qs'
|
|
import { mapGetters } from 'vuex'
|
|
import { mapGetters } from 'vuex'
|
|
import moment from 'moment'
|
|
import moment from 'moment'
|
|
@@ -1110,6 +1113,7 @@ export default {
|
|
return {
|
|
return {
|
|
coverPreviewVisible: false,
|
|
coverPreviewVisible: false,
|
|
model: [],
|
|
model: [],
|
|
|
|
+ modelNew: [],
|
|
goodsColumns: [
|
|
goodsColumns: [
|
|
{
|
|
{
|
|
title: '封面预览',
|
|
title: '封面预览',
|
|
@@ -1203,6 +1207,7 @@ export default {
|
|
tags: [],
|
|
tags: [],
|
|
refuseFile: [],
|
|
refuseFile: [],
|
|
refuseReason: '',
|
|
refuseReason: '',
|
|
|
|
+ refuseReasonImage: '',
|
|
creativeCopywriter: '',
|
|
creativeCopywriter: '',
|
|
customDomain: '',
|
|
customDomain: '',
|
|
region: 'oss-cn-beijing',
|
|
region: 'oss-cn-beijing',
|
|
@@ -1214,6 +1219,7 @@ export default {
|
|
checkArr: [],
|
|
checkArr: [],
|
|
checkAll: false,
|
|
checkAll: false,
|
|
checkArrImage: [],
|
|
checkArrImage: [],
|
|
|
|
+ checkAllImage: false,
|
|
showUrl: '',
|
|
showUrl: '',
|
|
showUrlWater: '',
|
|
showUrlWater: '',
|
|
materialName: '',
|
|
materialName: '',
|
|
@@ -1312,6 +1318,75 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ editImage(item, status) {
|
|
|
|
+ var params = {}
|
|
|
|
+ params.id = item.id
|
|
|
|
+ params.status = status
|
|
|
|
+ if (status == '1') {
|
|
|
|
+ } else {
|
|
|
|
+ params.refuseReason = this.refuseReasonImage
|
|
|
|
+ }
|
|
|
|
+ var updateArr = [params]
|
|
|
|
+ putAction('/ctop/MaterialImageInfo/batchEdit', updateArr).then(res => {
|
|
|
|
+ console.log(res)
|
|
|
|
+ if (res.success) {
|
|
|
|
+ // this.coverPreviewVisible = false
|
|
|
|
+ getAction('/ctop/MaterialImageInfo/list', {
|
|
|
|
+ videoId: this.code
|
|
|
|
+ }).then(res => {
|
|
|
|
+ if (res.success) {
|
|
|
|
+ this.model = res.result.map((item, index) => {
|
|
|
|
+ return {
|
|
|
|
+ ...item,
|
|
|
|
+ key: index
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ this.modelNew = this.model.filter((item, index) => {
|
|
|
|
+ return item.status == '0'
|
|
|
|
+ })
|
|
|
|
+ if (this.modelNew.length == 0) {
|
|
|
|
+ this.coverPreviewVisible = false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ editImageAll(status) {
|
|
|
|
+ this.checkArrImage
|
|
|
|
+ // var params = {}
|
|
|
|
+ // params.id = item.id
|
|
|
|
+ // params.status = status
|
|
|
|
+ var updateArr = []
|
|
|
|
+ if (status == '1') {
|
|
|
|
+ updateArr = this.checkArrImage.map(item => {
|
|
|
|
+ return { id: item, status: status }
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ updateArr = this.checkArrImage.map(item => {
|
|
|
|
+ return { id: item, status: status, refuseReason: this.refuseReasonImage }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ putAction('/ctop/MaterialImageInfo/batchEdit', updateArr).then(res => {
|
|
|
|
+ if (res.success) {
|
|
|
|
+ // this.coverPreviewVisible = false
|
|
|
|
+ getAction('/ctop/MaterialImageInfo/list', {
|
|
|
|
+ videoId: this.code
|
|
|
|
+ }).then(res => {
|
|
|
|
+ if (res.success) {
|
|
|
|
+ this.checkArrImage = []
|
|
|
|
+ this.checkAllImage = false
|
|
|
|
+ this.model = res.result.map((item, index) => {
|
|
|
|
+ return {
|
|
|
|
+ ...item,
|
|
|
|
+ key: index
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
showData(item) {
|
|
showData(item) {
|
|
if (item.byteDance || item.kuaiShou) {
|
|
if (item.byteDance || item.kuaiShou) {
|
|
this.showDataBool = true
|
|
this.showDataBool = true
|
|
@@ -1429,10 +1504,21 @@ export default {
|
|
}
|
|
}
|
|
this.checkAll = !this.checkAll
|
|
this.checkAll = !this.checkAll
|
|
},
|
|
},
|
|
|
|
+ onCheckAllImageChange() {
|
|
|
|
+ if (this.checkAllImage) {
|
|
|
|
+ this.checkArrImage = []
|
|
|
|
+ } else {
|
|
|
|
+ this.checkArrImage = this.model.map(item => {
|
|
|
|
+ return item.id
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ this.checkAllImage = !this.checkAllImage
|
|
|
|
+ },
|
|
searchRe() {
|
|
searchRe() {
|
|
- this.queryParam.projectId = ''
|
|
|
|
- if (this.queryParam.createTime) {
|
|
|
|
- this.queryParam.createTime = ''
|
|
|
|
|
|
+ this.queryParam = {
|
|
|
|
+ type: 'VIDEO',
|
|
|
|
+ userId: this.userInfo().id,
|
|
|
|
+ status: this.active
|
|
}
|
|
}
|
|
this.loadData(1)
|
|
this.loadData(1)
|
|
},
|
|
},
|
|
@@ -1446,6 +1532,11 @@ export default {
|
|
}
|
|
}
|
|
this.loadData()
|
|
this.loadData()
|
|
},
|
|
},
|
|
|
|
+ onChangeCheckImage(checkedList) {
|
|
|
|
+ if (checkedList.length == 0) {
|
|
|
|
+ this.checkAllImage = false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
onChangeCheck(checkedList) {
|
|
onChangeCheck(checkedList) {
|
|
if (checkedList.length == 0) {
|
|
if (checkedList.length == 0) {
|
|
this.checkAll = false
|
|
this.checkAll = false
|
|
@@ -1547,7 +1638,13 @@ export default {
|
|
})
|
|
})
|
|
},
|
|
},
|
|
coverPreviewShowModal(item, index) {
|
|
coverPreviewShowModal(item, index) {
|
|
- this.coverPreviewVisible = true
|
|
|
|
|
|
+ console.log(this.model)
|
|
|
|
+ this.modelNew = this.model.filter(items => {
|
|
|
|
+ return items.status == 0
|
|
|
|
+ })
|
|
|
|
+ if (this.modelNew.length > 0) {
|
|
|
|
+ this.coverPreviewVisible = true
|
|
|
|
+ }
|
|
},
|
|
},
|
|
okEditShow(item, editStatus) {
|
|
okEditShow(item, editStatus) {
|
|
if (editStatus == '2') {
|
|
if (editStatus == '2') {
|