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
d4ca7880
Commit
d4ca7880
authored
Feb 26, 2024
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
列表 组件
parent
e12aaccf
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
275 additions
and
550 deletions
+275
-550
BrowsingHistory.vue
src/views/SellTemplate/components/BrowsingHistory.vue
+10
-115
CopyFile.vue
src/views/SellTemplate/components/CopyFile.vue
+0
-1
HistoricalVersion.vue
src/views/SellTemplate/components/HistoricalVersion.vue
+2
-0
TreeFile.vue
src/views/SellTemplate/components/TreeFile.vue
+5
-2
journeyAds.vue
src/views/SellTemplate/components/journeyAds.vue
+51
-403
journeyAdsList.vue
src/views/SellTemplate/components/journeyAdsList.vue
+207
-29
No files found.
src/views/SellTemplate/components/BrowsingHistory.vue
View file @
d4ca7880
...
...
@@ -53,50 +53,13 @@
style=
"height: 100%; overflow: auto"
>
<el-scrollbar
@
scroll=
"scrollingHandler"
class=
"q-px-md"
style=
"height: 100%;"
>
<div
style=
"min-width: '700px';height: 100%;"
>
<table
class=
"text-small"
style=
"width: 100%"
>
<tr
@
click=
"OffEdit"
>
<th
class=
"text-left"
:style=
"{'width':currentMenu==3||currentMenu==4?'20px':'0px'}"
>
<el-checkbox
v-if=
"currentMenu==3||currentMenu==4"
size=
"sm"
class=
"SelectAllBox"
v-model=
"datas.selectAll"
@
click=
"clickSelectAll"
:indeterminate=
"isIndeterminate"
/>
</th>
<th
colspan=
"2"
class=
"text-light"
>
<div
class=
"text-left q-pl-md"
>
文档名称
</div>
</th>
<th
class=
"text-light"
style=
"min-width: 150px; width: 150px"
>
<div
class=
"row items-center just-center pointer"
@
click
.
stop=
"clickSort"
>
<span>
最近修浏览
</span>
<span
class=
"column"
>
<el-icon
class=
"reactive"
style=
"top: 3px"
:class=
"[queryObj.OrderByType==1?'active':'']"
><CaretTop
/></el-icon>
<el-icon
class=
"reactive"
style=
"top:-3px"
:class=
"[queryObj.OrderByType==2?'active':'']"
><CaretBottom
/></el-icon>
</span>
</div>
</th>
<th
class=
"text-light"
style=
"min-width: 100px; width: 100px"
>
创建者
</th>
<th
class=
"text-light"
style=
"min-width: 120px; width: 120px"
>
操作
</th>
</tr>
<journeyAdsList
:current-menu=
"currentMenu"
:list=
"dataList"
:msg=
"queryObj"
:selected-datas=
"datas.selectedDatas"
@
UpdateData=
"UpdateData"
@
success=
"success"
@
refreshHandler=
"cribrosin"
></journeyAdsList>
</table>
</div>
@
refreshHandler=
"refreshHandler"
></journeyAdsList>
<div
v-if=
"dataList.length == 0 && !loading"
class=
"q-mt-lg bg-white rounded"
...
...
@@ -124,13 +87,6 @@
</el-scrollbar>
</div>
<TreeFile
v-if=
"isTreeFile"
:selected-datas=
"datas.selectedDatas"
:set-file-list=
"datas.setFileList"
:file-type=
"queryObj.FileType"
@
close=
"() => isTreeFile=false"
@
success=
"success"
></TreeFile>
</template>
<
script
setup
lang=
"ts"
>
import
{
ApiResult
}
from
'@/configs/axios'
;
...
...
@@ -156,7 +112,6 @@
});
const
PopoverVisibleControls
=
ref
(
false
);
const
isTreeFile
=
ref
(
false
)
const
Navigations
=
ref
([]
as
Array
<
any
>
);
const
isIndeterminate
=
ref
(
false
);
const
dataList
=
ref
([]
as
Array
<
any
>
);
...
...
@@ -185,28 +140,12 @@
const
UpdateData
=
(
obj
:
any
)
=>
{
dataList
.
value
=
obj
.
list
singleChoice
(
obj
.
row
)
}
const
success
=
()
=>
{
isTreeFile
.
value
=
false
;
datas
.
selectAll
=
false
;
datas
.
selectedDatas
=
[];
refreshHandler
()
}
const
cribrosin
=
(
msg
:
any
)
=>
{
if
(
msg
&&
msg
.
FileId
!=
undefined
){
datas
.
selectAll
=
false
datas
.
selectedDatas
=
[]
isIndeterminate
.
value
=
false
}
if
(
msg
)
queryObj
=
msg
refreshHandler
()
}
const
clickSort
=
()
=>
{
if
(
queryObj
.
OrderByType
==
2
)
queryObj
.
OrderByType
=
1
else
queryObj
.
OrderByType
=
2
refreshHandler
()
}
const
sellAdd
=
(
type
:
number
)
=>
{
searchData
.
value
.
sellId
=
0
...
...
@@ -247,48 +186,6 @@
}
};
// 全选按钮
const
clickSelectAll
=
()
=>
{
setTimeout
(()
=>
{
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
)
{
if
(
datas
.
selectAll
==
true
)
{
datas
.
selectedDatas
.
push
(
dataList
.
value
[
i
].
FileId
)
dataList
.
value
[
i
].
singleChoice
=
true
;
}
else
{
datas
.
selectedDatas
=
[];
isIndeterminate
.
value
=
false
;
dataList
.
value
[
i
].
singleChoice
=
false
;
}
}
},
100
);
};
const
singleChoice
=
(
row
:
any
)
=>
{
isIndeterminate
.
value
=
false
;
if
(
!
row
.
singleChoice
)
{
datas
.
selectedDatas
.
push
(
row
.
FileId
);
}
else
{
let
index
;
for
(
let
i
=
0
;
i
<
datas
.
selectedDatas
.
length
;
i
++
)
{
if
(
datas
.
selectedDatas
[
i
]
==
row
.
FileId
)
index
=
i
;
}
datas
.
selectedDatas
.
splice
(
index
,
1
);
isIndeterminate
.
value
=
true
;
}
let
checkedCount
=
datas
.
selectedDatas
.
length
;
let
datasList
=
dataList
.
value
.
length
;
if
(
datasList
>
0
&&
checkedCount
>
0
&&
datasList
==
checkedCount
)
datas
.
selectAll
=
true
;
if
(
datasList
>
0
&&
checkedCount
>
0
&&
datasList
>
checkedCount
)
{
datas
.
selectAll
=
""
;
isIndeterminate
.
value
=
true
;
}
if
(
checkedCount
==
0
)
{
datas
.
selectAll
=
""
isIndeterminate
.
value
=
false
;
}
};
const
querySearchHandler
=
async
()
=>
{
loading
.
value
=
true
;
try
{
...
...
@@ -301,14 +198,6 @@
x
.
singleChoice
=
false
;
x
.
Id
=
''
x
.
showSelect
=
false
if
(
datas
.
selectAll
)
{
x
.
singleChoice
=
true
;
datas
.
selectedDatas
.
push
(
x
.
FileId
);
}
else
if
(
datas
.
selectedDatas
.
length
>
0
&&
datas
.
selectedDatas
.
indexOf
(
x
.
FileId
)
!=
-
1
)
x
.
singleChoice
=
true
;
const
date1
=
new
Date
();
const
date2
=
new
Date
(
x
.
UpdateTime
);
x
.
Day
=
getDaysBetween
(
date1
,
date2
);
...
...
@@ -340,7 +229,13 @@
}
}
};
const
refreshHandler
=
()
=>
{
const
refreshHandler
=
(
obj
:
any
)
=>
{
if
(
obj
){
if
(
obj
.
FileId
)
{
queryObj
.
FileId
=
obj
.
FileId
}
if
(
obj
.
OrderByType
)
queryObj
.
OrderByType
=
obj
.
OrderByType
}
datas
.
RefreshLoading
=
true
;
queryObj
.
pageIndex
=
1
;
querySearchHandler
();
...
...
src/views/SellTemplate/components/CopyFile.vue
View file @
d4ca7880
...
...
@@ -63,7 +63,6 @@
:props=
"defaultProps"
v-model=
"datas.FolderId"
:data=
"dataList"
default-expand-all
check-strictly
:render-after-expand=
"false"
style=
"width: 220px"
...
...
src/views/SellTemplate/components/HistoricalVersion.vue
View file @
d4ca7880
...
...
@@ -112,6 +112,7 @@ import CopyFile from "./CopyFile.vue";
})
const
emit
=
defineEmits
<
{
(
event
:
'close'
):
void
(
event
:
'refreshHandler'
):
void
}
>
()
const
datas
=
reactive
({
type
:
1
,
...
...
@@ -186,6 +187,7 @@ import CopyFile from "./CopyFile.vue";
const
refreshHandler
=
()
=>
{
queryObj
.
pageIndex
=
1
;
querySearchHandler
();
emit
(
'refreshHandler'
)
};
querySearchHandler
()
...
...
src/views/SellTemplate/components/TreeFile.vue
View file @
d4ca7880
...
...
@@ -56,7 +56,6 @@
:props=
"defaultProps"
v-model=
"datas.FolderId"
:data=
"dataList"
default-expand-all
check-strictly
:render-after-expand=
"false"
style=
"width: 220px"
...
...
@@ -98,6 +97,10 @@ import FolderService from "@/services/FolderService";
fileType
:
{
type
:
Number
,
required
:
1
},
fileId
:{
type
:
Number
,
required
:
''
}
})
const
emit
=
defineEmits
<
{
...
...
@@ -123,7 +126,7 @@ import FolderService from "@/services/FolderService";
FolderObj
:
{},
checkedKeys
:
null
as
any
})
datas
.
FolderId
=
props
.
details
?
props
.
details
.
ParentFileId
:
props
.
setFileList
[
0
].
ParentF
ileId
datas
.
FolderId
=
props
.
f
ileId
const
show
=
ref
(
true
)
const
loading
=
ref
(
true
)
const
deleteLoading
=
ref
<
any
>
(
null
);
...
...
src/views/SellTemplate/components/journeyAds.vue
View file @
d4ca7880
...
...
@@ -70,100 +70,16 @@
style=
"height: 100%; overflow: auto"
>
<el-scrollbar
@
scroll=
"scrollingHandler"
class=
"q-px-md"
style=
"height: 100%;"
>
<div
style=
"min-width: '700px';height: 100%;"
>
<table
class=
"text-small"
style=
"width: 100%"
>
<tr
@
click=
"OffEdit"
>
<th
class=
"text-left"
style=
"width: 20px;"
>
<el-checkbox
size=
"sm"
class=
"SelectAllBox"
v-model=
"datas.selectAll"
@
click=
"clickSelectAll"
:indeterminate=
"isIndeterminate"
/>
</th>
<th
colspan=
"2"
class=
"text-light"
>
<div
class=
"text-left q-pl-md"
>
文档名称
</div>
</th>
<th
class=
"text-light"
style=
"min-width: 150px; width: 150px"
>
<div
class=
"row items-center just-center pointer"
@
click
.
stop=
"clickSort"
>
<span>
最近修改
</span>
<span
class=
"column"
>
<el-icon
class=
"reactive"
style=
"top: 3px"
:class=
"[queryObj.OrderByType==1?'active':'']"
><CaretTop
/></el-icon>
<el-icon
class=
"reactive"
style=
"top:-3px"
:class=
"[queryObj.OrderByType==2?'active':'']"
><CaretBottom
/></el-icon>
</span>
</div>
</th>
<th
class=
"text-light"
style=
"min-width: 100px; width: 100px"
>
创建者
</th>
<th
class=
"text-light"
style=
"min-width: 120px; width: 120px"
>
操作
</th>
</tr>
<
template
v-for=
"(item,index) in dataList"
>
<tr
class=
"text-5B5D62 journeyAdsple-table pointer"
>
<td
@
click
.
stop=
"item.FileType?OffEdit():editDelete(item,2)"
><div
class=
"row items-center hoverShow"
:style=
"
{'opacity':item.singleChoice?1:''}">
<el-checkbox
size=
"sm"
class=
"SelectAllBox"
v-model=
"item.singleChoice"
@
click
.
stop=
"singleChoice(item)"
/></div></td>
<td
style=
"width: 30px;"
@
click
.
stop=
"item.FileType?OffEdit():editDelete(item,2)"
valign=
"middle"
>
<div
:class=
"
{'share-icon-box':item.IsShare}" style="display: inline-block;">
<img
v-if=
"item.FileType"
class=
"q-px-md "
:src=
"item.FileType==1?datas.pdfImg:datas.adsImg"
style=
"height: 25px;"
/>
<img
v-else
class=
"q-px-md"
src=
"@/assets/img/file.png"
style=
"height: 23px;"
/>
</div>
</td>
<td
class=
"journeyAds-title wrap row"
>
<div
class=
"col"
v-if=
"!item.editTitle"
@
click
.
stop=
"item.FileType?OffEdit():editDelete(item,2)"
>
<div
class=
"row flex-center"
>
<el-tooltip
placement=
"top-start"
>
<template
#
content
><div
style=
"max-width: 600px;"
>
{{
item
.
FileName
}}
</div></
template
>
<div
class=
"journeyAds-TitleCenter"
>
{{item.FileName}}
<span
v-if=
"item.FileName.length>70"
>
...
</span>
</div>
</el-tooltip>
</div>
</div>
<el-input
class=
"journeyAds-Input"
v-model=
"item.FileName"
autosize
type=
"textarea"
placeholder=
"Please input"
maxlength=
"500"
size=
"small"
v-if=
"item.editTitle"
@
blur=
"handleUpdateTitle(item)"
/></td>
<td
class=
"text-center"
@
click
.
stop=
"item.FileType?OffEdit():editDelete(item,2)"
><span>
{{formatDateTimeToRead(item.UpdateTime
&&
item.UpdateTime!=''?item.UpdateTime:item.CreateTime)}}
</span></td>
<td
class=
"text-center"
@
click
.
stop=
"item.FileType?OffEdit():editDelete(item,2)"
><span>
{{item.CreateName}}
</span></td>
<td
class=
"text-center"
>
<div
class=
"hoverShow row items-center just-center q-pt-sm"
>
<el-button
type=
"primary"
:icon=
"Edit"
size=
"small"
@
click
.
stop=
"editDelete(item)"
>
编辑
</el-button>
<el-dropdown
class=
"q-pl-md"
trigger=
"click"
>
<el-icon
size=
"16"
color=
"#b1b7cf"
><MoreFilled
/></el-icon>
<
template
#
dropdown
>
<el-dropdown-menu
class=
"q-pa-md"
@
click
.
stop=
"OffEdit"
>
<el-dropdown-item
v-if=
"item.FileType"
icon=
"EditPen"
@
click
.
stop=
"startEditTitle(item)"
>
重命名
</el-dropdown-item>
<el-dropdown-item
v-if=
"item.FileType"
icon=
"Clock"
@
click
.
stop=
"history(item)"
>
历史版本
</el-dropdown-item>
<el-dropdown-item
icon=
"Position"
@
click
.
stop=
"()=>setFileShareHandler(item)"
>
分享
</el-dropdown-item>
<el-dropdown-item
v-if=
"item.IsShare"
icon=
"Hide"
@
click
.
stop=
"removeShareHandler(item)"
>
取消分享
</el-dropdown-item>
<el-dropdown-item
icon=
"Expand"
@
click
.
stop=
"MoveFile(item)"
>
移动至
</el-dropdown-item>
<el-dropdown-item
v-if=
"item.FileType"
icon=
"CopyDocument"
@
click
.
stop=
"CopyTo(item)"
>
复制到
</el-dropdown-item>
<el-dropdown-item
icon=
"Delete"
@
click=
"editDelete(item,1)"
>
删除
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</div>
</td>
</tr>
</template>
</table>
</div>
<journeyAdsList
:current-menu=
"currentMenu"
:position=
"position"
:list=
"dataList"
:msg=
"queryObj"
:navigations=
"Navigations"
:selected-datas=
"datas.selectedDatas"
@
UpdateData=
"UpdateData"
@
success=
"success"
@
refreshHandler=
"refreshHandler"
></journeyAdsList>
<div
v-if=
"dataList.length == 0 && !loading"
class=
"q-mt-lg bg-white rounded"
...
...
@@ -190,12 +106,6 @@
></div>
</el-scrollbar>
</div>
<ShareForm
:id=
"shareId"
:file-type=
"shareFileType"
v-if=
"shareId > 0"
@
close=
"() => (shareId = 0,refreshHandler())"
></ShareForm>
<Folder
:folder-id=
"folderObj?.id"
:folder-name=
"folderObj?.name"
...
...
@@ -206,28 +116,16 @@
@
success=
"refreshHandler()"
></Folder>
<HistoricalVersion
:details=
"journeyAdsDetails"
v-if=
"isHistoricalVersion"
@
close=
"() => {journeyAdsDetails = '';isHistoricalVersion=false}"
></HistoricalVersion>
<TreeFile
v-if=
"isTreeFile"
:details=
"journeyAdsDetails"
:selected-datas=
"datas.selectedDatas"
:set-file-list=
"datas.setFileList"
:file-type=
"queryObj.FileType"
:file-id=
"queryObj.FileId"
:msg=
"queryObj"
@
close=
"() => {journeyAdsDetails = '';isTreeFile=false}"
@
success=
"() => {
journeyAdsDetails = '';
isTreeFile=false;
datas.selectAll = false;
datas.selectedDatas = [];
refreshHandler()}"
></TreeFile>
@
success=
"success()"
></TreeFile>
<CopyFile
v-if=
"isCopyTo"
:details=
"journeyAdsDetails"
@
close=
"() => {journeyAdsDetails = '';isCopyTo=false}"
></CopyFile>
</template>
<
script
setup
lang=
"ts"
>
import
{
ref
,
reactive
,
provide
,
watch
,
inject
,
onMounted
,
PropType
}
from
"vue"
;
...
...
@@ -244,6 +142,7 @@ import HistoricalVersion from "./HistoricalVersion.vue";
import
TreeFile
from
"./TreeFile.vue"
;
import
breadPeeling
from
"./breadPeeling.vue"
;
import
{
ApiResult
}
from
"@/configs/axios"
;
import
journeyAdsList
from
"./journeyAdsList.vue"
;
const
SalesEditorStore
=
useSellTemplateStore
();
const
marketStore
=
useScreenStore
();
...
...
@@ -259,21 +158,13 @@ const props = defineProps({
});
const
PopoverVisibleControls
=
ref
(
false
);
const
shareId
=
ref
(
0
);
const
shareFileType
=
ref
(
0
)
const
journeyAdsDetails
=
ref
(
''
);
const
isHistoricalVersion
=
ref
(
false
);
const
isCopyTo
=
ref
(
false
);
const
isTreeFile
=
ref
(
false
)
const
Navigations
=
ref
([]
as
Array
<
any
>
);
const
showHistory
=
ref
(
true
);
const
isIndeterminate
=
ref
(
false
);
const
dataList
=
ref
([]
as
Array
<
any
>
);
const
NewDataList
=
ref
([]
as
Array
<
any
>
);
const
searchData
=
ref
({}
as
any
);
searchData
.
value
=
inject
(
injectKeyTemplate
);
const
deleteLoading
=
ref
<
any
>
(
null
);
const
removeShareLoading
=
ref
<
any
>
(
null
);
const
datas
=
reactive
({
selectedDatas
:
[]
as
Array
,
selectAll
:
false
as
any
,
...
...
@@ -306,24 +197,30 @@ const queryObj = reactive({
FileId
:
0
,
OrderByType
:
2
,
//1 升序 2倒序
});
const
editObj
=
reactive
({});
//datas.journeyAds = inject('journeyAds')
const
loading
=
ref
(
false
as
any
);
const
SellTemplateRef
=
ref
<
any
>
();
const
CopyTo
=
(
row
:
any
)
=>
{
isCopyTo
.
value
=
true
journeyAdsDetails
.
value
=
row
// 已选数据
const
UpdateData
=
(
obj
:
any
)
=>
{
if
(
obj
){
if
(
obj
.
list
)
dataList
.
value
=
obj
.
list
if
(
obj
.
selectedDatas
)
datas
.
selectedDatas
=
obj
.
selectedDatas
}
}
const
clickSort
=
(
type
:
any
)
=>
{
if
(
queryObj
.
OrderByType
==
2
)
queryObj
.
OrderByType
=
1
else
queryObj
.
OrderByType
=
2
const
success
=
()
=>
{
isTreeFile
.
value
=
false
;
datas
.
selectedDatas
=
[];
for
(
let
index
=
0
;
index
<
dataList
.
value
.
length
;
index
++
)
{
const
element
=
dataList
.
value
[
index
]
element
.
singleChoice
=
false
;
}
refreshHandler
()
}
// 导航
const
BackInquire
=
()
=>
{
datas
.
selectAll
=
false
;
datas
.
selectedDatas
=
[];
let
Navigation
=
Navigations
.
value
[
Navigations
.
value
.
length
-
2
]
if
(
Navigation
&&
Navigation
.
FileId
){
...
...
@@ -332,7 +229,6 @@ const BackInquire = () => {
}
const
breadPeelingInquire
=
(
FileId
:
number
,
index
:
number
)
=>
{
datas
.
selectAll
=
false
;
datas
.
selectedDatas
=
[];
Navigations
.
value
.
splice
(
index
+
1
,
Navigations
.
value
.
length
-
1
)
queryObj
.
FileId
=
FileId
...
...
@@ -346,9 +242,7 @@ const sellAdd = (type:number) =>{
}
// 移动到文件夹
const
MoveFile
=
(
item
:
any
)
=>
{
if
(
item
)
journeyAdsDetails
.
value
=
item
else
{
const
MoveFile
=
()
=>
{
datas
.
setFileList
=
[]
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
){
for
(
let
j
=
0
;
j
<
datas
.
selectedDatas
.
length
;
j
++
){
...
...
@@ -363,251 +257,11 @@ const MoveFile = (item:any) => {
}
}
}
}
isTreeFile
.
value
=
true
}
// 历史版本
const
history
=
(
row
:
any
)
=>
{
journeyAdsDetails
.
value
=
row
;
isHistoricalVersion
.
value
=
true
};
// 重命名
const
OffEdit
=
()
=>
{
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
)
{
dataList
.
value
[
i
].
editTitle
=
false
;
if
(
editObj
.
value
&&
editObj
.
value
.
FileId
&&
dataList
.
value
[
i
].
FileId
==
editObj
.
value
.
FileId
)
{
dataList
.
value
[
i
].
FileName
=
editObj
.
value
.
FileName
;
}
}
};
const
handleUpdateTitle
=
async
(
row
:
any
)
=>
{
if
(
!
row
.
FileName
)
row
.
FileName
=
editObj
.
value
.
FileName
;
row
.
editTitle
=
false
;
if
(
row
.
FileName
!=
editObj
.
value
.
FileName
)
{
editObj
.
value
.
FileName
=
row
.
FileName
;
try
{
let
queryMsg
=
{
FileId
:
row
.
FileId
,
Title
:
editObj
.
value
.
FileName
,
};
let
TemplateRes
=
await
ConfigService
.
ReNameTripOther
(
queryMsg
);
if
(
TemplateRes
.
data
.
resultCode
==
1
)
{
ElMessage
({
showClose
:
true
,
message
:
"重命名成功"
,
type
:
"success"
,
});
}
else
{
ElMessage
({
showClose
:
true
,
message
:
"重命名失败"
,
type
:
"warning"
,
});
}
}
catch
(
error
)
{}
}
};
const
startEditTitle
=
(
row
:
any
)
=>
{
row
.
editTitle
=
true
;
editObj
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
row
));
};
const
removeShareHandler
=
async
(
item
:
any
)
=>
{
if
(
removeShareLoading
.
value
)
return
removeShareLoading
.
value
=
ElLoading
.
service
({
lock
:
true
,
text
:
"正在处理"
,
})
let
errmsg
=
''
try
{
let
response
=
await
ConfigService
.
RemoveFileShareAsync
([
item
.
FileId
])
if
(
response
.
data
.
resultCode
==
ApiResult
.
SUCCESS
){
ElMessage
.
success
({
message
:
'设置成功'
})
item
.
IsShare
=
false
}
else
errmsg
=
'取消分享失败,请刷新重试'
}
catch
(
error
)
{
errmsg
=
'取消分享失败,请刷新重试'
}
if
(
errmsg
!=
''
)
{
ElMessage
.
error
({
message
:
errmsg
})
}
removeShareLoading
.
value
.
close
();
removeShareLoading
.
value
=
null
;
}
// 全选按钮
const
clickSelectAll
=
()
=>
{
setTimeout
(()
=>
{
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
)
{
if
(
datas
.
selectAll
==
true
)
{
datas
.
selectedDatas
.
push
(
dataList
.
value
[
i
].
FileId
)
dataList
.
value
[
i
].
singleChoice
=
true
;
}
else
{
datas
.
selectedDatas
=
[];
isIndeterminate
.
value
=
false
;
dataList
.
value
[
i
].
singleChoice
=
false
;
}
}
},
100
);
};
const
singleChoice
=
(
row
:
any
)
=>
{
isIndeterminate
.
value
=
false
;
if
(
!
row
.
singleChoice
)
{
datas
.
selectedDatas
.
push
(
row
.
FileId
);
}
else
{
let
index
;
for
(
let
i
=
0
;
i
<
datas
.
selectedDatas
.
length
;
i
++
)
{
if
(
datas
.
selectedDatas
[
i
]
==
row
.
FileId
)
index
=
i
;
}
datas
.
selectedDatas
.
splice
(
index
,
1
);
isIndeterminate
.
value
=
true
;
}
let
checkedCount
=
datas
.
selectedDatas
.
length
;
let
datasList
=
dataList
.
value
.
length
;
if
(
datasList
>
0
&&
checkedCount
>
0
&&
datasList
==
checkedCount
)
datas
.
selectAll
=
true
;
if
(
datasList
>
0
&&
checkedCount
>
0
&&
datasList
>
checkedCount
)
{
datas
.
selectAll
=
""
;
isIndeterminate
.
value
=
true
;
}
if
(
datasList
==
0
&&
checkedCount
==
0
)
datas
.
selectAll
=
""
;
};
const
DeleteFile
=
async
(
item
:
any
)
=>
{
ElMessageBox
.
confirm
(
"此操作将删除该文件夹及其下的文件,是否确定?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(
async
()
=>
{
try
{
let
queryMsg
=
{
FolderId
:
item
.
FileId
,
};
deleteLoading
.
value
=
ElLoading
.
service
({
lock
:
true
,
text
:
"正在处理"
,
});
let
pageRes
=
await
FolderService
.
RemoveTripFolder
(
queryMsg
);
if
(
pageRes
.
data
.
resultCode
==
1
)
{
ElMessage
({
showClose
:
true
,
message
:
`删除
${
queryObj
.
FileType
==
2
?
"广告"
:
"行程"
}
文件夹成功`
,
type
:
"success"
,
});
refreshHandler
();
}
else
{
ElMessage
({
showClose
:
true
,
message
:
`删除
${
queryObj
.
FileType
==
2
?
"广告"
:
"行程"
}
文件夹失败`
,
type
:
"warning"
,
});
}
deleteLoading
.
value
.
close
();
deleteLoading
.
value
=
null
;
}
catch
(
error
)
{}
})
.
catch
(()
=>
{});
};
const
DeleteTemplate
=
async
(
item
:
any
)
=>
{
ElMessageBox
.
confirm
(
"此操作将删除该模版,是否确定?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(
async
()
=>
{
try
{
let
queryMsg
=
{
Id
:
item
.
FileId
,
};
deleteLoading
.
value
=
ElLoading
.
service
({
lock
:
true
,
text
:
"正在处理"
,
});
let
pageRes
=
await
ConfigService
.
sellSetRemoveTemplate
(
queryMsg
);
if
(
pageRes
.
data
.
resultCode
==
1
)
{
ElMessage
({
showClose
:
true
,
message
:
`删除
${
queryObj
.
FileType
==
2
?
"广告"
:
"行程"
}
成功`
,
type
:
"success"
,
});
refreshHandler
();
}
else
{
ElMessage
({
showClose
:
true
,
message
:
`删除
${
queryObj
.
FileType
==
2
?
"广告"
:
"行程"
}
失败`
,
type
:
"warning"
,
});
}
deleteLoading
.
value
.
close
();
deleteLoading
.
value
=
null
;
}
catch
(
error
)
{}
})
.
catch
(()
=>
{});
};
const
editDelete
=
async
(
row
:
any
,
type
:
Number
)
=>
{
if
(
type
==
1
)
{
if
(
row
.
FileType
)
DeleteTemplate
(
row
);
else
DeleteFile
(
row
);
}
else
{
if
(
row
.
FileType
)
{
let
list
=
[
{
id
:
"test-slide-1"
,
pageType
:
0
,
elements
:
[],
background
:
{
type
:
"solid"
,
color
:
"#ffffff"
,
},
},
];
useSlidesStore
().
setSlides
(
list
);
searchData
.
value
.
sellId
=
row
.
FileId
;
searchData
.
value
.
sellTempId
=
row
.
TempId
;
searchData
.
value
.
TemplateType
=
row
.
FileType
;
SalesEditorStore
.
setSalesEditor
(
2
);
marketStore
.
setMarket
(
false
);
}
else
{
// 2文件夹详情
if
(
type
==
2
)
{
console
.
log
(
row
.
FileId
,
row
.
ParentFileId
)
queryObj
.
FileId
=
row
.
FileId
;
Navigations
.
value
.
push
(
{
FileId
:
row
.
FileId
,
FileName
:
row
.
FileName
,
ParentFileId
:
row
.
ParentFileId
}
);
datas
.
selectAll
=
false
datas
.
selectedDatas
=
[]
isIndeterminate
.
value
=
false
refreshHandler
();
}
else
{
folderObj
.
value
.
id
=
row
.
FileId
;
folderObj
.
value
.
name
=
row
.
FileName
;
folderObj
.
value
.
type
=
row
.
FileType
;
}
}
}
};
const
querySearchHandler
=
async
()
=>
{
if
(
loading
.
value
)
return
loading
.
value
=
true
;
try
{
if
(
queryObj
.
pageIndex
==
1
)
dataList
.
value
=
[];
...
...
@@ -619,14 +273,6 @@ const querySearchHandler = async () => {
x
.
singleChoice
=
false
;
x
.
Id
=
''
x
.
showSelect
=
false
if
(
datas
.
selectAll
)
{
x
.
singleChoice
=
true
;
datas
.
selectedDatas
.
push
(
x
.
FileId
);
}
else
if
(
datas
.
selectedDatas
.
length
>
0
&&
datas
.
selectedDatas
.
indexOf
(
x
.
FileId
)
!=
-
1
)
x
.
singleChoice
=
true
;
const
date1
=
new
Date
();
const
date2
=
new
Date
(
x
.
UpdateTime
);
x
.
Day
=
getDaysBetween
(
date1
,
date2
);
...
...
@@ -658,7 +304,15 @@ const scrollingHandler = () => {
}
}
};
const
refreshHandler
=
()
=>
{
const
refreshHandler
=
(
obj
:
any
)
=>
{
if
(
obj
){
if
(
obj
.
FileId
)
{
queryObj
.
FileId
=
obj
.
FileId
datas
.
selectedDatas
=
[]
}
if
(
obj
.
OrderByType
)
queryObj
.
OrderByType
=
obj
.
OrderByType
if
(
obj
.
Navigations
)
Navigations
.
value
=
obj
.
Navigations
}
datas
.
journeyAds
.
RefreshLoading
=
true
;
queryObj
.
pageIndex
=
1
;
querySearchHandler
();
...
...
@@ -682,16 +336,10 @@ const checkPositionHandler = (n:any)=>{
emit
(
'destroy-position'
)
}
}
const
setFileShareHandler
=
(
item
:
any
)
=>
{
shareFileType
.
value
=
item
.
FileType
shareId
.
value
=
item
.
FileId
}
watch
(
()
=>
searchData
.
value
.
SellTemplateType
,
(
n
,
o
)
=>
{
isIndeterminate
.
value
=
false
;
datas
.
selectAll
=
false
;
datas
.
selectedDatas
=
[];
queryObj
.
FileType
=
n
;
queryObj
.
FileId
=
0
;
...
...
src/views/SellTemplate/components/journeyAdsList.vue
View file @
d4ca7880
<
template
>
<div
style=
"min-width: '700px';height: 100%;"
>
<table
class=
"text-small"
style=
"width: 100%"
>
<tr
@
click=
"OffEdit"
>
<th
class=
"text-left"
style=
"width: 20px;"
>
<el-checkbox
v-if=
"currentMenu==3||currentMenu==4"
size=
"sm"
class=
"SelectAllBox"
v-model=
"datas.selectAll"
@
click=
"clickSelectAll"
:indeterminate=
"isIndeterminate"
/>
</th>
<th
colspan=
"2"
class=
"text-light"
>
<div
class=
"text-left q-pl-md"
>
文档名称
</div>
</th>
<th
class=
"text-light"
style=
"min-width: 150px; width: 150px"
>
<div
class=
"row items-center just-center pointer"
@
click
.
stop=
"clickSort"
>
<span>
最近修改
</span>
<span
class=
"column"
>
<el-icon
class=
"reactive"
style=
"top: 3px"
:class=
"[queryObj.OrderByType==1?'active':'']"
><CaretTop
/></el-icon>
<el-icon
class=
"reactive"
style=
"top:-3px"
:class=
"[queryObj.OrderByType==2?'active':'']"
><CaretBottom
/></el-icon>
</span>
</div>
</th>
<th
class=
"text-light"
style=
"min-width: 100px; width: 100px"
>
创建者
</th>
<th
class=
"text-light"
style=
"min-width: 120px; width: 120px"
>
操作
</th>
</tr>
<tr
class=
"text-5B5D62 journeyAdsple-table pointer"
v-for=
"(item,index) in dataList"
>
<td
@
click
.
stop=
"
OffEdit(
)"
>
<td
@
click
.
stop=
"
item.FileType?OffEdit():editDelete(item,2
)"
>
<div
v-if=
"currentMenu==3||currentMenu==4"
class=
"row items-center hoverShow"
:style=
"
{'opacity':item.singleChoice?1:''}">
<el-checkbox
size=
"sm"
class=
"SelectAllBox"
v-model=
"item.singleChoice"
@
click
.
stop=
"singleChoice(item)"
/></div>
</td>
<td
style=
"width: 30px;"
@
click
.
stop=
"
OffEdit(
)"
valign=
"middle"
>
<td
style=
"width: 30px;"
@
click
.
stop=
"
item.FileType?OffEdit():editDelete(item,2
)"
valign=
"middle"
>
<div
:class=
"
{'share-icon-box':item.IsShare}" style="display: inline-block;">
<img
v-if=
"item.FileType"
class=
"q-px-md "
:src=
"item.FileType==1?datas.pdfImg:datas.adsImg"
style=
"height: 25px;"
/>
<img
v-else
class=
"q-px-md"
src=
"@/assets/img/file.png"
style=
"height: 23px;"
/>
</div>
</td>
<td
class=
"journeyAds-title wrap row"
>
<div
class=
"col"
v-if=
"!item.editTitle"
@
click
.
stop=
"
OffEdit(
)"
>
<div
class=
"col"
v-if=
"!item.editTitle"
@
click
.
stop=
"
item.FileType?OffEdit():editDelete(item,2
)"
>
<div
class=
"row flex-center"
>
<el-tooltip
placement=
"top-start"
>
...
...
@@ -35,8 +68,8 @@
v-if=
"item.editTitle"
@
blur=
"handleUpdateTitle(item)"
/></td>
<td
class=
"text-center"
@
click
.
stop=
"
OffEdit(
)"
><span>
{{formatDateTimeToRead(item.UpdateTime
&&
item.UpdateTime!=''?item.UpdateTime:item.CreateTime)}}
</span></td>
<td
class=
"text-center"
@
click
.
stop=
"
OffEdit(
)"
><span>
{{item.CreateName}}
</span></td>
<td
class=
"text-center"
@
click
.
stop=
"
item.FileType?OffEdit():editDelete(item,2
)"
><span>
{{formatDateTimeToRead(item.UpdateTime
&&
item.UpdateTime!=''?item.UpdateTime:item.CreateTime)}}
</span></td>
<td
class=
"text-center"
@
click
.
stop=
"
item.FileType?OffEdit():editDelete(item,2
)"
><span>
{{item.CreateName}}
</span></td>
<td
class=
"text-center"
>
<div
class=
"hoverShow row items-center just-center q-pt-sm"
>
<el-button
type=
"primary"
:icon=
"Edit"
size=
"small"
@
click
.
stop=
"editDelete(item)"
>
编辑
</el-button>
...
...
@@ -46,7 +79,7 @@
<el-dropdown-menu
class=
"q-pa-md"
@
click
.
stop=
"OffEdit"
>
<el-dropdown-item
v-if=
"item.FileType"
icon=
"EditPen"
@
click
.
stop=
"startEditTitle(item)"
>
重命名
</el-dropdown-item>
<el-dropdown-item
v-if=
"item.FileType"
icon=
"Clock"
@
click
.
stop=
"history(item)"
>
历史版本
</el-dropdown-item>
<el-dropdown-item
icon=
"Position"
@
click
.
stop=
"()=>s
hareId=item.FileId
"
>
分享
</el-dropdown-item>
<el-dropdown-item
icon=
"Position"
@
click
.
stop=
"()=>s
etFileShareHandler(item)
"
>
分享
</el-dropdown-item>
<el-dropdown-item
v-if=
"item.IsShare"
icon=
"Hide"
@
click
.
stop=
"removeShareHandler(item)"
>
取消分享
</el-dropdown-item>
<el-dropdown-item
v-if=
"currentMenu==3||currentMenu==4"
icon=
"Expand"
@
click
.
stop=
"MoveFile(item)"
>
移动至
</el-dropdown-item>
<el-dropdown-item
@
click
.
stop=
"CollectHandler(item)"
>
...
...
@@ -64,6 +97,8 @@
</div>
</td>
</tr>
</table>
</div>
<ShareForm
:id=
"shareId"
v-if=
"shareId > 0"
...
...
@@ -83,19 +118,23 @@
:details=
"journeyAdsDetails"
v-if=
"isHistoricalVersion"
@
close=
"() => {journeyAdsDetails = '';isHistoricalVersion=false}"
@
refreshHandler=
"emit('refreshHandler')"
></HistoricalVersion>
<TreeFile
v-if=
"isTreeFile"
:details=
"journeyAdsDetails"
:selected-datas=
"
prop
s.selectedDatas"
:selected-datas=
"
data
s.selectedDatas"
:set-file-list=
"datas.setFileList"
:file-type=
"journeyAdsDetails.FileType"
:file-id=
"queryObj.FileId"
@
close=
"() => {journeyAdsDetails = '';isTreeFile=false}"
@
success=
"() => {
journeyAdsDetails = '';
isTreeFile=false;
emit('success')
emit('refreshHandler')}"
></TreeFile>
datas.selectAll=false;
isIndeterminate=false;
datas.selectedDatas=[];
emit('success')}"
></TreeFile>
<CopyFile
v-if=
"isCopyTo"
:details=
"journeyAdsDetails"
...
...
@@ -126,6 +165,10 @@ import CopyFile from "./CopyFile.vue";
type
:
Number
,
default
:
3
,
},
position
:{
type
:
Object
as
PropType
<
{
FileId
:
number
,
FileType
:
1
|
2
,
Position
:{
FileId
:
number
,
FileName
:
string
}[]}
|
null
>
,
default
:
null
},
list
:{
type
:
Array
,
required
:[]
...
...
@@ -138,6 +181,10 @@ import CopyFile from "./CopyFile.vue";
type
:
Array
,
required
:[]
},
navigations
:{
type
:
Array
,
required
:[]
},
})
const
emit
=
defineEmits
<
{
(
event
:
'close'
):
void
,
...
...
@@ -152,6 +199,8 @@ import CopyFile from "./CopyFile.vue";
type
:
number
;
}
>
({
id
:
-
1
,
name
:
""
,
parentId
:
0
,
number
:
1
});
const
datas
=
reactive
({
selectedDatas
:
[]
as
Array
,
selectAll
:
false
as
any
,
journeyAds
:
{
RefreshLoading
:
false
}
as
any
,
fileList
:
[]
as
any
,
setFileList
:
[]
as
any
,
...
...
@@ -170,9 +219,11 @@ import CopyFile from "./CopyFile.vue";
queryObj
.
value
=
props
.
msg
const
shareId
=
ref
(
0
);
const
shareFileType
=
ref
(
0
)
const
journeyAdsDetails
=
ref
(
''
);
const
isHistoricalVersion
=
ref
(
false
);
const
isCopyTo
=
ref
(
false
);
const
isIndeterminate
=
ref
(
false
);
const
isTreeFile
=
ref
(
false
)
const
Navigations
=
ref
([]
as
Array
<
any
>
);
const
searchData
=
ref
({}
as
any
);
...
...
@@ -180,6 +231,14 @@ import CopyFile from "./CopyFile.vue";
const
deleteLoading
=
ref
<
any
>
(
null
);
const
removeShareLoading
=
ref
<
any
>
(
null
);
const
editObj
=
reactive
({});
const
clickSort
=
(
type
:
any
)
=>
{
let
obj
=
{
OrderByType
:
queryObj
.
value
.
OrderByType
==
2
?
1
:
2
}
emit
(
'refreshHandler'
,
obj
)
}
// 收藏文件
const
CollectHandler
=
async
(
row
:
any
)
=>
{
try
{
...
...
@@ -223,8 +282,8 @@ import CopyFile from "./CopyFile.vue";
else
{
datas
.
setFileList
=
[]
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
){
for
(
let
j
=
0
;
j
<
prop
s
.
selectedDatas
.
length
;
j
++
){
if
(
dataList
.
value
[
i
].
FileId
==
prop
s
.
selectedDatas
[
j
]){
for
(
let
j
=
0
;
j
<
data
s
.
selectedDatas
.
length
;
j
++
){
if
(
dataList
.
value
[
i
].
FileId
==
data
s
.
selectedDatas
[
j
]){
datas
.
setFileList
.
push
(
{
FileId
:
dataList
.
value
[
i
].
FileId
,
...
...
@@ -313,14 +372,60 @@ import CopyFile from "./CopyFile.vue";
removeShareLoading
.
value
.
close
();
removeShareLoading
.
value
=
null
;
}
// 全选按钮
const
clickSelectAll
=
()
=>
{
setTimeout
(()
=>
{
for
(
let
i
=
0
;
i
<
dataList
.
value
.
length
;
i
++
)
{
if
(
datas
.
selectAll
==
true
)
{
datas
.
selectedDatas
.
push
(
dataList
.
value
[
i
].
FileId
)
dataList
.
value
[
i
].
singleChoice
=
true
;
}
else
{
datas
.
selectedDatas
=
[];
isIndeterminate
.
value
=
false
;
dataList
.
value
[
i
].
singleChoice
=
false
;
}
}
let
obj
=
{
selectedDatas
:
datas
.
selectedDatas
,
}
emit
(
'UpdateData'
,
obj
)
},
100
);
};
const
singleChoice
=
(
row
:
any
)
=>
{
isIndeterminate
.
value
=
false
;
if
(
!
row
.
singleChoice
)
{
datas
.
selectedDatas
.
push
(
row
.
FileId
);
}
else
{
let
index
;
for
(
let
i
=
0
;
i
<
datas
.
selectedDatas
.
length
;
i
++
)
{
if
(
datas
.
selectedDatas
[
i
]
==
row
.
FileId
)
index
=
i
;
}
datas
.
selectedDatas
.
splice
(
index
,
1
);
if
(
datas
.
selectedDatas
.
length
>
0
)
isIndeterminate
.
value
=
true
;
}
getSelectBox
()
let
obj
=
{
row
:
row
,
list
:
dataList
.
value
selectedDatas
:
datas
.
selectedDatas
,
list
:
dataList
.
value
,
}
emit
(
'UpdateData'
,
obj
)
};
const
getSelectBox
=
()
=>
{
let
checkedCount
=
datas
.
selectedDatas
.
length
;
let
datasList
=
dataList
.
value
.
length
;
if
(
checkedCount
>
0
&&
datasList
==
checkedCount
)
{
datas
.
selectAll
=
true
};
if
(
checkedCount
>
0
&&
(
datasList
>
checkedCount
||
datasList
<
checkedCount
))
{
datas
.
selectAll
=
""
isIndeterminate
.
value
=
true
;
}
if
(
checkedCount
==
0
)
{
datas
.
selectAll
=
""
isIndeterminate
.
value
=
false
;
};
}
const
DeleteFile
=
async
(
item
:
any
)
=>
{
ElMessageBox
.
confirm
(
"此操作将删除该文件夹及其下的文件,是否确定?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
...
...
@@ -424,7 +529,6 @@ import CopyFile from "./CopyFile.vue";
}
else
{
// 2文件夹详情
if
(
type
==
2
)
{
queryObj
.
FileId
=
row
.
FileId
;
Navigations
.
value
.
push
(
{
FileId
:
row
.
FileId
,
...
...
@@ -432,7 +536,11 @@ import CopyFile from "./CopyFile.vue";
ParentFileId
:
row
.
ParentFileId
}
);
emit
(
'refreshHandler'
,
queryObj
.
value
);
let
obj
=
{
FileId
:
row
.
FileId
,
Navigations
:
Navigations
.
value
}
emit
(
'refreshHandler'
,
obj
);
}
else
{
folderObj
.
value
.
id
=
row
.
FileId
;
folderObj
.
value
.
name
=
row
.
FileName
;
...
...
@@ -441,14 +549,69 @@ import CopyFile from "./CopyFile.vue";
}
}
};
watch
(()
=>
props
.
list
,
()
=>
{
const
operaFolder
=
(
id
:
number
,
name
:
string
)
=>
{
folderObj
.
value
.
id
=
id
;
folderObj
.
value
.
name
=
name
;
folderObj
.
value
.
type
=
queryObj
.
FileType
;
};
const
checkPositionHandler
=
(
n
:
any
)
=>
{
if
(
n
){
if
(
n
.
Position
&&
n
.
Position
.
length
>
0
){
Navigations
.
value
=
n
.
Position
queryObj
.
FileId
=
n
.
Position
[
n
.
Position
.
length
-
1
].
FileId
queryObj
.
FileType
=
0
}
else
{
Navigations
.
value
=
[]
queryObj
.
FileId
=
0
queryObj
.
FileType
=
n
.
FileType
}
emit
(
'destroy-position'
)
}
}
const
setFileShareHandler
=
(
item
:
any
)
=>
{
shareFileType
.
value
=
item
.
FileType
shareId
.
value
=
item
.
FileId
}
watch
(()
=>
props
.
list
,
(
n
,
o
)
=>
{
if
(
props
.
list
)
{
nextTick
(()
=>
dataList
.
value
=
props
.
list
)
nextTick
(()
=>
{
dataList
.
value
=
props
.
list
for
(
let
index
=
0
;
index
<
dataList
.
value
.
length
;
index
++
)
{
const
element
=
dataList
.
value
[
index
];
if
(
datas
.
selectAll
)
{
element
.
singleChoice
=
true
;
datas
.
selectedDatas
.
push
(
element
.
FileId
);
}
else
if
(
datas
.
selectedDatas
.
length
>
0
&&
datas
.
selectedDatas
.
indexOf
(
element
.
FileId
)
!=
-
1
)
element
.
singleChoice
=
true
;
}
})
}
})
watch
(()
=>
props
.
selectedDatas
,
(
n
,
o
)
=>
{
datas
.
selectedDatas
=
props
.
selectedDatas
getSelectBox
()
})
watch
(()
=>
props
.
navigations
,
(
n
,
o
)
=>
{
Navigations
.
value
=
n
for
(
let
index
=
0
;
index
<
dataList
.
value
.
length
;
index
++
)
{
const
element
=
dataList
.
value
[
index
];
element
.
singleChoice
=
false
}
datas
.
selectAll
=
false
datas
.
selectedDatas
=
[]
isIndeterminate
.
value
=
false
let
obj
=
{
selectedDatas
:
datas
.
selectedDatas
,
}
emit
(
'UpdateData'
,
obj
)
})
</
script
>
<
style
scoped
>
<
style
lang=
"scss"
scoped
>
.journeyAds-title
{
}
.journeyAds-TitleCenter
{
...
...
@@ -479,12 +642,24 @@ import CopyFile from "./CopyFile.vue";
position
:
relative
;
overflow
:
auto
;
}
.journeyAds-container
th
{
background
:
#fff
;
position
:
sticky
;
top
:
0px
;
z-index
:
2
;
}
.journeyAdsple-table
td
>
div
{
display
:
flex
;
}
.journeyAdsple-table
td
{
border-bottom
:
1px
solid
#f6f6f6
;
}
.journeyAds-container
th
{
border-bottom
:
1px
solid
#f6f6f6
;
}
.journeyAds-container
th
:first-child
{
border
:
0
;
}
.journeyAdsple-table
td
:first-child
,
.journeyAdsple-table
td
:nth-child
(
2
)
{
border
:
0
;
...
...
@@ -515,5 +690,8 @@ import CopyFile from "./CopyFile.vue";
height
:
14px
;
z-index
:
2
;
}
.active
{
color
:
$themeColor
;
}
</
style
>
\ No newline at end of file
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