Commit 4a302fb1 authored by 罗超's avatar 罗超

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

parents 4fb2d184 0052a0a9
......@@ -40,6 +40,7 @@ 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())
......@@ -52,9 +53,18 @@ const userLoginHandler = async ()=>{
let userId = 1
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)
TempIdStore.setTempId(TempId)
pageIndexStore.setPageIndex(pageIndex)
marketStore.setMarket(!market)
}
ConfigIdStore.setConfigId(ConfigId)
modelStore.setModel(model)
if(!userInfo.value.EmployeeId){
......
......@@ -60,5 +60,12 @@ class ConfigService{
static async GetTemplagePageAsync(params : any):Promise<HttpResponse>{
return Api.Post("triptemplate_GetTripTemplatePage",params)
}
/**
* 图片素材分页列表
*/
static async GetPicList(params : any):Promise<HttpResponse>{
return Api.Post("hotel_post_GetPicList",params)
}
}
export default ConfigService;
\ No newline at end of file
......@@ -15,7 +15,9 @@ export interface ScreenState {
dataLoading: number,
FeatureImg: any,
SourceLoading: boolean,
pageIndex: number,
imgPoolVisible: boolean,
imgReplaceVisible: boolean,
}
export const useScreenStore = defineStore('screen', {
......@@ -33,6 +35,9 @@ export const useScreenStore = defineStore('screen', {
dataLoading: 0, // 记录保存是否成功
FeatureImg: [], // 行程特色图
SourceLoading: false, // 记录数据源是否更改
pageIndex: 0,//需要生成图的行程特色
imgPoolVisible: false,//新增上传图片弹窗
imgReplaceVisible: false,//替换图片弹窗
}),
actions: {
......@@ -77,6 +82,15 @@ export const useScreenStore = defineStore('screen', {
},
setSourceLoading(SourceLoading: boolean) {
this.SourceLoading = SourceLoading
},
setPageIndex(pageIndex: number){
this.pageIndex = pageIndex
},
setImgPoolVisible(imgPoolVisible: boolean) {
this.imgPoolVisible = imgPoolVisible
},
setImgReplaceVisible(imgReplaceVisible: boolean) {
this.imgReplaceVisible = imgReplaceVisible
}
},
})
\ No newline at end of file
This diff is collapsed.
......@@ -20,9 +20,10 @@
<IconDown class="arrow" />
</Popover>
</div>
<FileInput @change="files => insertImageElement(files)">
<IconPicture class="handler-item" v-tooltip="'插入图片'" />
</FileInput>
<!-- <FileInput @change="files => insertImageElement(files)">
<IconPicture class="handler-item" v-tooltip="'插入图片'" />
</FileInput> imgPoolVisible-->
<IconPicture class="handler-item" v-tooltip="'插入图片'" @click="getImgVis()"/>
<Popover trigger="click" v-model:value="shapePoolVisible">
<template #content>
<ShapePool @select="shape => drawShape(shape)" />
......@@ -89,13 +90,16 @@
@update="data => { createLatexElement(data); latexEditorVisible = false }"
/>
</Modal>
<!-- 上传图片 -->
<UploadPicture v-if="imgPoolVisible"></UploadPicture>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { ref, provide } from 'vue'
import { storeToRefs } from 'pinia'
import { useMainStore, useSnapshotStore } from '@/store'
import { useMainStore, useSnapshotStore, useScreenStore } from '@/store'
import { getImageDataURL } from '@/utils/image'
import type { ShapePoolItem } from '@/configs/shapes'
import type { LinePoolItem } from '@/configs/lines'
......@@ -114,6 +118,7 @@ import Modal from '@/components/Modal.vue'
import Divider from '@/components/Divider.vue'
import Popover from '@/components/Popover.vue'
import PopoverMenuItem from '@/components/PopoverMenuItem.vue'
import UploadPicture from './UploadPicture.vue'
const mainStore = useMainStore()
const { creatingElement, creatingCustomShape, showSelectPanel, showSearchPanel } = storeToRefs(mainStore)
......@@ -121,6 +126,8 @@ const { canUndo, canRedo } = storeToRefs(useSnapshotStore())
const { redo, undo } = useHistorySnapshot()
const { imgPoolVisible } = storeToRefs(useScreenStore())
const {
scaleCanvas,
setCanvasScalePercentage,
......@@ -145,6 +152,8 @@ const {
createAudioElement,
} = useCreateElement()
provide('imgType',1)
const insertImageElement = (files: FileList) => {
const imageFile = files[0]
if (!imageFile) return
......@@ -159,6 +168,10 @@ const mediaInputVisible = ref(false)
const latexEditorVisible = ref(false)
const textTypeSelectVisible = ref(false)
const getImgVis = () =>{
imgPoolVisible.value = true
}
// 绘制文字范围
const drawText = (vertical = false) => {
mainStore.setCreatingElement({
......
......@@ -93,8 +93,8 @@
datas.loading= false
sourceLoadingStore.setSourceLoading(false)
}
if(!n&&datas.loading){
setNewDatasList(datas.DataSource)
if(!n){
}
})
const setType = (x) =>{
......@@ -132,6 +132,7 @@
const OffDataSource = () =>{
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
setNewDatasList(datas.DataSource)
}
......
......@@ -104,7 +104,8 @@
<FullscreenSpin :loading="exporting" tip="正在导入..." />
<Psd-Upload :visible="psdVisibleStatus" @closed="psdVisibleStatus=false"></Psd-Upload>
</div>
<div v-if="ConfigId" style="opacity: 0;position: absolute;left: 100px;top: 0;bottom: 0;overflow: auto;z-index: -1;">
<!--
<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">
......@@ -117,7 +118,7 @@
</div>
</div>
</div>
</div>
</div> -->
</template>
......@@ -331,7 +332,7 @@ const SetTripTemplateConfig = async () => {
ConfigId: ConfigId.value,
TempId: queryObj.value.TempId,
TempData: queryObj.value.TempData,
FeatureImg: datas.FeatureImgList
// FeatureImg: datas.FeatureImgList
}
let TemplateRes = await ConfigService.SetSetTripConfig(queryMsg);
if (TemplateRes.data.resultCode == 1) {
......@@ -432,7 +433,7 @@ const setTemplate = async () =>{
await SetTripTemplateSlide()
}
if(ConfigId.value){
await testHandler()
await SetTripTemplateConfig()
}
}
......
<template>
<div
<div
class="thumbnails"
@mousedown="() => setThumbnailsFocus(true)"
v-click-outside="() => setThumbnailsFocus(false)"
......@@ -44,6 +45,7 @@
<div class="page-number">幻灯片 {{slideIndex + 1}} / {{slides.length}}</div>
</div>
</template>
<script lang="ts" setup>
......@@ -81,7 +83,7 @@ const { slidesLoadLimit } = useLoadSlides()
const TemplateTypeStore = useScreenStore()
const CoverImgStore = useScreenStore()
const dataLoadingStore = useScreenStore()
const { ConfigId, TemplateDataSource, TemplateType, dataLoading, TempId, SourceLoading } = storeToRefs(TemplateTypeStore)
const { model, ConfigId, TemplateDataSource, TemplateType, dataLoading, TempId, SourceLoading } = storeToRefs(TemplateTypeStore)
const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])
const { setNewDatasList } = useEditor()
......
......@@ -52,19 +52,22 @@
<Divider />
<ElementShadow />
<Divider />
<!--
<FileInput @change="files => replaceImage(files)">
<Button class="full-width-btn"><IconTransform class="btn-icon" /> 替换图片</Button>
</FileInput>
</FileInput> -->
<Button class="full-width-btn" @click="getImgVis()"><IconTransform class="btn-icon"/> 替换图片</Button>
<Button class="full-width-btn" @click="resetImage()"><IconUndo class="btn-icon" /> 重置样式</Button>
<Button class="full-width-btn" @click="setBackgroundImage()"><IconTheme class="btn-icon" /> 设为背景</Button>
<!-- 上传图片 -->
<UploadPicture v-if="imgReplaceVisible"></UploadPicture>
</div>
</template>
<script lang="ts" setup>
import { type Ref, ref } from 'vue'
import { type Ref, ref, provide } from 'vue'
import { storeToRefs } from 'pinia'
import { useMainStore, useSlidesStore } from '@/store'
import { useMainStore, useSlidesStore, useScreenStore } from '@/store'
import type { PPTImageElement, SlideBackground } from '@/types/slides'
import { CLIPPATHS } from '@/configs/imageClip'
import { getImageDataURL } from '@/utils/image'
......@@ -81,6 +84,7 @@ import Divider from '@/components/Divider.vue'
import Button from '@/components/Button.vue'
import ButtonGroup from '@/components/ButtonGroup.vue'
import Popover from '@/components/Popover.vue'
import UploadPicture from '../../CanvasTool/UploadPicture.vue'
const shapeClipPathOptions = CLIPPATHS
const ratioClipOptions = [
......@@ -127,6 +131,14 @@ const clipPanelVisible = ref(false)
const { addHistorySnapshot } = useHistorySnapshot()
const { imgReplaceVisible } = storeToRefs(useScreenStore())
provide('imgType',2)
const getImgVis = () =>{
imgReplaceVisible.value = true
}
// 打开自由裁剪
const clipImage = () => {
mainStore.setClipingImageElementId(handleElementId.value)
......
......@@ -129,7 +129,7 @@
<!-- 生成封面图 -->
<div style="opacity: 0;position: absolute;left: 100px;top: 0;bottom: 0;z-index: -1;"
v-if="model&&slides.length>0&&slideIndex>=0">
v-if="model&&model==1&&slides.length>0&&slideIndex>=0">
<div class="export-img-dialog">
<div class="thumbnails-view">
<div class="thumbnails" ref="FeatureImgRef">
......@@ -158,6 +158,7 @@
import useExport from '@/hooks/useExport'
import ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'
import AliyunUpload from '@/utils/upload/aliyun'
import useEditor from '@/utils/Editor/index'
const datas = reactive({
DataSource:{},
......@@ -192,6 +193,7 @@
const FeatureImgRef = ref(null)
const { exportFeatureImg } = useExport()
const { setNewDatasList } = useEditor()
watch(() => datas.DataSource.pageType, (n,o) => {
......@@ -211,9 +213,9 @@
if(item.type=="text"||item.type=="image") {
item.TemplateList = JSON.parse(JSON.stringify(TemplateList))
item.TemplateDataSource = {
Content: '',
Name: '',
Id: null,
Content: item.TemplateDataSource.Content,
Name: item.TemplateDataSource.Name,
Id: item.TemplateDataSource.Id,
}
if(datas.DataSource.pageType!=1){
let index = item.TemplateDataSource&&item.TemplateDataSource.index>=0?item.TemplateDataSource.index:null as Number
......@@ -309,6 +311,7 @@
// 所有数据源
const AllDataSource = () => {
setNewDatasList(datas.DataSource)
getPageType()
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
return
......
<template>
<div class="pptist-editor">
<EditorHeader class="layout-header" />
<div class="layout-content">
......@@ -28,6 +29,23 @@
>
<ExportDialog />
</Modal>
<div v-if="model&&model==3"
style="opacity: 1;position: fixed;left: 0;right: 0; top: 0;bottom: 0;overflow: auto;z-index: 99999999;">
<div class="export-img-dialog">
<div class="thumbnails-view">
<div class="thumbnails" v-for="slide in slides">
<ThumbnailSlide
class="thumbnail"
:key="slide.id"
:slide="slide"
:size="viewportRatio==0.7069?1754:1240"
/>
</div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
......@@ -51,11 +69,13 @@ import Modal from '@/components/Modal.vue'
import DataaSource from './DataaSource/index.vue'
import ConfigService from '@/services/ConfigService'
import ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'
const slidesStore = useSlidesStore()
const TemplateTypeStore = useScreenStore()
const TempDataSourceStore = useScreenStore()
const { slides, slideIndex } = storeToRefs(slidesStore)
const { TemplateType, ConfigId, TempId} = storeToRefs(TemplateTypeStore)
const { slides, slideIndex, viewportRatio } = storeToRefs(slidesStore)
const { model, TemplateType, ConfigId, TempId} = storeToRefs(TemplateTypeStore)
const pageTypesList = ref([] as any)
const searchData = ref({} as any)
searchData.value = inject(injectKeyTemplate)
......
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