From e562837cbcd40f72a1ab7f7ca6bd6db3dbdd53ca Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 11 八月 2025 16:52:58 +0800
Subject: [PATCH] 首页视频修改
---
manager/src/views/video/VideoList.vue | 155 ++++++++++++++++++++++++++++++++++++---------------
manager/src/api/video.js | 8 ++
2 files changed, 117 insertions(+), 46 deletions(-)
diff --git a/manager/src/api/video.js b/manager/src/api/video.js
index fc0b95e..ba0ca82 100644
--- a/manager/src/api/video.js
+++ b/manager/src/api/video.js
@@ -111,3 +111,11 @@
data: params
})
}
+// 鍙戝竷瑙嗛
+export const updatePublish = (params) => {
+ return service({
+ url: "/lmk/video",
+ method: "PUT",
+ data: params
+ })
+}
diff --git a/manager/src/views/video/VideoList.vue b/manager/src/views/video/VideoList.vue
index f3e5c72..070f4cc 100644
--- a/manager/src/views/video/VideoList.vue
+++ b/manager/src/views/video/VideoList.vue
@@ -134,9 +134,9 @@
<Icon type="ios-trash-outline" @click.native="handleRemove(item)"></Icon>
</div>
</template>
- <!-- <template v-else>-->
- <!-- <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress>-->
- <!-- </template>-->
+ <!-- <template v-else>-->
+ <!-- <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress>-->
+ <!-- </template>-->
</div>
<Upload
ref="upload"
@@ -212,14 +212,16 @@
align-items: center;justify-content: flex-start;border: 1px solid gray;margin-top: 10px;
padding: 10px;border-radius: 20px">
<div>
- <img :src="endpoint+'/'+item.thumbnail" style="width: 80px;height: 80px">
+ <img :src="item.thumbnail.includes('http') ? item.thumbnail : endpoint + '/' + item.thumbnail"
+ style="width: 80px;height: 80px">
</div>
<div style="display: flex;flex-direction: column;margin-left: 20px">
<div style="font-size: 1.5em;font-weight: bold">{{ item.goodsName }}</div>
<div style="color: #ff6f6f;display: flex;align-content: center;justify-content: flex-start">
<div> 锟{ item.price }}</div>
<div style="margin-left: 10px">
- <InputNumber v-model="item.goodsNum" :min="0" :max="99" controls-outside @on-change="changeGoodsNum(item.goodsSkuId,index,item.goodsNum)"
+ <InputNumber v-model="item.goodsNum" :min="0" :max="99" controls-outside
+ @on-change="changeGoodsNum(item.goodsSkuId,index,item.goodsNum)"
style="vertical-align: center;width: 100px"></InputNumber>
</div>
</div>
@@ -402,9 +404,9 @@
<Button type="primary" size="small" style="margin-right: 5px" v-if="row.status === '99'"
@click="openAuditing(row)">瀹℃牳
</Button>
-<!-- <Button type="primary" size="small" style="margin-right: 5px"-->
-<!-- @click="editVideo(row)">缂栬緫-->
-<!-- </Button>-->
+ <Button type="primary" size="small" style="margin-right: 5px"
+ @click="editVideo(row)">缂栬緫
+ </Button>
<Button type="error" size="small" style="margin-right: 5px" v-if="row.status === '1'"
@click="openVideoDown(row)">涓嬫灦
</Button>
@@ -431,7 +433,7 @@
></vue-qr>
<div slot="footer">
<Button type="text" @click="closeGeneralQrCode">鍏抽棴</Button>
-<!-- <Button type="primary" @click="generalQrCode">纭</Button>-->
+ <!-- <Button type="primary" @click="generalQrCode">纭</Button>-->
</div>
</Modal>
<Row type="flex" justify="end" class="mt_10">
@@ -453,7 +455,17 @@
</template>
<script>
-import {getVideos, recommendSet, getVideoById, auditingVideo, up, down, recreateIndex,publish} from "@/api/video";
+import {
+ getVideos,
+ recommendSet,
+ getVideoById,
+ auditingVideo,
+ up,
+ down,
+ recreateIndex,
+ publish,
+ updatePublish
+} from "@/api/video";
import {getVideoTagList, recommend, videoGoodsEsPage} from "@/api/videoTag";
import {getFilePreview, getSts} from "@/api/file";
import Editor from '@/components/editor/index.vue'
@@ -465,7 +477,7 @@
export default {
name: "VideoList",
- components: {vuedraggable, Editor, GoodsExpandRow,"vue-qr": vueQr},
+ components: {vuedraggable, Editor, GoodsExpandRow, "vue-qr": vueQr},
watch: {
'uploadVideoForm.videoContentType'(newValue, oldValue) {
if (newValue === 'video') {
@@ -481,6 +493,7 @@
}
},
chooseTag(newValue, oldValue) {
+ console.log('瑙﹀彂鏂板�煎彉鍖�',newValue);
this.uploadVideoForm.tags = newValue.map(item => {
const findTag = this.videoTagList.find(tagItem => {
return tagItem.tagName === item
@@ -503,9 +516,9 @@
data() {
return {
// https://myk.9village.cn/scanpage/recommend?shareType=videoRecommend&videoId=1948284811844190209
- baseQRCodeUrl: this.QRcodeBaseUrl+ '/scanpage/recommend',
- QRCodeUrl:'',
- showGeneralQrCode:false,
+ baseQRCodeUrl: this.QRcodeBaseUrl + '/scanpage/recommend',
+ QRCodeUrl: '',
+ showGeneralQrCode: false,
endpoint: '',
searchGoods: '',
videoTagList: [],
@@ -692,6 +705,7 @@
slot: "action",
align: "center",
width: 200,
+ fixed: "right"
},
],
goodsData: [],
@@ -707,14 +721,24 @@
this.getTags('')
},
methods: {
- editVideo(row){
+ async editVideo(row) {
// this.uploadVideoForm = {};
// this.uploadVideoForm = row;
// this.showUploadVideoShow = true;
- console.log('------------------->缂栬緫',JSON.stringify(row));
- this.upLoadVideoShow = true;
this.videoTagList = []
- this.chooseTag = row.tagList
+ await recommend({
+ searchType: "HOT"
+ }).then(res => {
+ this.videoTagList = res.data;
+ })
+ this.upLoadVideoShow = true;
+ this.chooseTag = row.tagList.map(item => {
+ return item.tagName
+ })
+ console.log('閫変腑鍒楄〃---銆�',row.goodsList)
+ row.goodsList.forEach(item => {
+ item.goodsSkuId = item.id
+ })
this.uploadVideoForm = {
id: '',
title: '',
@@ -729,27 +753,50 @@
fileInfo: {},
goodsList: []
}
+
+
+ // 閬嶅巻宸查�夋嫨鐨勬爣绛�
+ row.tagList.forEach(tag => {
+ // 妫�鏌ユ爣绛炬槸鍚﹀凡瀛樺湪浜巚ideoTagList涓�
+ const exists = this.videoTagList.some(item => item.tagName === tag.tagName);
+ // 濡傛灉涓嶅瓨鍦紝鍒欐坊鍔犲埌閫夐」鍒楄〃
+ if (!exists) {
+ this.videoTagList.push({
+ id: tag.id, // 鐢熸垚涓存椂ID
+ tagName: tag.tagName
+ });
+ }
+ });
this.uploadVideoForm = row
- recommend({
- searchType: "HOT"
- }).then(res => {
- this.videoTagList = res.data;
- })
+ this.uploadVideoForm.fileInfo= {};
+ this.uploadVideoForm.videoImgs = JSON.parse(this.uploadVideoForm.videoImgs)
+ const sts = await getSts();
+ if (this.uploadVideoForm.videoContentType === 'video') {
+ this.uploadVideoForm.showVideoUrl = sts.data.endpoint + '/' + this.uploadVideoForm.videoFileKey
+ if (this.uploadVideoForm.coverUrl !== '' && this.uploadVideoForm.coverUrl != null) {
+ this.uploadVideoForm.showCoverUrl = sts.data.endpoint + '/' + this.uploadVideoForm.coverUrl
+ }
+ } else if (this.uploadVideoForm.videoContentType === 'img') {
+ this.uploadVideoForm.showListImages = this.uploadVideoForm.videoImgs.map(item => {
+ return sts.data.endpoint + '/' + item
+ })
+ }
+
this.searchGoodsList();
},
- closeGeneralQrCode(){
+ closeGeneralQrCode() {
this.showGeneralQrCode = false;
this.QRCodeUrl = '';
},
- generalQrCode(row){
+ generalQrCode(row) {
this.showGeneralQrCode = true
- console.log('-------------------->',row);
- this.QRCodeUrl = this.baseQRCodeUrl + '?shareType=videoRecommend' + '&videoId='+ row.id;
+ console.log('-------------------->', row);
+ this.QRCodeUrl = this.baseQRCodeUrl + '?shareType=videoRecommend' + '&videoId=' + row.id;
console.log(this.QRCodeUrl)
},
//todo 淇濈暀鍚庣画鍙兘浼氫娇鐢�
- changeGoodsNum(id,index,goodsNum){
- console.log('-------------------->',id,index,goodsNum)
+ changeGoodsNum(id, index, goodsNum) {
+ console.log('-------------------->', id, index, goodsNum)
},
chooseGoods(id) {
const goods = this.goodsData.find(item => {
@@ -786,38 +833,54 @@
this.upLoadVideoShow = false;
},
submitVideoUpload() {
- this.uploadVideoForm.goodsList = this.uploadVideoForm.goodsList.filter(item => {
- return item.goodsNum >0;
+ this.uploadVideoForm.goodsList = this.uploadVideoForm.goodsList.filter(item => {
+ return item.goodsNum > 0;
})
if (!this.uploadVideoForm.title) {
this.$Message.error('鏍囬涓嶈兘涓虹┖');
return;
}
//琛ㄥ崟鏍¢獙
- if (this.uploadVideoForm.videoContentType==='video') {
- if (!this.uploadVideoForm.videoFileKey){
+ if (this.uploadVideoForm.videoContentType === 'video') {
+ if (!this.uploadVideoForm.videoFileKey) {
this.$Message.error('瑙嗛涓嶈兘涓虹┖');
return;
}
}
- if (this.uploadVideoForm.videoContentType==='img') {
- if (this.uploadVideoForm.videoImgs<1){
+ if (this.uploadVideoForm.videoContentType === 'img') {
+ if (this.uploadVideoForm.videoImgs < 1) {
this.$Message.error('鍥剧墖涓嶈兘涓虹┖');
return;
}
}
- publish(this.uploadVideoForm).then(response => {
- if (response.code == 200) {
- this.$Message.success("瑙嗛鍙戝竷鎴愬姛");
- this.upLoadVideoShow = false;
- this.getDataList();
- }
- }).then(error=>{
- this.$Message.success(error);
- })
+ console.log('鎻愪氦琛ㄥ崟--------------->', this.uploadVideoForm)
+ if (this.uploadVideoForm.id) {
+ updatePublish(this.uploadVideoForm).then(response => {
+ if (response.code == 200) {
+ this.$Message.success("瑙嗛淇敼鎴愬姛");
+ this.upLoadVideoShow = false;
+ this.getDataList();
+ }
+ }).then(error => {
+ this.$Message.success(error);
+ })
+
+ } else {
+ publish(this.uploadVideoForm).then(response => {
+ if (response.code == 200) {
+ this.$Message.success("瑙嗛鍙戝竷鎴愬姛");
+ this.upLoadVideoShow = false;
+ this.getDataList();
+ }
+ }).then(error => {
+ this.$Message.success(error);
+ })
+ }
+
},
//todo 鍚庣画鍙兘浼氫娇鐢ㄩ鐣�
createVideoTag(e) {
+ console.log('------------>',e)
},
handleRemove(file) {
const fileList2 = this.uploadVideoForm.showListImages;
@@ -1142,7 +1205,7 @@
// 鑾峰彇鍒楄〃鏁版嵁
getGoodsDataList() {
let search = this.searchGoodsForm;
- console.log('-------------------------->',this.searchGoodsForm)
+ console.log('-------------------------->', this.searchGoodsForm)
if (search.pageNumber > 0) {
search.pageNumber = search.pageNumber - 1;
}
@@ -1199,7 +1262,7 @@
},
// 鍒嗛〉 鏀瑰彉椤电爜
goodsChangePage(v) {
- console.log('-------------------------->鍒嗛〉',v);
+ console.log('-------------------------->鍒嗛〉', v);
this.searchGoodsForm.pageNumber = v;
this.getGoodsDataList();
},
--
Gitblit v1.8.0