jwyu 1 year ago
parent
commit
14a83b2f34

BIN
public/pptImg/ppt_last_img_en.png


BIN
public/pptImg/pptcover_bg1.jpg


BIN
public/pptImg/pptcover_bg1_en.png


BIN
public/pptImg/pptcover_bg2.jpg


BIN
public/pptImg/pptcover_bg2_en.png


BIN
public/pptImg/pptcover_bg3.jpg


BIN
public/pptImg/pptcover_bg3_en.png


BIN
public/pptImg/pptitem_bg_en.png


+ 54 - 11
src/api/ppt.js

@@ -8,7 +8,11 @@ import {get,post} from './index'
  * ppt分类数据
  */
 export function apiPPTClassify(){
-    return get('/pptv2/groups',{})
+    if(window.location.pathname.startsWith('/ppten')){
+        return get('/ppt_english/groups',{})
+    }else{
+        return get('/pptv2/groups',{})
+    }
 }
 
 /**
@@ -16,7 +20,11 @@ export function apiPPTClassify(){
  * @param GroupId 目录id
  */
 export function apiPPTCatalogueCopy(params){
-    return post('/pptv2/group/copy',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/group/copy',params)
+    }else{
+        return post('/pptv2/group/copy',params)
+    }
 }
 
 /**
@@ -24,7 +32,12 @@ export function apiPPTCatalogueCopy(params){
  * @param GroupId 目录id
  */
 export function apiPPTCatalogueDel(params){
-    return post('/pptv2/group/delete',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/group/delete',params)
+    }else{
+        return post('/pptv2/group/delete',params)
+    }
+    
 }
 
 /**
@@ -33,7 +46,12 @@ export function apiPPTCatalogueDel(params){
  * @param GroupName:目录名称
  */
 export function apiPPTCatalogueRename(params){
-    return post('/pptv2/group/rename',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/group/rename',params)
+    }else{
+        return post('/pptv2/group/rename',params)
+    }
+    
 }
 
 
@@ -42,7 +60,11 @@ export function apiPPTCatalogueRename(params){
  * @param PptId pptid
  */
 export function apiPPTDel(params){
-    return post('/pptv2/delete',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/delete',params)
+    }else{
+        return post('/pptv2/delete',params)
+    }
 }
 
 /**
@@ -50,7 +72,12 @@ export function apiPPTDel(params){
  * @param PptId
  */
 export function apiPPTShare(params){
-    return post('/pptv2/share',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/share',params)
+    }else{
+        return post('/pptv2/share',params)
+    }
+    
 }
 
 /**
@@ -59,7 +86,11 @@ export function apiPPTShare(params){
  * @param GroupId
  */
 export function apiPPTCopy(params){
-    return post('/pptv2/copy',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/copy',params)
+    }else{
+        return post('/pptv2/copy',params)
+    }
 }
 
 /**
@@ -67,7 +98,11 @@ export function apiPPTCopy(params){
  * @param PptId
  */
 export function apiPPTDetail(params){
-    return get('/pptv2/detail',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return get('/ppt_english/detail',params)
+    }else{
+        return get('/pptv2/detail',params)
+    }
 }
 
 /**
@@ -76,13 +111,21 @@ export function apiPPTDetail(params){
  * @param PptxUrl
  */
 export function apiPPTPublish(params){
-    return post('/pptv2/publish',params)
+    if(window.location.pathname.startsWith('/ppten')){
+        return post('/ppt_english/publish',params)
+    }else{
+        return post('/pptv2/publish',params)
+    }
 }
 
 /**
  * ppt列表
  * @param GroupId 分类id
  */
-export function apiPPTList(params) {  
-    return get('/pptv2/group/ppt/list',params)
+export function apiPPTList(params) {
+    if(window.location.pathname.startsWith('/ppten')){
+        return get('/ppt_english/group/ppt/list',params)
+    }else{
+        return get('/pptv2/group/ppt/list',params)
+    }
 }

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

@@ -128,6 +128,18 @@ function setDyncmicSerieName (item,dynamic_arr) {
     return temName
 }
 
+/* 指标顺序调整  IsAxis: 0右轴 1左轴 2右2*/
+function changeEdbOrder (data){
+    // 左轴指标
+    let left_edbs = data.filter(_ => _.IsAxis===1);
+    //右轴指标
+    let right_edbs = data.filter(_ => !_.IsAxis);
+    // 右2轴指标
+    let right_two_edbs = data.filter(_ => _.IsAxis === 2);
+    // 按 左 右 右2顺序排列
+    return [left_edbs,right_edbs,right_two_edbs].flat(Infinity);
+}
+
 
 //曲线图
 function setSplineOpt(e){

+ 3 - 0
src/router/index.js

@@ -1,5 +1,6 @@
 import { createRouter, createWebHistory } from "vue-router";
 import { pptRoutes } from "./ppt";
+import {pptENRoutes} from './pptEn'
 /**
  * 说明
  * 此文件为路由配置入口文件
@@ -46,6 +47,8 @@ const routes = [
 
 			// ppt模块
 			...pptRoutes,
+			//英文ppt模块
+			...pptENRoutes,
 		]
 	},
 	

+ 39 - 0
src/router/pptEn.js

@@ -0,0 +1,39 @@
+// ppt路由模块
+/**
+ * meta:{
+ * noHead:pad端不需要顶部
+ * hasBack:pad端顶部有返回首页
+ * }
+ */
+ export const pptENRoutes=[
+    {
+        path:"/ppten/index",
+        name:"PPTENIndex",
+        component: () => import("@/views/ppt/Index.vue"),
+        meta: { 
+            title: "智能PPT",
+            hasBack:true
+        },
+    },
+    {
+        path:"/ppten/detail",
+        name:"PPTENDetail",
+        component: () => import("@/views/ppt/Detail.vue"),
+        meta: { title: "智能PPT" },
+    },
+    {
+        path:"/ppten/search",
+        name:"PPTENSearch",
+        component: () => import("@/views/ppt/Search.vue"),
+        meta: { title: "搜索PPT" },
+    },
+    {
+        path:"/ppten/preview",
+        name:"PPTENPreview",
+        component: () => import("@/views/ppt/Preview.vue"),
+        meta: { 
+            title: "智能PPT",
+            noHead:true 
+        },
+    },
+]

+ 24 - 6
src/views/ppt/Detail.vue

@@ -7,6 +7,7 @@ import {createPPTContent,getTemplate} from './hooks/createPPTContent'
 import {usePPTPublish} from './hooks/usePPTPublish'
 import {useClassify} from './hooks/useClassify'
 import {useUserInfo} from '@/hooks/common'
+import { useWindowScroll } from '@vueuse/core'
 import moment from 'moment';
 
 const route=useRoute()
@@ -15,6 +16,7 @@ const router=useRouter()
 const pptId=route.query.id
 
 const {userInfo} =useUserInfo()
+const { y } = useWindowScroll()
 
 // 获取ppt详情
 let PPTInfo=ref(null)
@@ -81,12 +83,28 @@ const playActions=[
 ]
 let showPlayOpt=ref(false)
 function onSelectPlayOpt(e){
-    router.push({
-        path:"/ppt/preview",
-        query:{
-            id:pptId
-        }
-    })
+    let index=0//当前第几个ppt是在页面顶部
+    if(e.type==2){
+        const itemH=pptContentHeight.value/conArr.value.length
+        index=Math.floor(y.value/itemH)
+    }
+    if(window.location.pathname.startsWith('/ppten')){
+        router.push({
+            path:"/ppten/preview",
+            query:{
+                id:pptId,
+                index
+            }
+        })
+    }else{
+        router.push({
+            path:"/ppt/preview",
+            query:{
+                id:pptId,
+                index
+            }
+        })
+    }
 }
 
 // 下载文件

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

@@ -39,7 +39,7 @@ const scale=computed(()=>{
 })
 
 const swipeIns=ref(null)
-let current=ref(0)
+let current=ref(route.query.index||0)
 function handleSwipeChange(index){
     current.value=index
     if(index==conArr.value.length-1){
@@ -79,6 +79,7 @@ function handleShowAction(){
             class="swipe-wrap" 
             :show-indicators="false"
             :loop="false"
+            :initial-swipe="current"
             @change="handleSwipeChange"
         >
             <SwipeItem

+ 5 - 1
src/views/ppt/components/MobileClassifyWrap.vue

@@ -28,7 +28,11 @@ getPPTClassifyData()
 
 // 跳转搜索
 function goMobileSearch(){
-    router.push('/ppt/search')
+    if(window.location.pathname.startsWith('/ppten')){
+        router.push('/ppten/search')
+    }else{
+        router.push('/ppt/search')
+    }
 }
 
 </script>

+ 4 - 2
src/views/ppt/hooks/createPPTContent.js

@@ -28,6 +28,8 @@ import TextShape from '../components/layers/TextShape.vue'
  * modelId 模板1-9 0代表封面 -1代表尾页
  */
 export function createPPTContent(params){
+    const lang=window.location.pathname.startsWith('/ppten')?'en':'zh'
+
     const {
         Content,
         Title,
@@ -50,7 +52,7 @@ export function createPPTContent(params){
 		PptDate:formatPPTDate('zh',PptDate),
 		TemplateType,
         BackIndex:TemplateType-1,
-        imgLocalUrl:bgList[TemplateType-1],
+        imgLocalUrl:bgList[lang][TemplateType-1],
         modelId:0,
         id:0,
     }
@@ -66,7 +68,7 @@ export function createPPTContent(params){
         modelId:-1,
         id:-1,
         //英文地址:https://hzstatic.hzinsights.com/static/ppt_m/ppt_last__img_en.png
-        bgImg:'/pptImg/ppt_last_img.png',
+        bgImg:lang=='zh'?'/pptImg/ppt_last_img.png':'/pptImg/ppt_last_img_en.png',
     }
     arr.push(lastPageData)
     

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

@@ -187,13 +187,21 @@ export function useClassify(){
 
     // 跳转ppt详情
     const goPPTDetail=(e)=>{
-        console.log(e);
-        router.push({
-            path:"/ppt/detail",
-            query:{
-                id:e.PptId
-            }
-        })
+        if(window.location.pathname.startsWith('/ppten')){
+            router.push({
+                path:"/ppten/detail",
+                query:{
+                    id:e.PptId
+                }
+            })
+        }else{
+            router.push({
+                path:"/ppt/detail",
+                query:{
+                    id:e.PptId
+                }
+            })
+        }
     }
 
 

+ 4 - 1
src/views/ppt/style/common.scss

@@ -4,7 +4,7 @@ $pptItemH:630PX;
 .ppt-item-box{
     width: $pptItemW;
     height: $pptItemH;
-    background: url('/pptImg/pptitem_bg.png');
+    background-image: url('/pptImg/pptitem_bg.png');
     background-size: cover;
     background-repeat: no-repeat;
     margin-bottom: 10PX;
@@ -47,4 +47,7 @@ $pptItemH:630PX;
             pointer-events: none;
         }
     }
+}
+.ppt-item-box_en{
+    background-image: url('/pptImg/pptitem_bg_en.png');
 }

+ 44 - 28
src/views/ppt/template/Cover.vue

@@ -1,39 +1,55 @@
 <script setup>
+import { ref } from "vue";
 
-const props=defineProps({
-    pageData:{
-        type:Object,
-        default:{}
-    }
-})
+const props = defineProps({
+  pageData: {
+    type: Object,
+    default: {},
+  },
+});
+
+const lang = ref(window.location.pathname.startsWith("/ppten") ? "en" : "zh");
 </script>
 
 <template>
-    <div class="ppt-item-box ppt-cover-page" id="ppt-cover-page">
-        <img :src="pageData.imgLocalUrl.image_url" class="pptbg"  style="width:100%"/>
-        <div style="width:62%; font-size:16px; text-align:center; line-height:1.6; color:#fff; position:absolute; right:20px; top:50%;zIndex:20;">
-            <p style="height:5px; border-top:1px solid #fff;marginBottom:21px;"></p>
-            <p style="font-size:28px;">{{ pageData.Title }}</p>
-            <p style="display:flex; align-items:center; justify-content:center;margin:10px 0;">
-                <span style="display:inline-block; width:15px; margin-right:5px; border-top:1px solid #fff;"></span>
-                <span>弘则弥道(上海)投资咨询有限公司</span>
-                <span
-                style="display:inline-block; width:14px; height:14px; background:#fff; border-radius:100%; margin:0 5px;"></span>
-                <span>{{ pageData.ReportType }}</span>
-                <span style="display:inline-block; width:15px; margin-left:5px; border-top:1px solid #fff;"></span>
-            </p>
-            <p>FICC研究部</p>
-            <p>{{pageData.PptDate}}</p>
-            <p style="width:80%; height:1px; border-bottom:1px solid #fff; margin:21px auto 0;"></p>
-        </div>
+  <div class="ppt-item-box ppt-cover-page" id="ppt-cover-page">
+    <img :src="pageData.imgLocalUrl.image_url" class="pptbg" style="width: 100%" />
+    <div v-if="lang == 'zh'" style="width: 62%; font-size: 16px; text-align: center; line-height: 1.6; color: #fff; position: absolute; right: 20px; top: 50%; zindex: 20">
+      <p style="height: 5px; border-top: 1px solid #fff; marginbottom: 21px"></p>
+      <p style="font-size: 28px">{{ pageData.Title }}</p>
+      <p style="display: flex; align-items: center; justify-content: center; margin: 10px 0">
+        <span style="display: inline-block; width: 15px; margin-right: 5px; border-top: 1px solid #fff"></span>
+        <span>弘则弥道(上海)投资咨询有限公司</span>
+        <span style="display: inline-block; width: 14px; height: 14px; background: #fff; border-radius: 100%; margin: 0 5px"></span>
+        <span>{{ pageData.ReportType }}</span>
+        <span style="display: inline-block; width: 15px; margin-left: 5px; border-top: 1px solid #fff"></span>
+      </p>
+      <p>FICC研究部</p>
+      <p>{{ pageData.PptDate }}</p>
+      <p style="width: 80%; height: 1px; border-bottom: 1px solid #fff; margin: 21px auto 0"></p>
+    </div>
+    <div v-if="lang == 'en'" style="width: 62%; font-size: 16px; text-align: center; line-height: 1.6; color: #fff; position: absolute; right: 20px; top: 50%; zindex: 20">
+      <p style="height: 5px; border-top: 1px solid #fff; marginbottom: 21px"></p>
+      <p style="font-size: 28px">{{ pageData.Title }}</p>
+      <p style="display: flex; align-items: center; justify-content: center; margin: 10px 0">
+        <span>HORIZON INSIGHTS PTE. LTD.</span>
+      </p>
+      <p style="display: flex; align-items: center; justify-content: center">
+        <span style="display: inline-block; width: 15px; margin-left: 5px; border-top: 1px solid #fff"></span>
+        <span>{{ pageData.ReportType }}</span>
+        <span style="display: inline-block; width: 15px; margin-left: 5px; border-top: 1px solid #fff"></span>
+      </p>
+      <p>FICC Research Department</p>
+      <p>{{ pageData.PptDate }}</p>
+      <p style="width: 80%; height: 1px; border-bottom: 1px solid #fff; margin: 21px auto 0"></p>
     </div>
+  </div>
 </template>
 
 <style lang="scss" scoped>
-@import '../style/common.scss';
-.ppt-cover-page{
-    position: relative;
-    overflow: hidden;
+@import "../style/common.scss";
+.ppt-cover-page {
+  position: relative;
+  overflow: hidden;
 }
 </style>
-

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

@@ -1,4 +1,5 @@
 <script setup>
+import {ref} from 'vue'
 import {getPPTContentType,getPPTContentItemData,getPPTLayerType} from '../hooks/createPPTContent'
 
 const props=defineProps({
@@ -8,10 +9,12 @@ const props=defineProps({
     }
 })
 
+const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
+
 </script>
 
 <template>
-	<div class="ppt-item-box">
+	<div :class="['ppt-item-box',lang=='en'?'ppt-item-box_en':'']">
 		<div class="ppt-title-box">{{pageData.title}}</div>
 		<div class="ppt-content-box">
 			<div class="container">

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

@@ -1,4 +1,5 @@
 <script setup>
+import {ref} from 'vue'
 import {getPPTContentType,getPPTContentItemData,getPPTLayerType} from '../hooks/createPPTContent'
 
 const props=defineProps({
@@ -8,10 +9,12 @@ const props=defineProps({
     }
 })
 
+const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
+
 </script>
 
 <template>
-	<div class="ppt-item-box">
+	<div :class="['ppt-item-box',lang=='en'?'ppt-item-box_en':'']">
 		<div class="ppt-title-box">{{pageData.title}}</div>
 		<div class="ppt-content-box">
 			<div class="container">

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

@@ -1,4 +1,5 @@
 <script setup>
+import {ref} from 'vue'
 import {getPPTContentType,getPPTContentItemData,getPPTLayerType} from '../hooks/createPPTContent'
 
 const props=defineProps({
@@ -8,10 +9,12 @@ const props=defineProps({
     }
 })
 
+const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
+
 </script>
 
 <template>
-	<div class="ppt-item-box">
+	<div :class="['ppt-item-box',lang=='en'?'ppt-item-box_en':'']">
 		<div class="ppt-title-box">{{pageData.title}}</div>
 		<div class="ppt-content-box">
 			<div class="container">

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

@@ -1,4 +1,5 @@
 <script setup>
+import {ref} from 'vue'
 import {getPPTContentType,getPPTContentItemData,getPPTLayerType} from '../hooks/createPPTContent'
 
 const props=defineProps({
@@ -8,10 +9,12 @@ const props=defineProps({
     }
 })
 
+const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
+
 </script>
 
 <template>
-	<div class="ppt-item-box">
+	<div :class="['ppt-item-box',lang=='en'?'ppt-item-box_en':'']">
 		<div class="ppt-title-box">{{pageData.title}}</div>
 		<div class="ppt-content-box">
 			<div class="container">

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

@@ -1,4 +1,5 @@
 <script setup>
+import {ref} from 'vue'
 import {getPPTContentType,getPPTContentItemData,getPPTLayerType} from '../hooks/createPPTContent'
 
 const props=defineProps({
@@ -8,10 +9,12 @@ const props=defineProps({
     }
 })
 
+const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
+
 </script>
 
 <template>
-	<div class="ppt-item-box">
+	<div :class="['ppt-item-box',lang=='en'?'ppt-item-box_en':'']">
 		<div class="ppt-title-box">{{pageData.title}}</div>
 		<div class="ppt-content-box">
 			<div class="container">

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

@@ -1,4 +1,5 @@
 <script setup>
+import {ref} from 'vue'
 import {getPPTContentType,getPPTContentItemData,getPPTLayerType} from '../hooks/createPPTContent'
 
 const props=defineProps({
@@ -8,10 +9,12 @@ const props=defineProps({
     }
 })
 
+const lang=ref(window.location.pathname.startsWith('/ppten')?'en':'zh')
+
 </script>
 
 <template>
-	<div class="ppt-item-box">
+	<div :class="['ppt-item-box',lang=='en'?'ppt-item-box_en':'']">
 		<div class="ppt-title-box">{{pageData.title}}</div>
 		<div class="ppt-content-box">
 			<div class="container">

+ 14 - 5
src/views/ppt/utils/config.js

@@ -1,11 +1,20 @@
 // ppt 公共配置项
 
 //ppt封面背景图
-export const bgList=[
-    {image_url:'/pptImg/pptcover_bg3.jpg'},
-    {image_url:'https://hzstatic.hzinsights.com/static/ppt_m/pptcover_bg4.jpg'},
-    {image_url:'https://hzstatic.hzinsights.com/static/ppt_m/pptcover_bg5.jpg'},
-]
+export const bgList={
+    zh:[
+        {image_url:'/pptImg/pptcover_bg1.jpg'},
+        {image_url:'/pptImg/pptcover_bg2.jpg'},
+        {image_url:'/pptImg/pptcover_bg3.jpg'},
+    ],
+    en:[
+        {image_url:'/pptImg/pptcover_bg1_en.png'},
+        {image_url:'/pptImg/pptcover_bg2_en.png'},
+        {image_url:'/pptImg/pptcover_bg3_en.png'},
+    ]
+}
+    
+
 //ppt宽高比
 export const pptLayout = { name: "myppt", width: 10, height: 7 }
 //ppt母版

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

@@ -16,7 +16,7 @@ function goNext(path){
                 <img src="@/assets/imgs/ppt/ppt_icon_zh.png" alt="">
                 <div>智能PPT</div>
             </div>
-            <div class="item-box">
+            <div class="item-box" @click="goNext('/ppten/index')">
                 <img src="@/assets/imgs/ppt/ppt_icon_en.png" alt="">
                 <div>英文PPT</div>
             </div>