Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pptist
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
viitto
pptist
Commits
3c4c15c8
Commit
3c4c15c8
authored
Nov 23, 2023
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
7750e3ba
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
322 additions
and
168 deletions
+322
-168
App.vue
src/App.vue
+20
-11
ConfigService.ts
src/services/ConfigService.ts
+14
-0
screen.ts
src/store/screen.ts
+14
-2
index.vue
src/views/Editor/DataaSource/index.vue
+9
-12
index.vue
src/views/Editor/EditorHeader/index.vue
+47
-12
index.vue
src/views/Editor/Thumbnails/index.vue
+157
-74
ElementTemplateData.vue
src/views/Editor/Toolbar/ElementTemplateData.vue
+28
-28
index.vue
src/views/Editor/index.vue
+4
-18
Index.vue
src/views/Market/Index.vue
+29
-11
No files found.
src/App.vue
View file @
3c4c15c8
...
...
@@ -26,10 +26,30 @@ const searchData = ref({} as any)
provide
(
injectKeyTemplate
,
searchData
)
const
isFinish
=
ref
(
false
)
const
_isPC
=
isPC
()
const
mainStore
=
useMainStore
()
const
snapshotStore
=
useSnapshotStore
()
const
modelStore
=
useScreenStore
()
const
ConfigIdStore
=
useScreenStore
()
const
{
databaseId
}
=
storeToRefs
(
mainStore
)
const
{
screening
,
market
,
model
,
ConfigId
}
=
storeToRefs
(
useScreenStore
())
if
(
process
.
env
.
NODE_ENV
===
'production'
)
{
window
.
onbeforeunload
=
()
=>
false
}
const
userLoginHandler
=
async
()
=>
{
let
param
=
query
()
let
userId
=
1
let
ConfigId
=
9117
let
model
=
1
if
(
param
.
uid
)
userId
=
parseInt
(
param
.
uid
)
if
(
ConfigId
)
ConfigIdStore
.
setMarket
(
ConfigId
)
if
(
model
)
modelStore
.
setModel
(
model
)
try
{
await
userStore
().
setUserLoginAsync
(
userId
)
}
catch
(
error
)
{
...
...
@@ -39,17 +59,6 @@ const userLoginHandler = async ()=>{
}
userLoginHandler
()
const
_isPC
=
isPC
()
const
mainStore
=
useMainStore
()
const
snapshotStore
=
useSnapshotStore
()
const
{
databaseId
}
=
storeToRefs
(
mainStore
)
const
{
screening
,
market
}
=
storeToRefs
(
useScreenStore
())
if
(
process
.
env
.
NODE_ENV
===
'production'
)
{
window
.
onbeforeunload
=
()
=>
false
}
onMounted
(
async
()
=>
{
await
deleteDiscardedDB
()
snapshotStore
.
initSnapshotDatabase
()
...
...
src/services/ConfigService.ts
View file @
3c4c15c8
...
...
@@ -4,6 +4,13 @@ import Api,{ HttpResponse, Result } from './../utils/request';
* 配置相关方法
*/
class
ConfigService
{
/**
* 根据ConfigId获取行程配置相关数据
*/
static
async
triptemplateGetTripFiledData
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"triptemplate_GetTripFiledData"
,
params
)
}
/**
* 根据团期配置编号获取行程详情
*/
...
...
@@ -14,6 +21,13 @@ class ConfigService{
/**
* 新增修改模版数据
*/
static
async
SetSetTripConfig
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"triptemplate_SetTripConfig"
,
params
)
}
/**
* 新增修改模版
*/
static
async
SetTripTemplateSlide
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"triptemplate_SetTripTemplate"
,
params
)
}
...
...
src/store/screen.ts
View file @
3c4c15c8
import
{
fa
}
from
'element-plus/es/locale'
import
{
defineStore
}
from
'pinia'
export
interface
ScreenState
{
screening
:
boolean
,
market
:
boolean
market
:
boolean
,
model
:
number
,
ConfigId
:
number
}
export
const
useScreenStore
=
defineStore
(
'screen'
,
{
state
:
():
ScreenState
=>
({
screening
:
false
,
// 是否进入放映状态
market
:
true
market
:
true
,
model
:
0
,
//是否有新增模版权限
ConfigId
:
0
,
}),
actions
:
{
...
...
@@ -20,6 +25,13 @@ export const useScreenStore = defineStore('screen', {
},
setMarket
(
market
:
boolean
){
this
.
market
=
market
},
setModel
(
model
:
number
){
console
.
log
(
model
,
'====='
)
this
.
model
=
model
},
setConfigId
(
ConfigId
:
number
){
this
.
ConfigId
=
ConfigId
}
},
})
\ No newline at end of file
src/views/Editor/DataaSource/index.vue
View file @
3c4c15c8
...
...
@@ -62,7 +62,8 @@
const
slidesStore
=
useSlidesStore
()
const
{
slides
,
slideIndex
}
=
storeToRefs
(
slidesStore
)
const
slidesData
=
slides
.
value
watch
(
datas
.
DataSource
,
(
n
,
o
)
=>
{
const
setNewDatas
=
()
=>
{
// 更新Slides数据
const
savelides
=
[]
const
newSlides
=
[]
...
...
@@ -79,7 +80,7 @@
}
savelides
.
push
(
x
)
})
obj
.
elements
=
savelides
obj
.
elements
=
JSON
.
parse
(
JSON
.
stringify
(
savelides
))
slidesData
.
forEach
((
x
,
index
)
=>
{
if
(
slideIndex
.
value
==
index
){
x
.
pgaeType
=
datas
.
DataSource
.
pgaeType
...
...
@@ -87,16 +88,10 @@
}
newSlides
.
push
(
x
)
})
if
(
obj
&&
obj
.
TemplateDataSource
&&
obj
.
TemplateDataSource
.
Id
){
slidesStore
.
setSlides
(
newSlides
)
}
console
.
log
(
newSlides
,
'=====-----'
)
slidesStore
.
setSlides
(
newSlides
)
}
})
watch
(
datas
.
DataSource
,
(
n
,
o
)
=>
{
})
}
// 数据源关键数据赋值
const
setTemplateDataSource
=
(
Id
,
index
)
=>
{
datas
.
DataSource
.
DataSourceList
.
forEach
((
x
,
indexs
)
=>
{
...
...
@@ -108,6 +103,7 @@
x
.
TemplateDataSource
.
Name
=
obj
.
Name
}
})
setNewDatas
()
}
const
OffDataSource
=
()
=>
{
...
...
@@ -138,12 +134,13 @@
padding
:
40px
;
border-radius
:
10px
;
background
:
#fff
;
overflow
:
auto
;
}
.DataaSourceList
{
height
:
100%
;
border
:
1px
solid
#ebeef5
;
padding
:
20px
;
border-radius
:
5px
;
overflow
:
auto
;
}
.DataaSourceL
{
font-weight
:
bold
;
...
...
src/views/Editor/EditorHeader/index.vue
View file @
3c4c15c8
<
template
>
<div
class=
"editor-header"
>
<div
class=
"left"
>
<div
class=
"menu-item"
v-tooltip=
"'去首页'"
@
click=
"goBack()"
>
首页
</div>
<Popover
trigger=
"click"
placement=
"bottom-start"
v-model:value=
"mainMenuVisible"
>
<template
#
content
>
<FileInput
accept=
".pptist"
@
change=
"files =>
{
...
...
@@ -54,7 +55,7 @@
<div class="arrow-btn"><IconDown class="arrow" /></div>
</Popover>
</div> -->
<div
class=
"group-menu-item"
v-if=
"userInfo.IsEditTripTemplate==1"
>
<div
class=
"group-menu-item"
v-if=
"userInfo.IsEditTripTemplate==1
&&model
"
>
<div
class=
"menu-item"
v-tooltip=
"'导入PSD'"
@
click=
"UploadPsd()"
>
<IconUpload
class=
"icon"
/>
</div>
...
...
@@ -91,8 +92,9 @@ import useImport from '@/hooks/useImport'
import
useSlideHandler
from
'@/hooks/useSlideHandler'
import
type
{
DialogForExportTypes
}
from
'@/types/export'
import
{
userStore
}
from
"@/store/user"
;
import
{
useScreenStore
}
from
"@/store/screen"
;
import
ConfigService
from
'@/services/ConfigService'
import
{
injectKeyDataSource
}
from
'@/types/injectKey'
import
{
injectKeyDataSource
,
injectKeyTemplate
}
from
'@/types/injectKey'
import
HotkeyDoc
from
'./HotkeyDoc.vue'
import
FileInput
from
'@/components/FileInput.vue'
...
...
@@ -122,17 +124,55 @@ const datas = reactive({
loading
:
false
})
const
queryObj
=
ref
({}
as
any
)
const
searchData
=
ref
({}
as
any
)
datas
.
DataSource
=
inject
(
injectKeyDataSource
)
queryObj
.
value
=
inject
(
injectKeyDataSource
).
queryObj
searchData
.
value
=
inject
(
injectKeyTemplate
)
const
marketStore
=
useScreenStore
()
const
{
market
,
model
,
ConfigId
}
=
storeToRefs
(
useScreenStore
())
const
goBack
=
()
=>
{
marketStore
.
setMarket
(
true
)
}
// 导入PSD
const
UploadPsd
=
()
=>
{
}
// 保存
// 新增修改模版
const
SetTripTemplateSlide
=
async
()
=>
{
try
{
let
TemplateRes
=
await
ConfigService
.
SetTripTemplateSlide
(
queryObj
.
value
);
if
(
TemplateRes
.
data
.
resultCode
==
1
)
{
}
datas
.
loading
=
false
}
catch
(
error
)
{
datas
.
loading
=
false
console
.
log
(
"TemplateGetTripFiled"
,
error
);
}
}
// 用户新增修改数据
const
SetTripTemplateConfig
=
async
()
=>
{
try
{
let
queryMsg
=
{
ConfigId
:
ConfigId
,
TempId
:
queryObj
.
value
.
TempId
,
}
let
TemplateRes
=
await
ConfigService
.
SetSetTripConfig
(
queryMsg
);
if
(
TemplateRes
.
data
.
resultCode
==
1
)
{
}
datas
.
loading
=
false
}
catch
(
error
)
{
datas
.
loading
=
false
console
.
log
(
"TemplateGetTripFiled"
,
error
);
}
}
const
setTemplate
=
async
()
=>
{
// console.log(JSON.stringify(slides.value),'----保存接口',queryObj.value)
console
.
log
(
slides
.
value
,
'-------'
)
if
(
queryObj
.
value
.
Title
==
''
||!
queryObj
.
value
.
LineId
||!
queryObj
.
value
.
LtId
// ||queryObj.value.CoverImg==''
||
queryObj
.
value
.
CountryName
==
''
||
queryObj
.
value
.
SeasonName
==
''
...
...
@@ -165,20 +205,15 @@ const setTemplate = async () =>{
}
}
queryObj
.
value
.
TempData
=
JSON
.
stringify
(
slides
.
value
)
return
datas
.
loading
=
true
try
{
let
TemplateRes
=
await
ConfigService
.
SetTripTemplateSlide
(
queryObj
.
value
);
if
(
TemplateRes
.
data
.
resultCode
==
1
)
{
}
datas
.
loading
=
false
}
catch
(
error
)
{
datas
.
loading
=
false
console
.
log
(
"TemplateGetTripFiled"
,
error
);
if
(
model
&&
userInfo
.
IsEditTripTemplate
==
1
){
await
SetTripTemplateSlide
()
}
else
{
await
SetTripTemplateConfig
()
}
}
const
startEditTitle
=
()
=>
{
titleValue
.
value
=
title
.
value
editingTitle
.
value
=
true
...
...
src/views/Editor/Thumbnails/index.vue
View file @
3c4c15c8
...
...
@@ -56,7 +56,7 @@ import type { ContextmenuItem } from '@/components/Contextmenu/types'
import
useSlideHandler
from
'@/hooks/useSlideHandler'
import
useScreening
from
'@/hooks/useScreening'
import
useLoadSlides
from
'@/hooks/useLoadSlides'
import
{
injectKeyDataSource
}
from
'@/types/injectKey'
import
{
injectKeyDataSource
,
injectKeyTemplate
}
from
'@/types/injectKey'
import
ConfigService
from
'@/services/ConfigService'
import
ThumbnailSlide
from
'@/views/components/ThumbnailSlide/index.vue'
...
...
@@ -93,26 +93,142 @@ const datas = reactive({
DataSource
:{}
})
const
queryObj
=
ref
({}
as
any
)
const
searchData
=
ref
({}
as
any
)
datas
.
DataSource
=
inject
(
injectKeyDataSource
)
searchData
.
value
=
inject
(
injectKeyTemplate
)
// 模版市场分页数据
const
SearchqueryObj
=
reactive
({
pageIndex
:
1
,
pageSize
:
10
,
LineId
:
0
,
//线路Id
Title
:
''
,
//模板名称
CountryName
:
''
,
//国家名称
SeasonName
:
''
,
//季节名称
ColorName
:
''
,
//颜色名称
totalCount
:
0
,
//总调试
pageCount
:
0
,
//总页数
})
watch
(()
=>
slideIndex
.
value
,
()
=>
{
// 清除多选状态的幻灯片
if
(
selectedSlidesIndex
.
value
.
length
)
{
mainStore
.
updateSelectedSlidesIndex
([])
}
// 检查当前页缩略图是否在可视范围,不在的话需要滚动到对应的位置
nextTick
(()
=>
{
const
activeThumbnailRef
:
HTMLElement
=
thumbnailsRef
.
value
?.
$el
?.
querySelector
(
'.thumbnail-item.active'
)
if
(
thumbnailsRef
.
value
&&
activeThumbnailRef
&&
!
isElementInViewport
(
activeThumbnailRef
,
thumbnailsRef
.
value
.
$el
))
{
setTimeout
(()
=>
{
activeThumbnailRef
.
scrollIntoView
({
behavior
:
'smooth'
})
},
100
)
}
})
})
//提取字符串中的文字
const
getHtmlPlainText
=
(
html_str
)
=>
{
let
re
=
new
RegExp
(
'<[^<>]+>'
,
'g'
)
if
(
html_str
)
{
let
text
=
html_str
.
replace
(
re
,
''
)
return
text
}
else
{
return
''
}
}
queryObj
.
value
=
inject
(
injectKeyDataSource
).
queryObj
/***
* 获取模板市场分页列表
*/
const
queryTemplateBySearchHandler
=
async
()
=>
{
try
{
let
pageRes
=
await
ConfigService
.
GetTemplagePageAsync
(
SearchqueryObj
);
console
.
log
(
"queryTemplateBySearchHandler"
,
pageRes
);
if
(
pageRes
.
data
.
resultCode
==
1
)
{
datas
.
DataSource
.
dataList
=
pageRes
.
data
.
data
.
pageData
;
SearchqueryObj
.
totalCount
=
pageRes
.
data
.
data
.
count
;
SearchqueryObj
.
pageCount
=
pageRes
.
data
.
data
.
pageCount
;
}
}
catch
(
error
)
{
console
.
log
(
"queryTemplateBySearchHandler"
,
error
);
}
}
// 获取行程团数据
const
GetTripFiledData
=
async
()
=>
{
if
(
queryObj
.
value
.
TempId
)
return
const
slidesData
=
slides
.
value
try
{
let
queryMsg
=
{
ConfigId
:
datas
.
DataSource
.
ConfigId
}
let
dataRes
=
await
ConfigService
.
triptemplateGetTripFiledData
(
queryMsg
);
if
(
dataRes
.
data
.
resultCode
==
1
)
{
if
(
!
dataRes
.
data
.
data
)
return
const
travel
=
dataRes
.
data
.
data
const
cursors
=
[]
as
Array
<
any
>
slidesData
.
forEach
((
x
,
index
)
=>
{
x
.
elements
.
forEach
(
y
=>
{
if
(
y
.
TemplateDataSource
&&
y
.
TemplateDataSource
.
Content
){
let
dataPath
=
y
.
TemplateDataSource
.
Content
.
split
(
'.'
)
let
value
=
JSON
.
parse
(
JSON
.
stringify
(
travel
));
dataPath
.
forEach
((
oo
,
i
)
=>
{
if
(
value
&&
value
[
oo
]){
if
(
i
==
0
&&
Array
.
isArray
(
value
[
oo
])){
let
temp
=
cursors
.
find
(
item
=>
item
.
key
==
oo
)
if
(
temp
){
temp
.
index
++
}
else
{
temp
=
{
key
:
oo
,
index
:
0
}
cursors
.
push
(
temp
)
}
if
(
value
[
oo
].
length
>
temp
.
index
)
value
=
value
[
oo
][
temp
.
index
]
else
value
=
value
[
oo
]
}
else
{
value
=
value
[
oo
]
}
}
else
{
value
=
null
}
})
if
(
value
&&
typeof
(
value
)
==
'string'
){
//替换
y
.
content
=
y
.
content
.
replace
(
getHtmlPlainText
(
y
.
content
),
value
)
}
else
if
(
value
&&
Array
.
isArray
(
value
)){
//替换
y
.
content
=
value
[
0
]
}
}
})
})
slidesStore
.
setSlides
(
slidesData
)
}
}
catch
(
error
)
{
console
.
log
(
"triptemplateGetTripFiledData"
,
error
);
}
}
// 获取行程模版数据
const
GetTripTemplate
=
async
()
=>
{
// if(!datas.DataSource.queryObj
.TempId) {
//
let list = [
//
{
//
id: 'test-slide-1',
//
pageType: 1,
//
elements: [],
//
background: {
//
type: 'solid',
//
color: '#ffffff',
//
},
//
}
//
]
//
return slidesStore.setSlides(list)
//
}
if
(
!
queryObj
.
value
.
TempId
)
{
let
list
=
[
{
id
:
'test-slide-1'
,
pageType
:
1
,
elements
:
[],
background
:
{
type
:
'solid'
,
color
:
'#ffffff'
,
},
}
]
return
slidesStore
.
setSlides
(
list
)
}
try
{
let
queryMsg
=
{
TempId
:
datas
.
DataSource
.
queryObj
.
TempId
TempId
:
queryObj
.
value
.
TempId
}
let
dataRes
=
await
ConfigService
.
GetTripTemplateSlide
(
queryMsg
);
if
(
dataRes
.
data
.
resultCode
==
1
)
{
...
...
@@ -141,48 +257,17 @@ const GetTripTemplate = async () =>{
queryObj
.
value
.
ColorName
=
dataRes
.
data
.
data
.
ColorName
queryObj
.
value
.
ColorStr
=
dataRes
.
data
.
data
.
ColorStr
queryObj
.
value
.
TempType
=
dataRes
.
data
.
data
.
TempType
await
GetTripFiledData
()
}
}
catch
(
error
)
{
console
.
log
(
"GetTripTemplateSlide"
,
error
);
}
}
GetTripTemplate
()
// 页面被切换时
const
thumbnailsRef
=
ref
<
InstanceType
<
typeof
Draggable
>>
()
watch
(()
=>
slideIndex
.
value
,
()
=>
{
// 清除多选状态的幻灯片
if
(
selectedSlidesIndex
.
value
.
length
)
{
mainStore
.
updateSelectedSlidesIndex
([])
}
// 检查当前页缩略图是否在可视范围,不在的话需要滚动到对应的位置
nextTick
(()
=>
{
const
activeThumbnailRef
:
HTMLElement
=
thumbnailsRef
.
value
?.
$el
?.
querySelector
(
'.thumbnail-item.active'
)
if
(
thumbnailsRef
.
value
&&
activeThumbnailRef
&&
!
isElementInViewport
(
activeThumbnailRef
,
thumbnailsRef
.
value
.
$el
))
{
setTimeout
(()
=>
{
activeThumbnailRef
.
scrollIntoView
({
behavior
:
'smooth'
})
},
100
)
}
})
})
//提取字符串中的文字
const
getHtmlPlainText
=
(
html_str
)
=>
{
let
re
=
new
RegExp
(
'<[^<>]+>'
,
'g'
)
if
(
html_str
)
{
let
text
=
html_str
.
replace
(
re
,
''
)
return
text
}
else
{
return
''
}
}
queryObj
.
value
=
inject
(
injectKeyDataSource
).
queryObj
let
pageObj
=
slides
.
value
.
find
((
slide
,
indexs
)
=>
{
return
slideIndex
.
value
==
indexs
})
// pageType.value = pageObj.pageType
// 切换页面
const
changeSlideIndex
=
(
index
:
number
)
=>
{
mainStore
.
setActiveElementIdList
([])
...
...
@@ -191,37 +276,31 @@ const changeSlideIndex = (index: number) => {
return
index
==
indexs
})
datas
.
DataSource
.
pageType
=
newElements
.
pageType
let
TemplateList
if
(
newElements
.
pageType
==
1
)
TemplateList
=
datas
.
DataSource
.
jc
else
if
(
newElements
.
pageType
==
2
)
TemplateList
=
datas
.
DataSource
.
jd
else
if
(
newElements
.
pageType
==
3
)
TemplateList
=
datas
.
DataSource
.
jq
else
if
(
newElements
.
pageType
==
4
)
TemplateList
=
datas
.
DataSource
.
cs
let
TemplateList
=
datas
.
DataSource
.
TemplateDataSource
.
filter
(
x
=>
{
return
x
.
FiledType
==
newElements
.
pageType
})
datas
.
DataSource
.
DataSourceList
=
[]
newElements
&&
newElements
.
elements
&&
newElements
.
elements
.
forEach
(
slide
=>
{
if
(
slide
.
type
!=
"text"
&&
slide
.
type
!=
"image"
)
return
let
FiledTypeStr
if
(
slide
.
type
==
"text"
)
FiledTypeStr
=
getHtmlPlainText
(
slide
.
content
)
if
(
slide
.
type
==
"image"
)
FiledTypeStr
=
slide
.
src
let
Obj
=
{}
if
(
slide
.
FiledTypeStr
){
Obj
=
{
...
slide
,
if
(
slide
.
type
==
"text"
||
slide
.
type
==
"image"
)
{
let
FiledTypeStr
if
(
slide
.
type
==
"text"
)
FiledTypeStr
=
getHtmlPlainText
(
slide
.
content
)
if
(
slide
.
type
==
"image"
)
FiledTypeStr
=
slide
.
src
let
Obj
=
{}
Obj
=
{
...
slide
,
FiledTypeStr
:
FiledTypeStr
,
TemplateList
:
TemplateList
,
TemplateDataSource
:
{
Content
:
slide
.
TemplateDataSource
.
Content
?
slide
.
TemplateDataSource
.
Content
:
''
,
Name
:
slide
.
TemplateDataSource
.
Name
?
slide
.
TemplateDataSource
.
Name
:
''
,
Id
:
slide
.
TemplateDataSource
.
Id
?
slide
.
TemplateDataSource
.
Id
:
null
as
Number
}
}
}
else
{
Obj
=
{
...
slide
,
FiledTypeStr
:
FiledTypeStr
,
TemplateList
:
TemplateList
,
TemplateDataSource
:
{
Content
:
''
,
Name
:
''
,
Id
:
null
as
Number
},
if
(
Obj
){
datas
.
DataSource
.
DataSourceList
.
push
(
Obj
)
}
}
if
(
Obj
){
datas
.
DataSource
.
DataSourceList
.
push
(
Obj
)
}
})
if
(
slideIndex
.
value
===
index
)
return
slidesStore
.
updateSlideIndex
(
index
)
...
...
@@ -366,6 +445,10 @@ const contextmenusThumbnailItem = (): ContextmenuItem[] => {
},
]
}
queryTemplateBySearchHandler
()
GetTripTemplate
()
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/Editor/Toolbar/ElementTemplateData.vue
View file @
3c4c15c8
...
...
@@ -10,9 +10,9 @@
placeholder=
"请页面类型"
>
<el-option
v-for=
"item in pageTypesList"
:key=
"item.
key
"
:label=
"item.
label
"
:value=
"item.
key
"
:key=
"item.
FiledType
"
:label=
"item.
Name
"
:value=
"item.
FiledType
"
/>
</el-select>
</div>
...
...
@@ -104,13 +104,18 @@
const
lines
=
ref
([]
as
Array
<
any
>
)
//线路
const
Series
=
ref
([]
as
Array
<
any
>
)
//系列
const
pageTypesList
=
ref
([
{
label
:
'基础'
,
key
:
1
},
{
label
:
'酒店'
,
key
:
2
},
{
label
:
'景'
,
key
:
3
},
{
label
:
'餐'
,
key
:
4
},
])
const
cursors
=
[]
as
Array
<
any
>
const
pageTypesList
=
ref
([]
as
any
)
let
TemplateList
=
datas
.
DataSource
.
TemplateDataSource
.
filter
(
x
=>
{
let
obj
=
pageTypesList
.
value
.
findIndex
(
z
=>
{
return
z
.
FiledType
==
x
.
FiledType
})
if
(
obj
==-
1
){
pageTypesList
.
value
.
push
(
x
)
}
})
const
slidesStore
=
useSlidesStore
()
const
{
slides
,
slideIndex
}
=
storeToRefs
(
slidesStore
)
const
setCountryValue
=
()
=>
{
...
...
@@ -157,35 +162,30 @@
return
slideIndex
.
value
==
indexs
})
datas
.
DataSource
.
DataSourceOverlay
=
!
datas
.
DataSource
.
DataSourceOverlay
let
TemplateList
if
(
newElements
.
pageType
==
1
)
TemplateList
=
datas
.
DataSource
.
jc
else
if
(
newElements
.
pageType
==
2
)
TemplateList
=
datas
.
DataSource
.
jd
else
if
(
newElements
.
pageType
==
3
)
TemplateList
=
datas
.
DataSource
.
jq
else
if
(
newElements
.
pageType
==
4
)
TemplateList
=
datas
.
DataSource
.
cs
let
TemplateList
=
datas
.
DataSource
.
TemplateDataSource
.
filter
(
x
=>
{
return
x
.
FiledType
==
newElements
.
pageType
})
datas
.
DataSource
.
DataSourceList
=
[]
newElements
.
elements
.
forEach
(
slide
=>
{
if
(
slide
.
type
!=
"text"
&&
slide
.
type
!=
"image"
)
return
let
FiledTypeStr
if
(
slide
.
type
==
"text"
)
FiledTypeStr
=
getHtmlPlainText
(
slide
.
content
)
if
(
slide
.
type
==
"image"
)
FiledTypeStr
=
slide
.
src
let
Obj
=
{}
if
(
slide
.
FiledTypeStr
){
Obj
=
{
...
slide
,
}
}
else
{
if
(
slide
.
type
==
"text"
||
slide
.
type
==
"image"
)
{
let
FiledTypeStr
if
(
slide
.
type
==
"text"
)
FiledTypeStr
=
getHtmlPlainText
(
slide
.
content
)
if
(
slide
.
type
==
"image"
)
FiledTypeStr
=
slide
.
src
let
Obj
=
{}
Obj
=
{
...
slide
,
FiledTypeStr
:
FiledTypeStr
,
TemplateList
:
TemplateList
,
TemplateDataSource
:
{
Content
:
''
,
Name
:
''
,
Id
:
null
as
Number
Content
:
slide
.
TemplateDataSource
.
Content
?
slide
.
TemplateDataSource
.
Content
:
''
,
Name
:
slide
.
TemplateDataSource
.
Name
?
slide
.
TemplateDataSource
.
Name
:
''
,
Id
:
slide
.
TemplateDataSource
.
Id
?
slide
.
TemplateDataSource
.
Id
:
null
as
Number
},
}
if
(
Obj
){
datas
.
DataSource
.
DataSourceList
.
push
(
Obj
)
}
}
datas
.
DataSource
.
DataSourceList
.
push
(
Obj
)
})
}
...
...
src/views/Editor/index.vue
View file @
3c4c15c8
...
...
@@ -52,17 +52,14 @@ import Modal from '@/components/Modal.vue'
import
DataaSource
from
'./DataaSource/index.vue'
import
ConfigService
from
'@/services/ConfigService'
// inject(injectKeyTemplate).TempId?inject(injectKeyTemplate).TempId:
const
datas
=
reactive
({
DataSource
:{
dataList
:
[],
ConfigId
:
inject
(
injectKeyTemplate
).
ConfigId
?
inject
(
injectKeyTemplate
).
ConfigId
:
0
,
pageType
:
1
,
//1基础 2酒店 3景 4餐
DataSourceOverlay
:
false
,
DataSourceList
:[],
TemplateDataSource
:[],
jc
:[],
//基础
jd
:[],
//酒店
jq
:[],
//景区
cs
:[],
//餐食
TemplateDataSource
:[],
// 所有模版类型 1基础 2酒店 3景 4餐
queryObj
:{
TempId
:
inject
(
injectKeyTemplate
).
TempId
?
inject
(
injectKeyTemplate
).
TempId
:
0
,
//编号(新增传0) 是 [int]
LineId
:
null
,
//线路Id 是 [int]
...
...
@@ -94,18 +91,6 @@ const GetTripFiled = async () =>{
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
);
...
...
@@ -124,6 +109,7 @@ useGlobalHotkey()
usePasteEvent
()
provide
(
injectKeyDataSource
,
datas
.
DataSource
)
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/Market/Index.vue
View file @
3c4c15c8
...
...
@@ -64,7 +64,7 @@
</div>
</div>
</div>
<div
class=
"q-mt-lg row wrap bg-white rounded"
style=
"padding: 30px 10px;"
>
<div
class=
"q-mt-lg row wrap bg-white rounded"
style=
"padding: 30px 10px
0 10px
;"
>
<
template
v-for=
"(item,index) in dataList"
>
<div
class=
"MarketIndexListBox"
>
<div
class=
"MarketIndexList bg-white rounded"
@
click=
"goToTemplate(item)"
>
...
...
@@ -76,6 +76,20 @@
</div>
</
template
>
</div>
<div
class=
"q-mt-lg row"
style=
"justify-content: center;"
>
<el-pagination
background
v-model:current-page=
"currentPage"
v-model:page-size=
"queryObj.pageSize"
:page-sizes=
"[10, 20, 30, 40, 50, 100]"
:small=
"small"
layout=
"sizes, prev, pager, next"
:total=
"queryObj.totalCount"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
hide-on-single-page
/>
</div>
</div>
</div>
...
...
@@ -98,6 +112,8 @@
const
colorArr
=
ref
([]
as
Array
<
any
>
);
//颜色
const
seasonArr
=
ref
([]
as
Array
<
any
>
);
//季节
const
dataList
=
ref
([]
as
Array
<
any
>
);
//模板数据列表
const
currentPage
=
ref
(
1
as
Number
);
const
queryObj
=
reactive
({
pageIndex
:
1
,
pageSize
:
10
,
...
...
@@ -113,7 +129,7 @@
const
searchData
=
ref
({}
as
any
)
searchData
.
value
=
inject
(
injectKeyTemplate
)
const
marketStore
=
useScreenStore
()
const
{
screening
,
market
}
=
storeToRefs
(
useScreenStore
())
const
{
screening
,
market
,
model
,
ConfigId
}
=
storeToRefs
(
useScreenStore
())
const
addTemplate
=
()
=>
{
marketStore
.
setMarket
(
!
market
)
...
...
@@ -124,18 +140,14 @@
*/
const
GetTripConfig
=
async
()
=>
{
try
{
// console.log('','-----http://localhost:8080?ConfigId=11')
let
locations
=
window
.
location
.
search
.
split
(
'?'
)
let
ConfigId
=
locations
[
1
].
split
(
'='
)[
1
]
console
.
log
(
ConfigId
,
'====='
)
if
(
!
ConfigId
)
return
let
queryMsg
=
{
ConfigId
:
0
ConfigId
:
ConfigId
}
if
(
!
queryMsg
.
ConfigId
)
return
let
datasRes
=
await
ConfigService
.
triptemplateGetTripConfig
(
queryMsg
);
if
(
datasRes
.
data
.
resultCode
==
1
)
{
if
(
datasRes
.
data
.
data
&&
datasRes
.
data
.
data
.
length
>
0
&&
datasRes
.
data
.
data
[
0
].
TempId
){
searchData
.
value
.
TempId
=
item
.
TempId
searchData
.
value
.
TempId
=
datasRes
.
data
.
data
[
0
]
.
TempId
marketStore
.
setMarket
(
!
market
)
}
}
...
...
@@ -160,16 +172,22 @@
const
queryTemplateBySearchHandler
=
async
()
=>
{
try
{
let
pageRes
=
await
ConfigService
.
GetTemplagePageAsync
(
queryObj
);
console
.
log
(
"queryTemplateBySearchHandler"
,
pageRes
);
if
(
pageRes
.
data
.
resultCode
==
1
)
{
dataList
.
value
=
pageRes
.
data
.
data
.
pageData
;
queryObj
.
totalCount
=
pageRes
.
data
.
data
.
count
;
queryObj
.
pageCount
=
pageRes
.
data
.
data
.
pageCount
;
}
}
catch
(
error
)
{
console
.
log
(
"queryTemplateBySearchHandler"
,
error
);
}
}
const
handleSizeChange
=
(
val
:
number
)
=>
{
queryObj
.
pageSize
=
val
queryTemplateBySearchHandler
()
}
const
handleCurrentChange
=
(
val
:
number
)
=>
{
queryObj
.
pageIndex
=
val
queryTemplateBySearchHandler
()
}
//线路切换
const
onLineChangeHandler
=
(
lineId
:
number
)
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment