Commit ce03abfe authored by zhengke's avatar zhengke

云盘

parent ea30d796
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<IconSearch class="cusor-pointer" @click.stop="refreshHandler"></IconSearch> <IconSearch class="cusor-pointer" @click.stop="refreshHandler"></IconSearch>
</template> </template>
<template #append> <template #append>
<el-select v-model="queryObj.type" placeholder="Select" style="width: 100px" <el-select v-model="queryObj.QPPTistCloudGroupIds" placeholder="Select" style="width: 100px"
@change="refreshHandler"> @change="refreshHandler">
<el-option label="稿定模板" value="1" /> <el-option label="稿定模板" value="1" />
<el-option label="我的空间" value="2" /> <el-option label="我的空间" value="2" />
...@@ -69,11 +69,7 @@ ...@@ -69,11 +69,7 @@
<div class="CloudDisk-R grow"> <div class="CloudDisk-R grow">
<div class="CloudDisk-R-header row flex-between items-center " <div class="CloudDisk-R-header row flex-between items-center "
:class="[queryObj.layout==3?'q-mb-lg':'q-mb-xs']"> :class="[queryObj.layout==3?'q-mb-lg':'q-mb-xs']">
<div class="fz14 PingFangSC colorBA"> <div class="fz14 PingFangSC colorBA"></div>
<span class="q-pr-lg figureTBOX cusor-pointer" v-for="(item,index) in figureType"
:class="[queryObj.imgType==item.ID?'active':'']"
@click="setDropdown(item,3)">{{item.Name}}</span>
</div>
<div> <div>
<el-dropdown trigger="click" @visible-change="changeDrop(1)" <el-dropdown trigger="click" @visible-change="changeDrop(1)"
:class="[currentSearchType==1?'DiskRHActive':'']"> :class="[currentSearchType==1?'DiskRHActive':'']">
...@@ -92,12 +88,12 @@ ...@@ -92,12 +88,12 @@
</template> </template>
</el-input> </el-input>
<div class="row flex-between items-center q-pt-md"> <div class="row flex-between items-center q-pt-md">
<el-checkbox label="png" value="A" /> <el-checkbox v-model="queryObj.QFileType" label="jpg" @change="refreshHandler"/>
<span>7</span> <span></span>
</div> </div>
<div class="row flex-between items-center q-pt-md"> <div class="row flex-between items-center q-pt-md">
<el-checkbox label="xlsx" value="B" /> <el-checkbox v-model="queryObj.QFileType" label="png" @change="refreshHandler"/>
<span>7</span> <span></span>
</div> </div>
</div> </div>
</template> </template>
...@@ -113,12 +109,13 @@ ...@@ -113,12 +109,13 @@
<el-date-picker <el-date-picker
class="CloudDisk-date" class="CloudDisk-date"
style="width: 95px;" style="width: 95px;"
v-model="queryObj.date" v-model="dateArr"
type="daterange" type="daterange"
start-placeholder="" start-placeholder=""
end-placeholder="" end-placeholder=""
value-format="YY-MM-DD" value-format="YY-MM-DD"
ref="dropdownDade" ref="dropdownDade"
@change="getDate"
/> />
</div> </div>
</div> </div>
...@@ -136,17 +133,23 @@ ...@@ -136,17 +133,23 @@
<el-dropdown-menu> <el-dropdown-menu>
<template v-for="(item,index) in sortType"> <template v-for="(item,index) in sortType">
<el-dropdown-item :command="item.ID" class="row flex-between" <el-dropdown-item :command="item.ID" class="row flex-between"
:divided="index==4?true:false"
@click="setDropdown(item,1)"> @click="setDropdown(item,1)">
<span style="width: 80px;">{{item.Name}}</span> <span style="width: 80px;">{{item.Name}}</span>
<IconCheck class="q-pl-lg" v-if="item.check"></IconCheck> <IconCheck class="q-pl-lg" v-if="item.check"></IconCheck>
</el-dropdown-item> </el-dropdown-item>
</template> </template>
<template v-for="(item,index) in sortTypeUD">
<el-dropdown-item :command="item.ID" class="row flex-between"
:divided="index==0?true:false"
@click="setDropdown(item,2)">
<span style="width: 80px;">{{item.Name}}</span>
<IconCheck class="q-pl-lg" v-if="item.check"></IconCheck>
</el-dropdown-item>
</template>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<el-dropdown trigger="click" @visible-change="changeDrop(4)" <el-dropdown trigger="click" @visible-change="changeDrop(4)"
@command="OpenDropdown"
:class="[currentSearchType==4?'DiskRHActive':'']" :class="[currentSearchType==4?'DiskRHActive':'']"
ref="dropdownLayout"> ref="dropdownLayout">
<el-button> <el-button>
...@@ -160,7 +163,7 @@ ...@@ -160,7 +163,7 @@
<el-dropdown-menu> <el-dropdown-menu>
<template v-for="(item,index) in layoutType"> <template v-for="(item,index) in layoutType">
<el-dropdown-item :command="item.ID" class="row flex-between" <el-dropdown-item :command="item.ID" class="row flex-between"
@click="setDropdown(item,2)"> @click="setDropdown(item,3)">
<div class="row items-center" style="width: 80px;"> <div class="row items-center" style="width: 80px;">
<el-icon> <el-icon>
<IconGridFour v-if="item.ID==1"/> <IconGridFour v-if="item.ID==1"/>
...@@ -197,7 +200,7 @@ ...@@ -197,7 +200,7 @@
@MultipleChoice="MultipleChoice" @MultipleChoice="MultipleChoice"
:Parent="datas" :Parent="datas"
></waterfallFlowList> ></waterfallFlowList>
<list v-show="queryObj.layout==3" :dataList="dataList" <list v-if="queryObj.layout==3" :dataList="dataList"
@refreshHandler="refreshHandler" @refreshHandler="refreshHandler"
@CopyTo="CopyTo" @CopyTo="CopyTo"
@MoveFile="MoveFile" @MoveFile="MoveFile"
...@@ -205,6 +208,7 @@ ...@@ -205,6 +208,7 @@
@deleteImg="deleteImg" @deleteImg="deleteImg"
@MultipleChoice="MultipleChoice" @MultipleChoice="MultipleChoice"
:Parent="datas" :Parent="datas"
:params="queryObj"
></list> ></list>
<div v-if='queryObj.pageCount == queryObj.pageIndex && !loading' class="text-center q-pt-lg"> <div v-if='queryObj.pageCount == queryObj.pageIndex && !loading' class="text-center q-pt-lg">
<!-- <img :src="noDataImg(2)" width="118" /> --> <!-- <img :src="noDataImg(2)" width="118" /> -->
...@@ -224,7 +228,7 @@ ...@@ -224,7 +228,7 @@
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
/> />
</div> --> </div> -->
<div class="CloudDisk-RBF animate__animated animate__fadeInUp" v-show="datas.ControlsShow"> <div v-if="queryObj.layout!=3&&datas.ControlsShow" class="CloudDisk-RBF animate__animated animate__fadeInUp">
<div class="CloudDisk-RBFCenter microsoft"> <div class="CloudDisk-RBFCenter microsoft">
<div class="row flex-center"> <div class="row flex-center">
<div class="CloudDisk-RBFbj rounded row items-center"> <div class="CloudDisk-RBFbj rounded row items-center">
...@@ -240,7 +244,7 @@ ...@@ -240,7 +244,7 @@
<el-button icon="CopyDocument" size="small" @click="CopyTo()">复制到</el-button> <el-button icon="CopyDocument" size="small" @click="CopyTo()">复制到</el-button>
<el-button icon="Expand" size="small" @click="CopyTo()">移动到</el-button> <el-button icon="Expand" size="small" @click="CopyTo()">移动到</el-button>
<el-button icon="Delete" size="small" @click="CopyTo()">删除</el-button> <el-button icon="Delete" size="small" @click="CopyTo()">删除</el-button>
<el-button icon="View" size="small" @click="CopyTo()">查看</el-button> <!-- <el-button icon="View" size="small" @click="CopyTo()">查看</el-button> -->
<span class="close-btn cursor-pointer column items-center flex-center q-pl-md" @click="datas.ControlsShow=false"> <span class="close-btn cursor-pointer column items-center flex-center q-pl-md" @click="datas.ControlsShow=false">
<IconClose :size="14"></IconClose> <IconClose :size="14"></IconClose>
</span> </span>
...@@ -291,6 +295,7 @@ ...@@ -291,6 +295,7 @@
import { noDataImg } from "@/utils/common"; import { noDataImg } from "@/utils/common";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import AliyunUpload from '@/utils/upload/aliyun' import AliyunUpload from '@/utils/upload/aliyun'
import { getLastMonthDate } from "@/utils/time";
import cellList from './cellList' import cellList from './cellList'
import waterfallFlowList from './waterfallFlowList' import waterfallFlowList from './waterfallFlowList'
...@@ -305,19 +310,25 @@ ...@@ -305,19 +310,25 @@
isPersonage: '' as any, isPersonage: '' as any,
}) })
const RefreshLoading = ref(false) const RefreshLoading = ref(false)
let time = getLastMonthDate()
const queryObj = reactive({ const queryObj = reactive({
pageIndex: 1, pageIndex: 1,
pageSize: 72, pageSize: 100,
CloudGroupId: '', CloudGroupId: '',
FileName: '', FileName: '',
total: 0, total: 0,
type: '1',//稿定模版 QPPTistCloudGroupIds: '1',//稿定模版 云盘分组数组[1,2] 待定
imgType: 1,//模版 素材 imgType: 1,//模版 素材
Sorts: [],//排序
layout: 1,//布局 layout: 1,//布局
date: '',//日期 QFileType: [],//格式
QStartTime: time[0],
QEndTime: time[1],
QOrderFiled: 1,//排序字段(1-创建时间,2-文件大小 3文件名称
QOrderBy: 2,//1-升序,2-倒序
QCreateBy: '',//上传人员
}) })
const dateArr = ref([time[0],time[1]] as any)
if(props.isPersonage) queryObj.CloudGroupId = parmas.value.id if(props.isPersonage) queryObj.CloudGroupId = parmas.value.id
const loading = ref(false as any) const loading = ref(false as any)
const dataList = ref([] as Array<any>); const dataList = ref([] as Array<any>);
...@@ -353,17 +364,15 @@ ...@@ -353,17 +364,15 @@
new Date(2000, 1, 1), new Date(2000, 1, 1),
new Date(2000, 2, 1), new Date(2000, 2, 1),
] ]
const figureType = ref([
{Name: '模版',ID:1},
{Name: '素材',ID:2},
])
const sortType = ref([ const sortType = ref([
{Name: '添加时间',ID:1,check:false}, {Name: '添加时间',ID:1,check:true},
{Name: '修改时间',ID:2,check:false}, {Name: '文件大小',ID:2,check:false},
{Name: '文件大小',ID:3,check:false}, {Name: '文件名称',ID:3,check:false},
{Name: '文件名称',ID:4,check:false}, ])
{Name: '升序',ID:5,check:false}, const sortTypeUD = ref([
{Name: '降序',ID:6,check:false}, {Name: '升序',ID:1,check:false},
{Name: '降序',ID:2,check:true},
]) ])
const layoutType = ref([ const layoutType = ref([
{Name: '宫格',ID:1,check:false}, {Name: '宫格',ID:1,check:false},
...@@ -373,7 +382,7 @@ ...@@ -373,7 +382,7 @@
const datas = reactive({ const datas = reactive({
selectAll: false, selectAll: false,
SelectedDatas: [] as any, SelectedDatas: [] as Array,
ControlsShow: true,// 批量操作显示 ControlsShow: true,// 批量操作显示
indeterminate: false,// 未全选状态 indeterminate: false,// 未全选状态
}) })
...@@ -384,13 +393,24 @@ ...@@ -384,13 +393,24 @@
const newDatasSelected = () =>{ const newDatasSelected = () =>{
if(datas.SelectedDatas.length==0) { if(datas.SelectedDatas.length==0) {
for(let i=0;i<dataList.value.length;i++){
dataList.value[i].check = false
}
datas.selectAll = false datas.selectAll = false
datas.indeterminate = false datas.indeterminate = false
}else if(datas.SelectedDatas.length>0){ }else if(datas.SelectedDatas.length>0){
if(dataList.value.length==datas.SelectedDatas.length){ if(dataList.value.length==datas.SelectedDatas.length){
for(let i=0;i<dataList.value.length;i++){
dataList.value[i].check = true
}
datas.selectAll = true datas.selectAll = true
datas.indeterminate = false datas.indeterminate = false
}else if(dataList.value.length>datas.SelectedDatas.length){ }else if(dataList.value.length>datas.SelectedDatas.length){
for(let i=0;i<dataList.value.length;i++){
let x = dataList.value[i]
let findObj = datas.SelectedDatas.find(y=> y==x.DetailsId)
if(findObj) dataList.value[i].check = true
}
datas.indeterminate = true datas.indeterminate = true
} }
} }
...@@ -403,10 +423,11 @@ ...@@ -403,10 +423,11 @@
const setSelecAll = () => { const setSelecAll = () => {
if(datas.selectAll){ if(datas.selectAll){
dataList.value.forEach(x=>{ datas.SelectedDatas = []
x.check = true for(let i=0;i<dataList.value.length;i++){
datas.SelectedDatas.push(x.DetailsId) dataList.value[i].check = true
}) datas.SelectedDatas.push(dataList.value[i].DetailsId)
}
datas.indeterminate = false datas.indeterminate = false
}else if(datas.indeterminate){ }else if(datas.indeterminate){
datas.SelectedDatas.forEach(x=>{ datas.SelectedDatas.forEach(x=>{
...@@ -415,43 +436,61 @@ ...@@ -415,43 +436,61 @@
}) })
}) })
}else{ }else{
dataList.value.forEach(x=>{ for(let i=0;i<dataList.value.length;i++){
x.check = false dataList.value[i].check = false
}) }
datas.SelectedDatas = [] datas.SelectedDatas = []
datas.indeterminate = false datas.indeterminate = false
} }
} }
const getDate = () => {
if(dateArr.value&&dateArr.value.length>0){
queryObj.QStartTime = dateArr.value[0]
queryObj.QEndTime = dateArr.value[1]
}else{
queryObj.QStartTime = ''
queryObj.QEndTime = ''
}
refreshHandler()
}
const OpenDropdown = () =>{ const OpenDropdown = () =>{
if(currentSearchType.value==3)dropdownSort.value.handleOpen() if(currentSearchType.value==3)dropdownSort.value.handleOpen()
if(currentSearchType.value==4)dropdownLayout.value.handleOpen()
} }
const setDropdown = (item:any,type:Number) =>{ const setDropdown = (item:any,type:Number) =>{
if(type==1){ if(type==1||type==2){
item.check = !item.check if(type==1){
let newSortType = sortType.value.filter(x=>x.check) item.check = !item.check
queryObj.Sorts = newSortType.map(x=>{return x.ID}) sortType.value.forEach(x=>{
if(x.ID!=item.ID) x.check = false
})
queryObj.QOrderFiled = item.ID
}else{
item.check = !item.check
sortTypeUD.value.forEach(x=>{
if(x.ID!=item.ID) x.check = false
})
queryObj.QOrderBy = item.ID
}
refreshHandler()
} }
if(type==2){ if(type==3){
loading.value = true
layoutType.value.forEach(x=>{ layoutType.value.forEach(x=>{
if(x.ID!=item.ID) x.check = false if(x.ID!=item.ID) x.check = false
}) })
item.check = true item.check = true
queryObj.layout = item.ID queryObj.layout = item.ID
} setTimeout(()=>{
if(type==3){ loading.value = false
queryObj.imgType = item.ID },3000)
} }
} }
const changeDrop = (type:Number) =>{ const changeDrop = (type:Number) =>{
if(currentSearchType.value==type) currentSearchType.value = 0 if(currentSearchType.value==type) currentSearchType.value = 0
else currentSearchType.value = type else currentSearchType.value = type
if(currentSearchType.value==2) { if(currentSearchType.value==2) dropdownDade.value.handleOpen()
dropdownDade.value.handleOpen()
}
} }
const getImg = (item:any,index:Number) => { const getImg = (item:any,index:Number) => {
currentImg.value = index currentImg.value = index
...@@ -671,11 +710,13 @@ const SearchImg = () =>{ ...@@ -671,11 +710,13 @@ const SearchImg = () =>{
if(row&&row.Id) { if(row&&row.Id) {
if(row.Id==queryObj.CloudGroupId) return if(row.Id==queryObj.CloudGroupId) return
queryObj.CloudGroupId = row.Id queryObj.CloudGroupId = row.Id
datas.SelectedDatas = [] datas.selectAll = false
datas.indeterminate = false
} }
RefreshLoading.value = true; RefreshLoading.value = true;
queryObj.pageIndex = 1; queryObj.pageIndex = 1;
srcList.value = [] srcList.value = []
querySearchHandler(); querySearchHandler();
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="CloudDisk-R-Center row"> <div class="CloudDisk-R-Center row">
<template v-for="(item,index) in dataList"> <template v-for="(item,index) in dataList">
<div style="position: relative;"> <div style="position: relative;">
<el-checkbox style="position: absolute;left: 30px;top: -3px;" <el-checkbox style="position: absolute;left: 30px;top: 0px;"
class="fz14" label="" v-model="item.check" class="fz14" label="" v-model="item.check"
@change="handleSelectionChange(item)"/> @change="handleSelectionChange(item)"/>
<el-dropdown trigger="click"> <el-dropdown trigger="click">
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from "vue"; import { ref, watch } from "vue";
import CloudDiskService from "@/services/CloudDiskService"; import CloudDiskService from "@/services/CloudDiskService";
import { ApiResult } from "@/configs/axios"; import { ApiResult } from "@/configs/axios";
const props = defineProps({ const props = defineProps({
...@@ -132,20 +132,26 @@ ...@@ -132,20 +132,26 @@
emit('deleteImg',item) emit('deleteImg',item)
} }
watch(()=>props,(n,o)=>{
if(n.Parent.SelectedDatas.length==0) multipleSelection.value = []
},{
deep: true,
immediate:true
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.CloudDisk-R-Center{ .CloudDisk-R-Center{
flex-wrap: wrap; flex-wrap: wrap;
} }
.CloudDisk-R-Box{ .CloudDisk-R-Box{
width: 87px; width: 247px;
margin-left: 24px; margin-left: 24px;
margin-bottom: 24px; margin-bottom: 24px;
position: relative; position: relative;
} }
.CloudDisk-R-Box.active .CloudDisk-R-Img{ .CloudDisk-R-Box.active .CloudDisk-R-Img{
width: 85px; width: 247px;
height: 85px; height: 247px;
background: #8790F3; background: #8790F3;
box-shadow: 0px 0px 13px 0px #0D3EBC; box-shadow: 0px 0px 13px 0px #0D3EBC;
border-radius: 8px; border-radius: 8px;
...@@ -170,8 +176,8 @@ ...@@ -170,8 +176,8 @@
display: block; display: block;
} }
.CloudDisk-R-Img{ .CloudDisk-R-Img{
width: 85px; width: 247px;
height: 85px; height: 247px;
margin-bottom: 9px; margin-bottom: 9px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
...@@ -181,10 +187,10 @@ ...@@ -181,10 +187,10 @@
} }
.CloudDisk-R-Img .el-image{ .CloudDisk-R-Img .el-image{
width: 85px; width: 247px;
} }
.title{ .title{
width: 85px; width: 247px;
line-height: 17px; line-height: 17px;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
......
<template> <template>
<div class="CloudDisk-R-Center row" v-if="dataList.length>0"> <div class="CloudDisk-R-Center row" v-if="dataList.length>0">
<el-table :data="dataList" style="width: 100%;" <el-table :data="dataList" style="width: 100%;"
ref="multipleTableRef"> ref="multipleTableRef"
<el-table-column type="selection" width="55" @selection-change="handleSelectionChange"
@selection-change="handleSelectionChange"/> row-key="DetailsId">
<el-table-column type="selection" width="55"/>
<el-table-column label="基本信息" show-overflow-tooltip min-width="200"> <el-table-column label="基本信息" show-overflow-tooltip min-width="200">
<template #default="scope"> <template #default="scope">
<div class="row items-center"> <div class="row items-center">
...@@ -49,9 +50,17 @@ ...@@ -49,9 +50,17 @@
</el-table-column> </el-table-column>
<el-table-column align="center" min-width="80"> <el-table-column align="center" min-width="80">
<template #header> <template #header>
<el-icon> <el-dropdown trigger="click" >
<IconSetting></IconSetting> <el-icon class="cursor-pointer" size="16" color="#b1b7cf"><IconSetting /></el-icon>
</el-icon> <template #dropdown>
<el-dropdown-menu class="q-pa-md microsoft">
<el-dropdown-item icon="CopyDocument" @click="CopyTo()">复制到</el-dropdown-item>
<el-dropdown-item icon="Expand" @click="MoveFile()">移动到</el-dropdown-item>
<el-dropdown-item icon="Delete" @click="deleteImg()">删除</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-dropdown trigger="click" > <el-dropdown trigger="click" >
...@@ -71,7 +80,8 @@ ...@@ -71,7 +80,8 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive } from "vue"; import { ref, reactive, watch } from "vue";
import { ElTable } from 'element-plus'
import CloudDiskService from "@/services/CloudDiskService"; import CloudDiskService from "@/services/CloudDiskService";
import { ApiResult } from "@/configs/axios"; import { ApiResult } from "@/configs/axios";
const props = defineProps({ const props = defineProps({
...@@ -82,6 +92,10 @@ ...@@ -82,6 +92,10 @@
Parent:{ Parent:{
type: Object, type: Object,
default: {}, default: {},
},
params:{
type: Object,
default: {},
} }
}) })
const emit = defineEmits<{ const emit = defineEmits<{
...@@ -97,10 +111,12 @@ ...@@ -97,10 +111,12 @@
const nickNam = ref(''|| Number) const nickNam = ref(''|| Number)
const editLoading = ref(false) const editLoading = ref(false)
const errImg = ref(require('@/assets/img/noImg.png') as any) const errImg = ref(require('@/assets/img/noImg.png') as any)
const multipleTableRef = ref<InstanceType<typeof ElTable>>()
const multipleSelection = ref([] as any) const multipleSelection = ref([] as any)
const handleSelectionChange = (val: []) =>{ const handleSelectionChange = (val: []) =>{
multipleSelection.value = val.map(x=>{return x.DetailsId}) multipleSelection.value = val.map(x=>{return x.DetailsId})
emit('MultipleChoice',multipleSelection.value)
} }
const setCloudNameHandler = async (target:any)=>{ const setCloudNameHandler = async (target:any)=>{
if(editLoading.value || nickNam.value=='' || !nickNam.value) return if(editLoading.value || nickNam.value=='' || !nickNam.value) return
...@@ -140,6 +156,49 @@ ...@@ -140,6 +156,49 @@
emit('deleteImg',item) emit('deleteImg',item)
} }
const toggleSelection = (rows:any,state:undefined) => {
if (rows) {
rows.forEach((row) => {
multipleTableRef.value!.toggleRowSelection(row, state)
})
} else {
if(state) multipleTableRef.value.toggleAllSelection(state)
else multipleTableRef.value!.clearSelection()
}
}
watch(()=>props,(n,o)=>{
if(props.Parent.SelectedDatas.length>0) {
setTimeout(()=>{
props.Parent.SelectedDatas.forEach(x => {
let filterS = props.dataList.filter((y,index)=>{
y.index=index
return x==y.DetailsId
})
let index = filterS&&filterS[0]&&filterS[0].index
if(index>=0) {
toggleSelection([props.dataList[index]],true)
}
});
},3000)
}
if(props.dataList.length>0&&props.Parent.selectAll&&!props.Parent.indeterminate){
setTimeout(()=>{
for(let i=0;i<props.dataList.length;i++){
let x = props.dataList[i]
toggleSelection([x], true)
}
},3000)
}
},{
deep: true,
immediate:true
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.editor-pencli{ .editor-pencli{
...@@ -149,7 +208,7 @@ ...@@ -149,7 +208,7 @@
display: block; display: block;
} }
.CloudDisk-R-Center::v-deep(.el-table__body){ .CloudDisk-R-Center::v-deep(.el-table__body){
margin-top: 8px; margin-top: 19px;
} }
.CloudDisk-R-Center::v-deep(.el-table__header-wrapper th){ .CloudDisk-R-Center::v-deep(.el-table__header-wrapper th){
background-color: #f5f7fa; background-color: #f5f7fa;
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<div class="CloudDisk-R-Center"> <div class="CloudDisk-R-Center">
<Waterfall :list="dataList" <Waterfall :list="dataList"
:breakpoints="{ :breakpoints="{
1400:{rowPerView:12}, 1400:{rowPerView:5},
800:{rowPerView:12}, 800:{rowPerView:5},
500:{rowPerView:12} 500:{rowPerView:5}
}" }"
:hasAroundGutter="false" :align="'left'" :hasAroundGutter="false" :align="'left'"
rowKey="DetailsId" :gutter="24" rowKey="DetailsId" :gutter="24"
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
> >
<template #item="{ item, url, index }"> <template #item="{ item, url, index }">
<div style="position: relative;"> <div style="position: relative;">
<el-checkbox style="position: absolute;left: 30px;top: -3px;" <el-checkbox style="position: absolute;left: 10px;top: 0px;"
class="fz14" label="" v-model="item.check" class="fz14" label="" v-model="item.check"
@change="handleSelectionChange(item)"/> @change="handleSelectionChange(item)"/>
<el-dropdown trigger="click"> <el-dropdown trigger="click">
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive } from "vue"; import { ref, reactive, watch } from "vue";
import { LazyImg, Waterfall } from 'vue-waterfall-plugin-next' import { LazyImg, Waterfall } from 'vue-waterfall-plugin-next'
import 'vue-waterfall-plugin-next/dist/style.css' import 'vue-waterfall-plugin-next/dist/style.css'
import CloudDiskService from "@/services/CloudDiskService"; import CloudDiskService from "@/services/CloudDiskService";
...@@ -81,6 +81,10 @@ ...@@ -81,6 +81,10 @@
type: Array, type: Array,
default: [], default: [],
}, },
Parent:{
type: Object,
default: {},
}
}) })
const emit = defineEmits<{ const emit = defineEmits<{
(event: 'close'): void, (event: 'close'): void,
...@@ -105,7 +109,7 @@ ...@@ -105,7 +109,7 @@
if(filter.length==0&&row.check) { if(filter.length==0&&row.check) {
multipleSelection.value.push(row.DetailsId) multipleSelection.value.push(row.DetailsId)
emit('MultipleChoice',multipleSelection.value) emit('MultipleChoice',multipleSelection.value)
}else { }else if(!row.check){
let newFilter = props.Parent.SelectedDatas.filter(x=>x!=row.DetailsId) let newFilter = props.Parent.SelectedDatas.filter(x=>x!=row.DetailsId)
multipleSelection.value = newFilter multipleSelection.value = newFilter
emit('MultipleChoice',multipleSelection.value) emit('MultipleChoice',multipleSelection.value)
...@@ -147,6 +151,15 @@ ...@@ -147,6 +151,15 @@
emit('deleteImg',item) emit('deleteImg',item)
} }
watch(()=>props,(n,o)=>{
if(n.Parent.SelectedDatas.length==0) {
multipleSelection.value = []
}
},{
deep: true,
immediate:true
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.CloudDisk-R-Center{ .CloudDisk-R-Center{
...@@ -154,11 +167,11 @@ ...@@ -154,11 +167,11 @@
padding-left: 24px; padding-left: 24px;
} }
.CloudDisk-R-Box{ .CloudDisk-R-Box{
width: 87px; width: 247px;
position: relative; position: relative;
} }
.CloudDisk-R-Box.active .CloudDisk-R-Img{ .CloudDisk-R-Box.active .CloudDisk-R-Img{
width: 85px; width: 247px;
background: #8790F3; background: #8790F3;
box-shadow: 0px 0px 13px 0px #0D3EBC; box-shadow: 0px 0px 13px 0px #0D3EBC;
border-radius: 8px; border-radius: 8px;
...@@ -183,7 +196,8 @@ ...@@ -183,7 +196,8 @@
display: block; display: block;
} }
.CloudDisk-R-Img{ .CloudDisk-R-Img{
width: 85px; width: 247px;
min-height: 40px;
height: auto; height: auto;
margin-bottom: 9px; margin-bottom: 9px;
border-radius: 8px; border-radius: 8px;
...@@ -192,11 +206,11 @@ ...@@ -192,11 +206,11 @@
} }
.CloudDisk-R-Img .el-image{ .CloudDisk-R-Img .el-image{
width: 85px; width: 247px;
border-radius: 8px; border-radius: 8px;
} }
.title{ .title{
width: 85px; width: 247px;
line-height: 17px; line-height: 17px;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
...@@ -221,6 +235,6 @@ ...@@ -221,6 +235,6 @@
} }
::v-deep(.lazy__img[lazy=error]){ ::v-deep(.lazy__img[lazy=error]){
padding: 0; padding: 0;
width: 85px !important; width: 247px !important;
} }
</style> </style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment