|
@@ -27,49 +27,34 @@
|
|
|
<el-table-column type="index" width="100" label="剧号" />
|
|
|
<el-table-column label="封面" width="200" show-overflow-tooltip>
|
|
|
<template #default="scope">
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">书名:</span>
|
|
|
- <span class="book-content">
|
|
|
- {{ scope.row.name }}
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">bid:</span>
|
|
|
- <span class="book-content">{{ scope.row.id }}</span>
|
|
|
+ <div class="flex flex-col items-center justify-center wrapper">
|
|
|
+ <el-image :src="scope.row.cover_image" style="width:148px;height:148px;" fit="fill" :lazy="true"></el-image>
|
|
|
+ <el-button type="primary" link size="default" @click="dowload(scope.row)">下载</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="短剧名称" width="200" show-overflow-tooltip>
|
|
|
+ <el-table-column label="短剧名称" width="250" show-overflow-tooltip>
|
|
|
<template #default="scope">
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">书名:</span>
|
|
|
- <span class="book-content">
|
|
|
+ <div class="wrapper">
|
|
|
+ <span class="text-lg font-bold text-blue-600 cursor-pointer content"
|
|
|
+ @click="openType('videoDetailVisible', scope.row)">
|
|
|
{{ scope.row.name }}
|
|
|
</span>
|
|
|
+ <span>
|
|
|
+ 【 {{ scope.row.update_type_str }} 】
|
|
|
+ </span>
|
|
|
</div>
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">bid:</span>
|
|
|
- <span class="book-content">{{ scope.row.id }}</span>
|
|
|
- </div>
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">章节数:</span>
|
|
|
- <span class="book-content">{{ scope.row.chapter_count }}</span>
|
|
|
- </div>
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">字数:</span>
|
|
|
- <span class="book-content">{{ scope.row.size }}</span>
|
|
|
- </div>
|
|
|
- <div class="book-wrapper">
|
|
|
- <span class="book-label">状态:</span>
|
|
|
- <span class="book-content">{{ scope.row.status_text }}</span>
|
|
|
+ <div class="wrapper">
|
|
|
+ <span class="label">上架时间:</span>
|
|
|
+ <span class="content">{{ scope.row.shelf_at }}</span>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="author" label="集数" />
|
|
|
- <el-table-column prop="category_name" label="频道" />
|
|
|
- <el-table-column prop="channel_text" label="上架状态" />
|
|
|
- <el-table-column prop="cp_name" label="起始集" />
|
|
|
- <el-table-column prop="settlement_type_text" label="定价">
|
|
|
+ <el-table-column prop="total_episode_num" label="集数" />
|
|
|
+ <el-table-column prop="category_str" label="频道" />
|
|
|
+ <el-table-column prop="shelf_type_str" label="上架状态" />
|
|
|
+ <el-table-column prop="charge_sequence" label="起始集" />
|
|
|
+ <el-table-column prop="charge_coin" label="定价">
|
|
|
<template #header>
|
|
|
<div class="flex items-center">
|
|
|
<span>定价</span>
|
|
@@ -82,17 +67,16 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #default="scope">
|
|
|
- <span>{{ scope.row.price }}</span>
|
|
|
+ <span>{{ scope.row.charge_coin }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作">
|
|
|
<template #default="scope">
|
|
|
- <el-button link type="primary" size="small" v-action="'contentManage.book.export'"
|
|
|
- @click="exportBook(scope.row)">导出</el-button><br />
|
|
|
- <el-button @click="open(scope.row.id)" link type="primary" size="small"
|
|
|
- v-action="'contentManage.book.editauthorbybid'">编辑</el-button><br />
|
|
|
- <el-button link type="primary" size="small" @click="opendepots(scope.row)"
|
|
|
- v-action="'contentManage.book.distributeSubmit'">分库权限</el-button>
|
|
|
+ <el-button link type="primary" size="small"
|
|
|
+ @click="openType('uploadVisible', scope.row)">上传视频</el-button><br />
|
|
|
+ <el-button @click="open(scope.row)" link type="primary" size="small">编辑</el-button><br />
|
|
|
+ <el-button @click="openType('takeVisible', scope.row)" link type="primary" size="small">订阅设置</el-button><br />
|
|
|
+ <el-button link type="primary" size="small" @click="openType('videoDLVisible', scope.row)">视频下载</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -102,39 +86,83 @@
|
|
|
<Dialog v-model="visible" :title="title" destroy-on-close>
|
|
|
<Create @close="close(search)" :primary="id" :eidapi="addApi" :addapi="addApi" :ismulSet="ismulSet" />
|
|
|
</Dialog>
|
|
|
- <Dialog v-model="depotsVisible" width="50%" title="视频下载" destroy-on-close>
|
|
|
- <videoDL @close="closeDeptos()" :primary="depotsData"></videoDL>
|
|
|
+ <Dialog v-model="videoDLVisible" width="50%" title="视频下载" destroy-on-close>
|
|
|
+ <videoDL @close="closeType('videoDLVisible')" :primary="depotsData"></videoDL>
|
|
|
+ </Dialog>
|
|
|
+ <Dialog v-model="takeVisible" width="50%" title="订阅设置" destroy-on-close>
|
|
|
+ <subscribeSet @close="closeType('takeVisible')" :primary="takeData"></subscribeSet>
|
|
|
+ </Dialog>
|
|
|
+ <Dialog v-model="uploadVisible" width="50%" title="上传视频" destroy-on-close>
|
|
|
+ <uploadVideo @close="closeType('uploadVisible')" :primary="uploadData"></uploadVideo>
|
|
|
+ </Dialog>
|
|
|
+ <Dialog v-model="videoDetailVisible" width="50%" title="短剧详情" destroy-on-close>
|
|
|
+ <videoDetail @close="closeType('videoDetailVisible')" :primary="videoDetailData"></videoDetail>
|
|
|
</Dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
+import { downloadImage } from '@/utils/index'
|
|
|
import { InfoFilled } from '@element-plus/icons-vue';
|
|
|
import Create from './form/create.vue';
|
|
|
import videoDL from './form/videoDL.vue';
|
|
|
+import videoDetail from './detail.vue';
|
|
|
+import subscribeSet from './form/subscribeSet.vue';
|
|
|
+import uploadVideo from './form/uploadVideo.vue';
|
|
|
import { useGetList } from '@/hook/curd/useGetList';
|
|
|
import { useDestroy } from '@/hook/curd/useDestroy';
|
|
|
import { useOpen } from '@/hook/curd/useOpen';
|
|
|
import { shortcuts } from '@/utils/shortcuts';
|
|
|
-import { bookSettlementypes, bookList } from '@/api/bookManage/index';
|
|
|
import moment from 'moment';
|
|
|
import { cpOptions } from '@/api/cp/index';
|
|
|
+import { ca } from 'element-plus/es/locale';
|
|
|
let ismulSet = ref(false)
|
|
|
-const api = 'contentManage/book/list';
|
|
|
+const api = 'videoStock/video/list';
|
|
|
const addApi = 'contentManage/book/edit_author';
|
|
|
let multipleSelection = reactive([]);
|
|
|
const { data, query, search, reset, loading } = useGetList(api);
|
|
|
const { deleted } = useDestroy();
|
|
|
-const depotsVisible = ref(false)
|
|
|
const uploadBooksVisible = ref(false)
|
|
|
+const videoDLVisible = ref(false)
|
|
|
const depotsData = ref({})
|
|
|
-const opendepots = (data) => {
|
|
|
- depotsVisible.value = true
|
|
|
- depotsData.value = data
|
|
|
+const uploadVisible = ref(false)
|
|
|
+const uploadData = ref({})
|
|
|
+const takeVisible = ref(false)
|
|
|
+const takeData = ref({})
|
|
|
+const videoDetailVisible = ref(false)
|
|
|
+const videoDetailData = ref({})
|
|
|
+const openType = (type, data) => {
|
|
|
+ switch (type) {
|
|
|
+ case 'videoDLVisible':
|
|
|
+ videoDLVisible.value = true
|
|
|
+ depotsData.value = data
|
|
|
+ break;
|
|
|
+ case 'takeVisible':
|
|
|
+ takeVisible.value = true
|
|
|
+ takeData.value = data
|
|
|
+ break;
|
|
|
+ case 'uploadVisible':
|
|
|
+ uploadVisible.value = true
|
|
|
+ uploadData.value = data
|
|
|
+ break;
|
|
|
+ case 'videoDetailVisible':
|
|
|
+ videoDetailVisible.value = true
|
|
|
+ videoDetailData.value = data
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
-const openuploadBooksVisible = (data) => {
|
|
|
- uploadBooksVisible.value = true
|
|
|
- depotsData.value = data
|
|
|
+
|
|
|
+const dowload = (e: object) => {
|
|
|
+ console.log(e);
|
|
|
+ // const link = document.createElement('a')
|
|
|
+ // link.href = e.cover_image
|
|
|
+ // link.setAttribute('download', e.name)
|
|
|
+ // document.body.appendChild(link)
|
|
|
+ // link.click()
|
|
|
+ // document.body.removeChild(link)
|
|
|
+ // (e.cover_image, e.name)
|
|
|
+ downloadImage(e.cover_image, e.name)
|
|
|
+ console.log(downloadImage());
|
|
|
}
|
|
|
|
|
|
const tableData = computed(() => data.value?.data);
|
|
@@ -142,45 +170,37 @@ const { open, close, title, visible, id } = useOpen();
|
|
|
let cooperations = ref([]);
|
|
|
let cpoptions = ref([]);
|
|
|
|
|
|
-const exportBook = (item) => {
|
|
|
- window.open(`http://121.37.183.29:8093/api/contentManage/book/export/${item.id}`)
|
|
|
-}
|
|
|
-
|
|
|
-const timeChange = (e) => {
|
|
|
- if (query.value.time) {
|
|
|
- const timeArr = toRaw(e);
|
|
|
- query.value.create_start = timeArr[0]
|
|
|
- query.value.create_end = timeArr[1]
|
|
|
- } else {
|
|
|
- delete query.value.create_start
|
|
|
- delete query.value.create_end
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-const cooperateChange = (e) => {
|
|
|
- if (query.value.cooperate_date) {
|
|
|
- const timeArr = toRaw(e);
|
|
|
- query.value.start_date = timeArr[0]
|
|
|
- query.value.end_date = timeArr[1]
|
|
|
- } else {
|
|
|
- delete query.value.start_date
|
|
|
- delete query.value.end_date
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
const handleSelectionChange = (val: []) => {
|
|
|
console.log(toRaw(val));
|
|
|
multipleSelection = val;
|
|
|
};
|
|
|
|
|
|
-const closeDeptos = () => {
|
|
|
- depotsVisible.value = false
|
|
|
+const closeType = (type) => {
|
|
|
+ console.log(type, 'typetype');
|
|
|
+ switch (type) {
|
|
|
+ case 'videoDLVisible':
|
|
|
+ videoDLVisible.value = false
|
|
|
+ break;
|
|
|
+ case 'takeVisible':
|
|
|
+ takeVisible.value = false
|
|
|
+ break;
|
|
|
+ case 'uploadVisible':
|
|
|
+ uploadVisible.value = false
|
|
|
+ break;
|
|
|
+ case 'videoDetailVisible':
|
|
|
+ videoDetailVisible.value = false
|
|
|
+ break;
|
|
|
+ }
|
|
|
search()
|
|
|
}
|
|
|
const closeUpload = () => {
|
|
|
uploadBooksVisible.value = false
|
|
|
search()
|
|
|
}
|
|
|
+
|
|
|
+// watch(() => uploadVisible.value, (newVal, oldVal) => {
|
|
|
+// search()
|
|
|
+// })
|
|
|
const mulSet = () => {
|
|
|
if (multipleSelection.length <= 0) {
|
|
|
return ElMessage.warning({
|
|
@@ -231,9 +251,6 @@ const initCpOtion = (params: object) => {
|
|
|
|
|
|
onMounted(() => {
|
|
|
initCpOtion({})
|
|
|
- bookSettlementypes().then(res => {
|
|
|
- cooperations.value = res.data
|
|
|
- })
|
|
|
search();
|
|
|
deleted(reset);
|
|
|
});
|
|
@@ -248,14 +265,14 @@ onMounted(() => {
|
|
|
justify-content: flex-end;
|
|
|
}
|
|
|
|
|
|
- .book-wrapper {
|
|
|
+ .wrapper {
|
|
|
margin: 8px;
|
|
|
|
|
|
- .book-label {
|
|
|
+ .label {
|
|
|
margin-right: 6px;
|
|
|
}
|
|
|
|
|
|
- .book-content {
|
|
|
+ .content {
|
|
|
font-size: 15px;
|
|
|
}
|
|
|
}
|