fix:项目初始化
This commit is contained in:
@@ -0,0 +1,429 @@
|
||||
<template>
|
||||
<el-dialog :title="title" :visible.sync="Visible" width="1200px" top="50px" center class="ac-dialog" :close-on-click-modal="false" @close="close">
|
||||
<el-form :inline="true" :model="form" :rules="rules" class="demo-form-inline" label-width="120px" label-position="right" style="" ref="ruleForm">
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="标题">
|
||||
<el-input v-model="form.title" style="width: 400px" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="番号">
|
||||
<el-input v-model="form.bango" style="width: 400px" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="封面">
|
||||
<UploadImg @changeImgUrl="changeCoverImgUrl" :img="form.coverImg"></UploadImg>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="封面类型">
|
||||
<el-select placeholder="请选择封面类型" v-model="form.coverType" clearable>
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in coverTypeList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="发布者ID">
|
||||
<el-input v-model.number="form.publishId" style="width: 180px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="预览视频URL">
|
||||
<el-input v-model="form.preFileName" style="width: 400px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="演员分类">
|
||||
<el-select placeholder="请选择演员分类" v-model="form.actorIds" filterable allow-create default-first-option multiple style="width: 180px">
|
||||
<el-option :key="item.value" :label="item.name" :value="item.id" v-for="item in actorList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="视频类型">
|
||||
<el-select placeholder="请选择视频类型" v-model="form.contentType" clearable @change="changeContentType" style="width: 180px">
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in contentTypeList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="主题分类">
|
||||
<el-select placeholder="请选择主题分类" v-model="form.topicIds" filterable allow-create default-first-option multiple style="width: 180px">
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in chooseVideoType" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="视频状态">
|
||||
<el-select placeholder="请选择视频状态" clearable v-model="form.status">
|
||||
<el-option v-for="item in MediaSatusList" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="上架时间">
|
||||
<el-date-picker v-model="form.addedTime" type="date" placeholder="选择日期" value-format="yyyy-MM-ddTHH:mm:ss+08:00" style="width: 180px">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="售价">
|
||||
<el-input v-model="form.price" style="width: 180px">
|
||||
<template slot="append">元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="虚拟观看次数">
|
||||
<el-input v-model.number="form.fake.watchTimes" style="width: 180px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="虚拟点赞次数">
|
||||
<el-input v-model.number="form.fake.likes" style="width: 180px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<el-form-item label="是否是vip">
|
||||
<el-switch v-model="form.isVip" active-color="#13ce66" inactive-color="#ff4949" style="width: 180px"></el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="16" :sm="16" :md="16" :lg="16" :xl="16">
|
||||
<el-form-item label="详细描述">
|
||||
<el-input v-model="form.desc" type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" style="width: 590px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="已选标签">
|
||||
<el-tag :key="index + 'tag'" v-for="(item, index) in form.tags" :disable-transitions="true" closable style="margin: 2px" @close="handleTagClose(item)">
|
||||
{{item|changeName(chooseMediatag,'id','name') }}
|
||||
</el-tag>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="可选标签">
|
||||
<el-button :type="showTagsFlag?'warning':'success'" @click="showTagsFun">{{showTagsFlag?'隐藏标签':'展示标签'}}</el-button>
|
||||
<div>
|
||||
<el-tag v-show="showTagsFlag" :key="index + 'tagData'" style="margin: 2px; cursor: pointer" v-for="(item, index) in chooseMediatag" :disable-transitions="true" :type="fliterTagType(item.name)" @click="handleClickTag(item.id)">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="Visible = false"> 取 消</el-button>
|
||||
<el-button type="primary" @click="submit('ruleForm')">
|
||||
确 定
|
||||
</el-button>
|
||||
</div>
|
||||
<AddVideo :data="form" v-if="addVisible" @close="closeVideoInfo" @closeAll="close" @submit="videoInfo"></AddVideo>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import UploadImg from '@/components/UploadImg/index'
|
||||
import AddVideo from './addVideo'
|
||||
import moment from 'moment'
|
||||
import { arryToString, changeMoneyYuan, changeMoneyFen } from '@/filters/index'
|
||||
import { MediaSatusList } from '@/filters/videoManagement/videoList'
|
||||
import { mediaUpdate } from '@/api/videoManagement/videoList'
|
||||
import {
|
||||
contentTypeList,
|
||||
coverTypeList,
|
||||
} from '@/filters/mediaLibrary/videoList'
|
||||
import { topicSearch } from '@/api/videoManagement/topic'
|
||||
import { mediatagList } from '@/api/videoManagement/mediatag'
|
||||
|
||||
export default {
|
||||
name: 'AddOrEdit',
|
||||
props: ['data', 'videoType', 'mediatag', 'actorList'],
|
||||
components: {
|
||||
UploadImg,
|
||||
AddVideo,
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
showTagsFlag: false,
|
||||
Visible: true,
|
||||
title: '',
|
||||
coverTypeList: coverTypeList(),
|
||||
contentTypeList: contentTypeList(),
|
||||
MediaSatusList: MediaSatusList(),
|
||||
addVisible: false,
|
||||
longMediatag: [],
|
||||
longVideoType: [],
|
||||
shortMediatag: [],
|
||||
shortVideoType: [],
|
||||
chooseMediatag: [],
|
||||
chooseVideoType: [],
|
||||
form: {
|
||||
actors: undefined, // [],演员
|
||||
actorIds: [], // 演员分类
|
||||
addedTime: undefined, // "string",上架时间
|
||||
bango: undefined, // 番号
|
||||
contentType: undefined, // 格式类型: 1:AV 2:小视频 3:动漫
|
||||
tags: [],
|
||||
score: undefined, // 评分
|
||||
coverImg: undefined, // [],封面
|
||||
coverType: undefined, // 封面类型: 1:竖版封面 2:横版封面 3:未知
|
||||
desc: undefined, // "string",详细描述
|
||||
fake: {},
|
||||
isVip: undefined, // true,是否VIp
|
||||
preFileName: undefined, // "string",预览文件
|
||||
price: undefined, // 0,售价,单位分
|
||||
publishAvatar: undefined, // 视频发布者头像
|
||||
publishId: undefined, // 发布者ID
|
||||
status: undefined, // 0,视频状态
|
||||
title: undefined, // "string",标题
|
||||
topicIds: [], // 视频分类
|
||||
id: undefined, // 0,视频Id
|
||||
},
|
||||
rules: {},
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.title = this.data.title
|
||||
if (this.title === '编辑') {
|
||||
this.showChooseTag()
|
||||
this.form = { ...this.data.data }
|
||||
this.form.price = changeMoneyYuan(this.form.price)
|
||||
this.form.addedTime =
|
||||
moment(this.data.data.addedTime)
|
||||
.utcOffset(480)
|
||||
.format('YYYY-MM-DDTHH:mm:ss') + '+08:00'
|
||||
this.form.sortTime =
|
||||
moment(this.data.data.sortTime)
|
||||
.utcOffset(480)
|
||||
.format('YYYY-MM-DDTHH:mm:ss') + '+08:00'
|
||||
if (!this.form.tags) {
|
||||
this.form.tags = []
|
||||
}
|
||||
this.getTopicSearch(this.form.contentType)
|
||||
this.getMediatagList(this.form.contentType)
|
||||
} else if (this.title === '新增') {
|
||||
this.addVisible = true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//TODO:
|
||||
update(data) {
|
||||
mediaUpdate(data).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success('更新成功')
|
||||
this.close()
|
||||
} else {
|
||||
this.$message.error('更新失败')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取主题
|
||||
getTopicSearch(val) {
|
||||
this.chooseVideoType = []
|
||||
const param = {
|
||||
pageNum: 1,
|
||||
pageSize: 500,
|
||||
contentType: val,
|
||||
}
|
||||
topicSearch(param).then((res) => {
|
||||
if (res.data.list) {
|
||||
res.data.list.forEach((item) => {
|
||||
this.chooseVideoType.push({
|
||||
label: item.name,
|
||||
value: item.id,
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.chooseVideoType = []
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取标签
|
||||
getMediatagList(val) {
|
||||
this.chooseMediatag = []
|
||||
const param = {
|
||||
pageNum: 1,
|
||||
pageSize: 5000,
|
||||
contentType: val,
|
||||
}
|
||||
mediatagList(param).then((res) => {
|
||||
if (res.data.list) {
|
||||
res.data.list.forEach((item) => {
|
||||
this.chooseMediatag.push({
|
||||
name: item.name,
|
||||
id: item.id,
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.chooseMediatag = []
|
||||
}
|
||||
})
|
||||
},
|
||||
// 新增时视频ID绑定
|
||||
videoInfo(data) {
|
||||
console.log(data)
|
||||
this.form = { ...this.form, data }
|
||||
if (this.form.actorIds) {
|
||||
this.form.actorids = arryToString(this.form.actorids)
|
||||
}
|
||||
// this.form.directors = arryToString(this.form.directors)
|
||||
// this.form.secondTags = arryToString(this.form.secondTags)
|
||||
this.addVisible = false
|
||||
},
|
||||
showTagsFun() {
|
||||
this.showTagsFlag = !this.showTagsFlag
|
||||
},
|
||||
// 在可选择列表过滤出已选择的标签
|
||||
fliterTagType(tagID) {
|
||||
if (this.form.tags.indexOf(tagID) !== -1) {
|
||||
return 'danger'
|
||||
} else {
|
||||
return 'info'
|
||||
}
|
||||
},
|
||||
// 删除已选择列表中的标签
|
||||
handleTagClose(tag) {
|
||||
this.form.tags.splice(this.form.tags.indexOf(tag), 1)
|
||||
},
|
||||
// // 过滤出选择的标签名称
|
||||
// fliterTag(ID) {
|
||||
// let name = ''
|
||||
// this.mediatag.forEach((element) => {
|
||||
// if (element.id === ID) {
|
||||
// name = element.name
|
||||
// }
|
||||
// })
|
||||
// return name
|
||||
// },
|
||||
// 根据格式类型显示不同的视频标签和主题分类
|
||||
showChooseTag() {
|
||||
this.mediatag.forEach((element) => {
|
||||
if (element.contentType === 1) {
|
||||
this.shortMediatag.push(element)
|
||||
} else if (element.contentType === 2) {
|
||||
this.longMediatag.push(element)
|
||||
}
|
||||
})
|
||||
this.videoType.forEach((element) => {
|
||||
if (element.contentType === 1) {
|
||||
this.shortVideoType.push(element)
|
||||
} else if (element.contentType === 2) {
|
||||
this.longVideoType.push(element)
|
||||
}
|
||||
})
|
||||
|
||||
if (this.data.data.contentType === 1) {
|
||||
this.chooseMediatag = this.shortMediatag
|
||||
this.chooseVideoType = this.shortVideoType
|
||||
} else if (this.data.data.contentType === 2) {
|
||||
this.chooseMediatag = this.longMediatag
|
||||
this.chooseVideoType = this.longVideoType
|
||||
}
|
||||
},
|
||||
// 点击可选择列表中的标签
|
||||
handleClickTag(tagID) {
|
||||
console.log(tagID)
|
||||
if (this.form.tags.indexOf(tagID) === -1) {
|
||||
this.form.tags.push(tagID)
|
||||
}
|
||||
console.log(this.form.tags)
|
||||
},
|
||||
// 提交按钮
|
||||
submit(formName) {
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
const actorNameArr = []
|
||||
if (this.actorList) {
|
||||
Object.keys(this.actorList).forEach((key) => {
|
||||
if (this.form.actorIds.length > 0) {
|
||||
for (
|
||||
let index = 0;
|
||||
index < this.form.actorIds.length;
|
||||
index++
|
||||
) {
|
||||
if (this.form.actorIds[index] === this.actorList[key].id) {
|
||||
actorNameArr.push(this.actorList[key].name)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
this.form.actors = arryToString(actorNameArr)
|
||||
}
|
||||
const tagNameArr = []
|
||||
if (this.mediatag) {
|
||||
Object.keys(this.mediatag).forEach((key) => {
|
||||
if (this.form.actorIds.length > 0) {
|
||||
for (let index = 0; index < this.form.tags.length; index++) {
|
||||
if (this.form.tags[index] === this.mediatag[key].id) {
|
||||
tagNameArr.push(this.mediatag[key].name)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
this.form.tagString = arryToString(tagNameArr)
|
||||
}
|
||||
this.form.score = parseFloat(this.form.score)
|
||||
const data = {
|
||||
id: this.form.id,
|
||||
param: JSON.parse(JSON.stringify(this.form)),
|
||||
}
|
||||
data.param.price = data.param.price
|
||||
? changeMoneyFen(data.param.price)
|
||||
: 0
|
||||
data.param.companiesId = Number(data.param.companiesId)
|
||||
data.param.fake.watchTimes = data.param.fake.watchTimes
|
||||
? Number(data.param.fake.watchTimes)
|
||||
: 0
|
||||
this.update(data)
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
changeContentType(val) {
|
||||
this.form.topicIds = []
|
||||
this.getTopicSearch(val)
|
||||
this.getMediatagList(val)
|
||||
// if (val === 1) {
|
||||
// this.chooseMediatag = this.shortMediatag
|
||||
// this.chooseVideoType = this.shortVideoType
|
||||
// } else if (val === 2) {
|
||||
// this.chooseMediatag = this.longMediatag
|
||||
// this.chooseVideoType = this.longVideoType
|
||||
// }
|
||||
},
|
||||
|
||||
// 关闭编辑
|
||||
close() {
|
||||
this.$emit('close')
|
||||
},
|
||||
// 上传图片返回地址
|
||||
changeCoverImgUrl(data) {
|
||||
this.form.coverImg = data
|
||||
},
|
||||
|
||||
// 关闭不通过原因弹框
|
||||
closeVideoInfo() {
|
||||
this.addVisible = false
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
<!--
|
||||
* @Author:
|
||||
* @Mail:
|
||||
* @Date: 2022-02-23 16:08:40
|
||||
* @LastEditTime: 2022-05-26 17:25:29
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @FilePath: /web_admin/src/views/videoManagement/videoList/components/addVideo.vue
|
||||
-->
|
||||
<template>
|
||||
<el-dialog :visible.sync="Visible" width="400px" center class="ac-dialog" :close-on-click-modal="false" @close="close" title="绑定影片" append-to-body>
|
||||
<el-form :inline="true" :model="form" class="demo-form-inline" label-width="120px" label-position="right">
|
||||
<el-input v-model="form.fileId " placeholder="请输入媒资库影片ID" style="width: 100%;margin-top:10px"></el-input>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="close"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="submit"> 确 定 </el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { mediatsAddts } from '@/api/videoManagement/videoList'
|
||||
export default {
|
||||
name: 'AddVideo',
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
Visible: true,
|
||||
// 表单数据
|
||||
form: {
|
||||
fileId: undefined
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
// TODO:新增视频时绑定煤资库提交按钮
|
||||
submit() {
|
||||
// mediatsAddts(this.form).then((res) => {
|
||||
// if (res.code === 200) {
|
||||
// this.$message.success('添加成功')
|
||||
// this.close()
|
||||
// } else if (res.code === 8000) {
|
||||
// this.$message.error('媒资库ID不存在')
|
||||
// } else if (res.code === 1006) {
|
||||
// this.$message.error('请输入媒资库ID')
|
||||
// }
|
||||
// })
|
||||
},
|
||||
// 关闭编辑
|
||||
close() {
|
||||
this.$emit('closeAll')
|
||||
this.$emit('close')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
|
||||
<template>
|
||||
<el-dialog :title="title" :visible.sync="Visible" width="700px" center class="ac-dialog" :close-on-click-modal="false" @close="close">
|
||||
<el-form :inline="true" :model="form" :rules="rules" ref="ruleForm" class="demo-form-inline" label-width="120px" label-position="right">
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="是否VIP" prop="status">
|
||||
<el-select placeholder="请选择信息分类" clearable v-model="form.isVip" style="width: 180px">
|
||||
<el-option label="非VIP视频" :value="false" />
|
||||
<el-option label="VIP视频" :value="true" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="视频状态" prop="status">
|
||||
<el-select placeholder="请选择视频状态" clearable v-model="form.status" style="width: 180px">
|
||||
<el-option v-for="item in MediaSatusList" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="主题分类">
|
||||
<el-select style="width: 180px" multiple placeholder="请选择主题分类" v-model="form.topicIds" filterable allow-create default-first-option>
|
||||
<el-option :key="item.value" :label="item.name" :value="item.id" v-for="item in videoType" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="演员分类">
|
||||
<el-select style="width: 180px" multiple placeholder="请选择演员分类" v-model="form.actorIds" filterable allow-create default-first-option>
|
||||
<el-option :key="item.value" :label="item.name" :value="item.id" v-for="item in actorList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="发布者ID">
|
||||
<el-input v-model.number="form.publishId" style="width: 180px"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="Visible = false"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="submit"> 确 定 </el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mediaUpdate } from '@/api/videoManagement/videoList'
|
||||
import { MediaSatusList } from '@/filters/videoManagement/videoList'
|
||||
import { arryToString } from '@/filters/index'
|
||||
|
||||
export default {
|
||||
name: 'Batch',
|
||||
props: ['data', 'videoType', 'gatherList', 'studioList', 'actorList'],
|
||||
data() {
|
||||
return {
|
||||
MediaSatusList: MediaSatusList(),
|
||||
Visible: true,
|
||||
title: '',
|
||||
// 表单数据
|
||||
form: {
|
||||
isVip: undefined,
|
||||
status: undefined,
|
||||
topicIds: [],
|
||||
gatherIds: [],
|
||||
actorIds: [],
|
||||
actor: undefined,
|
||||
companiesId: undefined,
|
||||
publishId: undefined
|
||||
},
|
||||
//
|
||||
dates: [],
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// TODO:批量设置视频提交
|
||||
submit() {
|
||||
if (this.data.length) {
|
||||
this.data.forEach((item) => {
|
||||
const data = {
|
||||
id: item.id,
|
||||
param: item
|
||||
}
|
||||
console.log(data)
|
||||
data.param.isVip = this.form.isVip
|
||||
data.param.status = this.form.status
|
||||
|
||||
if (this.form.topicIds.length !== 0) {
|
||||
data.param.topicIds = this.form.topicIds
|
||||
}
|
||||
|
||||
if (this.form.gatherIds.length !== 0) {
|
||||
data.param.gatherIds = this.form.gatherIds
|
||||
}
|
||||
if (this.form.companiesId) {
|
||||
data.param.companiesId = this.form.companiesId
|
||||
}
|
||||
if (this.form.publishId) {
|
||||
data.param.publishId = this.form.publishId
|
||||
}
|
||||
|
||||
if (this.form.actorIds.length !== 0) {
|
||||
data.param.actorIds = this.form.actorIds
|
||||
const actorNameArr = []
|
||||
Object.keys(this.actorList).forEach((key) => {
|
||||
if (this.form.actorIds.length > 0) {
|
||||
for (
|
||||
let index = 0;
|
||||
index < this.form.actorIds.length;
|
||||
index++
|
||||
) {
|
||||
if (this.form.actorIds[index] === this.actorList[key].id) {
|
||||
actorNameArr.push(this.actorList[key].name)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
data.param.actor = arryToString(actorNameArr)
|
||||
} else {
|
||||
data.param.actor = arryToString(data.param.actor)
|
||||
}
|
||||
|
||||
mediaUpdate(data).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success(item.id + '修改成功')
|
||||
} else {
|
||||
this.$message.error(item.id + '修改失败')
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.error('未选择视频')
|
||||
}
|
||||
this.Visible = false
|
||||
},
|
||||
|
||||
// 关闭编辑
|
||||
close() {
|
||||
this.$emit('close')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
<!--
|
||||
* @Author:
|
||||
* @Mail:
|
||||
* @Date: 2022-02-26 15:21:37
|
||||
* @LastEditTime: 2022-03-28 14:32:13
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @FilePath: /web_admin/src/views/videoManagement/videoList/components/setTag.vue
|
||||
-->
|
||||
|
||||
<template>
|
||||
<el-dialog :title="title" :visible.sync="Visible" width="700px" center class="ac-dialog" :close-on-click-modal="false" @close="close">
|
||||
<el-form :inline="true" :model="form" :rules="rules" ref="ruleForm" class="demo-form-inline" label-width="120px" label-position="right">
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<el-form-item label="视频标签" prop="status">
|
||||
<el-select placeholder="请选择视频标签" clearable v-model="form.tags" style="width: 180px" multiple filterable>
|
||||
<el-option v-for="item in MediaSatusList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="Visible = false"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="submit"> 确 定 </el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mediatagAddTags } from '@/api/videoManagement/videoList'
|
||||
import { mediatagList } from '@/api/videoManagement/mediatag'
|
||||
export default {
|
||||
name: 'SetTag',
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
MediaSatusList: [],
|
||||
Visible: true,
|
||||
title: '',
|
||||
// 表单数据
|
||||
form: {
|
||||
tags: undefined
|
||||
},
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getMediatagList()
|
||||
},
|
||||
methods: {
|
||||
// TODO:提交视频标签按钮
|
||||
submit() {
|
||||
if (this.data.length) {
|
||||
const mediaIds = []
|
||||
this.data.forEach(item => {
|
||||
mediaIds.push(item.id)
|
||||
})
|
||||
const param = {
|
||||
mediaIds: mediaIds,
|
||||
tags: this.form.tags
|
||||
}
|
||||
mediatagAddTags(param).then(res => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success('设置标签成功')
|
||||
} else {
|
||||
this.$message.error('设置标签失败')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.error('未选择视频')
|
||||
}
|
||||
this.Visible = false
|
||||
},
|
||||
// TODO:请求视频标签列表
|
||||
getMediatagList(val) {
|
||||
const param = {
|
||||
pageNum: 1,
|
||||
pageSize: 5000
|
||||
}
|
||||
mediatagList(param).then((res) => {
|
||||
if (res.data.list) {
|
||||
this.MediaSatusList = res.data.list
|
||||
}
|
||||
})
|
||||
},
|
||||
// 关闭编辑
|
||||
close() {
|
||||
this.$emit('close')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,294 @@
|
||||
|
||||
<template>
|
||||
<div class="pf-warpper avlist">
|
||||
<el-row class="table-form">
|
||||
<el-form :inline="true" :model="searchData" class="form-inline" size="mini">
|
||||
<el-form-item>
|
||||
<el-select placeholder="请选择视频类型" clearable v-model="searchData.subType" @clear="onClear('subType')">
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in contentTypeList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select placeholder="请选择推荐等级" clearable v-model="searchData.recommendLevel" @clear="onClear('recommendLevel')">
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in recommendLevelList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select placeholder="请选择推荐状态" clearable v-model="searchData.recommendStatus" @clear="onClear('recommendStatus')">
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in recommendStatusList" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select placeholder="请选择排序方式" clearable v-model="searchData.sort" @clear="onClear('sort')">
|
||||
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in rankSo" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-date-picker :default-time="['00:00:00', '23:59:59']" end-placeholder="结束日期" range-separator="至" start-placeholder="开始日期" type="datetimerange" v-model="time" value-format="yyyy-MM-ddTHH:mm:ss+08:00" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="onSeach" icon="el-icon-search" plain type="primary">搜索</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-table :data="resData" element-loading-text="拼命加载中" border height="700" highlight-current-row style="width: 100%" v-loading="loading" :row-style="{ height: '70px' }" empty-text="暂无更多数据">
|
||||
<el-table-column align="center" label="排名 " width="100">
|
||||
<template slot-scope="scope">{{ scope.row.rank }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="影片ID" width="100px">
|
||||
<template slot-scope="scope">{{ scope.row.mediaId }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="视频标题" show-overflow-tooltip>
|
||||
<template slot-scope="scope">{{ scope.row.media.title }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="视频封面" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<ShowImg style="width: 70px; height: 40px; margin: 0 auto" :urls="scope.row.media.coverImg"></ShowImg>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="正片预览" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="scope.row.media.fieldNameFs" class="el-icon-video-play views" title="点击预览" @click="checkMedia(scope.row.media.fieldNameFs, scope.row.media)"></i>
|
||||
<div v-else>暂无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="观看次数" width="100px">
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.watchTimes
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="👍点赞次数" width="100">
|
||||
<template slot-scope="scope">{{ scope.row.likes }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="👎倒彩次数" width="100px">
|
||||
<template slot-scope="scope">{{ scope.row.notLikes }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="推荐等级" width="100px">
|
||||
<template slot-scope="scope">{{ scope.row.recommendLevel|changeRecommendLevel }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="推荐状态" width="100px">
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.recommendStatus|changeRecommendStatus
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="子类型" width="100px">
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.subType|changeContentType
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="创建时间" width="180">
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.media.createdAt | BeiJingTime
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="更新时间" width="180">
|
||||
<template slot-scope="scope">{{
|
||||
scope.row.media.updatedAt | BeiJingTime
|
||||
}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="handleEdit(scope.row)" size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="handleDelete(scope.row)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="table-pagination">
|
||||
<el-pagination :current-page="searchData.pageNum" :page-size="searchData.pageSize" :page-sizes="[10, 20, 30, 50]" :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" layout="total, sizes, prev, pager, next, jumper" />
|
||||
</div>
|
||||
<Edit :mediatag="mediatag" :videoType="videoType" :actorList="actorList" :data="editData" v-if="editVisible" @close="closeEdit" />
|
||||
<ShowVideo ref="showvideo"></ShowVideo>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
// 引入模块
|
||||
import ShowImg from '@/components/ShowImg/index.vue'
|
||||
import ShowVideo from '@/components/ShowVideo/index.vue'
|
||||
import Edit from './components/AddOrEdit'
|
||||
import { mediatagList } from '@/api/videoManagement/mediatag'
|
||||
import { topicSearch } from '@/api/videoManagement/topic'
|
||||
import { actressSearch } from '@/api/videoManagement/actressList'
|
||||
import { recommendSeach, recommendDel } from '@/api/videoManagement/recommend'
|
||||
import { contentTypeList } from '@/filters/mediaLibrary/videoList'
|
||||
import {
|
||||
rankSo2,
|
||||
recommendLevelList,
|
||||
recommendStatusList,
|
||||
} from '@/filters/videoManagement/videoList'
|
||||
export default {
|
||||
name: 'VideoList',
|
||||
components: {
|
||||
ShowImg,
|
||||
ShowVideo,
|
||||
Edit,
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
mediatag: [],
|
||||
videoType: [],
|
||||
rankSo: rankSo2(),
|
||||
contentTypeList: contentTypeList(),
|
||||
recommendLevelList: recommendLevelList(),
|
||||
recommendStatusList: recommendStatusList(),
|
||||
|
||||
// MediacolumnList: [],
|
||||
// 请求列表参数
|
||||
searchData: {
|
||||
end: undefined, // "string",结束时间
|
||||
start: undefined, // "string",开始时间
|
||||
recommendLevel: undefined, // 推荐等级:0:新片 1:黑名单 2:一般 3:推荐
|
||||
recommendStatus: undefined, // integer推荐状态:0:采集数据,1:结果
|
||||
sort: undefined, // "string",媒体状态 operatAt(编辑时间)/addedTime(上架时间)/createdAt(创建时间)/updatedAt(更新时间)
|
||||
subType: undefined, // 格式类型 1:AV 2:小视频 3:动漫
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
time: undefined,
|
||||
resData: [], // el-table表格数据
|
||||
total: 0, // 数据总条数
|
||||
loading: true, // 列表加载状态
|
||||
// 编辑数据
|
||||
editVisible: false,
|
||||
editData: {
|
||||
title: '新增',
|
||||
data: {},
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getMediatagList()
|
||||
this.getActorList()
|
||||
this.getMediacategoryList()
|
||||
this.getMediaSearch()
|
||||
},
|
||||
methods: {
|
||||
// TODO:请求视频列表数据
|
||||
getMediaSearch() {
|
||||
this.loading = true
|
||||
if (this.time) {
|
||||
this.searchData.start = this.time[0]
|
||||
this.searchData.end = this.time[1]
|
||||
} else {
|
||||
this.searchData.start = undefined
|
||||
this.searchData.end = undefined
|
||||
}
|
||||
recommendSeach(this.searchData).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.resData = res.data.list
|
||||
this.total = res.data.total
|
||||
} else {
|
||||
this.$message.error('请求列表失败')
|
||||
this.resData = []
|
||||
this.total = 0
|
||||
}
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
|
||||
// TODO:删除视频按钮
|
||||
handleDelete(row) {
|
||||
this.$confirm('确定删除?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
recommendDel({ id: row.id }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.getMediaSearch()
|
||||
this.$message.success('成功删除!')
|
||||
} else {
|
||||
this.$message.error(res.tip)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// TODO:请求演员列表数据
|
||||
getActorList() {
|
||||
actressSearch({ pageNum: 1, pageSize: 5000, param: {} }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.actorList = res.data.list
|
||||
} else {
|
||||
this.$message.error('请求演员列表失败!')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// TODO:请求视频标签列表
|
||||
getMediatagList(val) {
|
||||
mediatagList({
|
||||
pageNum: 1,
|
||||
pageSize: 5000,
|
||||
subType: val || undefined,
|
||||
}).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.mediatag = res.data.list
|
||||
} else {
|
||||
this.$message.error('请求视频标签失败!')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// TODO:请求视频分类列表
|
||||
getMediacategoryList(val) {
|
||||
topicSearch({
|
||||
pageNum: 1,
|
||||
pageSize: 500,
|
||||
subType: val || undefined,
|
||||
}).then((res) => {
|
||||
if (res.code === 200) {
|
||||
this.videoType = res.data.list
|
||||
} else {
|
||||
this.$message.error('请求视频类型列表失败!')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 关闭编辑弹窗
|
||||
closeEdit() {
|
||||
this.editVisible = false
|
||||
this.getMediaSearch()
|
||||
},
|
||||
|
||||
handleEdit(row) {
|
||||
this.editVisible = true
|
||||
this.editData = {
|
||||
title: '编辑',
|
||||
data: row.media,
|
||||
}
|
||||
},
|
||||
|
||||
checkMedia(url, data) {
|
||||
this.$refs.showvideo.open(url, data)
|
||||
},
|
||||
|
||||
onSeach() {
|
||||
this.searchData.pageNum = 1
|
||||
this.searchData.pageSize = 10
|
||||
this.getMediaSearch()
|
||||
},
|
||||
// 切换每页数据量
|
||||
handleSizeChange(val) {
|
||||
this.searchData.pageSize = val
|
||||
this.getMediaSearch()
|
||||
},
|
||||
// 切换页数
|
||||
handleCurrentChange(val) {
|
||||
this.searchData.pageNum = val
|
||||
this.getMediaSearch()
|
||||
},
|
||||
|
||||
// 清空某一项筛选列表
|
||||
onClear(key) {
|
||||
this.searchData[key] = undefined
|
||||
this.getMediaSearch()
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user