Commit 7607aed0 authored by zhengke's avatar zhengke

no message

parent f9a9f0d3
import { fa } from 'element-plus/es/locale';
import { ref } from 'vue' import { ref } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { trim } from 'lodash' import { trim } from 'lodash'
...@@ -32,7 +31,6 @@ export default () => { ...@@ -32,7 +31,6 @@ export default () => {
const { isCoverImg } = storeToRefs(useScreenStore()) const { isCoverImg } = storeToRefs(useScreenStore())
const exporting = ref(false) const exporting = ref(false)
// 导出图片 // 导出图片
const exportImage = (domRef: HTMLElement, format: string, quality: number, ignoreWebfont = true) => { const exportImage = (domRef: HTMLElement, format: string, quality: number, ignoreWebfont = true) => {
exporting.value = true exporting.value = true
...@@ -52,8 +50,9 @@ export default () => { ...@@ -52,8 +50,9 @@ export default () => {
if (isCoverImg.value) { if (isCoverImg.value) {
coverImgStore.setCoverImg(dataUrl) coverImgStore.setCoverImg(dataUrl)
isCoverImgStore.setIsCoverImg(false) isCoverImgStore.setIsCoverImg(false)
} else {
saveAs(dataUrl, `${title.value}.${format}`)
} }
saveAs(dataUrl, `${title.value}.${format}`)
}).catch(() => { }).catch(() => {
exporting.value = false exporting.value = false
message.error('导出图片失败') message.error('导出图片失败')
......
...@@ -8,6 +8,7 @@ export interface ScreenState { ...@@ -8,6 +8,7 @@ export interface ScreenState {
isModel: boolean, isModel: boolean,
ConfigId:number, ConfigId:number,
TemplateType: [], TemplateType: [],
TemplateDataSource: [],
CoverImg: any, CoverImg: any,
isCoverImg: boolean, isCoverImg: boolean,
} }
...@@ -17,10 +18,11 @@ export const useScreenStore = defineStore('screen', { ...@@ -17,10 +18,11 @@ export const useScreenStore = defineStore('screen', {
screening: false, // 是否进入放映状态 screening: false, // 是否进入放映状态
market: true, market: true,
model: 0, // 是否有新增修改模版权限 model: 0, // 是否有新增修改模版权限
isModel: false,// 该团是否存在模版 isModel: false, // 该团是否存在模版
ConfigId: 0, ConfigId: 0,
TemplateType: [], TemplateType: [], // 数据源分类
CoverImg: null, TemplateDataSource: [], // 所有数据源
CoverImg: null, // 封面图
isCoverImg: false, // 封面 isCoverImg: false, // 封面
}), }),
...@@ -47,11 +49,13 @@ export const useScreenStore = defineStore('screen', { ...@@ -47,11 +49,13 @@ export const useScreenStore = defineStore('screen', {
this.TemplateType = TemplateType this.TemplateType = TemplateType
}, },
setCoverImg(CoverImg: any) { setCoverImg(CoverImg: any) {
console.log(CoverImg, '-------')
this.CoverImg = CoverImg this.CoverImg = CoverImg
}, },
setIsCoverImg(isCoverImg: boolean) { setIsCoverImg(isCoverImg: boolean) {
this.isCoverImg = isCoverImg this.isCoverImg = isCoverImg
},
setTemplateDataSource(TemplateDataSource: []) {
this.TemplateDataSource = TemplateDataSource
} }
}, },
}) })
\ No newline at end of file
...@@ -181,7 +181,7 @@ const UploadPsd = () => { ...@@ -181,7 +181,7 @@ const UploadPsd = () => {
// 新增修改模版 // 新增修改模版
const SetTripTemplateSlide = async () => { const SetTripTemplateSlide = async () => {
console.log(JSON.parse(queryObj.value.TempData),'--------') // console.log(JSON.parse(queryObj.value.TempData),'--------')
try { try {
console.log(queryObj.value,'新增修改模版---') console.log(queryObj.value,'新增修改模版---')
let TemplateRes = await ConfigService.SetTripTemplateSlide(queryObj.value); let TemplateRes = await ConfigService.SetTripTemplateSlide(queryObj.value);
...@@ -218,7 +218,7 @@ const setTemplate = async () =>{ ...@@ -218,7 +218,7 @@ const setTemplate = async () =>{
// console.log(JSON.stringify(slides.value),'----保存接口',queryObj.value) // console.log(JSON.stringify(slides.value),'----保存接口',queryObj.value)
if(model.value&&userInfo.value.IsEditTripTemplate==1){ if(model.value&&userInfo.value.IsEditTripTemplate==1){
if(CoverImg&&CoverImg.value) queryObj.value.CoverImg = CoverImg.value if(CoverImg&&CoverImg.value) queryObj.value.CoverImg = CoverImg.value
if(queryObj.value.Title==''||!queryObj.value.LineId||!queryObj.value.LtId if(queryObj.value.Title==''||!queryObj.value.LineId||!queryObj.value.LtId
||queryObj.value.CoverImg=='' ||queryObj.value.CoverImg==''
||queryObj.value.CountryName==''||queryObj.value.SeasonName=='' ||queryObj.value.CountryName==''||queryObj.value.SeasonName==''
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</div> </div>
<div class="configs"> <div class="configs">
<div class="row"> <div class="row">
<div class="title">导出格式:</div> <div class="title">{{isCoverImg?'生成格式:':'导出格式:'}}</div>
<RadioGroup <RadioGroup
class="config-item" class="config-item"
v-model:value="format" v-model:value="format"
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</RadioGroup> </RadioGroup>
</div> </div>
<div class="row"> <div class="row">
<div class="title">导出范围:</div> <div class="title">{{isCoverImg?'生成范围:':'导出范围:'}}</div>
<RadioGroup <RadioGroup
class="config-item" class="config-item"
v-model:value="rangeType" v-model:value="rangeType"
...@@ -65,18 +65,19 @@ ...@@ -65,18 +65,19 @@
</div> </div>
<div class="btns"> <div class="btns">
<Button class="btn export" type="primary" @click="expImage()">导出图片</Button> <Button class="btn export" type="primary" @click="expImage()">
{{isCoverImg?'生成封面':'导出图片'}}</Button>
<Button class="btn close" @click="emit('close')">关闭</Button> <Button class="btn close" @click="emit('close')">关闭</Button>
</div> </div>
<FullscreenSpin :loading="exporting" tip="正在导出..." /> <FullscreenSpin :loading="exporting" :tip="isCoverImg?'正在生成...':'正在导出...'" />
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useSlidesStore } from '@/store' import { useSlidesStore, useScreenStore } from '@/store'
import useExport from '@/hooks/useExport' import useExport from '@/hooks/useExport'
import ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue' import ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'
...@@ -91,8 +92,9 @@ const emit = defineEmits<{ ...@@ -91,8 +92,9 @@ const emit = defineEmits<{
(event: 'close'): void (event: 'close'): void
}>() }>()
const { slides, currentSlide } = storeToRefs(useSlidesStore()) const { slides, currentSlide } = storeToRefs(useSlidesStore())
const { isCoverImg } = storeToRefs(useScreenStore())
const imageThumbnailsRef = ref<HTMLElement>() const imageThumbnailsRef = ref<HTMLElement>()
const rangeType = ref<'all' | 'current' | 'custom'>('current') const rangeType = ref<'all' | 'current' | 'custom'>('current')
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
@update:value="key => setDialogForExport(key as DialogForExportTypes)" @update:value="key => setDialogForExport(key as DialogForExportTypes)"
/> />
<div class="content"> <div class="content">
<component :is="currentDialogComponent" @close="setDialogForExport('')"></component> <component :is="currentDialogComponent" @close="setDialogForExport(''),setDialogIsCoverImg()"></component>
</div> </div>
</div> </div>
</template> </template>
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from 'vue' import { computed } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useMainStore } from '@/store' import { useMainStore, useScreenStore } from '@/store'
import type { DialogForExportTypes } from '@/types/export' import type { DialogForExportTypes } from '@/types/export'
import ExportImage from './ExportImage.vue' import ExportImage from './ExportImage.vue'
...@@ -30,11 +30,17 @@ interface TabItem { ...@@ -30,11 +30,17 @@ interface TabItem {
label: string label: string
} }
const isCoverImgStore = useScreenStore()
const mainStore = useMainStore() const mainStore = useMainStore()
const { dialogForExport } = storeToRefs(mainStore) const { dialogForExport } = storeToRefs(mainStore)
const { isCoverImg } = storeToRefs(isCoverImgStore)
const setDialogForExport = mainStore.setDialogForExport const setDialogForExport = mainStore.setDialogForExport
const setDialogIsCoverImg = () => {
isCoverImgStore.setIsCoverImg(false)
}
const tabs: TabItem[] = [ const tabs: TabItem[] = [
{ key: 'pptist', label: '导出 pptist 文件' }, { key: 'pptist', label: '导出 pptist 文件' },
{ key: 'pptx', label: '导出 PPTX' }, { key: 'pptx', label: '导出 PPTX' },
...@@ -51,8 +57,8 @@ const currentDialogComponent = computed<unknown>(() => { ...@@ -51,8 +57,8 @@ const currentDialogComponent = computed<unknown>(() => {
'pptx': ExportPPTX, 'pptx': ExportPPTX,
'pptist': ExportSpecificFile, 'pptist': ExportSpecificFile,
} }
if (dialogForExport.value) return dialogMap[dialogForExport.value] || null if (dialogForExport.value) return dialogMap[dialogForExport.value] || isCoverImgStore.setIsCoverImg(false)
return null return isCoverImgStore.setIsCoverImg(false)
}) })
</script> </script>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<template #content> <template #content>
<LayoutPool @select="slide => { createSlideByTemplate(slide); presetLayoutPopoverVisible = false }" /> <LayoutPool @select="slide => { createSlideByTemplate(slide); presetLayoutPopoverVisible = false }" />
</template> </template>
<div class="select-btn"><IconDown /></div> <div class="select-btn" v-if="layoutSlides.length>0"><IconDown /></div>
</Popover> </Popover>
</div> </div>
...@@ -69,13 +69,13 @@ const slidesStore = useSlidesStore() ...@@ -69,13 +69,13 @@ const slidesStore = useSlidesStore()
const layoutsStore = useSlidesStore() const layoutsStore = useSlidesStore()
const keyboardStore = useKeyboardStore() const keyboardStore = useKeyboardStore()
const { selectedSlidesIndex: _selectedSlidesIndex, thumbnailsFocus } = storeToRefs(mainStore) const { selectedSlidesIndex: _selectedSlidesIndex, thumbnailsFocus } = storeToRefs(mainStore)
const { slides, slideIndex } = storeToRefs(slidesStore) const { slides, slideIndex, layoutSlides } = storeToRefs(slidesStore)
const { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore) const { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)
const { slidesLoadLimit } = useLoadSlides() const { slidesLoadLimit } = useLoadSlides()
const TemplateTypeStore = useScreenStore() const TemplateTypeStore = useScreenStore()
const { TemplateType } = storeToRefs(TemplateTypeStore) const CoverImgStore = useScreenStore()
const { TemplateDataSource, TemplateType } = storeToRefs(TemplateTypeStore)
const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value]) const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])
const presetLayoutPopoverVisible = ref(false) const presetLayoutPopoverVisible = ref(false)
...@@ -209,6 +209,7 @@ const GetTripTemplate = async () =>{ ...@@ -209,6 +209,7 @@ const GetTripTemplate = async () =>{
} }
slidesStore.setSlides(newSlides) slidesStore.setSlides(newSlides)
layoutsStore.setLayouts(JSON.parse(JSON.stringify(newSlides))) layoutsStore.setLayouts(JSON.parse(JSON.stringify(newSlides)))
CoverImgStore.setCoverImg(dataRes.data.data.CoverImg)
queryObj.value.TempId = dataRes.data.data.TempId queryObj.value.TempId = dataRes.data.data.TempId
queryObj.value.LineId = dataRes.data.data.LineId queryObj.value.LineId = dataRes.data.data.LineId
queryObj.value.LineName = dataRes.data.data.LineName queryObj.value.LineName = dataRes.data.data.LineName
...@@ -240,7 +241,7 @@ const changeSlideIndex = (index: number) => { ...@@ -240,7 +241,7 @@ const changeSlideIndex = (index: number) => {
return index==indexs return index==indexs
}) })
datas.DataSource.pageType = newElements.pageType datas.DataSource.pageType = newElements.pageType
let TemplateList = TemplateType.value.filter(x=>{ let TemplateList = TemplateDataSource.value.filter(x=>{
return x.FiledType==newElements.pageType return x.FiledType==newElements.pageType
}) })
datas.DataSource.DataSourceList = [] datas.DataSource.DataSourceList = []
......
...@@ -8,12 +8,16 @@ ...@@ -8,12 +8,16 @@
></div> ></div>
<div class="row"> <div class="row">
<Button style="flex: 1;" @click="setDialogForExport('image')"> <Button style="flex: 1;" @click="setDialogForExport('image')">
<span class="Required" v-if="!CoverImg">*</span>
{{CoverImg?'重新生成封面图':'生成封面图'}} {{CoverImg?'重新生成封面图':'生成封面图'}}
</Button> </Button>
</div> </div>
</div> </div>
<div class="row q-mt-md"> <div class="row q-mt-md">
<Button style="flex: 1;" @click="AllDataSource()">数据源</Button> <Button style="flex: 1;" @click="AllDataSource()">
<span class="Required" v-if="!CoverImg">*</span>
数据源
</Button>
</div> </div>
<p class="q-mt-md"><span class="Required q-mr-md">*</span>页面类型:</p> <p class="q-mt-md"><span class="Required q-mr-md">*</span>页面类型:</p>
<div class="row wrap q-mt-md"> <div class="row wrap q-mt-md">
...@@ -123,7 +127,7 @@ ...@@ -123,7 +127,7 @@
const { slides, slideIndex } = storeToRefs(slidesStore) const { slides, slideIndex } = storeToRefs(slidesStore)
const isCoverImgStore = useScreenStore() const isCoverImgStore = useScreenStore()
const { TemplateType, CoverImg, isCoverImg } = storeToRefs(useScreenStore()) const { TemplateDataSource, TemplateType, CoverImg, isCoverImg } = storeToRefs(useScreenStore())
const mainStore = useMainStore() const mainStore = useMainStore()
const mainMenuVisible = ref(false) const mainMenuVisible = ref(false)
...@@ -169,7 +173,7 @@ ...@@ -169,7 +173,7 @@
return slideIndex.value==indexs return slideIndex.value==indexs
}) })
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
let TemplateList = TemplateType.value.filter(x=>{ let TemplateList = TemplateDataSource.value.filter(x=>{
return x.FiledType==newElements.pageType return x.FiledType==newElements.pageType
}) })
datas.DataSource.DataSourceList = [] datas.DataSource.DataSourceList = []
...@@ -184,9 +188,9 @@ ...@@ -184,9 +188,9 @@
FiledTypeStr: FiledTypeStr, FiledTypeStr: FiledTypeStr,
TemplateList: TemplateList, TemplateList: TemplateList,
TemplateDataSource: { TemplateDataSource: {
Content: slide.TemplateDataSource.Content?slide.TemplateDataSource.Content:'', Content: slide.TemplateDataSource&&slide.TemplateDataSource.Content?slide.TemplateDataSource.Content:'',
Name: slide.TemplateDataSource.Name?slide.TemplateDataSource.Name:'', Name: slide.TemplateDataSource&&slide.TemplateDataSource.Name?slide.TemplateDataSource.Name:'',
Id: slide.TemplateDataSource.Id?slide.TemplateDataSource.Id:null as Number Id: slide.TemplateDataSource&&slide.TemplateDataSource.Id?slide.TemplateDataSource.Id:null as Number
}, },
} }
if(Obj){ if(Obj){
......
...@@ -78,6 +78,7 @@ const datas = reactive({ ...@@ -78,6 +78,7 @@ const datas = reactive({
const slidesStore = useSlidesStore() const slidesStore = useSlidesStore()
const TemplateTypeStore = useScreenStore() const TemplateTypeStore = useScreenStore()
const TempDataSourceStore = useScreenStore()
const { slides, slideIndex } = storeToRefs(slidesStore) const { slides, slideIndex } = storeToRefs(slidesStore)
const { TemplateType } = storeToRefs(TemplateTypeStore) const { TemplateType } = storeToRefs(TemplateTypeStore)
const pageTypesList = ref([] as any) const pageTypesList = ref([] as any)
...@@ -103,6 +104,7 @@ const GetTripFiled = async () =>{ ...@@ -103,6 +104,7 @@ const GetTripFiled = async () =>{
} }
}) })
TemplateTypeStore.setTemplateType(pageTypesList.value) TemplateTypeStore.setTemplateType(pageTypesList.value)
TempDataSourceStore.setTemplateDataSource(TemplateRes.data.data)
} }
} catch (error) { } catch (error) {
console.log("TemplateGetTripFiled", error); console.log("TemplateGetTripFiled", error);
......
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