Răsfoiți Sursa

Merge branch 'master' into v1.2_myETA

jwyu 1 an în urmă
părinte
comite
e124333b2d

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 接口地址
-VITE_APP_API_URL="https://admin.hzinsights.com/adminapi"
+VITE_APP_API_URL="https://mveta.hzinsights.com/v1"
 # 路由根地址
 VITE_APP_BASE_URL="/"
 # 打包输入文件名

+ 1 - 1
package.json

@@ -14,7 +14,7 @@
     "@vueuse/core": "^9.13.0",
     "ali-oss": "^6.17.1",
     "axios": "^1.3.4",
-    "highcharts": "^10.3.3",
+    "highcharts": "^9.3.2",
     "himalaya": "^1.1.0",
     "js-base64": "^3.7.5",
     "js-md5": "^0.7.3",

BIN
public/pptImg/pptitem_bg.png


+ 13 - 1
src/api/ppt.js

@@ -119,7 +119,7 @@ export function apiPPTPublish(params){
 }
 
 /**
- * ppt列表
+ * 我的ppt列表
  * @param GroupId 分类id
  */
 export function apiPPTList(params) {
@@ -130,6 +130,18 @@ export function apiPPTList(params) {
     }
 }
 
+/**
+ * 公共ppt列表
+ * @param AdminId
+ */
+export function apiPPTPubList(params){
+    if(window.location.pathname.startsWith('/ppten')){
+        return get('/ppt_english/share/ppt/list',params)
+    }else{
+        return get('/pptv2/share/ppt/list',params)
+    }
+}
+
 /**
  * ppt搜索
  * @param Keyword

+ 3 - 0
src/hooks/chart/config.js

@@ -14,6 +14,9 @@ export const chartDefaultOpts={
 	exporting: {
 		enabled: false,
 	},
+	boost: {
+        useGPUTranslations: true,
+    },
 	//默认颜色配置
 	colors:['#00f','#f00','#999','#000','#7cb5ec', '#90ed7d', '#f7a35c', '#8085e9', 
 	'#f15c80', '#e4d354', '#2b908f', '#f45b5b', '#91e8e1'],

+ 2 - 0
src/hooks/chart/render.js

@@ -3,10 +3,12 @@
 import {onMounted,ref,nextTick} from 'vue'
 import {chartDefaultOpts,scatterXAxis,basicYAxis,basicXAxis,leadUnitEnMap,relevanceUnitEnMap} from './config'
 import Highcharts from 'highcharts/highstock';
+import Boost from 'highcharts/modules/boost'
 import HighchartszhCN  from './highcahrts-zh_CN.js'
 import moment from 'moment'
 import _ from 'lodash';
 HighchartszhCN(Highcharts)
+Boost(Highcharts)
 
 
 

+ 1 - 1
src/layouts/Index.vue

@@ -133,7 +133,7 @@ function handleLoginOut(){
                 background-size: cover;
                 margin-right: 5px;
                 position: relative;
-                top: -4px;
+                top: -2px;
             }
         }
     }

+ 5 - 2
src/router/ppt.js

@@ -13,7 +13,7 @@ export const pptRoutes=[
         meta: { 
             title: "智能PPT",
             hasBackHome:true,
-            keepAlive:true
+            keepAlive:false
         },
     },
     {
@@ -29,7 +29,10 @@ export const pptRoutes=[
         path:"/ppt/search",
         name:"PPTSearch",
         component: () => import("@/views/ppt/Search.vue"),
-        meta: { title: "搜索PPT" },
+        meta: { 
+            title: "搜索PPT",
+            keepAlive:true
+        },
     },
     {
         path:"/ppt/preview",

+ 2 - 2
src/router/pptEn.js

@@ -13,7 +13,7 @@
         meta: { 
             title: "智能PPT",
             hasBackHome:true,
-            keepAlive:true
+            keepAlive:false
         },
     },
     {
@@ -29,7 +29,7 @@
         path:"/ppten/search",
         name:"PPTENSearch",
         component: () => import("@/views/ppt/Search.vue"),
-        meta: { title: "搜索PPT" },
+        meta: { title: "搜索PPT",keepAlive:true },
     },
     {
         path:"/ppten/preview",

+ 19 - 5
src/views/404.vue

@@ -1,19 +1,33 @@
+<script setup>
+import { useRouter } from "vue-router";
+
+const router=useRouter()
+
+function goHome(){
+    router.replace('/')
+}
+
+</script>
+
 <template>
     <div class="nofound-page">
         <img src="@/assets/imgs/404.png" alt="">
         <p>404</p>
+        <van-button type="primary" @click="goHome">返回首页</van-button>
     </div>
 </template>
 
-<style scoped>
+<style lang="scss" scoped>
 .nofound-page{
     text-align: center;
-    font-size: 16px;
+    font-size: 32px;
     color: #666;
     padding-top: 100px;
-    
+    p{
+        margin: 20px 0;
+    }
 }
 img{
-        width: 300px;
-    }
+    width: 80%;
+}
 </style>

+ 2 - 4
src/views/Login.vue

@@ -111,10 +111,8 @@ const onSubmit = (values) => {
 }
 
 .mobile-bot-text{
-    position: fixed;
-    left: 50%;
-    transform: translateX(-50%);
-    bottom: 90px;
+    margin-top: 200px;
+    text-align: center;
     color: #999;
 }
 .pad-img{

+ 35 - 3
src/views/ppt/Detail.vue

@@ -59,6 +59,7 @@ const {
     handleShowPPTCopy,
     handlePPTDel,
     handlePPTCopy,
+    handlePPTCopyBeforeClose
 
 }=useClassify()
 
@@ -92,8 +93,9 @@ function onSelectPlayOpt(e){
         const itemH=pptContentHeight.value/conArr.value.length
         index=Math.floor(y.value/itemH)
     }
+    let routerEl
     if(window.location.pathname.startsWith('/ppten')){
-        router.push({
+        routerEl=router.resolve({
             path:"/ppten/preview",
             query:{
                 id:pptId,
@@ -101,7 +103,7 @@ function onSelectPlayOpt(e){
             }
         })
     }else{
-        router.push({
+        routerEl=router.resolve({
             path:"/ppt/preview",
             query:{
                 id:pptId,
@@ -109,6 +111,7 @@ function onSelectPlayOpt(e){
             }
         })
     } 
+    window.open(routerEl.href,'_blank')
 }
 
 
@@ -124,6 +127,9 @@ function handleDownLoadFile(){
     startDownload(PPTInfo.value.PptxUrl,PPTInfo.value.Title+'.pptx')
 } 
 
+
+const showPopover=ref(false)
+
 </script>
 
 <template>
@@ -224,10 +230,19 @@ function handleDownLoadFile(){
         show-cancel-button
         confirmButtonText="保存"
         @confirm="handlePPTCopy"
+        :before-close="handlePPTCopyBeforeClose"
     >
         <div class="ppt-copy-wrap">
             <span>选择目录</span>
-            <van-popover :actions="PPTOptState.copyActions" @select="e=>PPTOptState.copySelectData=e">
+            <van-popover v-model:show="showPopover">
+                <ul class="select-copy-val-box">
+                    <li 
+                        class="item" 
+                        v-for="item in PPTOptState.copyActions" 
+                        :key="item.GroupId"
+                        @click="PPTOptState.copySelectData=item;showPopover=false"
+                    >{{item.text}}111</li>
+                </ul>
                 <template #reference>
                     <span class="select-value-box">{{PPTOptState.copySelectData.GroupName||'请选择目录'}}</span>
                 </template>
@@ -268,6 +283,23 @@ function handleDownLoadFile(){
     </van-popup>
 </template>
 
+<style lang="scss">
+@import "./style/common.scss";
+.select-copy-val-box{
+    min-width: 150PX;
+    padding: 10PX;
+    max-height: 300PX;
+    overflow-y: auto;
+    &::-webkit-scrollbar{
+        display: none;
+    }
+    .item{
+        border-bottom: 1px solid $border-color;
+        font-size: 14PX;
+        padding: 10PX 0;
+    }
+}
+</style>
 <style lang="scss" scoped>
 .ppt-detail-page{
     width: 100%;

+ 8 - 2
src/views/ppt/Preview.vue

@@ -72,6 +72,10 @@ function handleShowAction(){
     }
 }
 
+function handleCloseWindow(){
+    window.close()
+}
+
 </script>
 
 <template>
@@ -109,11 +113,13 @@ function handleShowAction(){
         </div>
         <div 
             :class="[showAction?'back-btn back-btn_show':'back-btn']"
-            @click="$router.back()"
+            @click="handleCloseWindow"
         >退出播放</div>
     </div>
 </template>
-
+<style lang="scss">
+@import "./style/common.scss";
+</style>
 <style lang="scss" scoped>
 .ppt-preview-page{
     width: 100vw;

+ 9 - 2
src/views/ppt/Search.vue

@@ -2,7 +2,7 @@
 import {ref} from 'vue'
 import {apiPPTSearch} from '@/api/ppt'
 import { showToast } from 'vant'
-import { useRouter } from 'vue-router'
+import { useRouter,onBeforeRouteLeave } from 'vue-router'
 
 const router=useRouter()
 
@@ -47,6 +47,13 @@ function goDetail(item){
     }
 }
 
+onBeforeRouteLeave((to,from)=>{
+    if(to.path=='/ppt/index'||to.path=='/ppten/index'){
+        searchVal.value=''
+        list.value=[]
+        finished.value=false
+    }
+})
 
 </script>
 
@@ -56,7 +63,7 @@ function goDetail(item){
             <van-search 
                 v-model="searchVal"
                 shape="round"  
-                placeholder="请输入搜索关键词"
+                placeholder="请输入PPT标题"
                 @search="onSearch"
             />
         </div>

+ 70 - 14
src/views/ppt/components/MobileClassifyWrap.vue

@@ -1,6 +1,7 @@
 <script setup>
 import { useRouter } from 'vue-router'
 import {useClassify} from '../hooks/useClassify'
+import {ref} from 'vue'
 
 const router=useRouter()
 const {
@@ -19,6 +20,7 @@ const {
     handlePPTShare,
     handleShowPPTCopy,
     handlePPTCopy,
+    handlePPTCopyBeforeClose,
 
     goPPTDetail
 }=useClassify()
@@ -35,6 +37,8 @@ function goMobileSearch(){
     }
 }
 
+const showPopover=ref(false)
+
 </script>
 
 <template>
@@ -43,14 +47,14 @@ function goMobileSearch(){
             <van-search 
                 shape="round" 
                 readonly 
-                placeholder="请输入搜索关键词" 
+                placeholder="请输入PPT标题" 
                 @click="goMobileSearch"
             />
         </div>
         <van-collapse v-model="classifyState.activeType" :border="false">
-            <van-collapse-item class="level-one" name="myPPT" :is-link="false">
+            <van-collapse-item class="level-one" name="myPPT" :is-link="true">
                 <template #title>
-                    <div class="title-first">我的PPT<van-icon name="arrow-down" /></div>
+                    <div class="title-first">我的PPT</div>
                 </template>
                 <van-collapse class="level-two" v-model="classifyState.myActiveType" :border="false">
                     <van-collapse-item
@@ -63,7 +67,9 @@ function goMobileSearch(){
                             <div class="title-second">
                                 <img src="@/assets/imgs/ppt/ppt_icon_file.png" alt="">
                                 <span class="van-ellipsis">{{item.GroupName}}</span>
-                                <img @click.stop="handleShowFileOpt(item)" class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                <div @click.stop="handleShowFileOpt(item)" class="menu-icon">
+                                    <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                </div>
                             </div>
                         </template>
                         <div 
@@ -73,14 +79,16 @@ function goMobileSearch(){
                             @click.stop="goPPTDetail(_item)"
                         >
                             <span class="van-ellipsis text">{{ _item.Title }}</span>
-                            <img @click.stop="handleShowPPTOpt(_item)" class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                            <div @click.stop="handleShowPPTOpt(_item)" class="menu-icon">
+                                <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                            </div>
                         </div>
                     </van-collapse-item>
                 </van-collapse>
             </van-collapse-item>
-            <van-collapse-item class="level-one" name="pubPPT" :is-link="false">
+            <van-collapse-item class="level-one" name="pubPPT" :is-link="true">
                 <template #title>
-                    <div class="title-first">公共PPT<van-icon name="arrow-down" /></div>
+                    <div class="title-first">公共PPT</div>
                 </template>
                 <van-collapse class="level-two" v-model="classifyState.pubActiveType" :border="false">
                     <van-collapse-item
@@ -102,7 +110,9 @@ function goMobileSearch(){
                             @click.stop="goPPTDetail(_item)"
                         >
                             <span class="van-ellipsis text">{{ _item.Title }}</span>
-                            <img @click.stop="handleShowPPTOpt(_item,true)" class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                            <div @click.stop="handleShowPPTOpt(_item,true)" class="menu-icon">
+                                <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                            </div>
                         </div>
                     </van-collapse-item>
                 </van-collapse>
@@ -195,10 +205,19 @@ function goMobileSearch(){
         show-cancel-button
         confirmButtonText="保存"
         @confirm="handlePPTCopy"
+        :before-close="handlePPTCopyBeforeClose"
     >
         <div class="ppt-copy-wrap">
             <span>选择目录</span>
-            <van-popover :actions="PPTOptState.copyActions" @select="e=>PPTOptState.copySelectData=e">
+            <van-popover v-model:show="showPopover">
+                <ul class="select-copy-val-box">
+                    <li 
+                        class="item" 
+                        v-for="item in PPTOptState.copyActions" 
+                        :key="item.GroupId"
+                        @click="PPTOptState.copySelectData=item;showPopover=false"
+                    >{{item.text}}111</li>
+                </ul>
                 <template #reference>
                     <span class="select-value-box">{{PPTOptState.copySelectData.GroupName||'请选择目录'}}</span>
                 </template>
@@ -209,10 +228,18 @@ function goMobileSearch(){
 
 <style lang="scss">
 .level-one{
+    .van-cell__title{
+        flex: none;
+    }
     .van-collapse-item__title--expanded:after{
         display: none !important;
     }
 }
+.level-two{
+    .van-cell__title{
+        flex: 1;
+    }
+}
 .van-collapse-item__content{
     padding: 0;
 }
@@ -225,6 +252,21 @@ function goMobileSearch(){
 .van-collapse-item__wrapper{
     margin-bottom: 20px;
 }
+
+.select-copy-val-box{
+    min-width: 150PX;
+    padding: 10PX;
+    max-height: 300PX;
+    overflow-y: auto;
+    &::-webkit-scrollbar{
+        display: none;
+    }
+    .item{
+        border-bottom: 1px solid $border-color;
+        font-size: 14PX;
+        padding: 10PX 0;
+    }
+}
 </style>
 <style lang="scss" scoped>
 
@@ -245,19 +287,26 @@ function goMobileSearch(){
         display: flex;
         align-items: center;
         position: relative;
+        font-size: 30px;
         img{
-            width: 32px;
+            width: 36px;
             margin-right: 20px;
         }
         span{
             display: block;
             width: 80%;
+            font-size: 30px;
         }
         .menu-icon{
-            width: 4px;
+            width: 30px;
             position: absolute;
             right: 0;
             margin-right: 0;
+            text-align: center;
+            .icon{
+                width: 4px;
+                margin-right: 0;
+            }
         }
     }
     .ppt-item{
@@ -271,12 +320,19 @@ function goMobileSearch(){
         .text{
             width: 90%;
             display: block;
+            font-size: 30px;
         }
         .menu-icon{
-            width: 4px;
+            width: 30px;
             position: absolute;
             right: 0;
-            top: 40px;
+            margin-right: 0;
+            text-align: center;
+            bottom: 10px;
+            .icon{
+                width: 4px;
+                margin-right: 0;
+            }
         }
     }
 }
@@ -286,7 +342,7 @@ function goMobileSearch(){
         display: flex;
         align-items: center;
         img{
-            width: 32px;
+            width: 36px;
             margin-right: 20px;
         }
     }

+ 82 - 15
src/views/ppt/components/PadPPTIndexWrap.vue

@@ -3,8 +3,9 @@ import {ref} from 'vue'
 import {useClassify} from '../hooks/useClassify'
 import openShareIcon from '@/assets/imgs/ppt/ppt_icon_user1.png'
 import closeShareIcon from '@/assets/imgs/ppt/ppt_icon_user2.png'
-import {apiPPTList} from '@/api/ppt'
+import {apiPPTList,apiPPTPubList} from '@/api/ppt'
 import { useRouter } from 'vue-router'
+import moment from 'moment'
 
 const router=useRouter()
 
@@ -24,6 +25,7 @@ const {
     handlePPTShare,
     handleShowPPTCopy,
     handlePPTCopy,
+    handlePPTCopyBeforeClose,
 
     goPPTDetail
 }=useClassify()
@@ -35,19 +37,39 @@ const activeType=ref('myPPT')
 let activeGroupId=ref('')
 let pptList=ref([])
 async function getPPTList(){
-    const res=await apiPPTList({GroupId:activeGroupId.value})
+    let res 
+    if(activeType.value=='myPPT'){
+        res=await apiPPTList({GroupId:activeGroupId.value})
+    }else{
+        res=await apiPPTPubList({AdminId:activeGroupId.value})
+    }
+     
     if(res.Ret===200){
         pptList.value=res.Data.List||[]
     }
 }
 getPPTList()
 
+function handleClickCatalogue(item){
+    activeGroupId.value=item.GroupId
+    getPPTList()
+}
+
+// 设置共享
+function handleChangePPTShare(type,item){
+    if(type==1&&!item.IsSingleShareBoolean) return
+    if(type==2&&item.IsSingleShareBoolean) return
+    handlePPTShare()
+}
+
 // 跳转搜索
 function goMobileSearch(){
     router.push('/ppt/search')
 }
 
 
+const showPopover=ref(false)
+
 </script>
 
 <template>
@@ -73,13 +95,15 @@ function goMobileSearch(){
                         :is-link="false"
                     >
                         <template #title>
-                            <div class="title-second" @click="activeGroupId=item.GroupId">
+                            <div class="title-second" @click="handleClickCatalogue(item)">
                                 <img src="@/assets/imgs/ppt/ppt_icon_file.png" alt="">
                                 <span class="van-ellipsis">{{item.GroupName}}</span>
                                 <div @click.stop="handleShowFileOpt(item)">
                                     <van-popover position="bottom-start">
                                         <template #reference>
-                                            <img class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                            <div class="menu-icon">
+                                                <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                            </div>
                                         </template>
                                         <div class="pad-classify-file-opt-box">
                                             <div class="item" @click="handlePPTCatalogueCopy">
@@ -112,11 +136,11 @@ function goMobileSearch(){
                                         <img class="share-icon" :src="_item.IsSingleShareBoolean?openShareIcon:closeShareIcon" alt="">
                                     </template>
                                     <div class="pad-classify-file-opt-box">
-                                        <div class="item" @click="handlePPTShare">
+                                        <div class="item" @click="handleChangePPTShare(1,_item)">
                                             <img :src="closeShareIcon" alt="">
                                             <span>仅自己可见</span>
                                         </div>
-                                        <div class="item" @click="handlePPTShare">
+                                        <div class="item" @click="handleChangePPTShare(2,_item)">
                                             <img :src="openShareIcon" alt="">
                                             <span>所有人可见</span>
                                         </div>
@@ -126,7 +150,9 @@ function goMobileSearch(){
                             <div @click.stop="handleShowPPTOpt(_item)">
                                 <van-popover position="bottom-start">
                                     <template #reference>
-                                        <img class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                        <div class="menu-icon">
+                                            <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                        </div>
                                     </template>
                                     <div class="pad-classify-file-opt-box">
                                         <div class="item" @click="handleShowPPTCopy">
@@ -154,7 +180,7 @@ function goMobileSearch(){
                         :is-link="false"
                     >
                         <template #title>
-                            <div class="title-second">
+                            <div class="title-second" @click="handleClickCatalogue(item)">
                                 <img src="@/assets/imgs/ppt/ppt_icon_file.png" alt="">
                                 <span class="van-ellipsis">{{item.GroupName}}</span>
                             </div>
@@ -169,7 +195,9 @@ function goMobileSearch(){
                             <div @click.stop="handleShowPPTOpt(_item)">
                                 <van-popover position="bottom-start">
                                     <template #reference>
-                                        <img class="menu-icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                        <div class="menu-icon">
+                                            <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
+                                        </div>
                                     </template>
                                     <div class="pad-classify-file-opt-box">
                                         <div class="item" @click="handleShowPPTCopy">
@@ -202,8 +230,8 @@ function goMobileSearch(){
                     @click="goPPTDetail(item)"
                 >
                     <div class="van-ellipsis title">{{item.Title}}</div>
-                    <img class="bg-img" :src="item.BackgroundImg" alt="">
-                    <div class="time">创建时间:{{item.PptCreateTime}}</div>
+                    <img class="bg-img" src="/pptImg/pptcover_bg1.jpg" alt="">
+                    <div class="time">创建时间:{{moment(item.PptCreateTime).format('YYYY-MM-DD')}}</div>
                 </li>
                 <li class="empty-item"></li>
                 <li class="empty-item"></li>
@@ -230,10 +258,19 @@ function goMobileSearch(){
         show-cancel-button
         confirmButtonText="保存"
         @confirm="handlePPTCopy"
+        :before-close="handlePPTCopyBeforeClose"
     >
         <div class="ppt-copy-wrap">
             <span>选择目录</span>
-            <van-popover :actions="PPTOptState.copyActions" @select="e=>PPTOptState.copySelectData=e">
+            <van-popover v-model:show="showPopover">
+                <ul class="select-copy-val-box">
+                    <li 
+                        class="item" 
+                        v-for="item in PPTOptState.copyActions" 
+                        :key="item.GroupId"
+                        @click="PPTOptState.copySelectData=item;showPopover=false"
+                    >{{item.text}}111</li>
+                </ul>
                 <template #reference>
                     <span class="select-value-box">{{PPTOptState.copySelectData.GroupName||'请选择目录'}}</span>
                 </template>
@@ -258,6 +295,21 @@ function goMobileSearch(){
 .van-collapse-item__title--expanded:after{
     display: none;
 }
+
+.select-copy-val-box{
+    min-width: 150PX;
+    padding: 10PX;
+    max-height: 300PX;
+    overflow-y: auto;
+    &::-webkit-scrollbar{
+        display: none;
+    }
+    .item{
+        border-bottom: 1px solid $border-color;
+        font-size: 14PX;
+        padding: 10PX 0;
+    }
+}
 @media screen and (min-width:$media-width){
     .pad-classify-file-opt-box{
         border: 1px solid $border-color;
@@ -328,11 +380,15 @@ function goMobileSearch(){
                     font-size: 16px;
                 }
                 .menu-icon{
-                    width: 3px;
+                    width: 15px;
                     position: absolute;
                     right: 0;
-                    margin-right: 0;
                     top: 5px;
+                    text-align: center;
+                    .icon{
+                        width: 3px;
+                        margin-right: 0;
+                    }
                 }
             }
             .ppt-item{
@@ -349,10 +405,14 @@ function goMobileSearch(){
                     display: block;
                 }
                 .menu-icon{
-                    width: 3px;
+                    width: 15px;
                     position: absolute;
                     right: 0;
                     top: 20px;
+                    text-align: center;
+                    .icon{
+                        width: 3px;
+                    }
                 }
                 .share-icon{
                     width: 16px;
@@ -392,7 +452,12 @@ function goMobileSearch(){
                     }
                 }
                 .empty-item{
+                    display: block;
+                    box-sizing: border-box;
                     width: 260px;
+                    padding: 10px 14px;
+                    margin-left: 10px;
+                    margin-right: 10px;
                 }
             }
         }
@@ -435,6 +500,8 @@ function goMobileSearch(){
             // min-width: 150px;
         }
     }
+
+
 }
 
 </style>

+ 15 - 1
src/views/ppt/hooks/useClassify.js

@@ -101,6 +101,7 @@ export function useClassify(){
         })
         if(res.Ret===200){
             getPPTClassifyData()
+            fileOptState.data.GroupName=fileOptState.reNameVal
         }
     }
 
@@ -177,12 +178,24 @@ export function useClassify(){
             GroupId:PPTOptState.copySelectData.GroupId
         }).then(res=>{
             if(res.Ret===200){
-                showToast('复制成功');
+                setTimeout(() => {
+                    showToast('复制成功');
+                }, 100);
+                
                 getPPTClassifyData()
                 PPTOptState.showCopy=false
             }
         })
     }
+    // 关闭复制ppt选择目录弹窗钩子函数
+    const handlePPTCopyBeforeClose=(action)=>{
+        console.log(action);
+        if(action==='confirm'&&!PPTOptState.copySelectData.GroupId){
+            return false
+        }else{
+            return true
+        }
+    }
 
 
     // 跳转ppt详情
@@ -221,6 +234,7 @@ export function useClassify(){
         handlePPTShare,
         handleShowPPTCopy,
         handlePPTCopy,
+        handlePPTCopyBeforeClose,
 
         goPPTDetail
     }

+ 16 - 3
src/views/ppt/hooks/usePPTPublish.js

@@ -410,14 +410,22 @@ function createRandomCode (len = 8) {
 // 上传到阿里云
 async function handleUploadToOSS(data){
 	// 生成文件名
+  const loading=showLoadingToast({
+    message: "上传中...",
+    duration: 0,
+    forbidClick: true,
+  })
 	const t=new Date()
 	const month=moment(t).format('YYYYMM')
 	const day=moment(t).format('YYYYMMDD')
 	const temName=`ppt/${month}/${day}/${createRandomCode(32)}.pptx`
 	console.log('文件名',temName);
 	const url=await useUploadFileToOSS(data,temName)
+  loading.close()
 	if(!url){
-		showToast('生成ppt失败')
+    setTimeout(() => {
+      showToast('生成ppt失败')
+    }, 60);
 		return
 	}
 	handlePublishPPT(url)
@@ -634,10 +642,15 @@ async function pageToPPT(){
 function handlePublishPPT(url){
 	apiPPTPublish({
 		PptId:Number(pptId),
-        PptxUrl:url
+    PptxUrl:url
 	}).then(res=>{
 		if(res.Ret===200){
-			showToast('发布成功')
+      setTimeout(() => {
+        showToast('发布成功')
+      }, 50);
+      setTimeout(() => {
+        location.reload();
+      }, 1500);
 		}
 	})
 }

+ 1 - 1
src/views/ppt/template/Cover.vue

@@ -47,7 +47,7 @@ const lang = ref(window.location.pathname.startsWith("/ppten") ? "en" : "zh");
 </template>
 
 <style lang="scss" scoped>
-@import "../style/common.scss";
+// @import "../style/common.scss";
 .ppt-cover-page {
   position: relative;
   overflow: hidden;

+ 1 - 1
src/views/ppt/template/Footer.vue

@@ -15,7 +15,7 @@ const props=defineProps({
 </template>
 
 <style lang="scss" scoped>
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-last-page{
     overflow: hidden;
     img{

+ 1 - 1
src/views/ppt/template/FormatEight.vue

@@ -46,7 +46,7 @@ const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.top-box{
 		width: 100%;

+ 1 - 1
src/views/ppt/template/FormatFive.vue

@@ -58,7 +58,7 @@ const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.container{
 		display: flex;

+ 1 - 1
src/views/ppt/template/FormatFour.vue

@@ -58,7 +58,7 @@ const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.container{
 		display: flex;

+ 1 - 1
src/views/ppt/template/FormatNine.vue

@@ -54,7 +54,7 @@ const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.top-box{
 		width: 100%;

+ 1 - 1
src/views/ppt/template/FormatOne.vue

@@ -38,6 +38,6 @@ const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
 
 
 <style lang="scss" scoped>
-@import '../style/common.scss';
+// @import '../style/common.scss';
 
 </style>

+ 1 - 1
src/views/ppt/template/FormatSeven.vue

@@ -46,7 +46,7 @@ const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.container{
 		display: flex;

+ 1 - 1
src/views/ppt/template/FormatSix.vue

@@ -35,5 +35,5 @@ const props=defineProps({
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 </style>

+ 1 - 1
src/views/ppt/template/FormatThree.vue

@@ -51,7 +51,7 @@ const props=defineProps({
 
 
 <style scoped lang="scss">
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.container{
 		display: flex;

+ 1 - 1
src/views/ppt/template/FormatTwo.vue

@@ -42,7 +42,7 @@ const props=defineProps({
 </template>
 
 <style lang="scss" scoped>
-@import '../style/common.scss';
+// @import '../style/common.scss';
 .ppt-content-box{
 	.container{
 		display: flex;

+ 1 - 1
src/views/tabbar/User.vue

@@ -22,7 +22,7 @@ function handleLoginOut(){
             <img class="avatar" src="@/assets/imgs/userLogo.png" alt="">
             <div>
                 <div class="real-name">{{userInfo.RealName}}</div>
-                <div  class="admin-name">{{userInfo.AdminName}}</div>
+                <div  class="admin-name">ID:{{userInfo.AdminName}}</div>
             </div>
         </div>
         <div class="info-list">