Commit 48cc4e94 authored by zhengke's avatar zhengke

批量移动文件

parent 3d04a225
...@@ -63,7 +63,6 @@ ...@@ -63,7 +63,6 @@
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="()=>closedhandler()">关闭</el-button> <el-button @click="()=>closedhandler()">关闭</el-button>
<!-- <el-button type="primary" @click="()=>closedhandler()"> 保存分享配置 </el-button> -->
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
......
...@@ -5,9 +5,12 @@ ...@@ -5,9 +5,12 @@
<template #header> <template #header>
<div class="row overflow-hide"> <div class="row overflow-hide">
<div> <div>
<img class="q-px-md" <img v-if="details.FileType>0" class="q-px-md"
:src="FileType==1?datas.pdfImg:datas.adsImg" :src="details.FileType==1?datas.pdfImg:datas.adsImg"
style="height: 43px;" /> style="height: 43px;" />
<img v-else class="q-px-md"
src="@/assets/img/file.png"
style="height: 43px;" />
</div> </div>
<div class="q-pl-md col"> <div class="q-pl-md col">
<div> <div>
...@@ -17,7 +20,14 @@ ...@@ -17,7 +20,14 @@
<div class="TreeFile-Title pointer">{{details.FileName}}</div> <div class="TreeFile-Title pointer">{{details.FileName}}</div>
</el-tooltip> </el-tooltip>
</div> </div>
<div class="text-small text-5B5D62 q-pt-sm">创建者:{{details.CreateName}}</div> <div class="text-small text-5B5D62 q-pt-sm">
<template v-if="details">
创建者:{{details.CreateName}}
</template>
<template v-else>
移动文件 {{selectedDatas.join(',')}}
</template>
</div>
</div> </div>
</div> </div>
...@@ -31,19 +41,16 @@ ...@@ -31,19 +41,16 @@
:data="dataList" :data="dataList"
:props="defaultProps" :props="defaultProps"
node-key="FileId" node-key="FileId"
:default-expanded-keys="[datas.FolderId]"
:default-checked-keys="[datas.FolderId]"
default-expand-all default-expand-all
show-checkbox show-checkbox
:filter-node-method="filterNode" :filter-node-method="filterNode"
@check="handleTreeNodeClick" @check="handleTreeNodeClick"/>
@check-change="handleCheckChange"/>
</div> </div>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="()=>closedhandler()">关闭</el-button> <el-button @click="()=>closedhandler()">关闭</el-button>
<el-button type="primary" @click="()=>MoveToFolder()"> 保存分享配置 </el-button> <el-button type="primary" @click="()=>MoveToFolder()"> 保存移动 </el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
...@@ -66,7 +73,11 @@ import FolderService from "@/services/FolderService"; ...@@ -66,7 +73,11 @@ import FolderService from "@/services/FolderService";
type: Array, type: Array,
required:[] required:[]
}, },
FileType: { setFileList:{
type: Array,
required:[]
},
fileType: {
type:Number, type:Number,
required: 1 required: 1
} }
...@@ -93,9 +104,9 @@ import FolderService from "@/services/FolderService"; ...@@ -93,9 +104,9 @@ import FolderService from "@/services/FolderService";
adsImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png', adsImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png',
fileList: [] as Tree[], fileList: [] as Tree[],
FolderId: '', FolderId: '',
FolderObj: {} FolderObj: {},
checkedKeys: null as any
}) })
const show=ref(true) const show=ref(true)
const loading = ref(true) const loading = ref(true)
const deleteLoading = ref<any>(null); const deleteLoading = ref<any>(null);
...@@ -104,11 +115,6 @@ import FolderService from "@/services/FolderService"; ...@@ -104,11 +115,6 @@ import FolderService from "@/services/FolderService";
const closedhandler=()=>{ const closedhandler=()=>{
emit('close') emit('close')
} }
const handleCheckChange = (data:any, checked:any, indeterminate:any) => {
if (checked) {
treeRef.value.setCheckedKeys([data.FileId])
}
}
const handleTreeNodeClick = (data:any,checkObj:any) => { const handleTreeNodeClick = (data:any,checkObj:any) => {
// 共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象 // 共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象
// 树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性 // 树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性
...@@ -117,12 +123,10 @@ import FolderService from "@/services/FolderService"; ...@@ -117,12 +123,10 @@ import FolderService from "@/services/FolderService";
if (checkObj.checkedKeys.length == 2) { if (checkObj.checkedKeys.length == 2) {
// 如果选择超过一个节点,则只保留最后一个节点 // 如果选择超过一个节点,则只保留最后一个节点
//单选实现 //单选实现
console.log(data,'----data.FileId')
datas.FolderId = data.FileId datas.FolderId = data.FileId
// if(checkObj.checkedNodes.length>1) // if(checkObj.checkedNodes.length>1)
treeRef.value.setCheckedKeys([data.FileId]); treeRef.value.setCheckedKeys([data.FileId]);
}else{ }else{
console.log(data,'----data.FileId2222')
datas.FolderId = data.FileId datas.FolderId = data.FileId
treeRef.value.setCheckedKeys([data.FileId]); treeRef.value.setCheckedKeys([data.FileId]);
} }
...@@ -133,20 +137,20 @@ import FolderService from "@/services/FolderService"; ...@@ -133,20 +137,20 @@ import FolderService from "@/services/FolderService";
return data.FileName.includes(value) return data.FileName.includes(value)
} }
const MoveToFolder = () => { const MoveToFolder = () => {
let File = datas.FolderObj
let title = '' let title = ''
let Id = '' let FileList = []
console.log(File,'=====File')
if(!props.details) { if(!props.details) {
title = `文件${props.selectedDatas.join(',')}` title = `文件ID ${props.selectedDatas.join(',')}`
Id = props.selectedDatas.join(',') FileList = props.setFileList
}else { }else {
title = props.details.FileName title = props.details.FileName
Id = props.details.FileId FileList.push({
FileId: props.details.FileId,
FileType: props.details.FileType
})
} }
// console.log(title,'=======11111')
// return ElMessageBox.confirm(`此操作将${title}移动到${datas.FolderObj.FileName},是否确定?`, "提示", {
ElMessageBox.confirm(`此操作将${title}移动到${File.FileName},是否确定?`, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
...@@ -154,8 +158,8 @@ import FolderService from "@/services/FolderService"; ...@@ -154,8 +158,8 @@ import FolderService from "@/services/FolderService";
.then(async () => { .then(async () => {
try { try {
let queryMsg = { let queryMsg = {
FolderId: datas.FolderId, //文件夹Id FileList: FileList,
Id: Id, //广告行程Id TargetFolderId: datas.FolderId,
}; };
deleteLoading.value = ElLoading.service({ deleteLoading.value = ElLoading.service({
lock: true, lock: true,
...@@ -165,7 +169,7 @@ import FolderService from "@/services/FolderService"; ...@@ -165,7 +169,7 @@ import FolderService from "@/services/FolderService";
if (pageRes.data.resultCode == 1) { if (pageRes.data.resultCode == 1) {
ElMessage({ ElMessage({
showClose: true, showClose: true,
message: `移动${props.FileType == 2 ? "广告" : "行程"}至文件夹成功`, message: `移动文件成功`,
type: "success", type: "success",
}); });
emit('close') emit('close')
...@@ -173,7 +177,7 @@ import FolderService from "@/services/FolderService"; ...@@ -173,7 +177,7 @@ import FolderService from "@/services/FolderService";
} else { } else {
ElMessage({ ElMessage({
showClose: true, showClose: true,
message: `移动${props.FileType == 2 ? "广告" : "行程"}至文件夹失败`, message: `移动文件失败`,
type: "warning", type: "warning",
}); });
} }
...@@ -186,34 +190,48 @@ import FolderService from "@/services/FolderService"; ...@@ -186,34 +190,48 @@ import FolderService from "@/services/FolderService";
const getFile = async () => { const getFile = async () => {
let querys = { let querys = {
FileType: props.FileType FileType: props.fileType
} }
let pageRes = await FolderService.GetMyFolderTree(querys); let pageRes = await FolderService.GetMyFolderTree(querys);
if (pageRes.data.resultCode == 1) { if (pageRes.data.resultCode == 1) {
dataList.value = pageRes.data.data dataList.value = pageRes.data.data
recursiveFun(dataList.value) recursive(dataList.value)
} }
} }
const recursiveFun = (arrs:Array,) =>{ const recursive = (arrs:Array,disabled:any) =>{
let isDisableds:Boolean
if(arrs.length>0) arrs.forEach(x => { if(arrs.length>0) arrs.forEach(x => {
Object.assign(x,{disabled:props.selectedDatas.indexOf(x.FileId)!=-1||props.details.FileId==x.FileId?true:false}) isDisableds = (props.selectedDatas.indexOf(x.FileId)!=-1&&!props.details)||props.details.FileId==x.FileId||disabled?true:false
if(props.details.FileType>0&&x.FileId==props.details.FileId) isDisableds = false
if(!props.details){
for(let i =0;i<props.setFileList.length;i++){
if(props.setFileList[i].FileType&&props.setFileList[i].FileId==x.FileId) isDisableds = false
}
}
Object.assign(x,{disabled:isDisableds})
if(x.ChildList.length>0){ if(x.ChildList.length>0){
recursion(x) recursionChild(x,isDisableds)
} }
}) })
else Object.assign(arrs,{disabled:props.selectedDatas.indexOf(arrs.FileId)!=-1||props.details.FileId==arrs.FileId?true:false}) else {
isDisableds = (props.selectedDatas.indexOf(arrs.FileId)!=-1&&!props.details)||props.details.FileId==arrs.FileId||disabled?true:false
Object.assign(arrs,{disabled:isDisableds})
}
} }
const recursion = (arrs:any,type:any) => { const recursionChild = (arrs:any,disabled:any) => {
if(arrs&&arrs.ChildList.length>0) { if(arrs&&arrs.ChildList.length>0) {
recursiveFun(arrs.ChildList) recursive(arrs.ChildList,disabled)
} }
} }
watch(filterText, (val) => { watch(filterText, (val) => {
treeRef.value!.filter(val) treeRef.value!.filter(val)
}) })
watch(props.selectedDatas, (val) => {
recursive(dataList.value)
})
getFile() getFile()
</script> </script>
<style scoped> <style scoped>
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
@click=" @click="
() => { () => {
queryObj.FileId = 0; queryObj.FileId = 0;
datas.selectAll = false;
datas.selectedDatas = [];
refreshHandler(); refreshHandler();
} }
" "
...@@ -210,9 +212,16 @@ ...@@ -210,9 +212,16 @@
<TreeFile v-if="isTreeFile" <TreeFile v-if="isTreeFile"
:details="journeyAdsDetails" :details="journeyAdsDetails"
:selected-datas="datas.selectedDatas" :file-type="queryObj.FileType" :selected-datas="datas.selectedDatas"
:set-file-list="datas.setFileList"
:file-type="queryObj.FileType"
@close="() => {journeyAdsDetails = '';isTreeFile=false}" @close="() => {journeyAdsDetails = '';isTreeFile=false}"
@success="() => {journeyAdsDetails = '';isTreeFile=false;refreshHandler()}"></TreeFile> @success="() => {
journeyAdsDetails = '';
isTreeFile=false;
datas.selectAll = false;
datas.selectedDatas = [];
refreshHandler()}"></TreeFile>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, provide, watch, inject, onMounted } from "vue"; import { ref, reactive, provide, watch, inject, onMounted } from "vue";
...@@ -254,6 +263,7 @@ const datas = reactive({ ...@@ -254,6 +263,7 @@ const datas = reactive({
selectAll: false as any, selectAll: false as any,
journeyAds: { RefreshLoading: false } as any, journeyAds: { RefreshLoading: false } as any,
fileList: [] as any, fileList: [] as any,
setFileList: [] as any,
pdfImg: pdfImg:
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png", "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png",
adsImg: adsImg:
...@@ -284,6 +294,21 @@ const SellTemplateRef = ref<any>(); ...@@ -284,6 +294,21 @@ const SellTemplateRef = ref<any>();
// 移动到文件夹 // 移动到文件夹
const MoveFile = (item:any) => { const MoveFile = (item:any) => {
if(item) journeyAdsDetails.value = item if(item) journeyAdsDetails.value = item
else {
datas.setFileList = []
for(let i=0;i<dataList.value.length;i++){
for(let j=0;j<datas.selectedDatas.length;j++){
if(dataList.value[i].FileId==datas.selectedDatas[j]){
datas.setFileList.push(
{
FileId: dataList.value[i].FileId,
FileType: dataList.value[i].FileType
}
)
}
}
}
}
isTreeFile.value = true isTreeFile.value = true
} }
// 历史版本 // 历史版本
...@@ -481,6 +506,9 @@ const editDelete = async (row: any, type: Number) => { ...@@ -481,6 +506,9 @@ const editDelete = async (row: any, type: Number) => {
if (type == 2) { if (type == 2) {
queryObj.FileId = row.FileId; queryObj.FileId = row.FileId;
Navigation.value = row; Navigation.value = row;
datas.selectAll = false
datas.selectedDatas = []
isIndeterminate.value = false
refreshHandler(); refreshHandler();
} else { } else {
folderObj.value.id = row.FileId; folderObj.value.id = row.FileId;
...@@ -491,7 +519,6 @@ const editDelete = async (row: any, type: Number) => { ...@@ -491,7 +519,6 @@ const editDelete = async (row: any, type: Number) => {
} }
}; };
const querySearchHandler = async () => { const querySearchHandler = async () => {
datas.selectedDatas = []
loading.value = true; loading.value = true;
try { try {
if (queryObj.pageIndex == 1) dataList.value = []; if (queryObj.pageIndex == 1) dataList.value = [];
...@@ -517,6 +544,7 @@ const querySearchHandler = async () => { ...@@ -517,6 +544,7 @@ const querySearchHandler = async () => {
}); });
}; };
arrList(pageRes.data.data.pageData); arrList(pageRes.data.data.pageData);
datas.selectedDatas = Array.from(new Set(datas.selectedDatas))
dataList.value = dataList.value.concat(pageRes.data.data.pageData); dataList.value = dataList.value.concat(pageRes.data.data.pageData);
queryObj.pageCount = pageRes.data.data.pageCount; queryObj.pageCount = pageRes.data.data.pageCount;
} }
......
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