|
@@ -5,17 +5,24 @@ import { vElementSize } from '@vueuse/components'
|
|
|
import {apiPPTDetail} from '@/api/ppt'
|
|
|
import {createPPTContent,getTemplate} from './hooks/createPPTContent'
|
|
|
import {usePPTPublish} from './hooks/usePPTPublish'
|
|
|
+import {useClassify} from './hooks/useClassify'
|
|
|
+import {useUserInfo} from '@/hooks/common'
|
|
|
+import moment from 'moment';
|
|
|
|
|
|
const route=useRoute()
|
|
|
|
|
|
const pptId=route.query.id
|
|
|
|
|
|
-let pptItemDom=null
|
|
|
+const {userInfo} =useUserInfo()
|
|
|
+
|
|
|
+// let pptItemDom=null
|
|
|
|
|
|
// 获取ppt详情
|
|
|
+let PPTInfo=ref(null)
|
|
|
let conArr=ref([])
|
|
|
async function getPPTDetail(){
|
|
|
const res=await apiPPTDetail({PptId:Number(pptId)})
|
|
|
+ PPTInfo.value=res.Data
|
|
|
conArr.value=createPPTContent(res.Data)
|
|
|
nextTick(()=>{
|
|
|
onResize({width:document.getElementsByClassName('ppt-content-wrap')[0].clientWidth})
|
|
@@ -39,6 +46,36 @@ function handllePublishPPT(){
|
|
|
}
|
|
|
|
|
|
|
|
|
+const {
|
|
|
+ getPPTClassifyData,
|
|
|
+
|
|
|
+ PPTOptState,
|
|
|
+ handlePPTShare,
|
|
|
+ handleShowPPTCopy,
|
|
|
+ handlePPTDel,
|
|
|
+ handlePPTCopy,
|
|
|
+
|
|
|
+}=useClassify()
|
|
|
+
|
|
|
+getPPTClassifyData()
|
|
|
+
|
|
|
+// 显示更多操作
|
|
|
+function handleShowPPTOpt(){
|
|
|
+ PPTOptState.data={
|
|
|
+ AdminId: PPTInfo.value.AdminId,
|
|
|
+ AdminRealName: PPTInfo.value.AdminRealName,
|
|
|
+ IsSingleShare: PPTInfo.value.IsShare,
|
|
|
+ IsSingleShareBoolean:PPTInfo.value.IsShare?true:false,
|
|
|
+ PptCreateTime: moment(PPTInfo.value.CreateTime).format('YYYY-MM-DD HH:mm:ss'),
|
|
|
+ PptId: PPTInfo.value.PptId,
|
|
|
+ PptxUrl: PPTInfo.value.PptxUrl,
|
|
|
+ Title: PPTInfo.value.Title
|
|
|
+ }
|
|
|
+ PPTOptState.isCommon=userInfo.AdminId!=PPTInfo.value.AdminId?true:false
|
|
|
+ PPTOptState.show=true
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -60,16 +97,72 @@ function handllePublishPPT(){
|
|
|
<img src="@/assets/imgs/ppt/icon_action_play.png" alt="">
|
|
|
<span>播放</span>
|
|
|
</div>
|
|
|
- <div class="item-box">
|
|
|
+ <div class="item-box" @click="handleShowPPTCopy($route.query.id)">
|
|
|
<img src="@/assets/imgs/ppt/icon_action_copy.png" alt="">
|
|
|
<span>复制</span>
|
|
|
</div>
|
|
|
- <div class="item-box">
|
|
|
+ <div class="item-box" @click="handleShowPPTOpt">
|
|
|
<img src="@/assets/imgs/ppt/icon_action_more.png" alt="">
|
|
|
<span>更多</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <!-- ppt编辑弹窗 -->
|
|
|
+ <van-popup
|
|
|
+ v-model:show="PPTOptState.show"
|
|
|
+ round
|
|
|
+ position="bottom"
|
|
|
+ >
|
|
|
+ <div class="file-opt-wrap ppt-opt-wrap">
|
|
|
+ <div class="item border top-box">
|
|
|
+ <div class="flex">
|
|
|
+ <img class="ppt-icon" src="@/assets/imgs/ppt/icon01.png" alt="">
|
|
|
+ <div >
|
|
|
+ <div class="title">{{PPTOptState.data.Title}}</div>
|
|
|
+ <div class="name">
|
|
|
+ {{PPTOptState.data.AdminRealName}}
|
|
|
+ {{PPTOptState.data.PptCreateTime.split(' ')[0]}}
|
|
|
+ 创建
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex" v-if="!PPTOptState.isCommon">
|
|
|
+ <span style="margin-right:4px">公开</span>
|
|
|
+ <van-switch
|
|
|
+ size="22px"
|
|
|
+ :model-value="PPTOptState.data.IsSingleShareBoolean"
|
|
|
+ @update:model-value="handlePPTShare"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="item border blue">
|
|
|
+ <img src="@/assets/imgs/ppt/icon_action_download.png" alt="">
|
|
|
+ <span>下载</span>
|
|
|
+ </div>
|
|
|
+ <div class="item border red" @click="handlePPTDel({back:true})" v-if="!PPTOptState.isCommon">
|
|
|
+ <img src="@/assets/imgs/icon_del.png" alt="">
|
|
|
+ <span>删除</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </van-popup>
|
|
|
+ <!-- ppt复制弹窗 -->
|
|
|
+ <van-dialog
|
|
|
+ v-model:show="PPTOptState.showCopy"
|
|
|
+ title="PPT目录"
|
|
|
+ show-cancel-button
|
|
|
+ confirmButtonText="保存"
|
|
|
+ @confirm="handlePPTCopy"
|
|
|
+ >
|
|
|
+ <div class="ppt-copy-wrap">
|
|
|
+ <span>选择目录</span>
|
|
|
+ <van-popover :actions="PPTOptState.copyActions" @select="e=>PPTOptState.copySelectData=e">
|
|
|
+ <template #reference>
|
|
|
+ <span class="select-value-box">{{PPTOptState.copySelectData.GroupName||'请选择目录'}}</span>
|
|
|
+ </template>
|
|
|
+ </van-popover>
|
|
|
+ </div>
|
|
|
+ </van-dialog>
|
|
|
</template>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
@@ -108,4 +201,63 @@ function handllePublishPPT(){
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+.file-opt-wrap{
|
|
|
+ .item{
|
|
|
+ padding: 42px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ img{
|
|
|
+ width: 32px;
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .border{
|
|
|
+ border-bottom: 1px solid $border-color;
|
|
|
+ }
|
|
|
+ .blue{
|
|
|
+ color: $theme-color;
|
|
|
+ }
|
|
|
+ .red{
|
|
|
+ color: $theme-red;
|
|
|
+ }
|
|
|
+}
|
|
|
+.ppt-opt-wrap{
|
|
|
+ .top-box{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ .ppt-icon{
|
|
|
+ width: 80px;
|
|
|
+ }
|
|
|
+ .flex{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .name{
|
|
|
+ color: #999;
|
|
|
+ font-size: 24px;
|
|
|
+ margin-top: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.ppt-copy-wrap{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 50px 30px;
|
|
|
+ span{
|
|
|
+ flex-shrink: 0;
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ :deep(.van-popover__wrapper){
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+ .select-value-box{
|
|
|
+ display: block;
|
|
|
+ height: 70px;
|
|
|
+ line-height: 70px;
|
|
|
+ padding: 0 30px;
|
|
|
+ border-radius: 70px;
|
|
|
+ border: 1px solid $border-color;
|
|
|
+ min-width: 150px;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|