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
38394a72
Commit
38394a72
authored
Jun 12, 2024
by
黄奎
Browse files
Options
Browse Files
Download
Plain Diff
111
parents
4b906066
ccd06b45
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
948 additions
and
80 deletions
+948
-80
common.css
src/assets/styles/common.css
+2
-4
NewEdit.vue
src/components/CloudDisk/NewEdit.vue
+69
-0
copyMove.vue
src/components/CloudDisk/copyMove.vue
+129
-0
index.vue
src/components/CloudDisk/index.vue
+26
-48
temDetails.vue
src/components/home/temDetails.vue
+9
-4
CloudDiskService.ts
src/services/CloudDiskService.ts
+23
-2
UploadPicture.vue
src/views/Editor/CanvasTool/UploadPicture.vue
+8
-6
index.vue
src/views/Editor/EditorHeader/index.vue
+10
-11
index.vue
src/views/Editor/Thumbnails/index.vue
+2
-2
Index.vue
src/views/Market/Index.vue
+10
-3
CloudDiskList.vue
src/views/SellTemplate/CloudDiskList.vue
+653
-0
Workspace.vue
src/views/SellTemplate/Workspace.vue
+7
-0
No files found.
src/assets/styles/common.css
View file @
38394a72
...
...
@@ -514,9 +514,6 @@ page {
.q-mt-lg
{
margin-top
:
20px
}
.q-mb-md
{
margin-bottom
:
10px
}
.q-mb-lg
{
margin-bottom
:
20px
}
...
...
@@ -738,7 +735,8 @@ page {
border
:
none
!important
;
}
.el-button
:not
(
.is-link
)
.none-border
,
.el-menu-item.none-border
,
.el-button
:not
(
.is-link
)
.none-border
:hover
,
.el-menu-item.none-border
:hover
{
.el-button
:not
(
.is-link
)
.none-border
:hover
,
.el-menu-item.none-border
:hover
,
.el-dropdown.none-border
:hover
,
.el-dropdown-menu.none-border
:hover
{
border
:
0
;
}
.el-avatar--square
{
...
...
src/components/CloudDisk/NewEdit.vue
0 → 100644
View file @
38394a72
<
template
>
<el-dialog
v-model=
"dialogFormVisible"
:show-close=
"false"
:title=
"dialogTitle"
width=
"340"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
>
<div>
<el-input
v-model=
"addEditMsg.GName"
placeholder=
"请输入分组名称"
>
</el-input>
<el-input
class=
"q-pt-lg"
type=
"Number"
v-model=
"addEditMsg.SortNum"
placeholder=
"排序"
>
</el-input>
</div>
<template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"close"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"setGroup"
:loading=
"setLoading"
>
确认
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
script
lang=
"ts"
setup
>
import
{
reactive
,
ref
,
onMounted
,
watch
}
from
"vue"
;
import
{
ElLoading
,
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
CloudDiskService
from
'@/services/CloudDiskService'
import
{
ApiResult
}
from
"@/configs/axios"
;
const
dialogFormVisible
=
ref
(
true
)
const
dialogTitle
=
ref
(
''
)
const
setLoading
=
ref
(
false
)
// const addEditMsg = reactive({
// Id: '',
// GName: '',
// SortNum: null,
// })
const
props
=
defineProps
({
dialogType
:
{
type
:
Number
,
required
:
true
,
},
addEditMsg
:
{
type
:
Object
,
required
:
''
,
},
})
const
emit
=
defineEmits
<
{
(
event
:
'close'
):
void
,
(
event
:
'success'
):
void
,
}
>
()
dialogTitle
.
value
=
props
.
dialogType
==
1
?
'新增分组名称'
:
'编辑分组名称'
const
close
=
()
=>
{
dialogFormVisible
.
value
=
false
emit
(
'close'
)
}
const
setGroup
=
async
()
=>
{
if
(
!
props
.
addEditMsg
.
GName
)
return
ElMessage
.
warning
({
showClose
:
true
,
message
:
`请输入分组名称`
,
})
setLoading
.
value
=
true
let
pageRes
=
await
CloudDiskService
.
SetPPTCloudGroup
(
props
.
addEditMsg
);
if
(
pageRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
dialogFormVisible
.
value
=
false
emit
(
'success'
)
}
setLoading
.
value
=
false
}
</
script
>
\ No newline at end of file
src/components/CloudDisk/copyMove.vue
0 → 100644
View file @
38394a72
<
template
>
<el-dialog
v-model=
"dialogFormVisible"
:show-close=
"false"
:title=
"dialogTitle"
width=
"340"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
>
<div
v-loading=
"loadingGroup"
>
<el-select
v-model=
"params.GId"
placeholder=
"Select"
style=
"width: 100%;"
@
change=
"getGName"
>
<el-option
v-for=
"item in GroupList"
:key=
"item.Id"
:label=
"item.GName"
:value=
"item.Id"
>
</el-option>
</el-select>
</div>
<template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"close"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
:loading=
"setLoading"
>
确认
{{
dialogType
==
1
?
'复制'
:
'移动'
}}
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
script
lang=
"ts"
setup
>
import
{
reactive
,
ref
,
onMounted
,
watch
}
from
"vue"
;
import
{
ElLoading
,
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
CloudDiskService
from
'@/services/CloudDiskService'
import
{
ApiResult
}
from
"@/configs/axios"
;
const
dialogFormVisible
=
ref
(
true
)
const
dialogTitle
=
ref
(
''
)
const
setLoading
=
ref
(
false
)
const
loadingGroup
=
ref
(
false
)
// const GroupList = ref([] as any)
const
currentGroup
=
ref
(
''
as
any
)
const
props
=
defineProps
({
dialogType
:
{
type
:
Number
,
required
:
true
,
},
DetailsId
:
{
type
:
String
,
required
:
''
,
},
GroupId
:
{
type
:
String
,
required
:
''
,
},
GroupList
:{
type
:
Array
,
required
:
[],
}
})
const
params
=
reactive
({
Id
:
''
as
String
,
GId
:
''
as
String
,
})
params
.
GId
=
props
.
GroupId
const
emit
=
defineEmits
<
{
(
event
:
'close'
):
void
,
(
event
:
'success'
):
void
,
}
>
()
dialogTitle
.
value
=
props
.
dialogType
==
1
?
'复制文件'
:
'移动文件'
const
getGName
=
()
=>
{
let
GroupArr
=
GroupList
.
value
.
filter
(
x
=>
x
.
Id
==
params
.
GId
)
currentGroup
.
value
=
GroupArr
[
0
].
GName
}
const
close
=
()
=>
{
dialogFormVisible
.
value
=
false
emit
(
'close'
)
}
const
submit
=
()
=>
{
params
.
Id
=
props
.
DetailsId
let
text
=
''
if
(
props
.
dialogType
==
1
)
text
=
`复制到
${
currentGroup
.
value
}
分组下`
else
text
=
`移动至
${
currentGroup
.
value
}
分组下`
ElMessageBox
.
confirm
(
`
${
text
}
`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
).
then
(()
=>
{
setCopy
()
}).
catch
(()
=>
{})
}
const
setCopy
=
async
()
=>
{
setLoading
.
value
=
true
let
pageRes
;
if
(
props
.
dialogType
==
1
)
pageRes
=
await
CloudDiskService
.
CloudFileCopy
(
params
);
else
pageRes
=
await
CloudDiskService
.
CloudFileMove
(
params
);
if
(
pageRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
dialogFormVisible
.
value
=
false
emit
(
'success'
)
}
setLoading
.
value
=
false
}
const
querySearchGroup
=
async
()
=>
{
if
(
loadingGroup
.
value
)
return
loadingGroup
.
value
=
true
try
{
// let datasRes = await CloudDiskService.GetPPTCloudLists('');
// if (datasRes.data.resultCode==ApiResult.SUCCESS) {
// GroupList.value = datasRes.data.data.list
// GroupList.value.unshift({
// Id: '',
// GName: '全部',
// RecordNum: datasRes.data.data.TotalNum
// })
// let GroupArr = GroupList.value.filter(x=>x.Id==params.GId)
// if(GroupArr.length==0) params.GId = ''
// }
loadingGroup
.
value
=
false
}
catch
(
error
)
{
loadingGroup
.
value
=
false
}
}
querySearchGroup
()
let
GroupArr
=
props
.
GroupList
.
filter
(
x
=>
x
.
Id
==
params
.
GId
)
if
(
GroupArr
.
length
==
0
)
params
.
GId
=
''
</
script
>
\ No newline at end of file
src/components/CloudDisk/index.vue
View file @
38394a72
...
...
@@ -2,13 +2,13 @@
<div
class=
"CloudDisk-form row"
>
<div
class=
"CloudDisk-L"
>
<div
class=
"row CloudDisk-L-inquire"
>
<el-input
class=
"grow
"
v-model=
"GName"
placeholder=
"搜索分组名称"
@
keyup
.
enter=
"querySearchGroup"
<el-input
style=
"width: 123px;
"
v-model=
"GName"
placeholder=
"搜索分组名称"
clearable
@
keyup
.
enter=
"querySearchGroup"
@
input=
"SearchGroup"
>
</el-input>
<el-button
type=
"primary"
@
click=
"addEditGroup"
>
添加
</el-button>
</div>
<div
class=
"CloudDisk-L-Center fz14"
v-loading=
"
deleteLoading
"
>
<div
class=
"CloudDisk-L-Center fz14"
v-loading=
"
loadingGroup
"
>
<div
class=
"CloudDisk-L-Title row flex-between cusor-pointer"
v-for=
"(item,index) in GroupList"
:key=
"index"
@
click
.
stop=
"Search(item)"
:class=
"[queryObj.CloudGroupId==item.Id?'active':'']"
>
...
...
@@ -102,7 +102,6 @@
v-model:current-page=
"queryObj.pageIndex"
:page-size=
"queryObj.pageSize"
small-padding
small=
"small"
layout=
"prev, pager, next"
:total=
"total"
@
size-change=
"handleSizeChange"
...
...
@@ -112,25 +111,12 @@
</div>
</div>
<el-dialog
v-model=
"dialogFormVisible"
:title=
"dialogTitle"
width=
"340"
@
close=
"close"
>
<div>
<el-input
v-model=
"addEditMsg.GName"
placeholder=
"请输入分组名称"
>
</el-input>
<el-input
class=
"q-pt-lg"
type=
"Number"
v-model=
"addEditMsg.SortNum"
placeholder=
"排序"
>
</el-input>
</div>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"dialogFormVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"setGroup"
:loading=
"setLoading"
>
确认
</el-button>
</div>
</
template
>
</el-dialog>
<NewEditCloudDisk
v-if=
"dialogFormVisible"
:dialogType=
"dialogType"
:addEditMsg=
"addEditMsg"
@
close=
"close"
@
success=
"dialogFormVisible=false,querySearchGroup()"
></NewEditCloudDisk>
</template>
<
script
lang=
"ts"
setup
>
import
{
Plus
,
Top
,
Bottom
,
Delete
,
Edit
}
from
"@element-plus/icons-vue"
;
...
...
@@ -143,11 +129,12 @@ import AliyunUpload from '@/utils/upload/aliyun'
import
{
useUserStore
}
from
"@/store"
;
import
{
storeToRefs
}
from
'pinia'
import
{
ApiResult
}
from
"@/configs/axios"
;
import
NewEditCloudDisk
from
'./NewEdit'
const
{
token
,
userInfo
}
=
storeToRefs
(
useUserStore
())
const
dialogFormVisible
=
ref
(
false
)
const
dialogT
itle
=
ref
(
''
)
const
dialogT
ype
=
ref
(
0
)
const
queryObj
=
reactive
({
pageIndex
:
1
,
pageSize
:
11
,
...
...
@@ -167,11 +154,9 @@ const GroupId = ref(''|Number)
const
imgDiskRef
=
ref
<
any
>
()
const
dataList
=
ref
([]
as
any
)
const
loading
=
ref
(
false
)
const
loadingGroup
=
ref
(
false
)
const
GroupList
=
ref
([]
as
any
)
const
setLoading
=
ref
(
false
)
const
deleteLoading
=
ref
(
false
)
const
deleteImgLoading
=
ref
<
any
>
(
null
)
const
props
=
defineProps
({
active
:
''
as
any
,
show
:
false
as
Boolean
...
...
@@ -180,7 +165,8 @@ const props = defineProps({
const
GroupObj
=
ref
({}
as
any
)
const
emit
=
defineEmits
<
{
(
event
:
'setImg'
):
void
(
event
:
'setImg'
):
void
,
(
event
:
'getImg'
):
void
,
}
>
()
watch
(()
=>
props
.
active
,
()
=>
{
...
...
@@ -294,27 +280,14 @@ const deleteImg = (item:any) => {
const
addEditGroup
=
()
=>
{
dialogFormVisible
.
value
=
true
dialogTitle
.
value
=
'添加分组名称'
}
const
setGroup
=
async
()
=>
{
if
(
!
addEditMsg
.
GName
)
return
ElMessage
.
warning
({
showClose
:
true
,
message
:
`请输入分组名称`
,
})
setLoading
.
value
=
true
let
pageRes
=
await
CloudDiskService
.
SetPPTCloudGroup
(
addEditMsg
);
if
(
pageRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
dialogFormVisible
.
value
=
false
querySearchGroup
()
}
setLoading
.
value
=
false
dialogType
.
value
=
1
}
const
close
=
()
=>
{
addEditMsg
.
Id
=
''
addEditMsg
.
GName
=
''
addEditMsg
.
SortNum
=
null
dialogFormVisible
.
value
=
false
}
const
EditGroup
=
(
item
:
any
)
=>
{
...
...
@@ -323,11 +296,11 @@ const EditGroup = (item:any) =>{
addEditMsg
.
GName
=
data
.
GName
addEditMsg
.
SortNum
=
data
.
SortNum
dialogFormVisible
.
value
=
true
dialogT
itle
.
value
=
'编辑分组名称'
dialogT
ype
.
value
=
2
}
// 删除
const
deleteGroup
=
(
item
:
any
)
=>
{
const
deleteGroup
=
async
(
item
:
any
)
=>
{
ElMessageBox
.
confirm
(
`此操作将删除该分组,是否确定?`
,
'提示'
,
...
...
@@ -337,13 +310,13 @@ const deleteGroup = (item:any) => {
type
:
'warning'
,
}
).
then
(
async
()
=>
{
loadingGroup
.
value
=
true
try
{
deleteLoading
.
value
=
true
let
dataRes
=
await
CloudDiskService
.
RemovePPTCloudGroup
(
item
.
Id
)
loadingGroup
.
value
=
false
if
(
dataRes
.
data
.
resultCode
==
1
)
{
querySearchGroup
()
}
deleteLoading
.
value
=
false
}
catch
(
error
)
{}
}).
catch
(()
=>
{})
...
...
@@ -353,6 +326,8 @@ const SearchGroup = () => {
if
(
GName
.
value
==
''
)
querySearchGroup
()
}
const
querySearchGroup
=
async
()
=>
{
if
(
loadingGroup
.
value
)
return
loadingGroup
.
value
=
true
try
{
let
datasRes
=
await
CloudDiskService
.
GetPPTCloudList
(
GName
.
value
);
if
(
datasRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
...
...
@@ -363,9 +338,11 @@ const querySearchGroup = async () =>{
RecordNum
:
datasRes
.
data
.
data
.
TotalNum
})
}
loadingGroup
.
value
=
false
}
catch
(
error
)
{
loadingGroup
.
value
=
false
}
}
const
SearchImg
=
()
=>
{
if
(
queryObj
.
FileName
==
''
)
Search
()
...
...
@@ -380,6 +357,7 @@ const Search = (item:any=null) =>{
}
const
querySearchHandler
=
async
()
=>
{
if
(
loading
.
value
)
return
loading
.
value
=
true
try
{
// if(queryObj.pageIndex == 1) dataList.value =[]
...
...
src/components/home/temDetails.vue
View file @
38394a72
...
...
@@ -84,7 +84,7 @@ import { useSellTemplateStore,useSlidesStore } from '@/store'
import
{
useScreenStore
}
from
"@/store/screen"
;
import
{
storeToRefs
}
from
"pinia"
;
import
{
injectKeyTemplate
}
from
'@/types/injectKey'
import
{
createOpEditorLink
,
createSaleCreateLink
,
managerTemplate
Link
}
from
'@/utils/common'
import
{
noDataImg
,
createOpEditorLink
,
createSaleCreateLink
,
managerTemplateLink
,
createSaleEditor
Link
}
from
'@/utils/common'
import
{
ElLoading
,
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
{
useRouter
}
from
"vue-router"
;
import
UserCard
from
"@/components/User/UserCard.vue"
;
...
...
@@ -92,8 +92,6 @@ import { Delete,View } from '@element-plus/icons-vue';
import
{
VIEWPORT_SIZE
,
VIEWPORT_VER_SIZE
}
from
'@/configs/canvas'
import
foote
from
'@/components/footer/index.vue'
;
import
{
noDataImg
}
from
"@/utils/common"
;
const
slidesStore
=
useSlidesStore
()
const
{
...
...
@@ -228,9 +226,16 @@ const getTemplate = async (item:any) => {
* 页面跳转
*/
const
goToTemplate
=
(
item
:
any
)
=>
{
if
((
searchData
.
value
.
TempId2
&&
searchData
.
value
.
TempId2
!=
item
.
TempId
)
||!
searchData
.
value
.
TempId2
)
slidesStore
.
ClearSlides
()
searchData
.
value
.
TempId
=
item
.
TempId
if
((
searchData
.
value
.
TempId2
&&
searchData
.
value
.
TempId2
!=
item
.
TempId
)
||!
searchData
.
value
.
TempId2
)
{
slidesStore
.
ClearSlides
()
}
let
url
=
''
if
(
model
.
value
==
2
)
url
=
createSaleCreateLink
(
item
.
TempId
,
item
.
TemplateType
)
else
if
(
model
.
value
==
2
&&
searchData
.
value
.
TempId2
)
{
let
Editor
=
searchData
.
value
.
SalesEditor
url
=
createSaleEditorLink
(
Editor
.
id
,
item
.
TempId
,
Editor
.
type
,
Editor
.
pid
,
Editor
.
e
,
Editor
.
c
)
}
else
if
(
model
.
value
==
0
&&
router
.
currentRoute
.
value
.
params
.
configId
)
url
=
createOpEditorLink
(
parseInt
(
router
.
currentRoute
.
value
.
params
.
configId
.
toString
()),
item
.
TempType
,
item
.
TempId
)
else
if
(
model
.
value
==
1
)
{
searchData
.
value
.
currentMenu
=
null
...
...
src/services/CloudDiskService.ts
View file @
38394a72
...
...
@@ -3,6 +3,27 @@ import Api,{ HttpResponse, Result } from './../utils/request';
class
CloudDiskService
{
static
async
CloudFileCopy
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"ppt_CloudFileCopy"
,
params
)
}
static
async
CloudFileMove
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"ppt_CloudFileMove"
,
params
)
}
static
async
UpdateCloudInfoName
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"ppt_UpdateCloudInfoName"
,
params
)
}
static
async
GetPPTCloudLists
(
GName
:
String
):
Promise
<
HttpResponse
>
{
let
msg
=
{
GName
}
return
Api
.
Post
(
"ppt_GetPPTCloudList"
,
msg
)
}
static
async
GetPPTCloudInfoPages
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"ppt_GetPPTCloudInfoPage"
,
params
)
}
static
async
CheckCloudInfo
(
parms
:
any
):
Promise
<
HttpResponse
>
{
let
msg
=
parms
return
Api
.
Post
(
"ppt_CheckCloudInfo"
,
msg
)
...
...
@@ -15,11 +36,11 @@ class CloudDiskService{
static
async
GetPPTCloudList
(
GName
:
String
):
Promise
<
HttpResponse
>
{
let
msg
=
{
GName
}
return
Api
.
Post
(
"ppt_GetMyCloudList"
,
msg
)
//ppt_GetPPTCloudList
return
Api
.
Post
(
"ppt_GetMyCloudList"
,
msg
)
}
static
async
GetPPTCloudInfoPage
(
params
:
any
):
Promise
<
HttpResponse
>
{
return
Api
.
Post
(
"ppt_GetMyPPTCloudInfoPage"
,
params
)
//ppt_GetPPTCloudInfoPage
return
Api
.
Post
(
"ppt_GetMyPPTCloudInfoPage"
,
params
)
}
static
async
RemovePPTCloudGroup
(
Id
:
Number
):
Promise
<
HttpResponse
>
{
...
...
src/views/Editor/CanvasTool/UploadPicture.vue
View file @
38394a72
...
...
@@ -7,7 +7,7 @@
<el-tabs
v-model=
"activeName"
class=
"demo-tabs"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"平台资料库"
name=
"1"
>
<template
v-if=
"userInfo.iv||userInfo.it"
>
<el-row
class=
"q-mb-md"
>
<el-row>
<el-col
:span=
"6"
>
<el-select
v-model=
"datas.queryMsg.Type"
class=
"m-2"
@
change=
"SearchHandler()"
>
...
...
@@ -28,7 +28,7 @@
<!-- <el-input v-model="datas.queryMsg.Name" placeholder="输入关键字快速查找" clearable class="input-with-select q-pl-lg" @change="SearchHandler()"></el-input> -->
</el-col>
</el-row>
<div
class=
"row UploadPicture-box"
v-loading=
"datas.loading"
>
<div
class=
"row UploadPicture-box
q-pt-lg
"
v-loading=
"datas.loading"
>
<div
v-for=
"(item,index) in datas.imgList"
class=
"UploadPicture-list"
:key=
"item.ID"
>
<div
class=
"UploadPicture-listBox"
>
<img
:src=
"item.Path"
class=
""
@
click=
"getImgs(item,index)"
/>
...
...
@@ -44,7 +44,7 @@
<el-pagination
v-model:current-page=
"datas.queryMsg.pageIndex"
:page-size=
"datas.queryMsg.pageSize"
small
=
"small"
small
-padding
layout=
"prev, pager, next"
:total=
"datas.queryMsg.total"
@
size-change=
"handleSizeChange"
...
...
@@ -377,16 +377,18 @@ getImgList()
}
.UploadPicture-box
{
flex-wrap
:
wrap
;
margin-left
:
-10px
;
}
.UploadPicture-list
{
width
:
150px
;
margin
:
5px
;
width
:
calc
(
25%
-
10px
)
!
important
;
margin-bottom
:
10px
;
margin-left
:
10px
;
}
.UploadPicture-listBox
{
width
:
150px
;
height
:
0
;
position
:
relative
;
padding-bottom
:
56
.25
%
;
padding-bottom
:
64
.96
%
;
}
.UploadPicture-list
img
{
width
:
100%
;
...
...
src/views/Editor/EditorHeader/index.vue
View file @
38394a72
...
...
@@ -224,7 +224,6 @@ const journeyAdsDetails = ref<Object>()
const
psdVisibleStatus
=
ref
(
false
)
const
{
market
,
model
,
ConfigId
,
CoverImg
,
dataLoading
,
TempId
,
TempType
,
SourceLoading
}
=
storeToRefs
(
useScreenStore
())
const
routers
=
useRouter
();
// 返回到首页 type 1 模版列表页 0 销售在线模版页
const
goBack
=
(
type
:
any
)
=>
{
mainBackVisible
.
value
=
false
...
...
@@ -241,11 +240,19 @@ const goBack = (type:any) =>{
mainStore
.
setToolbarState
(
ToolbarStates
.
SLIDE_DESIGN
)
let
path
=
'/'
const
t
=
useSlidesStore
().
viewportRatio
<
0
?
1
:
2
searchData
.
value
.
SalesEditor
=
null
if
(
model
.
value
==
0
)
{
path
=
`/market/op/
${
ConfigId
.
value
}
/
${
TempType
.
value
}
`
router
.
push
({
path
})
}
else
if
(
model
.
value
==
2
){
if
(
type
==
1
)
path
=
`/market/create`
if
(
type
==
1
)
{
searchData
.
value
.
SalesEditor
=
router
.
currentRoute
.
value
.
params
searchData
.
value
.
TempId2
=
queryObj
.
value
.
TempId
marketStore
.
setMarket
(
true
)
SalesBackStore
.
setSalesBack
(
1
)
searchData
.
value
.
TempId
=
0
path
=
`/market/create/
${
queryObj
.
value
.
TemplateType
==
1
?
'trip'
:
'ad'
}${
searchData
.
value
.
currentMenu
>=
0
?
'/'
+
searchData
.
value
.
currentMenu
:
''
}
`
}
else
if
(
searchData
.
value
.
currentMenu
>=
0
)
{
path
=
`/space/
${
searchData
.
value
.
currentMenu
}
`
searchData
.
value
.
currentMenu
=
null
...
...
@@ -258,13 +265,7 @@ const goBack = (type:any) =>{
}
// 返回是否清空数据
const
setNewDatas
=
(
type
,
i
)
=>
{
if
(
type
)
{
marketStore
.
setMarket
(
true
)
if
(
model
.
value
==
2
)
{
if
(
searchData
.
value
.
TempId
)
searchData
.
value
.
TempId2
=
searchData
.
value
.
TempId
SalesBackStore
.
setSalesBack
(
1
)
}
}
else
{
if
(
!
type
)
{
searchData
.
value
.
TempId2
=
0
searchData
.
value
.
sellId
=
0
searchData
.
value
.
sellTempId
=
0
...
...
@@ -272,8 +273,6 @@ const setNewDatas = (type,i) => {
SalesBackStore
.
setSalesBack
(
0
)
SalesEditorStore
.
setSalesEditor
(
0
)
}
searchData
.
value
.
TempId
=
0
// i 1模版权限 0无模版权限
CoverImgStore
.
setCoverImg
(
null
)
}
// 导入PSD
...
...
src/views/Editor/Thumbnails/index.vue
View file @
38394a72
...
...
@@ -522,7 +522,8 @@ const GetTripTemplate = async () =>{
queryObj
.
value
.
TempType
=
dataRes
.
data
.
data
.
TempType
queryObj
.
value
.
TemplateType
=
dataRes
.
data
.
data
.
TemplateType
queryObj
.
value
.
AuthType
=
dataRes
.
data
.
data
.
AuthType
queryObj
.
value
.
Title
=
dataRes
.
data
.
data
.
Title
if
(
queryObj
.
value
.
Width
){
VIEWPORT_SIZE
.
Value
=
queryObj
.
value
.
Height
VIEWPORT_VER_SIZE
.
Value
=
queryObj
.
value
.
Width
...
...
@@ -943,7 +944,6 @@ const contextmenusThumbnailItem = (): ContextmenuItem[] => {
},
]
}
if
(
searchData
.
value
.
sellId
&&!
searchData
.
value
.
TempId
)
sellGetTripTemplate
()
if
(
!
viewSlideShow
)
{
GetTripTemplate
()
...
...
src/views/Market/Index.vue
View file @
38394a72
...
...
@@ -237,7 +237,7 @@ import { useSellTemplateStore, useSlidesStore } from '@/store'
import
{
useScreenStore
}
from
"@/store/screen"
;
import
{
storeToRefs
}
from
"pinia"
;
import
{
injectKeyTemplate
}
from
'@/types/injectKey'
import
{
createOpEditorLink
,
createSaleCreateLink
,
managerTemplateLink
}
from
'@/utils/common'
import
{
createOpEditorLink
,
createSaleCreateLink
,
managerTemplateLink
,
createSaleEditorLink
}
from
'@/utils/common'
import
{
ElLoading
,
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
{
useRouter
}
from
"vue-router"
;
import
UserCard
from
"@/components/User/UserCard.vue"
;
...
...
@@ -428,9 +428,16 @@ const getTemplate = (item:any,index:Number) => {
* 页面跳转
*/
const
goToTemplate
=
(
item
:
any
)
=>
{
if
((
searchData
.
value
.
TempId2
&&
searchData
.
value
.
TempId2
!=
item
.
TempId
)
||!
searchData
.
value
.
TempId2
)
slidesStore
.
ClearSlides
()
searchData
.
value
.
TempId
=
item
.
TempId
if
((
searchData
.
value
.
TempId2
&&
searchData
.
value
.
TempId2
!=
item
.
TempId
)
||!
searchData
.
value
.
TempId2
)
{
slidesStore
.
ClearSlides
()
}
let
url
=
''
if
(
model
.
value
==
2
)
url
=
createSaleCreateLink
(
item
.
TempId
,
item
.
TemplateType
)
if
(
model
.
value
==
2
&&!
searchData
.
value
.
TempId2
)
url
=
createSaleCreateLink
(
item
.
TempId
,
item
.
TemplateType
)
else
if
(
model
.
value
==
2
&&
searchData
.
value
.
TempId2
)
{
let
Editor
=
searchData
.
value
.
SalesEditor
url
=
createSaleEditorLink
(
Editor
.
id
,
item
.
TempId
,
Editor
.
type
,
Editor
.
pid
,
Editor
.
e
,
Editor
.
c
)
}
else
if
(
model
.
value
==
0
&&
router
.
currentRoute
.
value
.
params
.
configId
)
url
=
createOpEditorLink
(
parseInt
(
router
.
currentRoute
.
value
.
params
.
configId
.
toString
()),
item
.
TempType
,
item
.
TempId
)
else
if
(
model
.
value
==
1
)
url
=
managerTemplateLink
(
item
.
TempId
,
item
.
TemplateType
)
if
(
url
!=
''
)
{
...
...
src/views/SellTemplate/CloudDiskList.vue
0 → 100644
View file @
38394a72
<
template
>
<div
class=
"q-px-md q-pt-lg column full-height"
ref=
"currentRootDom"
>
<div
class=
"q-pl-lg row q-mb-lg"
>
<div
class=
"col row items-center q-pl-md"
>
<h5
class=
"row items-center"
>
<span
class=
"q-pl-md"
>
<span
class=
"pointer"
>
云盘
</span>
</span>
</h5>
<div
class=
"select-btn q-pl-lg pointer q-mt-sm"
>
<el-icon>
<RefreshRight
v-if=
"!RefreshLoading"
@
click=
"querySearchGroup(),refreshHandler()"
/>
<Refresh
v-else
/>
</el-icon>
</div>
</div>
</div>
<div
class=
"col full-width full-height q-ml-md"
>
<div
class=
"CloudDisk-form row full-height"
>
<div
class=
"CloudDisk-L"
>
<div
class=
"row CloudDisk-L-inquire"
>
<el-input
style=
"width: 123px;"
v-model=
"GName"
placeholder=
"搜索分组名称"
clearable
@
keyup
.
enter=
"querySearchGroup"
@
input=
"SearchGroup"
>
</el-input>
<el-button
@
click=
"addEditGroup"
>
添加
</el-button>
</div>
<div
class=
"CloudDisk-L-Center fz14"
v-loading=
"loadingGroup"
>
<div
class=
"CloudDisk-L-Title row flex-between cusor-pointer"
v-for=
"(item,index) in GroupList"
:key=
"index"
:class=
"[queryObj.CloudGroupId==item.Id?'active':'']"
>
<span
class=
"block"
@
click=
"refreshHandler(item)"
>
{{
item
.
GName
}}
</span>
<div
class=
"row"
>
<template
v-if=
"item.Id"
>
<el-dropdown
class=
"q-pl-lg CloudDisk-L-TitleR"
trigger=
"click"
>
<div
class=
"CloudDisk-L-Title-M row items-center flex-center"
>
<el-icon
size=
"16"
><MoreFilled
/></el-icon>
</div>
<template
#
dropdown
>
<el-dropdown-menu
class=
"q-pa-md"
>
<el-dropdown-item
@
click
.
stop=
"EditGroup(item)"
>
<el-button
type=
"default"
link
icon=
"Edit"
size=
"small"
>
重命名
</el-button>
</el-dropdown-item>
<el-dropdown-item
v-if=
"!item.IsCanDelete"
@
click
.
stop=
"deleteGroup(item)"
>
<el-button
type=
"default"
link
icon=
"Delete"
size=
"small"
>
删除分组
</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</template>
<div
class=
"CloudDisk-L-TitleR"
@
click=
"refreshHandler(item)"
v-else
></div>
<span
class=
"CloudDisk-L-TitleR"
@
click=
"refreshHandler(item)"
v-if=
"item.RecordNum>0"
>
{{item.RecordNum?item.RecordNum:''}}
</span>
</div>
</div>
</div>
</div>
<div
class=
"CloudDisk-R grow"
>
<div
class=
"row flex-center CloudDisk-R-inquire"
>
<el-input
v-model=
"queryObj.FileName"
placeholder=
"请输入图片名称搜索"
clearable
@
keyup
.
enter=
"refreshHandler"
@
input=
"SearchImg"
>
<
template
#
append
>
<el-button
type=
"primary"
style=
"color: white;"
@
click=
"refreshHandler"
>
搜索
</el-button>
</
template
>
</el-input>
</div>
<div
ref=
"imgDiskRef"
class=
"full-height"
style=
"padding-top: 10px; overflow: auto;"
:style=
"{'padding-bottom':queryObj.pageCount == queryObj.pageIndex && !loading?'20px':'85px'}"
>
<div
class=
"CloudDisk-R-Center row"
>
<FileInput
@
change=
"files => insertImageElement(files)"
>
<div
class=
"CloudDisk-R-Box"
>
<div
class=
"CloudDisk-R-Plus column items-center cusor-pointer"
>
<el-icon
class=
"el-input__icon"
size=
"30px"
title=
""
>
<Plus/>
</el-icon>
<span>
添加图片
</span>
</div>
</div>
</FileInput>
<
template
v-for=
"(item,index) in dataList"
>
<el-dropdown
trigger=
"click"
>
<div
class=
"CloudDisk-R-Box cursor-pointer"
>
<div
class=
"CloudDisk-R-Img"
>
<el-image
:src=
"item.FilePath"
style=
"width: 100%; height: 100%;"
fit=
"cover"
/>
</div>
<span
class=
"title block"
>
{{
item
.
FileName
}}
</span>
</div>
<template
#
dropdown
>
<div
class=
"cloudDownName microsoft"
>
<div
class=
"col row items-center user-nickname"
style=
"color:#000;"
v-if=
"editorTarget!=item.DetailsId"
>
<span
class=
"grow"
>
{{
item
.
FileName
}}
</span>
<IconPencli
size=
"14"
class=
"q-ml-md cusor-pointer editor-pencli"
@
click=
"setNameHandler(item)"
></IconPencli>
</div>
<div
class=
"col row items-center"
v-else
>
<el-input
v-model=
"nickNam"
placeholder=
"请输入用户昵称"
size=
"small"
class=
"col"
/>
<el-button
link
size=
"small"
class=
"q-ml-sm"
type=
"primary"
@
click=
"setCloudNameHandler(item)"
:loading=
"editLoading"
>
确认
</el-button>
<el-button
link
size=
"small"
style=
"margin-left: 5px;"
@
click=
"setNameHandler"
>
取消
</el-button>
</div>
</div>
<div
class=
"cloudDownText row flex-between"
>
<span>
类型
</span>
<span>
图片
</span>
</div>
<div
class=
"cloudDownText row flex-between"
>
<span>
格式
</span>
<span>
{{
item
.
FileName
.
split
(
'.'
)[
1
]
}}
</span>
</div>
<div
class=
"cloudDownText row flex-between"
v-if=
"item.WithHeight"
>
<span>
尺寸
</span>
<span>
{{
item
.
WithHeight
}}
px
</span>
</div>
<div
class=
"cloudDownText cloudDownTextLin row flex-between"
>
<span>
大小
</span>
<span>
{{
item
.
FileSize
}}
kb
</span>
</div>
<el-dropdown-menu
class=
"q-pa-md microsoft"
>
<el-dropdown-item
icon=
"CopyDocument"
@
click=
"CopyTo(item)"
>
复制到
</el-dropdown-item>
<el-dropdown-item
icon=
"Expand"
@
click=
"MoveFile(item)"
>
移动到
</el-dropdown-item>
<el-dropdown-item
icon=
"Delete"
@
click=
"deleteImg(item)"
>
删除
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</template>
</div>
<div
v-if=
'queryObj.pageCount == queryObj.pageIndex && !loading'
class=
"text-center q-pt-lg"
>
<!-- <img :src="noDataImg(2)" width="118" /> -->
</div>
<
template
v-else
>
<div
style=
"height:40px;"
class=
"no-bg"
background=
"transparent"
v-loading=
"loading"
element-loading-text=
"正在加载中"
></div>
</
template
>
</div>
<!-- <div v-if="queryObj.pageCount>1" class="q-mt-md" style="display: flex;justify-content: center;">
<el-pagination
v-model:current-page="queryObj.pageIndex"
:page-size="queryObj.pageSize"
small-padding
layout="prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div> -->
</div>
</div>
</div>
</div>
<NewEditCloudDisk
v-if=
"dialogFormVisible"
:dialogType=
"dialogType"
:addEditMsg=
"addEditMsg"
@
close=
"close"
@
success=
"close(),dialogFormVisible=false,querySearchGroup()"
></NewEditCloudDisk>
<copyMove
v-if=
"dialogCMVisible"
:dialogType=
"dialogType"
:DetailsId=
"addEditMsg.Id"
:GroupId=
"GroupId"
:GroupList=
"GroupAll"
@
close=
"close"
@
success=
"close(),dialogCMVisible=false,SearchGroup(),refreshHandler()"
></copyMove>
</template>
<
script
setup
lang=
"ts"
>
import
{
ref
,
reactive
,
watch
,
inject
,
onMounted
,
PropType
}
from
"vue"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
ArrowLeft
,
CopyDocument
}
from
"@element-plus/icons-vue"
;
import
CloudDiskService
from
"@/services/CloudDiskService"
;
import
{
injectKeyTemplate
}
from
"@/types/injectKey"
;
import
{
useSellTemplateStore
,
useScreenStore
}
from
"@/store"
;
import
{
ApiResult
}
from
"@/configs/axios"
;
import
NewEditCloudDisk
from
'@/components/CloudDisk/NewEdit'
import
copyMove
from
'@/components/CloudDisk/copyMove'
import
{
noDataImg
}
from
"@/utils/common"
;
const
RefreshLoading
=
ref
(
false
)
const
queryObj
=
reactive
({
pageIndex
:
1
,
pageSize
:
71
,
CloudGroupId
:
''
,
FileName
:
''
,
total
:
0
})
const
loading
=
ref
(
false
as
any
)
const
dataList
=
ref
([]
as
Array
<
any
>
);
const
currentRootDom
=
ref
()
const
GName
=
ref
(
''
)
const
addEditMsg
=
reactive
({
Id
:
''
,
GName
:
''
,
SortNum
:
null
,
})
const
dialogFormVisible
=
ref
(
false
)
const
dialogType
=
ref
(
0
)
const
loadingGroup
=
ref
(
false
)
const
GroupList
=
ref
([]
as
any
)
const
GroupAll
=
ref
([]
as
any
)
const
imgDiskRef
=
ref
<
any
>
()
const
editorTarget
=
ref
(
''
)
const
nickNam
=
ref
(
''
||
Number
)
const
GroupId
=
ref
(
''
|
Number
)
const
dialogCMVisible
=
ref
(
false
)
const
editLoading
=
ref
(
false
)
const
CopyTo
=
(
row
:
any
)
=>
{
addEditMsg
.
Id
=
row
.
DetailsId
GroupId
.
value
=
row
.
CloudGroupId
dialogType
.
value
=
1
dialogCMVisible
.
value
=
true
}
const
MoveFile
=
(
row
:
any
)
=>
{
addEditMsg
.
Id
=
row
.
DetailsId
GroupId
.
value
=
row
.
CloudGroupId
dialogType
.
value
=
2
dialogCMVisible
.
value
=
true
}
const
setCloudNameHandler
=
async
(
target
:
any
)
=>
{
if
(
editLoading
.
value
||
nickNam
.
value
==
''
||
!
nickNam
.
value
)
return
editLoading
.
value
=
true
let
params
=
{
Id
:
target
.
DetailsId
,
FileName
:
nickNam
.
value
}
let
dataRes
=
await
CloudDiskService
.
UpdateCloudInfoName
(
params
)
if
(
dataRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
refreshHandler
()
}
editLoading
.
value
=
false
}
const
setNameHandler
=
(
target
:
any
)
=>
{
if
(
target
){
editorTarget
.
value
=
target
.
DetailsId
nickNam
.
value
=
target
.
FileName
}
else
{
editorTarget
.
value
=
''
nickNam
.
value
=
''
}
}
// 删除
const
deleteImg
=
(
item
:
any
)
=>
{
let
text
if
(
item
.
IsCanDelete
)
text
=
'删除此图会影响模板正常使用,将无法恢复,是否确定?'
else
text
=
'此操作将删除该图,是否确定?'
ElMessageBox
.
confirm
(
`
${
text
}
`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
).
then
(
async
()
=>
{
try
{
loading
.
value
=
true
let
dataRes
=
await
CloudDiskService
.
RemovePPTCloudInfo
(
item
.
DetailsId
)
if
(
dataRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
querySearchHandler
()
}
loading
.
value
=
false
}
catch
(
error
)
{}
}).
catch
(()
=>
{})
}
const
addEditGroup
=
()
=>
{
dialogFormVisible
.
value
=
true
dialogType
.
value
=
1
}
const
close
=
()
=>
{
addEditMsg
.
Id
=
''
addEditMsg
.
GName
=
''
addEditMsg
.
SortNum
=
null
dialogFormVisible
.
value
=
false
dialogCMVisible
.
value
=
false
GroupId
.
value
=
''
dialogType
.
value
=
0
}
const
EditGroup
=
(
item
:
any
)
=>
{
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
item
))
addEditMsg
.
Id
=
data
.
Id
addEditMsg
.
GName
=
data
.
GName
addEditMsg
.
SortNum
=
data
.
SortNum
dialogFormVisible
.
value
=
true
dialogType
.
value
=
2
}
const
insertImageElement
=
async
(
files
:
FileList
)
=>
{
let
name
=
files
[
0
].
name
.
split
(
'.'
)
const
loadingObj
=
ElLoading
.
service
({
text
:
'正在上传图'
,
lock
:
true
})
const
hash
=
await
calculateFileHash
(
files
[
0
])
if
(
hash
!=
''
)
{
await
checkedUploadFileExsit
(
files
[
0
],
hash
)
}
else
{
await
uoloadFileToService
(
files
[
0
])
}
loadingObj
.
close
()
}
const
checkedUploadFileExsit
=
async
(
file
:
File
,
hash
:
any
)
=>
{
let
parms
=
{
fname
:
file
.
name
,
gid
:
queryObj
.
CloudGroupId
,
hi
:
hash
}
const
dataRes
=
await
CloudDiskService
.
CheckCloudInfo
(
parms
)
if
(
dataRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
queryObj
.
CloudGroupId
=
''
queryObj
.
FileName
=
dataRes
.
data
.
data
.
SourceFileName
refreshHandler
()
}
else
{
if
(
dataRes
.
data
.
message
==
'不存在此文件!'
)
await
uoloadFileToService
(
file
)
}
}
const
uoloadFileToService
=
async
(
file
:
File
)
=>
{
let
parms
=
{
isppt
:
'1'
,
uid
:
token
.
value
,
gid
:
queryObj
.
CloudGroupId
}
let
filePath
=
"tripImg/"
;
let
url
=
await
AliyunUpload
.
UploadCloudDisk
(
file
,
filePath
,
parms
);
if
(
url
)
{
querySearchGroup
()
refreshHandler
()
}
}
const
calculateFileHash
=
(
file
:
File
,
algorithm
=
'SHA-256'
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
reader
=
new
FileReader
();
reader
.
onload
=
(
event
)
=>
{
if
(
event
&&
event
.
target
&&
event
.
target
.
result
){
const
buffer
:
any
=
event
.
target
.
result
;
if
(
crypto
&&
crypto
.
subtle
&&
crypto
.
subtle
.
digest
){
crypto
.
subtle
.
digest
(
algorithm
,
buffer
)
.
then
(
hashBuffer
=>
{
const
hashArray
=
Array
.
from
(
new
Uint8Array
(
hashBuffer
));
const
hashHex
=
hashArray
.
map
(
b
=>
b
.
toString
(
16
).
padStart
(
2
,
'0'
)).
join
(
''
);
resolve
(
hashHex
);
})
.
catch
(
error
=>
resolve
(
''
));
}
else
{
resolve
(
''
)
}
}
else
{
resolve
(
''
)
}
};
reader
.
onerror
=
reject
;
reader
.
readAsArrayBuffer
(
file
);
// Read only the first 1MB of the file
});
}
// 删除
const
deleteGroup
=
async
(
item
:
any
)
=>
{
ElMessageBox
.
confirm
(
`此操作将删除该分组,是否确定?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
).
then
(
async
()
=>
{
loadingGroup
.
value
=
true
try
{
let
dataRes
=
await
CloudDiskService
.
RemovePPTCloudGroup
(
item
.
Id
)
loadingGroup
.
value
=
false
if
(
dataRes
.
data
.
resultCode
==
1
)
{
querySearchGroup
()
}
}
catch
(
error
)
{}
}).
catch
(()
=>
{})
}
const
SearchGroup
=
()
=>
{
if
(
GName
.
value
==
''
)
querySearchGroup
()
}
const
querySearchGroup
=
async
()
=>
{
if
(
loadingGroup
.
value
)
return
loadingGroup
.
value
=
true
try
{
let
datasRes
=
await
CloudDiskService
.
GetPPTCloudLists
(
GName
.
value
);
if
(
datasRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
GroupList
.
value
=
datasRes
.
data
.
data
.
list
GroupList
.
value
.
unshift
({
Id
:
''
,
GName
:
'全部'
,
RecordNum
:
datasRes
.
data
.
data
.
TotalNum
})
if
(
!
GName
.
value
)
GroupAll
.
value
=
GroupList
.
value
}
loadingGroup
.
value
=
false
}
catch
(
error
)
{
loadingGroup
.
value
=
false
}
}
const
SearchImg
=
()
=>
{
if
(
queryObj
.
FileName
==
''
)
refreshHandler
()
}
const
refreshHandler
=
(
row
:
any
)
=>
{
// currentRootDom.value.click()
if
(
row
)
queryObj
.
CloudGroupId
=
row
.
Id
RefreshLoading
.
value
=
true
;
queryObj
.
pageIndex
=
1
;
querySearchHandler
();
};
const
querySearchHandler
=
async
()
=>
{
loading
.
value
=
true
;
try
{
if
(
queryObj
.
pageIndex
==
1
)
dataList
.
value
=
[];
let
pageRes
=
await
CloudDiskService
.
GetPPTCloudInfoPages
(
queryObj
);
if
(
pageRes
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
let
arrList
=
function
(
list
)
{
list
.
forEach
((
x
)
=>
{
x
.
show
=
false
;
});
};
arrList
(
pageRes
.
data
.
data
.
pageData
);
dataList
.
value
=
dataList
.
value
.
concat
(
pageRes
.
data
.
data
.
pageData
);
queryObj
.
pageCount
=
pageRes
.
data
.
data
.
pageCount
;
}
loading
.
value
=
false
;
RefreshLoading
.
value
=
false
;
}
catch
(
error
)
{
ElMessage
.
error
({
message
:
'数据加载异常,请刷新页面'
})
loading
.
value
=
false
;
RefreshLoading
.
value
=
false
;
}
};
const
scrollingHandler
=
()
=>
{
if
(
imgDiskRef
.
value
&&
!
loading
.
value
){
let
maxHeight
=
imgDiskRef
.
value
.
scrollHeight
-
imgDiskRef
.
value
.
offsetHeight
let
scrollTop
=
imgDiskRef
.
value
.
scrollTop
if
(
maxHeight
-
scrollTop
==
0
&&
queryObj
.
pageCount
>
queryObj
.
pageIndex
)
{
queryObj
.
pageIndex
++
querySearchHandler
()
}
}
}
querySearchGroup
()
querySearchHandler
()
onMounted
(()
=>
{
imgDiskRef
.
value
.
addEventListener
(
"scroll"
,
scrollingHandler
);
})
</
script
>
<
style
lang=
"scss"
scoped
>
.
CloudDisk-R-inquire
:
:
v-deep
(
.
el-button
){
border-top-left-radius
:
0
;
border-bottom-left-radius
:
0
;
/* height: 36px; */
}
.CloudDisk-L
{
border-right
:
1px
solid
#E9E9E9
;
padding
:
0
20px
22px
0
;
}
.CloudDisk-L-inquire
{
margin-bottom
:
20px
;
}
.CloudDisk-L-inquire
.el-input
{
width
:
112px
;
/* height: 36px; */
}
.CloudDisk-L-inquire
.el-button
{
/* height: 36px; */
margin-left
:
20px
;
}
.CloudDisk-L-Title
:first-child
{
}
.CloudDisk-L-Title
{
padding
:
0
10px
;
font-weight
:
400
;
font-family
:
PingFang
SC
;
border-radius
:
8px
;
margin-bottom
:
3px
;
}
.CloudDisk-L-Title
span
:first-child
{
width
:
108px
;
padding
:
11px
0
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
}
.CloudDisk-L-Title
span
:last-child
{
color
:
#BBC7C3
;
}
.CloudDisk-L-TitleR
{
padding
:
11px
0
;
}
.CloudDisk-L-Title-M
{
width
:
24px
;
height
:
24px
;
border-radius
:
4px
;
margin-right
:
6px
;
border
:
0
!
important
;
}
.CloudDisk-L-Title-M
:hover
{
background
:
#BED0FB
;
color
:
#fff
;
}
.CloudDisk-L-Title.active
{
color
:
#3556F9
;
background
:
#EEF3FF
;
}
.CloudDisk-L-Title.active
.CloudDisk-L-Title-M
{
/* background: #BED0FB; */
}
.CloudDisk-L-Title
:hover
{
background
:
#EEF3FF
;
}
.CloudDisk-L-Title
:hover
span
:first-child
{
color
:
#3556F9
;
}
.CloudDisk-R-inquire
{
padding-left
:
24px
;
padding-right
:
20px
;
}
.CloudDisk-R-inquire
.el-input
{
width
:
30vw
;
padding-bottom
:
10px
;
/* height: 36px; */
}
.CloudDisk-R-Center
{
flex-wrap
:
wrap
;
}
.CloudDisk-R-Plus
{
width
:
85px
;
height
:
85px
;
border-radius
:
8px
;
border
:
2px
dashed
#CECECE
;
color
:
#cecece
;
}
.CloudDisk-R-Plus
:hover
{
border-color
:
#000000
;
color
:
#000000
;
}
.CloudDisk-R-Plus
.el-icon
{
margin-top
:
13px
;
}
.CloudDisk-R-Plus
span
{
// font-family: PingFang SC;
font-weight
:
400
;
font-size
:
14px
;
// color: #CECECE;
}
.CloudDisk-R-Box
{
width
:
87px
;
margin-left
:
24px
;
margin-bottom
:
24px
;
position
:
relative
;
}
.CloudDisk-R-Img
{
width
:
85px
;
height
:
85px
;
margin-bottom
:
9px
;
border-radius
:
8px
;
overflow
:
hidden
;
/* border:2px solid transparent; */
/* background: #8790F3; */
box-shadow
:
0px
0px
13px
0px
#eee
;
border-radius
:
8px
;
border-color
:
#eee
;
}
.CloudDisk-R-Img
.el-image
{
width
:
85px
;
}
.title
{
width
:
85px
;
line-height
:
17px
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
font-family
:
PingFang
SC
;
font-weight
:
400
;
font-size
:
14px
;
color
:
#000000
;
}
.CloudDisk-L-Center
{
height
:
95%
;
overflow-y
:
scroll
;
}
.CloudDisk-R-Box.active
.CloudDisk-R-Img
{
width
:
85px
;
height
:
85px
;
background
:
#8790F3
;
box-shadow
:
0px
0px
13px
0px
#0D3EBC
;
border-radius
:
8px
;
border-color
:
#3556F9
;
}
.CloudDisk-R-Box
.close-btn
{
position
:
absolute
;
top
:
-10px
;
right
:
0px
;
width
:
20px
;
height
:
20px
;
line-height
:
12px
;
background
:
#fff
;
border
:
1px
solid
#AFAFAF
;
text-align
:
center
;
color
:
#AFAFAF
;
border-radius
:
50%
;
z-index
:
3
;
display
:
none
;
}
.CloudDisk-R-Box.active2
:hover
.close-btn
{
display
:
block
;
}
.cloudDownName
{
min-width
:
200px
;
padding
:
10px
20px
15px
20px
;
font-size
:
14px
;
color
:
#000
;
}
.cloudDownText
{
padding
:
0
20px
10px
20px
;
font-size
:
14px
;
}
.cloudDownTextLin
{
border-bottom
:
1px
solid
#F0F0F0
;
}
.user-nickname
.editor-pencli
{
/* visibility: hidden; */
}
.user-nickname
:hover
.editor-pencli
{
/* visibility:visible; */
}
</
style
>
\ No newline at end of file
src/views/SellTemplate/Workspace.vue
View file @
38394a72
...
...
@@ -30,6 +30,11 @@
<div
class=
"tabs-items"
>
<div
class=
"item"
:class=
"{'active':currentMenu==-1}"
@
click=
"setCurrentMenuHandler(-1)"
v-if=
"userInfo.iv||userInfo.it"
><el-icon
color=
"#564bec"
class=
"q-mr-md"
size=
"16"
><Delete
/></el-icon>
回收站
</div>
</div>
<div
class=
"tabs-items"
v-if=
"userInfo.iv||userInfo.it"
>
<div
class=
"q-mb-md q-ml-lg text-small"
>
我的云盘
</div>
<div
class=
"item"
:class=
"{'active':currentMenu==5}"
@
click=
"setCurrentMenuHandler(5)"
><el-icon
color=
"#564bec"
class=
"q-mr-md"
size=
"16"
><MostlyCloudy
/></el-icon>
云盘空间
</div>
</div>
</div>
<div
class=
"col"
>
<BrowsingHistory
:current-menu=
"currentMenu"
v-if=
"currentMenu==0"
></BrowsingHistory>
...
...
@@ -37,6 +42,7 @@
<journeyAds
:position=
"position"
:current-menu=
"currentMenu"
v-if=
"currentMenu==3||currentMenu==4"
@
destroy-position=
"()=>position=null"
></journeyAds>
<RecycleBin
:current-menu=
"currentMenu"
v-if=
"currentMenu==-1"
></RecycleBin>
<ShareList
:position=
"position"
v-if=
"currentMenu==2"
@
destroy-position=
"()=>position=null"
></ShareList>
<CloudDiskList
v-if=
"currentMenu==5"
></CloudDiskList>
</div>
</template>
<
script
setup
lang=
"ts"
>
...
...
@@ -48,6 +54,7 @@ import StarTarget from './StarTarget.vue'
import
ShareList
from
'./Share.vue'
;
import
journeyAds
from
'./journeyAds.vue'
import
RecycleBin
from
'./RecycleBin.vue'
import
CloudDiskList
from
'./CloudDiskList.vue'
import
{
Plus
,
ArrowDown
,
Clock
,
Star
,
Share
,
Picture
,
Management
,
Delete
,
Setting
}
from
'@element-plus/icons-vue'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
openNewBlank
}
from
'@/utils/common'
;
...
...
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