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
e8eac6a2
Commit
e8eac6a2
authored
Feb 20, 2024
by
zhengke
Browse files
Options
Browse Files
Download
Plain Diff
no message
parents
d1a5eeed
9fc6bea7
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
191 additions
and
182 deletions
+191
-182
common.css
src/assets/styles/common.css
+6
-4
FolderService.ts
src/services/FolderService.ts
+15
-0
Workspace.vue
src/views/SellTemplate/Workspace.vue
+8
-8
Example.vue
src/views/SellTemplate/components/Example.vue
+1
-1
Folder.vue
src/views/SellTemplate/components/Folder.vue
+71
-0
SearchDocument.vue
src/views/SellTemplate/components/SearchDocument.vue
+3
-3
ShareForm.vue
src/views/SellTemplate/components/ShareForm.vue
+6
-7
journeyAds.vue
src/views/SellTemplate/components/journeyAds.vue
+81
-159
No files found.
src/assets/styles/common.css
View file @
e8eac6a2
...
@@ -7,11 +7,10 @@ page {
...
@@ -7,11 +7,10 @@ page {
sans-serif
;
sans-serif
;
}
}
/* .0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz导入设计文件基础数据绑定模板预览选择、上传图片地创作分享置 */
/* .0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz导入设计文件基础数据绑定模板预览选择、上传图片地创作分享置夹建修改新 */
/* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
@font-face
{
@font-face
{
font-family
:
"alifont"
;
src
:
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/
OXJDKjyyUbMp
.woff2")
format
(
"woff2"
),
font-family
:
"alifont"
;
src
:
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/
L514hmGnjb2E
.woff2")
format
(
"woff2"
),
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/i
y1cOOTdKN6P
.woff")
format
(
"woff"
);
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/i
dFuggDsYh7v
.woff")
format
(
"woff"
);
font-display
:
swap
;
font-display
:
swap
;
}
}
...
@@ -182,6 +181,9 @@ page {
...
@@ -182,6 +181,9 @@ page {
.q-ml-sm
{
.q-ml-sm
{
margin-left
:
5px
;
margin-left
:
5px
;
}
}
.q-mt-sm
{
margin-top
:
5px
;
}
.q-mb-sm
{
.q-mb-sm
{
margin-bottom
:
5px
;
margin-bottom
:
5px
;
}
}
...
...
src/services/FolderService.ts
0 → 100644
View file @
e8eac6a2
import
Api
,{
HttpResponse
,
Result
}
from
'./../utils/request'
;
class
FolderService
{
static
async
SetFolderAsync
(
FolderId
:
number
,
FolderName
:
string
,
ParendFolderId
:
number
):
Promise
<
HttpResponse
>
{
let
msg
=
{
FolderId
,
FolderName
,
ParendFolderId
}
return
Api
.
Post
(
"triptemplate_SetTripFolder"
,
msg
)
}
}
export
default
FolderService
;
\ No newline at end of file
src/views/SellTemplate/Workspace.vue
View file @
e8eac6a2
...
@@ -76,7 +76,7 @@
...
@@ -76,7 +76,7 @@
</div>
</div>
</div>
</div>
<div
class=
"col"
>
<div
class=
"col"
>
<div
class=
"q-px-md q-pt-lg"
>
<
!-- <
div class="q-px-md q-pt-lg">
<div class="q-pl-lg row q-pb-sm">
<div class="q-pl-lg row q-pb-sm">
<h5 class="q-pl-md">
<h5 class="q-pl-md">
<template v-if="!currentMenu">最近</template>
<template v-if="!currentMenu">最近</template>
...
@@ -94,7 +94,7 @@
...
@@ -94,7 +94,7 @@
</el-icon>
</el-icon>
</div>
</div>
</div>
</div>
</div>
</div>
-->
<!-- <Example></Example> -->
<!-- <Example></Example> -->
<journeyAds
v-if=
"currentMenu==3||currentMenu==4"
></journeyAds>
<journeyAds
v-if=
"currentMenu==3||currentMenu==4"
></journeyAds>
</div>
</div>
...
@@ -117,12 +117,12 @@ import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store'
...
@@ -117,12 +117,12 @@ import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store'
const
{
userInfo
}
=
storeToRefs
(
userStore
())
const
{
userInfo
}
=
storeToRefs
(
userStore
())
const
currentMenu
=
ref
<
number
>
(
0
)
const
currentMenu
=
ref
<
number
>
(
0
)
const
datas
=
reactive
({
//
const datas = reactive({
journeyAds
:{
//
journeyAds:{
RefreshLoading
:
false
//
RefreshLoading: false
}
//
}
})
//
})
provide
(
'journeyAds'
,
datas
.
journeyAds
)
//
provide('journeyAds',datas.journeyAds)
const
searchData
=
ref
({}
as
any
)
const
searchData
=
ref
({}
as
any
)
searchData
.
value
=
inject
(
injectKeyTemplate
)
searchData
.
value
=
inject
(
injectKeyTemplate
)
...
...
src/views/SellTemplate/components/Example.vue
View file @
e8eac6a2
...
@@ -91,7 +91,7 @@
...
@@ -91,7 +91,7 @@
SellDatas
:{
SellDatas
:{
currentMenu
:
3
,
currentMenu
:
3
,
},
},
pdfImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
250377000_558
.png'
,
pdfImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
337830000_43
.png'
,
adsImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png'
,
adsImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png'
,
})
})
let
TemplateType
=
0
let
TemplateType
=
0
...
...
src/views/SellTemplate/components/Folder.vue
0 → 100644
View file @
e8eac6a2
<
template
>
<el-dialog
v-model=
"show"
v-loading=
"loading"
:show-close=
"false"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
style=
"max-width:400px;"
>
<template
#
header
>
<div
class=
"text-title"
>
{{
folderId
==
0
?
'新建'
:
'修改'
}}
文件夹
</div>
</
template
>
<div>
<el-input
v-model=
"name"
placeholder=
"请输入文件夹名称"
class=
"full-width"
/>
</div>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"()=>closedhandler()"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"()=>saveFolder()"
>
{{
folderId
==
0
?
'立即创建'
:
'保存修改'
}}
</el-button>
</span>
</
template
>
</el-dialog>
</template>
<
script
setup
lang=
"ts"
>
import
{
ApiResult
}
from
'@/configs/axios'
;
import
FolderService
from
'@/services/FolderService'
;
import
{
ElMessage
}
from
'element-plus'
;
import
{
ref
}
from
'vue'
;
//FolderType 文件夹类型(1-行程,2-广告)
const
props
=
defineProps
({
folderId
:{
type
:
Number
,
default
:
0
},
parentId
:{
type
:
Number
,
default
:
0
},
folderName
:{
type
:
String
,
default
:
''
},
})
const
emit
=
defineEmits
<
{
(
event
:
'close'
):
void
,
(
event
:
'success'
):
void
}
>
()
const
show
=
ref
(
true
)
const
loading
=
ref
(
false
)
const
name
=
ref
(
props
.
folderName
)
const
closedhandler
=
()
=>
{
emit
(
'close'
)
}
const
saveFolder
=
async
()
=>
{
let
errmsg
=
''
if
(
name
.
value
==
''
)
errmsg
=
'请输入文件夹名称'
if
(
errmsg
==
''
){
try
{
let
response
=
await
FolderService
.
SetFolderAsync
(
props
.
folderId
,
name
.
value
,
props
.
parentId
)
if
(
response
.
data
.
resultCode
==
ApiResult
.
SUCCESS
){
ElMessage
.
success
({
message
:
'操作成功'
})
}
else
errmsg
=
'操作失败,请重试'
}
catch
(
error
)
{
errmsg
=
'操作失败,请重试'
}
}
if
(
errmsg
!=
''
)
{
ElMessage
.
error
({
message
:
errmsg
})
}
loading
.
value
=
false
}
</
script
>
\ No newline at end of file
src/views/SellTemplate/components/SearchDocument.vue
View file @
e8eac6a2
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
<div
class=
"search-result-block"
>
<div
class=
"search-result-block"
>
<div
class=
"text-h6 text-left text-bolder q-mx-md q-mb-sm"
>
行程文档
</div>
<div
class=
"text-h6 text-left text-bolder q-mx-md q-mb-sm"
>
行程文档
</div>
<div
class=
"items row items-center q-pa-md"
>
<div
class=
"items row items-center q-pa-md"
>
<img
class=
"biao"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
250377000_558
.png"
/>
<img
class=
"biao"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
337830000_43
.png"
/>
<div
class=
"right col text-left q-pb-md"
>
<div
class=
"right col text-left q-pb-md"
>
<div
class=
"file-name"
truncated
>
2024-03-12 摩洛哥、突尼斯北非系列2024-03-12 摩洛哥、突尼斯
<span
class=
"text-waring"
>
北非系
</span>
列2024-03-12 摩洛哥、突尼斯北非系列
</div>
<div
class=
"file-name"
truncated
>
2024-03-12 摩洛哥、突尼斯北非系列2024-03-12 摩洛哥、突尼斯
<span
class=
"text-waring"
>
北非系
</span>
列2024-03-12 摩洛哥、突尼斯北非系列
</div>
<div
class=
"text-small q-mt-sm row items-center text-info"
>
<div
class=
"text-small q-mt-sm row items-center text-info"
>
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
</div>
</div>
</div>
</div>
<div
class=
"items row items-center q-pa-md"
>
<div
class=
"items row items-center q-pa-md"
>
<img
class=
"biao"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
250377000_558
.png"
/>
<img
class=
"biao"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
337830000_43
.png"
/>
<div
class=
"right col text-left q-pb-md"
>
<div
class=
"right col text-left q-pb-md"
>
<div
class=
"file-name"
truncated
>
2024-03-12 摩洛哥、
<span
class=
"text-waring"
>
突尼斯
</span>
北非系列
</div>
<div
class=
"file-name"
truncated
>
2024-03-12 摩洛哥、
<span
class=
"text-waring"
>
突尼斯
</span>
北非系列
</div>
<div
class=
"text-small q-mt-sm row items-center text-info"
>
<div
class=
"text-small q-mt-sm row items-center text-info"
>
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
</div>
</div>
</div>
</div>
<div
class=
"items row items-center q-pa-md"
>
<div
class=
"items row items-center q-pa-md"
>
<img
class=
"biao"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
250377000_558
.png"
/>
<img
class=
"biao"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
337830000_43
.png"
/>
<div
class=
"right col text-left q-pb-md"
>
<div
class=
"right col text-left q-pb-md"
>
<div
class=
"file-name"
truncated
>
2024-03-12
<span
class=
"text-waring"
>
摩洛哥
</span>
、突尼斯北非系列2024-03-12 摩洛哥、突尼斯北非系列
</div>
<div
class=
"file-name"
truncated
>
2024-03-12
<span
class=
"text-waring"
>
摩洛哥
</span>
、突尼斯北非系列2024-03-12 摩洛哥、突尼斯北非系列
</div>
<div
class=
"text-small q-mt-sm row items-center text-info"
>
<div
class=
"text-small q-mt-sm row items-center text-info"
>
...
...
src/views/SellTemplate/components/ShareForm.vue
View file @
e8eac6a2
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
<el-select
v-model=
"selectedPermission"
style=
"width: 150px;"
collapse-tags
multiple
placeholder=
"请选择权限"
>
<el-select
v-model=
"selectedPermission"
style=
"width: 150px;"
collapse-tags
multiple
placeholder=
"请选择权限"
>
<el-option
:label=
"x.label"
:value=
"x.value"
v-for=
"x in permissions"
/>
<el-option
:label=
"x.label"
:value=
"x.value"
v-for=
"x in permissions"
/>
</el-select>
</el-select>
<el-button
class=
"q-ml-md"
v-loading=
"saveLoading"
@
click=
"saveShareHandler"
>
添加
</el-button>
<el-button
class=
"q-ml-md"
@
click=
"saveShareHandler"
>
添加
</el-button>
</div>
</div>
<el-scrollbar
height=
"300px"
class=
"q-mt-lg"
>
<el-scrollbar
height=
"300px"
class=
"q-mt-lg"
>
<div
class=
"row items-center q-mb-md"
>
<div
class=
"row items-center q-mb-md"
>
...
@@ -131,8 +131,8 @@
...
@@ -131,8 +131,8 @@
</div>
</div>
<
template
#
footer
>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"()=>closedhandler()"
>
取消
</el-button>
<el-button
@
click=
"()=>closedhandler()"
>
关闭
</el-button>
<
el-button
type=
"primary"
@
click=
"()=>closedhandler()"
>
保存分享配置
</el-button
>
<
!--
<el-button
type=
"primary"
@
click=
"()=>closedhandler()"
>
保存分享配置
</el-button>
--
>
</span>
</span>
</
template
>
</
template
>
</el-dialog>
</el-dialog>
...
@@ -163,7 +163,6 @@ const show=ref(true)
...
@@ -163,7 +163,6 @@ const show=ref(true)
const
shareTypeItems
=
ref
<
{
label
:
string
,
value
:
number
}[]
>
([])
const
shareTypeItems
=
ref
<
{
label
:
string
,
value
:
number
}[]
>
([])
const
permissions
=
ref
<
{
label
:
string
,
value
:
number
}[]
>
([])
const
permissions
=
ref
<
{
label
:
string
,
value
:
number
}[]
>
([])
const
loading
=
ref
(
true
)
const
loading
=
ref
(
true
)
const
saveLoading
=
ref
(
false
)
const
selectedDepartment
=
ref
<
any
[]
>
([])
const
selectedDepartment
=
ref
<
any
[]
>
([])
const
selectedCompnays
=
ref
<
number
[]
>
([])
const
selectedCompnays
=
ref
<
number
[]
>
([])
const
selectedPeoples
=
ref
<
number
[]
>
([])
const
selectedPeoples
=
ref
<
number
[]
>
([])
...
@@ -217,8 +216,8 @@ const getAllPeople = async ()=>{
...
@@ -217,8 +216,8 @@ const getAllPeople = async ()=>{
})
})
}
}
const
saveShareHandler
=
async
()
=>
{
const
saveShareHandler
=
async
()
=>
{
if
(
saveL
oading
.
value
)
return
if
(
l
oading
.
value
)
return
saveL
oading
.
value
=
true
l
oading
.
value
=
true
let
errmsg
=
''
let
errmsg
=
''
if
(
currentType
.
value
==
1
&&
selectedCompnays
.
value
.
length
==
0
)
errmsg
=
'请选择公司'
if
(
currentType
.
value
==
1
&&
selectedCompnays
.
value
.
length
==
0
)
errmsg
=
'请选择公司'
else
if
(
currentType
.
value
==
2
&&
selectedDepartment
.
value
.
length
==
0
)
errmsg
=
'请选择部门'
else
if
(
currentType
.
value
==
2
&&
selectedDepartment
.
value
.
length
==
0
)
errmsg
=
'请选择部门'
...
@@ -253,7 +252,7 @@ const saveShareHandler = async ()=>{
...
@@ -253,7 +252,7 @@ const saveShareHandler = async ()=>{
message
:
errmsg
message
:
errmsg
})
})
}
}
saveL
oading
.
value
=
false
l
oading
.
value
=
false
}
}
getDepartments
()
getDepartments
()
getAllBranch
()
getAllBranch
()
...
...
src/views/SellTemplate/components/journeyAds.vue
View file @
e8eac6a2
<
template
>
<
template
>
<div
ref=
"SellTemplateRef"
class=
"journeyAds-container"
>
<div
class=
"q-px-md q-pt-lg"
>
<div
class=
"q-pl-lg row q-mb-lg"
>
<div
class=
"col row items-center q-pl-md"
>
<h5>
<template
v-if=
"currentMenu==3"
>
行程文档
</
template
>
<
template
v-else-if=
"currentMenu==4"
>
广告图
</
template
>
</h5>
<div
class=
"select-btn q-pl-lg pointer q-mt-sm"
>
<el-icon>
<RefreshRight
v-if=
"!datas.journeyAds.RefreshLoading"
@
click=
"()=>refreshHandler()"
/>
<Refresh
v-else
/>
</el-icon>
</div>
</div>
<div>
<el-dropdown
trigger=
"click"
>
<el-button>
新建
</el-button>
<
template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
@
click=
"()=>operaFolder(0,'')"
>
新建文件夹
</el-dropdown-item>
<el-dropdown-item
@
click=
"searchData.TemplateType=1,sellAdd(1)"
v-if=
"currentMenu==3"
>
新建行程
</el-dropdown-item>
<el-dropdown-item
@
click=
"searchData.TemplateType=2,sellAdd(3)"
v-if=
"currentMenu==4"
>
建广告图
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</div>
</div>
</div>
<div
ref=
"SellTemplateRef"
class=
"journeyAds-container"
style=
"height: 100%;overflow: auto;"
>
<el-scrollbar
@
scroll=
"scrollingHandler"
height=
"100%"
class=
"q-px-md"
>
<el-scrollbar
@
scroll=
"scrollingHandler"
height=
"100%"
class=
"q-px-md"
>
<
pre
style=
"min-width:700px;"
>
<
div
style=
"min-width:700px;"
>
<table
class=
"text-small"
style=
"width: 100%"
>
<table
class=
"text-small"
style=
"width: 100%"
>
<tr
@
click
.
stop=
"OffEdit"
>
<tr>
<th
class=
"text-left"
style=
"width: 20px;"
><el-checkbox
class=
"SelectAllBox"
size=
"sm"
v-model=
"datas.selectAll"
<th
class=
"text-left"
style=
"width: 20px;"
><el-checkbox
size=
"sm"
v-model=
"datas.selectAll"
@
click=
"clickSelectAll"
@
click=
"clickSelectAll"
:indeterminate=
"isIndeterminate"
/></th>
:indeterminate=
"isIndeterminate"
/></th>
<th
colspan=
"2"
class=
"text-light"
><div
class=
"text-left q-pl-md"
>
文档名称
</div></th>
<th
colspan=
"2"
class=
"text-light"
><div
class=
"text-left q-pl-md"
>
文档名称
</div></th>
<th
style=
"width: 100px;"
class=
"text-light"
>
最近修改
</th>
<th
class=
"text-light"
>
最近修改
</th>
<th
class=
"text-light"
>
创建者
</th>
<th
class=
"text-light"
>
创建者
</th>
<th
width=
"1
2
0"
class=
"text-light"
>
操作
</th>
<th
width=
"1
5
0"
class=
"text-light"
>
操作
</th>
</tr>
</tr>
<
template
v-for=
"(item,index) in dataList"
>
<
template
v-for=
"(item,index) in dataList"
>
<tr
class=
"text-5B5D62 journeyAds-table pointer"
>
<tr
class=
"text-5B5D62 journeyAds
ple
-table pointer"
>
<td
class=
""
@
click
.
stop=
"OffEdit"
><div
class=
"row items-center hoverShow"
<td
class=
""
><div
class=
"row items-center hoverShow"
:style=
"
{'opacity':item.singleChoice?1:''}">
:style=
"
{'opacity':item.singleChoice?1:''}">
<el-checkbox
class=
"SelectAllBox"
size=
"sm"
v-model=
"item.singleChoice"
<el-checkbox
size=
"sm"
v-model=
"item.singleChoice"
@
click=
"singleChoice(item)"
/></div></td>
@
click=
"singleChoice(item)"
/></div></td>
<td
class=
""
style=
"width: 30px;"
@
click
.
stop=
"OffEdit"
><img
class=
"q-px-md"
:src=
"item.TemplateType==1?datas.pdfImg:datas.adsImg"
<td
class=
""
style=
"width: 30px;"
><img
class=
"q-px-md"
:src=
"item.TemplateType==1?datas.pdfImg:datas.adsImg"
style=
"height: 25px;"
/></td>
style=
"height: 25px;"
/></td>
<td
class=
"journeyAds-title wrap"
><div
v-if=
"!item.editTitle"
@
click
.
stop=
"OffEdit"
><el-tooltip
<td
class=
"journeyAdsple-title wrap"
><span>
{{
item
.
Title
}}
</span></td>
style=
"max-width: 600px;"
<td
class=
"text-center"
><span>
{{
item
.
Day
?
item
.
Day
+
'天前'
:
item
.
UpdateTime
}}
</span></td>
placement=
"top-start"
<td
class=
"text-center"
><span>
{{
item
.
CreateByName
}}
</span></td>
><template
#
content
><div
style=
"max-width: 600px;"
>
{{
item
.
Title
}}
</div></
template
><span
class=
"journeyAds-TitleCenter"
>
{{item.Title}}
</span>
</el-tooltip></div><el-input
<td
class=
"text-center"
><div
class=
"hoverShow row items-center just-center q-pt-sm"
><el-button
type=
"primary"
:icon=
"Edit"
size=
"small"
@
click=
"editDelete(item)"
>
编辑
</el-button><el-dropdown
class=
"q-pl-md"
trigger=
"click"
><el-icon
size=
"16"
color=
"#b1b7cf"
><MoreFilled
/></el-icon>
class=
"journeyAds-Input"
v-model=
"item.Title"
autosize
type=
"textarea"
placeholder=
"Please input"
maxlength=
"500"
size=
"small"
v-if=
"item.editTitle"
@
blur=
"handleUpdateTitle(item)"
/></td>
<td
class=
"text-center"
@
click
.
stop=
"OffEdit"
><span>
{{item.Day?item.Day+'天前':item.UpdateTime}}
</span></td>
<td
class=
"text-center"
@
click
.
stop=
"OffEdit"
><span>
{{item.CreateByName}}
</span></td>
<td
class=
"text-center"
@
click
.
stop=
"OffEdit"
><div
class=
"hoverShow row items-center just-center q-pt-sm"
><el-button
type=
"primary"
:icon=
"Edit"
size=
"small"
@
click=
"editDelete(item)"
>
编辑
</el-button><el-dropdown
class=
"q-pl-md"
trigger=
"click"
><el-icon
size=
"16"
color=
"#b1b7cf"
><MoreFilled
/></el-icon>
<template
#
dropdown
>
<template
#
dropdown
>
<el-dropdown-menu
class=
"q-pa-md"
>
<el-dropdown-menu
class=
"q-pa-md"
>
<el-dropdown-item
icon=
"EditPen"
@
click
.
stop=
"startEditTitle(item)"
>
重命名
</el-dropdown-item>
<el-dropdown-item
icon=
"EditPen"
>
重命名
</el-dropdown-item>
<el-dropdown-item
icon=
"Clock"
>
历史版本
</el-dropdown-item>
<el-dropdown-item
icon=
"Clock"
>
历史版本
</el-dropdown-item>
<el-dropdown-item
icon=
"Position"
@
click
.
stop
=
"()=>shareId=item.Id"
>
分享
</el-dropdown-item>
<el-dropdown-item
icon=
"Position"
@
click=
"()=>shareId=item.Id"
>
分享
</el-dropdown-item>
<el-dropdown-item
icon=
"Delete"
@
click
.
stop
=
"editDelete(item,1)"
>
删除
</el-dropdown-item>
<el-dropdown-item
icon=
"Delete"
@
click=
"editDelete(item,1)"
>
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</
template
>
</
template
>
</el-dropdown></div></td>
</el-dropdown></div></td>
</tr>
</tr>
</template>
</template>
</table>
</table>
</
pre
>
</
div
>
<div
v-if=
"dataList.length == 0 && !loading"
class=
"q-mt-lg bg-white rounded"
<div
v-if=
"dataList.length == 0 && !loading"
class=
"q-mt-lg bg-white rounded"
style=
"padding: 30px 10px 30px 10px;"
>
style=
"padding: 30px 10px 30px 10px;"
>
<el-empty
description=
"暂无数据"
/>
<el-empty
description=
"暂无数据"
/>
...
@@ -61,6 +77,7 @@
...
@@ -61,6 +77,7 @@
</el-scrollbar>
</el-scrollbar>
</div>
</div>
<ShareForm
:id=
"shareId"
v-if=
"shareId>0"
@
close=
"()=>shareId=0"
></ShareForm>
<ShareForm
:id=
"shareId"
v-if=
"shareId>0"
@
close=
"()=>shareId=0"
></ShareForm>
<Folder
:folder-id=
"folderObj?.id"
:folder-name=
"folderObj?.name"
:parent-id=
"folderObj.parentId"
v-if=
"folderObj.id>-1"
@
close=
"()=>folderObj.id=-1"
></Folder>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ref
,
reactive
,
provide
,
watch
,
inject
,
onMounted
}
from
'vue'
import
{
ref
,
reactive
,
provide
,
watch
,
inject
,
onMounted
}
from
'vue'
...
@@ -71,24 +88,32 @@
...
@@ -71,24 +88,32 @@
import
{
getDaysBetween
}
from
'@/utils/common'
import
{
getDaysBetween
}
from
'@/utils/common'
import
{
useSellTemplateStore
,
useScreenStore
,
useSlidesStore
}
from
'@/store'
import
{
useSellTemplateStore
,
useScreenStore
,
useSlidesStore
}
from
'@/store'
import
ShareForm
from
'./ShareForm.vue'
;
import
ShareForm
from
'./ShareForm.vue'
;
import
Folder
from
'./Folder.vue'
;
const
SalesEditorStore
=
useSellTemplateStore
()
const
SalesEditorStore
=
useSellTemplateStore
()
const
marketStore
=
useScreenStore
()
const
marketStore
=
useScreenStore
()
const
props
=
defineProps
({
currentMenu
:{
type
:
Number
,
default
:
3
}
})
const
PopoverVisibleControls
=
ref
(
false
)
const
PopoverVisibleControls
=
ref
(
false
)
const
shareId
=
ref
(
0
)
const
shareId
=
ref
(
0
)
const
isIndeterminate
=
ref
(
fals
e
)
const
isIndeterminate
=
ref
(
tru
e
)
const
dataList
=
ref
([]
as
Array
<
any
>
)
const
dataList
=
ref
([]
as
Array
<
any
>
)
const
searchData
=
ref
({}
as
any
)
const
searchData
=
ref
({}
as
any
)
searchData
.
value
=
inject
(
injectKeyTemplate
)
searchData
.
value
=
inject
(
injectKeyTemplate
)
const
datas
=
reactive
({
const
datas
=
reactive
({
selectedDatas
:
[]
as
Array
,
selectedDatas
:
[]
as
Array
,
selectAll
:
false
as
any
,
selectAll
:
false
as
any
,
journeyAds
:{}
as
any
,
journeyAds
:{
RefreshLoading
:
false
}
as
any
,
pdfImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
250377000_558
.png'
,
pdfImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708
337830000_43
.png'
,
adsImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png'
,
adsImg
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png'
,
})
})
const
folderObj
=
ref
<
{
id
:
number
,
name
:
string
,
parentId
:
number
}
>
({
id
:
-
1
,
name
:
''
,
parentId
:
0
})
let
TemplateType
=
0
let
TemplateType
=
0
if
(
searchData
.
value
.
SellTemplateType
)
TemplateType
=
searchData
.
value
.
SellTemplateType
if
(
searchData
.
value
.
SellTemplateType
)
TemplateType
=
searchData
.
value
.
SellTemplateType
// if(searchData.value.journeyAds) {
// if(searchData.value.journeyAds) {
...
@@ -102,92 +127,10 @@
...
@@ -102,92 +127,10 @@
pageCount
:
0
,
//总页数
pageCount
:
0
,
//总页数
TemplateType
:
TemplateType
,
TemplateType
:
TemplateType
,
})
})
const
editObj
=
reactive
({})
//datas.journeyAds = inject('journeyAds')
datas
.
journeyAds
=
inject
(
'journeyAds'
)
const
loading
=
ref
(
false
as
any
)
const
loading
=
ref
(
false
as
any
)
const
deleteLoading
=
ref
<
any
>
(
null
)
const
SellTemplateRef
=
ref
<
any
>
()
const
SellTemplateRef
=
ref
<
any
>
()
// 重命名
const
OffEdit
=
()
=>
{
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
){
dataList
.
value
[
i
].
editTitle
=
false
if
(
editObj
.
value
&&
editObj
.
value
.
Id
&&
dataList
.
value
[
i
].
Id
==
editObj
.
value
.
Id
)
{
dataList
.
value
[
i
].
Title
=
editObj
.
value
.
Title
}
}
}
const
handleUpdateTitle
=
(
row
:
any
)
=>
{
if
(
!
row
.
Title
)
return
ElMessage
({
showClose
:
true
,
message
:
'文档名称不能为空'
,
type
:
'warning'
,
})
row
.
editTitle
=
false
if
(
row
.
Title
!=
editObj
.
value
.
Title
)
{
editObj
.
value
.
Title
=
row
.
Title
SetSellTemplate
(
row
)
}
}
const
startEditTitle
=
(
row
:
any
)
=>
{
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
){
dataList
.
value
[
i
].
editTitle
=
false
if
(
dataList
.
value
[
i
].
Id
==
row
.
Id
)
{
row
.
editTitle
=
true
sellGetTripTemplate
(
row
)
}
}
}
// 销售模版数据
const
sellGetTripTemplate
=
async
(
row
:
any
)
=>
{
try
{
let
queryMsg
=
{
Id
:
row
.
Id
}
let
dataRes
=
await
ConfigService
.
sellGetTemplateDetails
(
queryMsg
);
if
(
dataRes
.
data
.
resultCode
==
1
)
{
editObj
.
value
=
dataRes
.
data
.
data
}
}
catch
(
error
)
{
}
}
// 保存重命名
const
SetSellTemplate
=
async
(
row
:
any
)
=>
{
try
{
let
TempId
=
row
.
TempId
let
Id
=
row
.
Id
let
queryMsg
=
{
Id
:
Id
,
TempId
:
TempId
,
TempData
:
editObj
.
value
.
TempData
,
Title
:
editObj
.
value
.
Title
,
OWidth
:
0
,
OHeight
:
0
,
}
if
(
editObj
.
value
.
TemplateType
==
2
){
queryMsg
.
OWidth
=
editObj
.
value
.
Width
queryMsg
.
OHeight
=
editObj
.
value
.
Height
}
let
TemplateRes
=
await
ConfigService
.
sellSetTemplate
(
queryMsg
);
if
(
TemplateRes
.
data
.
resultCode
==
1
)
{
ElMessage
({
showClose
:
true
,
message
:
'重命名成功'
,
type
:
'success'
,
})
}
else
{
ElMessage
({
showClose
:
true
,
message
:
'重命名失败'
,
type
:
'warning'
,
})
}
}
catch
(
error
)
{}
}
// 全选按钮
// 全选按钮
const
clickSelectAll
=
()
=>
{
const
clickSelectAll
=
()
=>
{
if
(
datas
.
selectAll
)
{
if
(
datas
.
selectAll
)
{
...
@@ -225,6 +168,8 @@
...
@@ -225,6 +168,8 @@
isIndeterminate
.
value
=
true
isIndeterminate
.
value
=
true
}
}
if
(
datasList
==
0
&&
checkedCount
==
0
)
datas
.
selectAll
=
''
if
(
datasList
==
0
&&
checkedCount
==
0
)
datas
.
selectAll
=
''
console
.
log
(
datas
.
selectedDatas
,
'----'
)
}
}
const
setTemplateType
=
(
Id
:
number
)
=>
{
const
setTemplateType
=
(
Id
:
number
)
=>
{
queryObj
.
pageIndex
=
1
queryObj
.
pageIndex
=
1
...
@@ -302,12 +247,8 @@
...
@@ -302,12 +247,8 @@
if
(
pageRes
.
data
.
resultCode
==
1
)
{
if
(
pageRes
.
data
.
resultCode
==
1
)
{
let
arrList
=
function
(
list
){
let
arrList
=
function
(
list
){
list
.
forEach
(
x
=>
{
list
.
forEach
(
x
=>
{
x
.
editTitle
=
false
x
.
show
=
false
x
.
singleChoice
=
false
x
.
singleChoice
=
false
if
(
datas
.
selectedDatas
.
length
>
0
){
let
find
=
datas
.
selectedDatas
.
find
(
y
=>
{
return
y
==
x
.
Id
})
if
(
find
)
x
.
singleChoice
=
true
}
const
date1
=
new
Date
();
const
date1
=
new
Date
();
const
date2
=
new
Date
(
x
.
UpdateTime
);
const
date2
=
new
Date
(
x
.
UpdateTime
);
x
.
Day
=
getDaysBetween
(
date1
,
date2
)
x
.
Day
=
getDaysBetween
(
date1
,
date2
)
...
@@ -335,10 +276,18 @@
...
@@ -335,10 +276,18 @@
}
}
}
}
const
refreshHandler
=
()
=>
{
datas
.
journeyAds
.
RefreshLoading
=
true
queryObj
.
pageIndex
=
1
querySearchHandler
()
}
const
operaFolder
=
(
id
:
number
,
name
:
string
)
=>
{
folderObj
.
value
.
id
=
id
folderObj
.
value
.
name
=
name
}
watch
(()
=>
searchData
.
value
.
SellTemplateType
,
(
n
,
o
)
=>
{
watch
(()
=>
searchData
.
value
.
SellTemplateType
,
(
n
,
o
)
=>
{
isIndeterminate
.
value
=
false
isIndeterminate
.
value
=
false
datas
.
selectedDatas
=
[]
setTemplateType
(
n
)
setTemplateType
(
n
)
})
})
watch
(()
=>
datas
.
journeyAds
.
RefreshLoading
,
(
n
,
o
)
=>
{
watch
(()
=>
datas
.
journeyAds
.
RefreshLoading
,
(
n
,
o
)
=>
{
...
@@ -355,65 +304,38 @@
...
@@ -355,65 +304,38 @@
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
url('../../../assets/styles/common.css')
;
@import
url('../../../assets/styles/common.css')
;
.SelectAllBox
{
position
:
relative
;
top
:
3px
;
}
.journeyAds-title
{
max-width
:
600px
;
}
.journeyAds-TitleCenter
{
display
:
block
;
/* 将元素转化为块级元素 */
overflow
:
hidden
;
/* 隐藏超出部分 */
text-overflow
:
ellipsis
;
/* 显示省略号 */
white-space
:
nowrap
;
/* 不换行 */
-webkit-box-orient
:
vertical
;
/* 水平布局改为垂直布局 */
-webkit-line-clamp
:
1
;
/* 只显示两行文本 */
padding-right
:
20px
;
}
.journeyAds-Input
{
padding-right
:
20px
;
position
:
relative
;
top
:
6px
;
::v-deep
(
.el-textarea__inner
)
{
padding
:
5px
;
background
:
#f5f5f5
;
}
}
.journeyAds-container
{
.journeyAds-container
{
position
:
relative
;
position
:
relative
;
overflow
:
auto
;
overflow
:
auto
;
height
:
100%
;
overflow
:
auto
;
}
}
.journeyAds-container
th
{
.journeyAds-container
th
{
background
:
#fff
;
background
:
#fff
;
position
:
sticky
;
position
:
sticky
;
top
:
0px
;
top
:
0px
;
z-index
:
2
;
z-index
:
2
;
}
}
.journeyAds-table
{
.journeyAds
ple
-table
{
}
}
.journeyAds-table
td
,
.journeyAds-container
th
{
.journeyAds
ple
-table
td
,
.journeyAds-container
th
{
border-bottom
:
1px
solid
#F6F6F6
;
border-bottom
:
1px
solid
#F6F6F6
;
}
}
.journeyAds-table
td
:first-child
,
.journeyAds
ple
-table
td
:first-child
,
.journeyAds-table
td
:nth-child
(
2
),
.journeyAds
ple
-table
td
:nth-child
(
2
),
.journeyAds-container
th
:first-child
{
.journeyAds-container
th
:first-child
{
border
:
0
;
border
:
0
;
}
}
.journeyAds-table
td
{
.journeyAds
ple
-table
td
{
padding-bottom
:
6px
;
padding-bottom
:
6px
;
}
}
.journeyAds-table
td
:nth-child
(
2
)
{
.journeyAds
ple
-table
td
:nth-child
(
2
)
{
padding-bottom
:
0
;
padding-bottom
:
0
;
}
}
.hoverShow
{
.hoverShow
{
opacity
:
0
;
opacity
:
0
;
}
}
.journeyAds-table
:hover
.hoverShow
{
.journeyAds
ple
-table
:hover
.hoverShow
{
opacity
:
1
;
opacity
:
1
;
}
}
...
...
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