|
@@ -0,0 +1,256 @@
|
|
|
+<script setup>
|
|
|
+import {useClassify} from '../hooks/useClassify'
|
|
|
+
|
|
|
+const {
|
|
|
+ classifyState,
|
|
|
+ getPPTClassifyData,
|
|
|
+ fileOptState,
|
|
|
+ handleShowFileOpt,
|
|
|
+ handlePPTCatalogueCopy,
|
|
|
+ handlePPTCatalogueDel,
|
|
|
+
|
|
|
+ PPTOptState,
|
|
|
+ handleShowPPTOpt,
|
|
|
+ handlePPTDel
|
|
|
+}=useClassify()
|
|
|
+
|
|
|
+getPPTClassifyData()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="mobile-classify-wrap">
|
|
|
+ <van-collapse v-model="classifyState.activeType" :border="false">
|
|
|
+ <van-collapse-item class="level-one" name="myPPT" :is-link="false">
|
|
|
+ <template #title>
|
|
|
+ <div class="title-first">我的PPT<van-icon name="arrow-down" /></div>
|
|
|
+ </template>
|
|
|
+ <van-collapse class="level-two" v-model="classifyState.myActiveType" :border="false">
|
|
|
+ <van-collapse-item
|
|
|
+ :name="item.GroupId"
|
|
|
+ v-for="item in classifyState.privateList"
|
|
|
+ :key="item.GroupId"
|
|
|
+ :is-link="false"
|
|
|
+ >
|
|
|
+ <template #title>
|
|
|
+ <div class="title-second">
|
|
|
+ <img src="@/assets/imgs/ppt/ppt_icon_file.png" alt="">
|
|
|
+ <span>{{item.GroupName}}</span>
|
|
|
+ <img @click.stop="handleShowFileOpt(item)" class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div
|
|
|
+ class="ppt-item"
|
|
|
+ v-for="_item in item.PptList"
|
|
|
+ :key="_item.GroupId"
|
|
|
+ >
|
|
|
+ <span>{{ _item.Title }}</span>
|
|
|
+ <img @click.stop="handleShowPPTOpt(_item)" class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
|
|
|
+ </div>
|
|
|
+ </van-collapse-item>
|
|
|
+ </van-collapse>
|
|
|
+ </van-collapse-item>
|
|
|
+ <van-collapse-item class="level-one" name="pubPPT" :is-link="false">
|
|
|
+ <template #title>
|
|
|
+ <div class="title-first">公共PPT<van-icon name="arrow-down" /></div>
|
|
|
+ </template>
|
|
|
+ <van-collapse class="level-two" v-model="classifyState.pubActiveType" :border="false">
|
|
|
+ <van-collapse-item
|
|
|
+ :name="item.GroupId"
|
|
|
+ v-for="item in classifyState.publicList"
|
|
|
+ :key="item.GroupId"
|
|
|
+ :is-link="false"
|
|
|
+ >
|
|
|
+ <template #title>
|
|
|
+ <div class="title-second">
|
|
|
+ <img src="@/assets/imgs/ppt/ppt_icon_file.png" alt="">
|
|
|
+ <span>{{item.GroupName}}</span>
|
|
|
+ <!-- <img class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt=""> -->
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div
|
|
|
+ class="ppt-item"
|
|
|
+ v-for="_item in item.PptList"
|
|
|
+ :key="_item.GroupId"
|
|
|
+ >
|
|
|
+ <span>{{ _item.Title }}</span>
|
|
|
+ <img class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
|
|
|
+ </div>
|
|
|
+ </van-collapse-item>
|
|
|
+ </van-collapse>
|
|
|
+ </van-collapse-item>
|
|
|
+ </van-collapse>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 目录编辑弹窗 -->
|
|
|
+ <van-popup
|
|
|
+ v-model:show="fileOptState.show"
|
|
|
+ round
|
|
|
+ position="bottom"
|
|
|
+ >
|
|
|
+ <div class="file-opt-wrap">
|
|
|
+ <div class="item border">
|
|
|
+ <img src="@/assets/imgs/ppt/ppt_icon_file.png" alt="">
|
|
|
+ <span>{{fileOptState.data.GroupName}}</span>
|
|
|
+ </div>
|
|
|
+ <div class="item border blue" @click="handlePPTCatalogueCopy">
|
|
|
+ <img src="@/assets/imgs/ppt/ppt_icon_copy.png" alt="">
|
|
|
+ <span>复制</span>
|
|
|
+ </div>
|
|
|
+ <div class="item border blue">
|
|
|
+ <img src="@/assets/imgs/ppt/ppt_icon_write.png" alt="">
|
|
|
+ <span>重命名</span>
|
|
|
+ </div>
|
|
|
+ <div class="item border red" @click="handlePPTCatalogueDel">
|
|
|
+ <img src="@/assets/imgs/icon_del.png" alt="">
|
|
|
+ <span>删除</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </van-popup>
|
|
|
+
|
|
|
+ <!-- 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">
|
|
|
+ <span style="margin-right:4px">公开</span>
|
|
|
+ <van-switch size="22px" v-model="PPTOptState.data.IsSingleShareBoolean"/>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="item border blue" @click="handlePPTCatalogueCopy">
|
|
|
+ <img src="@/assets/imgs/ppt/ppt_icon_copy.png" alt="">
|
|
|
+ <span>复制</span>
|
|
|
+ </div>
|
|
|
+ <div class="item border red" @click="handlePPTCatalogueDel">
|
|
|
+ <img src="@/assets/imgs/icon_del.png" alt="">
|
|
|
+ <span>删除</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </van-popup>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+.level-one{
|
|
|
+ .van-collapse-item__title--expanded:after{
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+.van-collapse-item__content{
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+.van-collapse-item--border:after{
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+.van-collapse-item__title--expanded{
|
|
|
+ padding-bottom: 0;
|
|
|
+}
|
|
|
+.van-collapse-item__wrapper{
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+</style>
|
|
|
+<style lang="scss" scoped>
|
|
|
+
|
|
|
+.mobile-classify-wrap{
|
|
|
+ .level-one{
|
|
|
+ margin-bottom: 30px;
|
|
|
+ &::after{
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .level-two{
|
|
|
+ padding-top: 20px;
|
|
|
+ }
|
|
|
+ .title-first{
|
|
|
+ font-size: 32px;
|
|
|
+ }
|
|
|
+ .title-second{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ position: relative;
|
|
|
+ img{
|
|
|
+ width: 32px;
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ .menu-icon{
|
|
|
+ width: 4px;
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ margin-right: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .ppt-item{
|
|
|
+ border-bottom: 1px solid $border-color;
|
|
|
+ margin-left: 86px;
|
|
|
+ margin-right: var(--van-cell-horizontal-padding);
|
|
|
+ padding-top: 30px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ position: relative;
|
|
|
+ color: $font-grey;
|
|
|
+ .menu-icon{
|
|
|
+ width: 4px;
|
|
|
+ position: absolute;
|
|
|
+ right: 0vh;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+</style>
|