Commit f788d9f5 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/viitto/pptist

# Conflicts:
#	src/views/Editor/EditorHeader/index.vue
parents 22406f07 3b0e0911
......@@ -40,7 +40,6 @@ const ConfigIdStore = useScreenStore()
const marketStore = useScreenStore()
const isModelStore = useScreenStore()
const TempIdStore = useScreenStore()
const pageIndexStore = useScreenStore()
const { databaseId } = storeToRefs(mainStore)
const { screening, market, model, ConfigId } = storeToRefs(useScreenStore())
const { userInfo } = storeToRefs(userStore())
......@@ -54,15 +53,12 @@ const userLoginHandler = async ()=>{
let ConfigId = 0 // 9117
let model = 0
let TempId = 1
let pageIndex = 0
if(param.uid) userId=parseInt(param.uid)
if(param.ConfigId) ConfigId=parseInt(param.ConfigId)
if(param.model) model=parseInt(param.model)
if(param.TempId) {
TempId=parseInt(param.TempId)
pageIndex=parseInt(param.pageIndex)
TempId=parseInt(param.TempId)
TempIdStore.setTempId(TempId)
pageIndexStore.setPageIndex(pageIndex)
marketStore.setMarket(!market)
}
ConfigIdStore.setConfigId(ConfigId)
......
......@@ -26,11 +26,8 @@ interface ExportImageConfig {
export default () => {
const slidesStore = useSlidesStore()
const coverImgStore = useScreenStore()
const isCoverImgStore = useScreenStore()
const FeatureImgStore = useScreenStore()
const { slides, theme, viewportRatio, title } = storeToRefs(slidesStore)
const { isCoverImg, FeatureImg } = storeToRefs(useScreenStore())
const { isCoverImg } = storeToRefs(useScreenStore())
const exporting = ref(false)
......@@ -49,16 +46,7 @@ export default () => {
if (ignoreWebfont) config.fontEmbedCSS = ''
toImage(domRef, config).then(dataUrl => {
if (isCoverImg.value) {
// coverImgStore.setCoverImg('')
resolve(dataUrl)
}else{
const obj = {
index: i,
url: dataUrl
}
FeatureImg.value.push(obj)
FeatureImgStore.setFeatureImg(JSON.parse(JSON.stringify(FeatureImg.value)))
resolve(true)
}
}).catch(() => {
// message.error('导出图片失败')
......
......@@ -13,9 +13,7 @@ export interface ScreenState {
CoverImg: any,
isCoverImg: boolean,
dataLoading: number,
FeatureImg: any,
SourceLoading: boolean,
pageIndex: number,
imgPoolVisible: boolean,
imgReplaceVisible: boolean,
}
......@@ -33,9 +31,7 @@ export const useScreenStore = defineStore('screen', {
CoverImg: null, // 封面图
isCoverImg: false, // 封面
dataLoading: 0, // 记录保存是否成功
FeatureImg: [], // 行程特色图
SourceLoading: false, // 记录数据源是否更改
pageIndex: 0,//需要生成图的行程特色
imgPoolVisible: false,//新增上传图片弹窗
imgReplaceVisible: false,//替换图片弹窗
}),
......@@ -77,15 +73,9 @@ export const useScreenStore = defineStore('screen', {
setDataLoading(dataLoading: number) {
this.dataLoading = dataLoading
},
setFeatureImg(FeatureImg: any) {
this.FeatureImg = FeatureImg
},
setSourceLoading(SourceLoading: boolean) {
this.SourceLoading = SourceLoading
},
setPageIndex(pageIndex: number){
this.pageIndex = pageIndex
},
setImgPoolVisible(imgPoolVisible: boolean) {
this.imgPoolVisible = imgPoolVisible
},
......
......@@ -23,7 +23,6 @@ export type SlideDataSource = Ref<{
ConfigId:number,
DataSourceList?:Array<any>,
DataSourceOverlay?:boolean,
FeatureImgList?:any[],
TravelAatas?:TravelAatas,
[key: string]: any;
}>
......
......@@ -13,7 +13,6 @@ export default () => {
const setNewDatasList = (DataSource:any) => {
sourceLoadingStore.setSourceLoading(false)
const slidesData = slides.value
const cursors = [] as Array<any>
// 更新Slides数据
let savelides = [] as any
let newSlides = [] as any
......
......@@ -162,12 +162,9 @@ const viewportRef = ref<HTMLElement>()
const alignmentLines = ref<AlignmentLineProps[]>([])
const datas = reactive({
FeatureImgList: [],
loading: false
})
datas.FeatureImgList = inject(injectKeyDataSource).FeatureImgList
const FeatureImgStore = useScreenStore()
const { market, model, ConfigId, CoverImg, dataLoading, FeatureImg } = storeToRefs(useScreenStore())
const { market, model, ConfigId, CoverImg, dataLoading } = storeToRefs(useScreenStore())
const renderSlides = computed(() => {
return slides.value
})
......@@ -177,12 +174,6 @@ watch(() => slides.value, (n,o) =>{
})
watch(() => FeatureImg.value, (n,o) =>{
FeatureImg.value.sort((a,b)=>{
return a.index-b.index
})
})
const linkDialogVisible = ref(false)
const openLinkDialog = () => linkDialogVisible.value = true
......
<template>
<!-- <div @click="testHandler">测试</div> -->
<!-- <div>
<template v-for="(x,i) in FeatureImg">
<img :src="x.url" alt="" style="width: 80px;">
</template>
</div> -->
<!-- <div>
<img :src="item" v-for="item in datas.FeatureImgList" style="width: 80px;" />
</div> -->
<div class="editor-header">
<div class="left">
<div class="menu-item" v-tooltip="'去首页'" @click="goBack()">首页</div>
......@@ -104,21 +95,6 @@
<FullscreenSpin :loading="exporting" tip="正在导入..." />
<Psd-Upload :visible="psdVisibleStatus" @closed="psdVisibleStatus=false"></Psd-Upload>
</div>
<!--
<div v-if="!model&&ConfigId" style="opacity: 0;position: absolute;left: 100px;top: 0;bottom: 0;overflow: auto;z-index: -1;">
<div class="export-img-dialog">
<div class="thumbnails-view">
<div class="thumbnails" v-for="slide in slides" ref="FeatureImgRef">
<ThumbnailSlide
class="thumbnail"
:key="slide.id"
:slide="slide"
:size="viewportRatio==0.7069?"
/>
</div>
</div>
</div>
</div> -->
</template>
......@@ -142,7 +118,6 @@ import UploadService from '@/services/UploadService'
import { domainManager } from '@/utils/domainManager'
import { ToolbarStates } from '@/types/toolbar'
import useEditor from '@/utils/Editor/index'
import useExport from '@/hooks/useExport'
import HotkeyDoc from './HotkeyDoc.vue'
......@@ -178,11 +153,9 @@ const { setNewDatasList } = useEditor()
const { userInfo } = storeToRefs(userStore())
const datas = reactive({
FeatureImgList:[],
DataSource:{},
loading: false
})
datas.FeatureImgList = inject(injectKeyDataSource).FeatureImgList
const queryObj = ref({} as any)
const searchData = ref({} as any)
datas.DataSource = inject(injectKeyDataSource)
......@@ -192,17 +165,12 @@ const marketStore = useScreenStore()
const CoverImgStore = useScreenStore()
const dataLoadingStore = useScreenStore()
const TempIdStore = useScreenStore()
const FeatureImgStore = useScreenStore()
const ConfigIdStore = useScreenStore()
const FeatureImgRef = ref(null)
const FeatureImgList = ref(null)
const loadingInstance = ref<any>(null)
const thumbnails = ref<string[]>()
const { exportFeatureImg } = useExport()
const psdVisibleStatus = ref(false)
const { market, model, ConfigId, CoverImg, dataLoading, TempId, FeatureImg, SourceLoading } = storeToRefs(useScreenStore())
const { market, model, ConfigId, CoverImg, dataLoading, TempId, SourceLoading } = storeToRefs(useScreenStore())
// 返回到首页
const goBack = () =>{
......@@ -351,7 +319,6 @@ const SetTripTemplateConfig = async () => {
ConfigId: ConfigId.value,
TempId: queryObj.value.TempId,
TempData: queryObj.value.TempData,
// FeatureImg: datas.FeatureImgList
}
let TemplateRes = await ConfigService.SetSetTripConfig(queryMsg);
if (TemplateRes.data.resultCode == 1) {
......@@ -373,7 +340,6 @@ const SetTripTemplateConfig = async () => {
})
}
} catch (error) {}
FeatureImgStore.setFeatureImg([])
datas.loading = false
}
......@@ -451,59 +417,6 @@ const setTemplate = async () =>{
}
// 行程图上传
const setFeatureImgList = async () => {
datas.FeatureImgList = []
FeatureImgList.value = []
if(FeatureImg.value&&FeatureImg.value.length>0){
for (let i = 0; i < FeatureImg.value.length; i++) {
let name = new Date().getTime()+".jpg"
const file = dataURLtoFile(FeatureImg.value[i].url, name)
let result = AliyunUpload.UploadAsync(file,`Feature/${ConfigId.value}_${i}`)
result.then(res=>{
if(res) {
let path = res.split('_')
FeatureImgList.value.push({
index: path[1],
url: res
})
if(i==FeatureImg.value.length-1) {
setTimeout(()=>{
let list = FeatureImgList.value.sort((a,b)=>{
return a.index-b.index
})
datas.FeatureImgList = list.map(x=>{return x.url})
setTimeout(()=>{
SetTripTemplateConfig()
},600)
},300)
}
}
})
}
}
// try {
// let queryObj = {
// MyFile: url
// }
// let path = `?fileType=1&fileLimit=5&&filePath=Feature/${ConfigId.value}_`
// let Res = await UploadService.UploadBase64Two(path,queryObj);
// if (Res.data&&Res.data.FilePath) {
// datas.FeatureImgList.push(`${domainManager().ViittoFileUrl}/${Res.data.FilePath}`)
// if(datas.FeatureImgList.length==slides.value.length){
// await SetTripTemplateConfig()
// }
// }
// } catch (error) {
// datas.loading = false
// ElMessage({
// showClose: true,
// message: '上传行程文件出错',
// type: 'warning',
// })
// }
}
const startEditTitle = () => {
titleValue.value = title.value
editingTitle.value = true
......
......@@ -13,7 +13,7 @@
</div>
<div class="configs">
<div class="row">
<div class="title">{{isCoverImg?'生成格式:':'导出格式:'}}</div>
<div class="title">导出格式:</div>
<RadioGroup
class="config-item"
v-model:value="format"
......@@ -23,7 +23,7 @@
</RadioGroup>
</div>
<div class="row">
<div class="title">{{isCoverImg?'生成范围:':'导出范围:'}}</div>
<div class="title">导出范围:</div>
<RadioGroup
class="config-item"
v-model:value="rangeType"
......@@ -66,11 +66,11 @@
<div class="btns">
<Button class="btn export" type="primary" @click="expImage()">
{{isCoverImg?'生成封面':'导出图片'}}</Button>
导出图片</Button>
<Button class="btn close" @click="emit('close')">关闭</Button>
</div>
<FullscreenSpin :loading="exporting" :tip="isCoverImg?'正在生成...':'正在导出...'" />
<FullscreenSpin :loading="exporting" tip="正在导出..." />
</div>
</template>
......@@ -93,7 +93,6 @@ const emit = defineEmits<{
}>()
const { slides, currentSlide } = storeToRefs(useSlidesStore())
const { isCoverImg } = storeToRefs(useScreenStore())
const imageThumbnailsRef = ref<HTMLElement>()
......
......@@ -7,7 +7,7 @@
@update:value="key => setDialogForExport(key as DialogForExportTypes)"
/>
<div class="content">
<component :is="currentDialogComponent" @close="setDialogForExport(''),setDialogIsCoverImg()"></component>
<component :is="currentDialogComponent" @close="setDialogForExport('')"></component>
</div>
</div>
</template>
......@@ -15,7 +15,7 @@
<script lang="ts" setup>
import { computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useMainStore, useScreenStore } from '@/store'
import { useMainStore } from '@/store'
import type { DialogForExportTypes } from '@/types/export'
import ExportImage from './ExportImage.vue'
......@@ -30,17 +30,11 @@ interface TabItem {
label: string
}
const isCoverImgStore = useScreenStore()
const mainStore = useMainStore()
const { dialogForExport } = storeToRefs(mainStore)
const { isCoverImg } = storeToRefs(isCoverImgStore)
const setDialogForExport = mainStore.setDialogForExport
const setDialogIsCoverImg = () => {
isCoverImgStore.setIsCoverImg(false)
}
const tabs: TabItem[] = [
{ key: 'pptist', label: '导出 pptist 文件' },
{ key: 'pptx', label: '导出 PPTX' },
......@@ -57,8 +51,8 @@ const currentDialogComponent = computed<unknown>(() => {
'pptx': ExportPPTX,
'pptist': ExportSpecificFile,
}
if (dialogForExport.value) return dialogMap[dialogForExport.value] || isCoverImgStore.setIsCoverImg(false)
return isCoverImgStore.setIsCoverImg(false)
if (dialogForExport.value) return dialogMap[dialogForExport.value] || null
return null
})
</script>
......
......@@ -131,7 +131,7 @@ watch(() => dataLoading.value, (n,o) =>{
if(dataLoading.value==1){
GetTripTemplate()
}else if(dataLoading.value==2){
GetTripConfig()
if(ConfigId.value) GetTripConfig()
}
})
......@@ -229,7 +229,7 @@ const GetTripFiledData = async () =>{
cursors.push(temp)
}
if(y.TemplateDataSource.index!=null&&y.TemplateDataSource.index>=0){
if(value[oo].length>temp.index) value=value[oo][y.TemplateDataSource.index]
value=value[oo][y.TemplateDataSource.index]
}else{
if(value[oo].length>temp.index) value=value[oo][temp.index]
else value=value[oo]
......@@ -296,7 +296,6 @@ const GetTripFiledData = async () =>{
// 获取行程模版数据
const GetTripTemplate = async () =>{
console.log('模版数据------')
if(!searchData.value.TempId&&!TempId.value) {
let list = [
{
......@@ -341,6 +340,7 @@ const GetTripTemplate = async () =>{
}
})
})
console.log(newSlides,'=======模版数据newSlides')
slidesStore.setSlides(newSlides)
layoutsStore.setLayouts(JSON.parse(JSON.stringify(newSlides)))
CoverImgStore.setCoverImg(dataRes.data.data.CoverImg)
......@@ -359,8 +359,8 @@ const GetTripTemplate = async () =>{
queryObj.value.TempType = dataRes.data.data.TempType
slidesStore.updateSlideIndex(0)
datas.DataSource.pageType = newSlides[0].pageType
if(TempId.value&&!searchData.value.TempId) await GetTripConfig()
if(ConfigId.value==0) return
if(TempId.value&&!searchData.value.TempId) await GetTripConfig()
await GetTripFiledData()
}
} catch (error) {
......
......@@ -129,11 +129,10 @@
<!-- 生成封面图 -->
<div style="opacity: 0;position: fixed;left: 100px;top: 0;overflow: auto;z-index: -1;"
v-if="model&&model==1&&slides.length>0&&slideIndex>=0">
v-if="toolbarState=='elTemplateData'&&model&&model==1&&slides.length>0&&slideIndex>=0">
<div class="export-img-dialog">
<div class="thumbnails-view">
<div class="thumbnails FeatureImgRef" ref="FeatureImgRef">
<ThumbnailSlide
class="thumbnail"
:key="slides[slideIndex].id"
......@@ -215,9 +214,10 @@
if(item.type=="text"||item.type=="image") {
item.TemplateList = JSON.parse(JSON.stringify(TemplateList))
item.TemplateDataSource = {
Content: item.TemplateDataSource.Content,
Name: item.TemplateDataSource.Name,
Id: item.TemplateDataSource.Id,
Content: item.TemplateDataSource&&item.TemplateDataSource.Content?item.TemplateDataSource.Content:'',
Name: item.TemplateDataSource&&item.TemplateDataSource.Name?item.TemplateDataSource.Name:'',
Id: item.TemplateDataSource&&item.TemplateDataSource.Id?item.TemplateDataSource.Id: null as Number,
index: item.TemplateDataSource&&item.TemplateDataSource.index>=0?item.TemplateDataSource.index:null as Number,
}
if(datas.DataSource.pageType!=1){
let index = item.TemplateDataSource&&item.TemplateDataSource.index>=0?item.TemplateDataSource.index:null as Number
......@@ -232,12 +232,6 @@
...item,
contentStr: contentStr,
TemplateList: TemplateList,
TemplateDataSource: {
Content: item.TemplateDataSource&&item.TemplateDataSource.Content?item.TemplateDataSource.Content:'',
Name: item.TemplateDataSource&&item.TemplateDataSource.Name?item.TemplateDataSource.Name:'',
Id: item.TemplateDataSource&&item.TemplateDataSource.Id?item.TemplateDataSource.Id:null as Number,
index: item.TemplateDataSource&&item.TemplateDataSource.index>=0?item.TemplateDataSource.index:null as Number,
}
}
if(Obj) datas.DataSource.DataSourceList.push(Obj)
}
......@@ -287,7 +281,6 @@
queryObj.value.CoverImg = ''
mainMenuVisible.value = false
isCoverImgStore.setIsCoverImg(true)
console.log(FeatureImgRef.value)
let datas = await exportFeatureImg(FeatureImgRef.value, 'jpeg', 1, false,0)
if(datas){
let name = new Date().getTime()+".jpg"
......@@ -319,50 +312,8 @@
// 所有数据源
const AllDataSource = () => {
if(SourceLoading.value) setNewDatasList(datas.DataSource)
// getPageType()
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
return
if(slides.value.elements&&slides.value.elements.length==0){
return ElMessage({
showClose: true,
message: '请完善PDF内容填充',
type: 'warning',
})
}
// 绑定数据源
const newElements = slides.value.find((slide,indexs) => {
return slideIndex.value==indexs
})
getPageType()
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
let TemplateList = TemplateDataSource.value.filter(x=>{
return x.FiledType==newElements.pageType
})
datas.DataSource.DataSourceList = []
newElements.elements.forEach(slide=>{
if(slide.type=="text"||slide.type=="image") {
let contentStr
if(slide.type=="text") contentStr = getHtmlPlainText(slide.content)
if(slide.type=="image") contentStr = slide.src
let Obj = {}
Obj = {
...slide,
contentStr: contentStr,
TemplateList: TemplateList,
TemplateDataSource: {
Content: slide.TemplateDataSource&&slide.TemplateDataSource.Content?slide.TemplateDataSource.Content:'',
Name: slide.TemplateDataSource&&slide.TemplateDataSource.Name?slide.TemplateDataSource.Name:'',
Id: slide.TemplateDataSource&&slide.TemplateDataSource.Id?slide.TemplateDataSource.Id:null as Number,
},
}
if(newElements.pageType!=1){
let index = slide.TemplateDataSource&&slide.TemplateDataSource.index>=0?slide.TemplateDataSource.index:null as Number
Reflect.set(Obj.TemplateDataSource, 'index', index)
}
if(Obj){
datas.DataSource.DataSourceList.push(Obj)
}
}
})
}
......
......@@ -87,7 +87,6 @@ else if(TempId.value) TempIds = TempId.value
const datas = reactive({
DataSource:{
TravelAatas:{},
FeatureImgList: [],
ConfigId: ConfigId.value?ConfigId.value:0,
pageType: 1,//1基础 2酒店 3景 4餐
DataSourceOverlay: false,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment