Commit d45ff1fc authored by zhengke's avatar zhengke

no message

parent e73c342c
...@@ -4,6 +4,12 @@ import Api,{ HttpResponse, Result } from './../utils/request'; ...@@ -4,6 +4,12 @@ import Api,{ HttpResponse, Result } from './../utils/request';
* 配置相关方法 * 配置相关方法
*/ */
class ConfigService{ class ConfigService{
/**
* 获取模板数据源列表
*/
static async TemplateGetTripFiled(params : any):Promise<HttpResponse>{
return Api.Post("triptemplate_GetTripFiled",params)
}
/** /**
* *
......
<template> <template>
<div v-if="datas.DataSource.DataSourceOverlay"> <div v-if="datas.DataSource.DataSourceOverlay">
<div class="DataaSourceOverlay" @click="OffDataSource"></div> <div class="DataaSourceOverlay" @click="OffDataSource"></div>
<div class="DataaSource"> <div class="DataaSource">
<el-table <div class="DataaSourceList">
:data="datas.DataSource.DataSourceList" <el-table
style="width: 100%"> ref="multipleTableRef"
<el-table-column :data="datas.DataSource.DataSourceList"
fixed style="width: 100%"
prop="date" border
label="基础数据" @selection-change="handleSelectionChange">
width="300"> <el-table-column type="selection" width="40" />
<template #default="scope"> <el-table-column
<div class="DataaSourceL"> prop=""
<div v-if="scope.row.type=='text'"> label="基础数据">
{{scope.row.FiledTypeStr}} <template #default="scope">
</div> <div class="DataaSourceL">
<div v-if="scope.row.type=='image'"> <div v-if="scope.row.type=='text'">
<el-image {{scope.row.FiledTypeStr}}
style="width: 20px; height: 20px" </div>
:src="scope.row.FiledTypeStr" <div v-if="scope.row.type=='image'">
:preview-src-list="[scope.row.FiledTypeStr]"> <img style="width: 20px; height: 20px"
</el-image> :src="scope.row.FiledTypeStr" />
</div> </div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="" prop=""
label="数据源"> label="绑定数据源"
<template #default="scope"> width="200">
<div class="DataaSourceR"> <template #default="scope">
<div v-if="scope.row.type=='text'"> <div class="DataaSourceR" v-if="scope.row.TemplateList">
{{scope.row.content}} <el-select v-model="scope.row.TemplateObj.Name" class="m-2" placeholder="Select">
</div> <el-option
<div v-else> v-for="item in scope.row.TemplateList"
<el-image :key="item.Id"
style="width: 50px; height: 50px" :label="item.Name"
:src="scope.row.FiledTypeStr" :value="item.Id"
:preview-src-list="[scope.row.FiledTypeStr]"> />
</el-image> </el-select>
</div> </div>
</div> </template>
</template> </el-table-column>
</el-table-column> </el-table>
</el-table> </div>
</div>
</div> </div>
</div> </template>
</template>
<script lang="ts" setup> <script lang="ts" setup>
// import { ElTable } from 'element-plus'
import { computed, nextTick, ref, watch, reactive, inject } from 'vue' import { computed, nextTick, ref, watch, reactive, inject } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useSlidesStore } from '@/store' import { useSlidesStore } from '@/store'
import { injectKeyDataSource } from '@/types/injectKey' import { injectKeyDataSource } from '@/types/injectKey'
const datas = reactive({
DataSource:{} const datas = reactive({
}) DataSource:{
datas.DataSource = inject(injectKeyDataSource) DataSourceOverlay: false,
watch(datas.DataSource, (n, o) => { DataSourceList:[],
TemplateDataSource:[]
}) },
const OffDataSource = () =>{ })
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay datas.DataSource = inject(injectKeyDataSource).DataSource
}
const multipleTableRef = ref<InstanceType<typeof any>>()
const multipleSelection = ref<[]>([])
console.log(datas.DataSource)
watch(datas.DataSource, (n, o) => {
})
const toggleSelection = (rows?: []) => {
if (rows) {
rows.forEach((row) => {
multipleTableRef.value!.toggleRowSelection(row, undefined)
})
} else {
multipleTableRef.value!.clearSelection()
}
}
const handleSelectionChange = (val: []) => {
multipleSelection.value = val
}
const OffDataSource = () =>{
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
...@@ -91,9 +115,14 @@ ...@@ -91,9 +115,14 @@
background: #fff; background: #fff;
overflow: auto; overflow: auto;
} }
.DataaSourceList{
border: 1px solid #ebeef5;
padding: 20px;
border-radius: 5px;
}
.DataaSourceL{ .DataaSourceL{
font-weight: bold; font-weight: bold;
color: black; color: black;
font-size: 15px; font-size: 14px;
} }
</style> </style>
\ No newline at end of file
...@@ -354,32 +354,42 @@ const getHtmlPlainText = (html_str) => { ...@@ -354,32 +354,42 @@ const getHtmlPlainText = (html_str) => {
return '' return ''
} }
} }
datas.DataSource = inject(injectKeyDataSource) datas.DataSource = inject(injectKeyDataSource).DataSource
// 所有数据源 // 所有数据源
const AllDataSource = () => { const AllDataSource = () => {
datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay datas.DataSource.DataSourceOverlay = !datas.DataSource.DataSourceOverlay
console.log(slideIndex.value,'-------')
const newElements = slides.value.find((slide,index) => { const newElements = slides.value.find((slide,index) => {
return slideIndex.value==index return slideIndex.value==index
}) })
datas.DataSource.DataSourceList = [] datas.DataSource.DataSourceList = []
newElements.elements.forEach(slide=>{ newElements.elements.forEach(slide=>{
if(slide.type=="text"){ if(slide.type=="text"){
let Obj = { let Obj = {
...slide, ...slide,
FiledTypeStr: getHtmlPlainText(slide.content) FiledTypeStr: getHtmlPlainText(slide.content),
TemplateList: datas.DataSource.jc,
TemplateObj: {
Content: "",
Name: ""
},
} }
datas.DataSource.DataSourceList.push(Obj) datas.DataSource.DataSourceList.push(Obj)
} }
if(slide.type=="image"){ if(slide.type=="image"){
let Obj = { let Obj = {
...slide, ...slide,
FiledTypeStr: slide.src FiledTypeStr: slide.src,
TemplateList: datas.DataSource.jd,
TemplateObj: {
Content: "",
Name: ""
},
} }
datas.DataSource.DataSourceList.push(Obj) datas.DataSource.DataSourceList.push(Obj)
} }
}) })
console.log(datas.DataSource.DataSourceList,'-------1111')
} }
// 设置背景模式:纯色、图片、渐变色 // 设置背景模式:纯色、图片、渐变色
......
...@@ -48,13 +48,45 @@ import SelectPanel from './SelectPanel.vue' ...@@ -48,13 +48,45 @@ import SelectPanel from './SelectPanel.vue'
import SearchPanel from './SearchPanel.vue' import SearchPanel from './SearchPanel.vue'
import Modal from '@/components/Modal.vue' import Modal from '@/components/Modal.vue'
import DataaSource from './DataaSource/index.vue' import DataaSource from './DataaSource/index.vue'
import ConfigService from '@/services/ConfigService'
const datas = reactive({ const datas = reactive({
DataSource:{ DataSource:{
DataSourceOverlay: false, DataSourceOverlay: false,
DataSourceList:[] DataSourceList:[],
TemplateDataSource:[],
jc:[],//基础
jd:[],//酒店
jq:[],//景区
cs:[],//餐食
}, },
}) })
// 数据源
const GetTripFiled = async () =>{
try {
let TemplateRes = await ConfigService.TemplateGetTripFiled();
if (TemplateRes.data.resultCode == 1) {
datas.DataSource.TemplateDataSource = TemplateRes.data.data
datas.DataSource.jc = datas.DataSource.TemplateDataSource.filter(x => {
return x.FiledType==1
})
datas.DataSource.jd = datas.DataSource.TemplateDataSource.filter(x => {
return x.FiledType==2
})
datas.DataSource.jq = datas.DataSource.TemplateDataSource.filter(x => {
return x.FiledType==3
})
datas.DataSource.cs = datas.DataSource.TemplateDataSource.filter(x => {
return x.FiledType==4
})
}
} catch (error) {
console.log("TemplateGetTripFiled", error);
}
}
GetTripFiled()
const mainStore = useMainStore() const mainStore = useMainStore()
const { dialogForExport, showSelectPanel, showSearchPanel } = storeToRefs(mainStore) const { dialogForExport, showSelectPanel, showSearchPanel } = storeToRefs(mainStore)
const closeExportDialog = () => mainStore.setDialogForExport('') const closeExportDialog = () => mainStore.setDialogForExport('')
...@@ -63,6 +95,7 @@ const remarkHeight = ref(40) ...@@ -63,6 +95,7 @@ const remarkHeight = ref(40)
useGlobalHotkey() useGlobalHotkey()
usePasteEvent() usePasteEvent()
provide(injectKeyDataSource,datas) provide(injectKeyDataSource,datas)
</script> </script>
......
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