Commit b0b2e3cc authored by zhengke's avatar zhengke

no message

parent 027d6589
...@@ -5,7 +5,7 @@ import Api,{ HttpResponse, Result } from './../utils/request'; ...@@ -5,7 +5,7 @@ import Api,{ HttpResponse, Result } from './../utils/request';
*/ */
class ConfigService{ class ConfigService{
/** /**
* 获取模板数据源列表 * 获取绑定数据源列表
*/ */
static async TemplateGetTripFiled(params : any):Promise<HttpResponse>{ static async TemplateGetTripFiled(params : any):Promise<HttpResponse>{
return Api.Post("triptemplate_GetTripFiled",params) return Api.Post("triptemplate_GetTripFiled",params)
......
...@@ -63,20 +63,54 @@ ...@@ -63,20 +63,54 @@
// TemplateDataSource:[] // TemplateDataSource:[]
}, },
}) })
datas.DataSource = inject(injectKeyDataSource).DataSource datas.DataSource = inject(injectKeyDataSource)
const multipleTableRef = ref<InstanceType<typeof any>>() const multipleTableRef = ref<InstanceType<typeof any>>()
const multipleSelection = ref<[]>([]) const multipleSelection = ref<[]>([])
const slidesStore = useSlidesStore()
const { slides, slideIndex } = storeToRefs(slidesStore)
const slidesData = slides.value
watch(datas.DataSource, (n, o) => {
const savelides = []
const newSlides = []
let obj = slidesData.find((x,index)=>{
return slideIndex.value == index
})
obj&&obj.elements&&obj.elements.forEach(x=>{
let dataObj = datas.DataSource.DataSourceList.find(y=>{
return y.id == x.id
})
if(dataObj){
x = dataObj
}
savelides.push(x)
})
obj.elements = savelides
slidesData.forEach((x,index)=>{
if(slideIndex.value == index){
x.elements = obj.elements
}
newSlides.push(x)
})
if(obj.TemplateDataSource&&obj.TemplateDataSource.Id){
slidesStore.setSlides(newSlides)
}
})
watch(datas.DataSource, (n, o) => { watch(datas.DataSource, (n, o) => {
}) })
// 数据源关键数据赋值
const setTemplateDataSource = (Id,index) => { const setTemplateDataSource = (Id,index) => {
datas.DataSource.DataSourceList.forEach((x,indexs)=>{ datas.DataSource.DataSourceList.forEach((x,indexs)=>{
if(index==indexs){ if(index==indexs){
x. let obj = x.TemplateList.find(y=>{
return y.Id==x.TemplateDataSource.Id
})
x.TemplateDataSource.Content = obj.Content
x.TemplateDataSource.Name = obj.Name
} }
}) })
} }
......
...@@ -91,7 +91,7 @@ const { ...@@ -91,7 +91,7 @@ const {
const datas = reactive({ const datas = reactive({
DataSource:{} DataSource:{}
}) })
datas.DataSource = inject(injectKeyDataSource).DataSource datas.DataSource = inject(injectKeyDataSource)
// 页面被切换时 // 页面被切换时
const thumbnailsRef = ref<InstanceType<typeof Draggable>>() const thumbnailsRef = ref<InstanceType<typeof Draggable>>()
...@@ -128,35 +128,48 @@ const getHtmlPlainText = (html_str) => { ...@@ -128,35 +128,48 @@ const getHtmlPlainText = (html_str) => {
// 切换页面 // 切换页面
const changeSlideIndex = (index: number) => { const changeSlideIndex = (index: number) => {
mainStore.setActiveElementIdList([]) mainStore.setActiveElementIdList([])
// 数据源 // 绑定数据源
const newElements = slides.value.find((slide,indexs) => { const newElements = slides.value.find((slide,indexs) => {
return index==indexs return index==indexs
}) })
datas.DataSource.DataSourceList = [] datas.DataSource.DataSourceList = []
newElements.elements.forEach(slide=>{ newElements.elements.forEach(slide=>{
let Obj = {}
if(slide.type=="text"){ if(slide.type=="text"){
let Obj = { if(slide.FiledTypeStr){
...slide, Obj = {
FiledTypeStr: getHtmlPlainText(slide.content), ...slide,
TemplateList: datas.DataSource.jc, }
TemplateDataSource: { }else{
Content: "", Obj = {
Name: "", ...slide,
Id: null as Number FiledTypeStr: getHtmlPlainText(slide.content),
}, TemplateList: datas.DataSource.jc,
TemplateDataSource: {
Content: '',
Name: '',
Id: null as Number
},
}
} }
datas.DataSource.DataSourceList.push(Obj) datas.DataSource.DataSourceList.push(Obj)
} }
if(slide.type=="image"){ if(slide.type=="image"){
let Obj = { if(slide.FiledTypeStr){
...slide, Obj = {
FiledTypeStr: slide.src, ...slide,
TemplateList: datas.DataSource.jd, }
TemplateDataSource: { }else{
Content: "", Obj = {
Name: "", ...slide,
Id: null as Number FiledTypeStr: getHtmlPlainText(slide.content),
}, TemplateList: datas.DataSource.jd,
TemplateDataSource: {
Content: '',
Name: '',
Id: null as Number
},
}
} }
datas.DataSource.DataSourceList.push(Obj) datas.DataSource.DataSourceList.push(Obj)
} }
......
...@@ -345,10 +345,66 @@ const { ...@@ -345,10 +345,66 @@ const {
} = useSlideTheme() } = useSlideTheme()
datas.DataSource = inject(injectKeyDataSource).DataSource datas.DataSource = inject(injectKeyDataSource)
//提取字符串中的文字
const getHtmlPlainText = (html_str) => {
let re = new RegExp('<[^<>]+>', 'g')
if (html_str) {
let text = html_str.replace(re, '')
return text
} else {
return ''
}
}
// 所有数据源 // 所有数据源
const AllDataSource = () => { const AllDataSource = () => {
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
// 绑定数据源
const newElements = slides.value.find((slide,indexs) => {
return slideIndex.value==indexs
})
datas.DataSource.DataSourceList = []
newElements.elements.forEach(slide=>{
let Obj = {}
if(slide.type=="text"){
if(slide.FiledTypeStr){
Obj = {
...slide,
}
}else{
Obj = {
...slide,
FiledTypeStr: getHtmlPlainText(slide.content),
TemplateList: datas.DataSource.jc,
TemplateDataSource: {
Content: '',
Name: '',
Id: null as Number
},
}
}
datas.DataSource.DataSourceList.push(Obj)
}
if(slide.type=="image"){
if(slide.FiledTypeStr){
Obj = {
...slide,
}
}else{
Obj = {
...slide,
FiledTypeStr: getHtmlPlainText(slide.content),
TemplateList: datas.DataSource.jd,
TemplateDataSource: {
Content: '',
Name: '',
Id: null as Number
},
}
}
datas.DataSource.DataSourceList.push(Obj)
}
})
} }
// 设置背景模式:纯色、图片、渐变色 // 设置背景模式:纯色、图片、渐变色
......
...@@ -30,12 +30,13 @@ ...@@ -30,12 +30,13 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref,reactive,provide } from 'vue' import { ref, reactive, provide, watch } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useMainStore } from '@/store' import { useMainStore } from '@/store'
import useGlobalHotkey from '@/hooks/useGlobalHotkey' import useGlobalHotkey from '@/hooks/useGlobalHotkey'
import usePasteEvent from '@/hooks/usePasteEvent' import usePasteEvent from '@/hooks/usePasteEvent'
import { injectKeyDataSource } from '@/types/injectKey' import { injectKeyDataSource } from '@/types/injectKey'
import { useSlidesStore } from '@/store'
import EditorHeader from './EditorHeader/index.vue' import EditorHeader from './EditorHeader/index.vue'
import Canvas from './Canvas/index.vue' import Canvas from './Canvas/index.vue'
...@@ -93,10 +94,11 @@ const closeExportDialog = () => mainStore.setDialogForExport('') ...@@ -93,10 +94,11 @@ const closeExportDialog = () => mainStore.setDialogForExport('')
const remarkHeight = ref(40) const remarkHeight = ref(40)
useGlobalHotkey() useGlobalHotkey()
usePasteEvent() usePasteEvent()
provide(injectKeyDataSource,datas) provide(injectKeyDataSource,datas.DataSource)
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
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