安全管理/知识库
This commit is contained in:
726
src/views/quality/knowledgeDocument/index.vue
Normal file
726
src/views/quality/knowledgeDocument/index.vue
Normal file
@ -0,0 +1,726 @@
|
||||
<template>
|
||||
<div class="profile_engin">
|
||||
<div class="box_info">
|
||||
<div class="tree_left1" id="tree_left1">
|
||||
<div class="check_select">
|
||||
<el-button type="primary" v-auth="'/zm/api/v1/system/documentData/newFolder'" @click="addFile"
|
||||
><el-icon><ele-Plus /></el-icon>新建文件夹</el-button
|
||||
>
|
||||
<div class="box_btn" v-auth="'/zm/api/v1/system/documentData/add'">
|
||||
<span>+导入</span>
|
||||
<div class="btn">
|
||||
<el-button type="primary" style="float: left" @click="state.bigUploadFile1"
|
||||
><el-icon><ele-Plus /></el-icon>导入压缩文件</el-button
|
||||
>
|
||||
<el-button type="primary" style="float: left" :disabled="!state.parentPid" @click="uploadFile(2)"
|
||||
><el-icon><ele-Plus /></el-icon>导入文件</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="file_upload check_select">
|
||||
<el-checkbox v-model="state.checked" @change="handleCheckedTreeExpand($event)" label="展开/折叠" size="large" />
|
||||
<div style="margin: 0 10px">
|
||||
<el-select v-model="state.paramsQuery.switch" placeholder="当前文件夹" size="small">
|
||||
<el-option v-for="item in state.options" :key="item.id" :label="item.label" :value="item.id" />
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button type="primary" v-auth="'/zm/api/v1/system/documentProject/dataCompressedDownload'" :disabled="!state.parentPid" @click="onExport"
|
||||
><el-icon><ele-Download /></el-icon>下载</el-button
|
||||
>
|
||||
<el-button type="primary" @click="onBook" v-auth="'/zm/api/v1/system/documentData/dataFileQuery'"
|
||||
><el-icon><ele-View /></el-icon>查看全项目文件</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="file_upload check_select">
|
||||
<el-input class="input_left" v-model="filterText" size="small" placeholder="请输入文件名称" />
|
||||
</div>
|
||||
<el-tree
|
||||
ref="treeRef"
|
||||
highlight-current
|
||||
:default-expand-all="state.checked"
|
||||
:filter-node-method="filterFolder"
|
||||
:data="state.treeList"
|
||||
:props="state.Props"
|
||||
node-key="id"
|
||||
accordion
|
||||
:draggable="state.draggableCheck"
|
||||
:expand-on-click-node="false"
|
||||
@node-click="handleNodeClick"
|
||||
:current-node-key="state.selectedNodeId"
|
||||
@node-drop="handleDragEnd"
|
||||
:allow-drop="allowDrop"
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<span class="custom-tree-node">
|
||||
<el-icon color="#f1a81a"><ele-FolderOpened /></el-icon>
|
||||
<span>{{ node.label }}</span>
|
||||
<span style="margin-left: 20px" class="set-tool">
|
||||
<el-button type="primary" v-auth="'/zm/api/v1/system/documentData/onlineImport'" link @click.stop="uploadOnlineFile(node, data)"
|
||||
>在线模板复制</el-button
|
||||
>
|
||||
<el-button type="success" v-auth="'/zm/api/v1/system/documentData/edit'" link @click.stop="onUpdateName(node, data)"
|
||||
>重命名</el-button
|
||||
>
|
||||
<el-button type="danger" v-auth="'/zm/api/v1/system/documentData/delete'" link @click.stop="onRemove(node, data)">删除</el-button>
|
||||
</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-tree>
|
||||
<div class="resize-handle resize-handle-right right"></div>
|
||||
</div>
|
||||
<div class="list_right" id="list_right1">
|
||||
<div>
|
||||
<el-form :model="state.paramsQuery" ref="queryRef" :inline="true" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="6" class="colBlock">
|
||||
<el-form-item label="文件名称" prop="name">
|
||||
<el-input v-model="state.paramsQuery.name" placeholder="请输入文件名称" clearable @keyup.enter.native="getdocumentDataList" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="searchInfo"
|
||||
><el-icon><ele-Search /></el-icon>搜索</el-button
|
||||
>
|
||||
<el-button @click="resetQuery"
|
||||
><el-icon><ele-Refresh /></el-icon>重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="4">
|
||||
<el-button type="primary" v-auth="'/zm/api/v1/system/documentData/add'" :disabled="!parentPid" @click="uploadFile(2)"
|
||||
><el-icon><ele-Plus /></el-icon>导入本地文件</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<!-- <el-col :span="4">
|
||||
<el-button type="primary" @click="onMoveFile"
|
||||
><el-icon><ele-Plus /></el-icon>移动</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table v-loading="state.loading" :data="state.infoList" height="67vh" border>
|
||||
<el-table-column label="序号" align="center" type="index" min-width="50px" />
|
||||
<el-table-column label="文件名称" align="center" prop="name">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.name + scope.row.suffix }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="上传时间" align="center" prop="createdAt"> </el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
v-auth="'/zm/api/v1/system/documentData/get'"
|
||||
v-if="state.acceptType.includes(scope.row.suffix)"
|
||||
link
|
||||
@click="handleView(scope.row)"
|
||||
><el-icon><ele-View /></el-icon>查看</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-auth="'/zm/api/v1/system/documentData/complaintBoxAdd'"
|
||||
v-if="state.acceptType.includes(scope.row.suffix)"
|
||||
link
|
||||
@click="updataView(scope.row)"
|
||||
><el-icon><ele-EditPen /></el-icon>修改文件</el-button
|
||||
>
|
||||
<el-button type="primary" v-auth="'/zm/api/v1/system/documentData/uniFolderDownload'" link @click="onExportView(scope.row)"
|
||||
><el-icon><ele-Download /></el-icon>下载</el-button
|
||||
>
|
||||
<el-button type="success" v-auth="'/zm/api/v1/system/documentData/edit'" link @click="updateName(scope.row)"
|
||||
><el-icon><ele-EditPen /></el-icon>修改名称</el-button
|
||||
>
|
||||
<el-button type="danger" v-auth="'/zm/api/v1/system/documentData/delete'" link @click="handleDelete(scope.row)"
|
||||
><el-icon><ele-DeleteFilled /></el-icon>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
:total="state.total"
|
||||
v-model:page="state.paramsQuery.pageNum"
|
||||
v-model:limit="state.paramsQuery.pageSize"
|
||||
@pagination="getdocumentDataList"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<documentDetail ref="documentDetailRef" v-if="state.showDocumentDetail" @onClose="onClose"></documentDetail>
|
||||
<documentsEdit ref="documentDataEditRef" v-if="state.showdocumentDataEdit" @onClose="onCloseEdit"></documentsEdit>
|
||||
<uploadFileder
|
||||
ref="uploadFilederRef"
|
||||
v-if="state.showUploadFileder"
|
||||
@onCloseFile="state.showUploadFileder = false"
|
||||
@getDocumentListFileType="getdocumentDataListFileType"
|
||||
></uploadFileder>
|
||||
<fileOnline ref="fileOnlineRef" @getfileOnlineType="getfileOnlineType"></fileOnline>
|
||||
<moveFile ref="moveFileRef"></moveFile>
|
||||
<bookFile ref="bookFileRef"></bookFile>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="KnowledgeDocument" lang="ts">
|
||||
import {
|
||||
listKnowledgeDocument,
|
||||
getKnowledgeDocument,
|
||||
delKnowledgeDocument,
|
||||
addKnowledgeDocument,
|
||||
uniFolderDownload,
|
||||
treeStructureData,
|
||||
updateKnowledgeDocument
|
||||
} from '@/api/quality/knowledgeDocument';
|
||||
import { KnowledgeDocumentVO, KnowledgeDocumentQuery, KnowledgeDocumentForm } from '@/api/quality/knowledgeDocument/types';
|
||||
|
||||
type KnowledgeDocumentOption = {
|
||||
id: number;
|
||||
fileName: string;
|
||||
children?: KnowledgeDocumentOption[];
|
||||
};
|
||||
// import documentDetail from '/@/views/OnlineEngineering/comm/documentsDetail/index.vue';
|
||||
// import documentsEdit from '/@/views/OnlineEngineering/comm/documentsEdit/index.vue';
|
||||
// import profileData from '/@/views/OnlineEngineering/profileData/index.vue';
|
||||
// import uploadFileder from '/@/views/OnlineEngineering/comm/uploadFileder/index.vue';
|
||||
// import fileOnline from '/@/views/OnlineEngineering/profileEngineering/fileOnline/index.vue';
|
||||
// import moveFile from '/@/views/OnlineEngineering/profileEngineering/moveFile/index.vue';
|
||||
// import bookFile from '/@/views/OnlineEngineering/comm/bookFile/index.vue';
|
||||
import { useUserStoreHook } from '@/store/modules/user';
|
||||
|
||||
const { proxy } = getCurrentInstance() as any;
|
||||
// 获取用户 store
|
||||
const userStore = useUserStoreHook();
|
||||
// 从 store 中获取项目列表和当前选中的项目
|
||||
const currentProject = computed(() => userStore.selectedProject);
|
||||
const filterText = ref('');
|
||||
const treeRef = ref();
|
||||
const documentDetailRef = ref();
|
||||
const documentDataEditRef = ref();
|
||||
const uploadFilederRef = ref();
|
||||
const fileOnlineRef = ref();
|
||||
const moveFileRef = ref();
|
||||
const bookFileRef = ref();
|
||||
const baseURL: string | undefined | boolean = import.meta.env.VITE_API_URL;
|
||||
|
||||
const state = reactive({
|
||||
treeList: [] as any,
|
||||
arrayList: [] as any,
|
||||
infoMap: new Map(),
|
||||
infoList: [] as any,
|
||||
Props: {
|
||||
children: 'treeStructureDataRes',
|
||||
label: 'name'
|
||||
},
|
||||
total: 0,
|
||||
paramsQuery: {
|
||||
idStr: '',
|
||||
name: '',
|
||||
switch: 1,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
projectId: currentProject.value?.id
|
||||
},
|
||||
loading: false,
|
||||
checked: true,
|
||||
options: [
|
||||
{ id: 1, label: '当前文件夹及以下' },
|
||||
{ id: 2, label: '当前文件夹' }
|
||||
],
|
||||
showDocumentDetail: false,
|
||||
showdocumentDataEdit: false,
|
||||
showUploadFileder: false,
|
||||
parentRow: null,
|
||||
parentPid: null,
|
||||
parentName: '',
|
||||
selectedNodeId: null,
|
||||
projectId: currentProject.value?.id || '',
|
||||
acceptType: ['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx'],
|
||||
draggableCheck: true,
|
||||
activeName: ''
|
||||
});
|
||||
|
||||
watch(filterText, (val: any) => {
|
||||
treeRef.value!.filter(val);
|
||||
});
|
||||
|
||||
// 新建文件夹
|
||||
const addFile = () => {
|
||||
let tip = '在根目录下新建文件夹';
|
||||
if (state.parentPid) {
|
||||
tip = '在“' + state.parentName + '文件夹”下新建文件夹';
|
||||
}
|
||||
ElMessageBox.prompt('请输入文件夹名称', tip, {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputErrorMessage: '请输入文件夹名称',
|
||||
inputValue: ''
|
||||
})
|
||||
.then(({ value }) => {
|
||||
documentDataNewFolder({ fileName: value, pid: state.parentPid, fileType: 3, projectId: state.projectId }).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '添加成功'
|
||||
});
|
||||
gettreeStructureData();
|
||||
} else {
|
||||
ElMessage({
|
||||
type: 'error',
|
||||
message: res.message
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
// 导入文件
|
||||
const uploadFile = (fileType) => {
|
||||
if (fileType == 2 && !state.parentPid) {
|
||||
ElMessage.warning('请选择文件目录!');
|
||||
return;
|
||||
}
|
||||
// 判断上传类型 文件与压缩包区分
|
||||
let acceptType = '.zip'; //压缩文件类型
|
||||
if (fileType == 2) {
|
||||
//文件上传
|
||||
acceptType = '';
|
||||
}
|
||||
state.showUploadFileder = true;
|
||||
nextTick(() => {
|
||||
// 打开弹框
|
||||
uploadFilederRef.value.openDialog(state.parentPid, fileType, acceptType, true);
|
||||
});
|
||||
};
|
||||
const searchInfo = () => {
|
||||
// 搜索
|
||||
getdocumentDataList();
|
||||
};
|
||||
const resetQuery = () => {
|
||||
// 重置
|
||||
state.paramsQuery.name = '';
|
||||
getdocumentDataList();
|
||||
};
|
||||
// 获取树形结构文件夹目录
|
||||
const gettreeStructureData = () => {
|
||||
state.parentPid = null;
|
||||
state.activeName = 'second';
|
||||
const loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '正在加载中……',
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
target: '.tree_left1'
|
||||
});
|
||||
treeStructureData({ projectId: state.projectId }).then((res: any) => {
|
||||
loading.close();
|
||||
if (res.code == 0 && res.data && res.data.list) {
|
||||
state.selectedNodeId = '';
|
||||
state.treeList = res.data.list;
|
||||
state.paramsQuery.idStr = res.data.list[0].idStr;
|
||||
getdocumentDataList();
|
||||
setInfo(res.data.list);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 处理数据
|
||||
const setInfo = (arr) => {
|
||||
arr.forEach((element) => {
|
||||
state.arrayList.push(element);
|
||||
state.infoMap.set(element.idStr, element.id);
|
||||
if (element.treeStructureDataRes && element.treeStructureDataRes.length) {
|
||||
setInfo(element.treeStructureDataRes);
|
||||
}
|
||||
});
|
||||
};
|
||||
// 选择目录文件
|
||||
const handleNodeClick = (row) => {
|
||||
state.parentRow = row;
|
||||
state.parentPid = row.idStr;
|
||||
state.parentName = row.name;
|
||||
state.paramsQuery.idStr = row.idStr;
|
||||
state.paramsQuery.name = '';
|
||||
getdocumentDataList();
|
||||
if (row.id === state.selectedNodeId) {
|
||||
// 如果当前节点已经选中,则取消选中
|
||||
state.selectedNodeId = null;
|
||||
state.parentPid = null; //关闭父级选择的id
|
||||
state.parentRow = null; //获取父级对象
|
||||
state.parentName = ''; //获取父级对应的名称
|
||||
state.paramsQuery.idStr = ''; //
|
||||
} else {
|
||||
// 否则选中当前节点 重新赋值
|
||||
state.selectedNodeId = row.id;
|
||||
}
|
||||
};
|
||||
// 获取文档列表数据
|
||||
const getdocumentDataList = () => {
|
||||
if (!state.paramsQuery.idStr) {
|
||||
return;
|
||||
}
|
||||
state.loading = true;
|
||||
documentDataList(state.paramsQuery).then((res: any) => {
|
||||
state.loading = false;
|
||||
if (res.code == 0) {
|
||||
res.data.list.sort((a, b) => {
|
||||
return a.name.localeCompare(b.name);
|
||||
});
|
||||
state.infoList = res.data.list;
|
||||
state.total = res.data.total;
|
||||
}
|
||||
});
|
||||
};
|
||||
// 查询tree树形结构数据
|
||||
const filterFolder = (value: string, data: any) => {
|
||||
if (!value) return true;
|
||||
return data.name.includes(value);
|
||||
};
|
||||
const handleDelete = (row) => {
|
||||
// 删除文档
|
||||
let msg = '你确定要删除所选文件?';
|
||||
delFile(msg, row, () => {
|
||||
getdocumentDataList();
|
||||
});
|
||||
};
|
||||
const onExportView = (row) => {};
|
||||
const updateName = (row) => {
|
||||
// 修改名称
|
||||
editName(row, '请输入文件名称', 1);
|
||||
};
|
||||
const handleView = (row) => {
|
||||
getProfileDetail(row.id).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
// 查看文档
|
||||
state.showDocumentDetail = true;
|
||||
nextTick(() => {
|
||||
documentDetailRef.value.openDialog(res.data);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
// 关闭在线编辑弹框
|
||||
const onClose = () => {
|
||||
state.showDocumentDetail = false;
|
||||
};
|
||||
// 展开或折叠节点
|
||||
const handleCheckedTreeExpand = (value: any) => {
|
||||
for (let i = 0; i < state.arrayList.length; i++) {
|
||||
treeRef.value.store.nodesMap[state.arrayList[i].id].expanded = value;
|
||||
}
|
||||
};
|
||||
// 关闭修改的在线文档弹框
|
||||
const onCloseEdit = () => {
|
||||
state.showdocumentDataEdit = false;
|
||||
};
|
||||
const updataView = (row) => {
|
||||
// 修改文档
|
||||
state.showdocumentDataEdit = true;
|
||||
nextTick(() => {
|
||||
documentDataEditRef.value.openDialog(row, '/zm/api/v1/system/busConstructionUser/complaintBoxAddTwo');
|
||||
});
|
||||
};
|
||||
const resizeHandleRight = () => {
|
||||
// 右侧鼠标移动大小
|
||||
const resizeHandles = document.getElementsByClassName('resize-handle');
|
||||
Array.from(resizeHandles).forEach((handle) => {
|
||||
handle.addEventListener('mousedown', startResize);
|
||||
});
|
||||
};
|
||||
const startResize = (event) => {
|
||||
event.preventDefault();
|
||||
let dragElement = document.getElementById('tree_left1') as any;
|
||||
let dragElementRight = document.getElementById('list_right1');
|
||||
const currentHandle = event.target;
|
||||
const direction = currentHandle.className.split(' ')[1];
|
||||
const startX = event.clientX;
|
||||
const startY = event.clientY;
|
||||
// 左侧移动的盒子大小
|
||||
const startWidth = dragElement.offsetWidth;
|
||||
const startHeight = dragElement.offsetHeight;
|
||||
const startLeft = dragElement.offsetLeft;
|
||||
const startTop = dragElement.offsetTop;
|
||||
// 右侧移动盒子宽度
|
||||
const rightWidth = dragElementRight.offsetWidth;
|
||||
document.addEventListener('mousemove', resize);
|
||||
document.addEventListener('mouseup', stopResize);
|
||||
function resize(event) {
|
||||
const dx = event.clientX - startX;
|
||||
const dy = event.clientY - startY;
|
||||
let width = startWidth;
|
||||
let height = startHeight;
|
||||
let left = startLeft;
|
||||
let top = startTop;
|
||||
let rightWidth1 = rightWidth as any;
|
||||
if (direction.includes('right')) {
|
||||
width = startWidth + dx + 'px';
|
||||
let w = startWidth + dx + 10 + 'px';
|
||||
rightWidth1 = `calc(100% - ${w})`; //计算右侧盒子的宽度
|
||||
}
|
||||
if (parseInt(width) <= 0 || parseInt(height) <= 0) return;
|
||||
dragElementRight.style.width = rightWidth1;
|
||||
dragElement.style.width = width;
|
||||
dragElement.style.height = height;
|
||||
dragElement.style.left = left;
|
||||
dragElement.style.top = top;
|
||||
}
|
||||
function stopResize() {
|
||||
document.removeEventListener('mousemove', resize);
|
||||
document.removeEventListener('mouseup', stopResize);
|
||||
}
|
||||
};
|
||||
// 删除文件及文件夹
|
||||
const delFile = (msg, data, cb) => {
|
||||
ElMessageBox.confirm(msg, '提示', {
|
||||
confirmButtonText: '确认',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
documentDataDelete([data.id]).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage.success('删除成功');
|
||||
cb();
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
const onRemove = (node, data) => {
|
||||
const parent = node.parent;
|
||||
const children = parent.data.treeStructureDataRes || parent.data;
|
||||
const index = children.findIndex((d) => d.id === data.id);
|
||||
let msg = '你确定要删除所选文件夹?';
|
||||
delFile(msg, data, () => {
|
||||
children.splice(index, 1);
|
||||
if (data.idStr == state.paramsQuery.idStr) {
|
||||
state.infoList = []; //清空文件列表
|
||||
}
|
||||
state.treeList = [...state.treeList]; //刷新当前列表数据
|
||||
});
|
||||
};
|
||||
const editName = (data, title, type) => {
|
||||
ElMessageBox.prompt(title, '温馨提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputErrorMessage: title,
|
||||
inputValue: data.name
|
||||
})
|
||||
.then(({ value }) => {
|
||||
documentDataEdit({ id: data.id, name: value, type, projectId: state.projectId }).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '修改成功'
|
||||
});
|
||||
// 数据重新刷新
|
||||
if (type == 2) {
|
||||
gettreeStructureData();
|
||||
} else {
|
||||
getdocumentDataList();
|
||||
}
|
||||
} else {
|
||||
ElMessage({
|
||||
type: 'error',
|
||||
message: res.message
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
const onUpdateName = (node, data) => {
|
||||
editName(data, '请输入文件夹名称', 2);
|
||||
};
|
||||
const getdocumentDataListFileType = (fileType) => {
|
||||
if (fileType == 2) {
|
||||
getdocumentDataList();
|
||||
} else {
|
||||
gettreeStructureData();
|
||||
}
|
||||
};
|
||||
const getfileOnlineType = (fileType) => {
|
||||
if (fileType == 1) {
|
||||
getdocumentDataList();
|
||||
} else {
|
||||
gettreeStructureData();
|
||||
}
|
||||
};
|
||||
const onExport = () => {
|
||||
uniFolderDownload(state.parentRow.filenPath).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
let fileUrl = res.data.RelativePath;
|
||||
window.open(fileUrl, '_self');
|
||||
}
|
||||
});
|
||||
};
|
||||
// 在线模板文件导入
|
||||
const uploadOnlineFile = (node, data) => {
|
||||
state.paramsQuery.idStr = data.idStr;
|
||||
fileOnlineRef.value.openDialog(data.id);
|
||||
};
|
||||
const onMoveFile = () => {
|
||||
// 移动文件
|
||||
// moveFileRef.value.openDialog();
|
||||
};
|
||||
// 拖拽移动
|
||||
const handleDragEnd = (draggingNode, dropNode, dropType, ev) => {
|
||||
// TemplateId 被移动 DataId位置
|
||||
let obj = { type: draggingNode.data.type, TemplateId: draggingNode.data.id, projectId: state.projectId, DataId: '' };
|
||||
let DataId = '';
|
||||
if (dropType == 'after' || dropType == 'before') {
|
||||
// 获取父级id
|
||||
// 通过pid找父级id
|
||||
let pid = dropNode.data.pid; //子级pid
|
||||
if (state.infoMap.has(pid)) {
|
||||
//
|
||||
DataId = state.infoMap.get(pid);
|
||||
}
|
||||
obj.DataId = DataId;
|
||||
} else {
|
||||
obj.DataId = dropNode.data.id;
|
||||
}
|
||||
if (!obj.DataId) {
|
||||
return false;
|
||||
}
|
||||
const loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '正在加载中……',
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
target: '.tree_left1'
|
||||
});
|
||||
onlineMobile(obj).then((res: any) => {
|
||||
loading.close();
|
||||
if (res.code == 0) {
|
||||
ElMessage.success('移动成功');
|
||||
// 重新获取文件接口
|
||||
gettreeStructureData();
|
||||
} else {
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
const allowDrop = (draggingNode, dropNode, type) => {
|
||||
// 不可移动
|
||||
if (dropNode.data.pid == 0 && type != 'inner') {
|
||||
//不可移动到最外层
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
// 查看所有资料
|
||||
const onBook = () => {
|
||||
bookFileRef.value.openDialog();
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
resizeHandleRight();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.profile_engin {
|
||||
height: 80vh;
|
||||
.set-tool {
|
||||
display: none;
|
||||
}
|
||||
.el-tree-node__content:hover,
|
||||
.el-tree-node__content:active {
|
||||
.set-tool {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
|
||||
background-color: #354e67 !important;
|
||||
color: #fff;
|
||||
}
|
||||
.box_info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.pagination-container {
|
||||
padding: 10px 0 !important;
|
||||
}
|
||||
> div {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
.tree_left1 {
|
||||
width: 30%;
|
||||
background-color: #fff;
|
||||
border: 1px solid #dddddd;
|
||||
border-radius: 6px;
|
||||
padding: 6px 0px;
|
||||
position: relative;
|
||||
min-width: 26%;
|
||||
border-right: 6px solid;
|
||||
border-right-color: rgba(204, 230, 255, 0);
|
||||
.resize-handle-right {
|
||||
top: 0;
|
||||
width: 6px;
|
||||
height: 100%;
|
||||
right: -10px;
|
||||
cursor: ew-resize;
|
||||
position: absolute;
|
||||
z-index: 999;
|
||||
}
|
||||
.check_select {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
// justify-content: space-between;
|
||||
padding: 4px;
|
||||
border-bottom: 1px solid #f1f1f1;
|
||||
.box_btn {
|
||||
width: 360px;
|
||||
margin: 0 10px 0 20px;
|
||||
position: relative;
|
||||
> span {
|
||||
padding: 4px 10px;
|
||||
background: #67c23a;
|
||||
color: #fff;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.btn {
|
||||
position: absolute;
|
||||
left: 20%;
|
||||
display: none;
|
||||
top: -2px;
|
||||
width: 220px;
|
||||
.el-button {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
.box_btn:hover,
|
||||
.box_btn:active {
|
||||
cursor: pointer;
|
||||
.btn {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
.file_upload {
|
||||
margin: 2px 0;
|
||||
}
|
||||
.input_left {
|
||||
padding: 6px;
|
||||
box-sizing: border-box;
|
||||
// border-bottom: 1px solid #cbcbcb;
|
||||
}
|
||||
}
|
||||
.list_right {
|
||||
width: 69.5%;
|
||||
background: white;
|
||||
border: 1px solid #ededed;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.el-tree {
|
||||
height: calc(80vh - 160px);
|
||||
width: 100%;
|
||||
overflow: auto !important;
|
||||
}
|
||||
// .el-tree-node__children {
|
||||
// overflow: visible !important;
|
||||
// }
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user