Commit 33a312be authored by fangshupeng's avatar fangshupeng

更新进度

parent 34c9189c
...@@ -45,8 +45,24 @@ export default { ...@@ -45,8 +45,24 @@ export default {
deleteFolder (params) { deleteFolder (params) {
return http.get('/api/Education/SchoolResource/PersonalFolderInfo/Delete', { params: params }) return http.get('/api/Education/SchoolResource/PersonalFolderInfo/Delete', { params: params })
}, },
// 删除文件
deleteFile (params) {
return http.get('/api/Education/SchoolResource/FileInfo/DeleteFile', { params: params })
},
// 修改文件名称
updateFileName (params) {
return http.post('/api/Education/SchoolResource/FileInfo/UpdateFileName', { params: params })
},
// 获取学校文件夹List // 获取学校文件夹List
GetSchoolFolderList () { GetSchoolFolderList () {
return http.post('/api/Education/SchoolResource/SchoolFolderInfo/GetSchoolFolderList') return http.post('/api/Education/SchoolResource/SchoolFolderInfo/GetSchoolFolderList')
},
// 新增编辑学校文件夹
createOrUpdateSchool (params) {
return http.post('/api/Education/SchoolResource/SchoolFolderInfo/CreateOrUpdate', { params: params })
},
// 获取校内资源文件夹List
getSchoolResourceFolderList () {
return http.post('/api/Education/SchoolResource/GetFolderList')
} }
} }
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
v-for="(breadcrumbItem, index) of breadcrumb" v-for="(breadcrumbItem, index) of breadcrumb"
:key="index" :key="index"
@click.native="backCrumb(index)"> @click.native="backCrumb(index)">
{{ breadcrumbItem.name }} {{ breadcrumbItem.label }}
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
<div class="smallCtn"> <div class="smallCtn">
<small-folder <small-folder
:file-list="currentFileList" :file-list="currentFileList"
:currentIsFiLe="currentIsFiLe"
:manage-mode="true" :manage-mode="true"
:mode="'school'"
@showMenu="showMenu" @showMenu="showMenu"
@tableIntoFile="intoFolder"> @tableIntoFile="intoFolder">
</small-folder> </small-folder>
...@@ -27,21 +29,15 @@ ...@@ -27,21 +29,15 @@
<!-- 右键菜单栏 --> <!-- 右键菜单栏 -->
<manage-ctx-menu <manage-ctx-menu
ref="contextMenu"
:menuVisible="menuVisible" :menuVisible="menuVisible"
:rightMenuData="rightMenuData" :rightMenuData="rightMenuData"
:rightMenuFolder="rightMenuFolder"
:coordinate="coordinate" :coordinate="coordinate"
:menuMode="menuMode" :menuMode="menuMode"
@menuOpenFile="intoFolder"> @menuOpenFile="intoFolder"
@createOrUpdateFolder="createOrUpdateFolder">
</manage-ctx-menu> </manage-ctx-menu>
<button v-show="false" ref="btn" @click="currentIsFiLe = true">设置当前页面为文件模式</button>
<!-- 侧滑块查看普通文档 -->
<el-drawer
title="查看"
:visible.sync="documentDrawer"
:size="'60%'">
<span>文档内容</span>
</el-drawer>
</div> </div>
</template> </template>
...@@ -57,129 +53,18 @@ export default { ...@@ -57,129 +53,18 @@ export default {
return { return {
menuVisible: false, // 右键菜单栏 menuVisible: false, // 右键菜单栏
menuMode: '', // 菜单根据模式显示对于内容 menuMode: '', // 菜单根据模式显示对于内容
documentDrawer: false, // 查看文档抽屉
rightMenuData: {}, // 右键选中文件夹或文件数据 rightMenuData: {}, // 右键选中文件夹或文件数据
rightMenuFolder: [], // 右键空白储存当前文件夹数据 currentIsFiLe: false, // 当前层次是否为文档列表
coordinate: { // 菜单栏坐标 coordinate: { // 菜单栏坐标
menuX: '0px', menuX: '0px',
menuY: '0px' menuY: '0px'
}, },
breadcrumb: [ // 面包屑 breadcrumb: [],
{
name: '首页',
isFolder: true,
folderName: 'firstLevelData'
}
],
currentFileList: [], currentFileList: [],
fileListData: { paginationQuery: { // 分页信息
firstLevelData: [ amount: 0,
{ pageSize: 50,
id: 1201, pageIndex: 1
name: '教案文件夹',
typeName: '任务文件夹',
type: 'folder',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
documentCount: '1000',
private: '不公开',
isFocus: false,
isFolder: true,
folderData: 'secondLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
},
{
id: 1202,
name: '教案文件夹',
typeName: '常规文件夹',
type: 'folder',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
documentCount: '220',
private: '对所有教师公开',
isFocus: false,
isFolder: true,
folderData: 'secondLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
},
{
id: 1203,
name: '教案文件夹',
typeName: '常规文件夹',
type: 'folder',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
documentCount: '80',
private: '对所有教师公开',
isFocus: false,
isFolder: true,
folderData: 'secondLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
}
],
secondLevelData: [
{
id: 1001,
name: '第二级文件夹',
typeName: '常规文件夹',
type: 'folder',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
documentCount: '80',
private: '对所有教师公开',
isFocus: false,
isFolder: true,
folderData: 'thirdLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
},
{
id: 1002,
name: '第二级文件夹',
typeName: '教案文件夹',
type: 'folder',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
documentCount: '80',
private: '对所有教师公开',
isFocus: false,
isFolder: true,
folderData: 'thirdLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
}
],
thirdLevelData: [
{
id: 1101,
name: '第三级文件.txt',
typeName: '文件',
type: 'folder',
icon: 'el-icon-document',
descript: '我上传了10个文档',
documentCount: '80',
private: '对所有教师公开',
isFocus: false,
isFolder: false,
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
}
]
} }
} }
}, },
...@@ -190,51 +75,131 @@ export default { ...@@ -190,51 +75,131 @@ export default {
getFolderList () { getFolderList () {
this.$api.schoolBasedResourcesApi.GetSchoolFolderList().then(res => { this.$api.schoolBasedResourcesApi.GetSchoolFolderList().then(res => {
this.$handleResponse(res).then(data => { this.$handleResponse(res).then(data => {
console.log(data) this.initFromBreadcrumb(data)
// this.folderListData = data })
// this.currentFileList = data })
// this.breadcrumb = [{ label: '首页', listData: data, parent: { b_id: '0' }, currentIsFiLe: false }] },
// this.initFromBreadcrumb(data) initFromBreadcrumb (data) {
/* 通过面包屑初始化数据 */
this.currentIsFile = false
let breadcrumb = this.breadcrumb
if (breadcrumb.length <= 1) {
this.breadcrumb = [{ label: '首页', listData: data, parent: { b_id: '0', parent_id: '0' }, currentIsFiLe: false }]
this.currentFileList = data
} else {
let newBreadcrumb = [{ label: '首页', listData: data, parent: { b_id: '0', parent_id: '0' }, currentIsFiLe: false }]
let currentList = data
for (let i = 1; i < breadcrumb.length; i++) {
let hasThisFile = false
for (let j = 0; j < currentList.length; j++) {
if (currentList[j].b_id === breadcrumb[i].parent.b_id) {
let isFile = (!currentList[j].children || currentList[j].children.length === 0) && currentList[j].file_count > 0
this.currentIsFile = isFile
this.addCrumb(newBreadcrumb, currentList[j], isFile)
if (isFile) {
this.getFileList(currentList[j])
} else {
currentList = currentList[j].children
}
hasThisFile = true
break
}
}
if (hasThisFile === false) {
break
}
}
this.breadcrumb = newBreadcrumb
if (!this.currentIsFile) {
this.currentFileList = currentList
}
}
},
getFileList (file) {
/* 根据文件夹ID获取对应文件列表 */
this.$refs.btn.click()
const folderId = file.b_id
const selType = file.folder_type
let data = {
data: { folder_id: folderId, sel_type: selType },
PageSize: this.paginationQuery.pageSize,
PageNumber: this.paginationQuery.pageIndex
}
this.$api.schoolBasedResourcesApi.GetFileList(data).then(res => {
this.$handleResponse(res).then(data => {
this.currentFileList = data.Data
this.paginationQuery.amount = data.TotalRecords
}) })
}) })
}, },
backCrumb (index) { backCrumb (index) {
this.isFileMode = false /* 点击面包屑返回前几级 */
let breadcrumb = this.breadcrumb let breadcrumb = this.breadcrumb
let item = breadcrumb[index]
this.currentIsFiLe = false
if (index < breadcrumb.length - 1) { if (index < breadcrumb.length - 1) {
let folderName = breadcrumb[index].folderName this.currentFileList = item.listData
this.currentFileList = this.fileListData[folderName]
this.breadcrumb = breadcrumb.slice(0, index + 1) this.breadcrumb = breadcrumb.slice(0, index + 1)
} }
}, },
addCrumb (breadcrumb, file, currentIsFiLe) {
/* 添加面包屑 */
breadcrumb.push({ label: file.folder_name, listData: file.children, parent: file, currentIsFiLe })
},
intoFolder (file) { intoFolder (file) {
/* 进入下一级文件夹 */ /* 进入下一级文件夹 */
if (file.isFolder) { /* 进入下一级文件夹 */
// 双击文件夹 if ((file.children && file.children.length > 0 && this.currentIsFiLe === false) || (file.file_count === 0 && this.breadcrumb.length < 3)) {
let breadcrumbData = { // 进入文件夹
name: file.name, this.currentIsFiLe = false
isFolder: file.isFolder, this.addCrumb(this.breadcrumb, file, this.currentIsFiLe)
folderName: file.folderData this.currentFileList = file.children
}
this.breadcrumb.push(breadcrumbData)
this.currentFileList = this.fileListData[file.folderData]
} else { } else {
// 双击文件 // 获取当前文件夹的文档列表
this.documentDrawer = true if (this.currentIsFiLe === false) {
this.currentIsFiLe = true
this.addCrumb(this.breadcrumb, file, this.currentIsFiLe)
this.getFileList(file)
} else {
let url = 'https://onlinepreview.vschool100.cn/onlinePreview?url=' + encodeURIComponent(file.file_path)
this.documentUrl = url
this.documentDrawer = true
}
} }
}, },
showMenu (MouseEvent, type, row) { createOrUpdateFolder (params) {
/* 新增编辑学校文件夹 */
this.$api.schoolBasedResourcesApi.createOrUpdateSchool(params).then(res => {
if (res.data.Status === true) {
this.$message({
message: '操作成功',
type: 'success'
})
this.$refs.contextMenu.userSelector.visible = false
this.getFolderList()
} else {
this.$message({
message: res.data.ResponseError.LongMessage,
type: 'error'
})
}
})
},
showMenu (MouseEvent, currentIsFiLe, row) {
/* 右键文件夹或文件时触发 */ /* 右键文件夹或文件时触发 */
if (type) { if (row) {
// 右键文件夹或者文件 // 右键文件夹或者文件
this.menuMode = type if (currentIsFiLe) {
this.menuMode = ''
} else {
this.menuMode = 'personal'
}
this.rightMenuData = row this.rightMenuData = row
this.rightMenuFolder = [] // this.rightMenuFolder = []
} else { } else {
// 右键空白处 // 右键空白处
this.menuMode = 'blank' this.menuMode = 'blank'
this.rightMenuFolder = this.currentFileList this.rightMenuData = this.breadcrumb[this.breadcrumb.length - 1].parent
this.rightMenuData = {}
} }
this.menuVisible = false this.menuVisible = false
this.menuVisible = true this.menuVisible = true
...@@ -255,7 +220,6 @@ export default { ...@@ -255,7 +220,6 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.container { .container {
.headerNav { .headerNav {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
......
...@@ -6,15 +6,15 @@ ...@@ -6,15 +6,15 @@
<li class="menu_item padding_35" v-show="menuMode !== 'blank'" @click="clickFile">打开</li> <li class="menu_item padding_35" v-show="menuMode !== 'blank'" @click="clickFile">打开</li>
<li class="menu_item padding_35" v-show="menuMode !== 'blank'">编辑</li> <li class="menu_item padding_35" v-show="menuMode !== 'blank'">编辑</li>
<li class="menu_item padding_35" v-show="menuMode !== 'blank'" @click="deleteVisible = true">删除</li> <li class="menu_item padding_35" v-show="menuMode !== 'blank'" @click="deleteVisible = true">删除</li>
<li class="menu_item" style="text-align:center" v-show="menuMode === 'blank' && rightMenuFolder[0].isFolder" @click="newFolderVisible = true">新建文件夹</li> <li class="menu_item" style="text-align:center" v-show="menuMode === 'blank' && !currentIsFiLe" @click="newFolderVisible = true">新建文件夹</li>
</ul> </ul>
<ul class="menu" style='width:230px' v-show="menuMode === 'blank' && !rightMenuFolder[0].isFolder"> <!-- <ul class="menu" style='width:230px' v-show="menuMode === 'blank' && currentIsFiLe">
<li class="menu_item" style="text-align:center">合并所有文档到新文件夹</li> <li class="menu_item" style="text-align:center">合并所有文档到新文件夹</li>
</ul> </ul> -->
</div> </div>
<!-- 新建文件夹窗口 --> <!-- 新建文件夹窗口 -->
<el-dialog title="新建个人文件夹" class="newfile-dialog" :visible.sync="newFolderVisible" width="700px" :close-on-click-modal="false"> <el-dialog title="新建个人文件夹" class="newfile-dialog" :visible.sync="newFolderVisible" width="750px" :close-on-click-modal="false">
<el-form :model="ruleForm" :rules="ruleForm.folderType === 'usual'?usualRules:taskRules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form :model="ruleForm" :rules="ruleForm.folderType === 'usual'?usualRules:taskRules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="文件夹名称" prop="name"> <el-form-item label="文件夹名称" prop="name">
<el-input placeholder="请输入..." v-model="ruleForm.name"></el-input> <el-input placeholder="请输入..." v-model="ruleForm.name"></el-input>
...@@ -37,22 +37,23 @@ ...@@ -37,22 +37,23 @@
<el-radio label="private">不公开</el-radio> <el-radio label="private">不公开</el-radio>
<el-radio label="publicToAll">对所有教师公开</el-radio> <el-radio label="publicToAll">对所有教师公开</el-radio>
<el-radio label="publickToPart">对部分教师公开</el-radio> <el-radio label="publickToPart">对部分教师公开</el-radio>
<span style="display:inline-block" class="add-teacher-ctn" v-if="ruleForm.private === 'publickToPart'">
<el-button class="person-btn" icon="el-icon-plus" @click="teacherSelectorOptions.isBlock = true">添加教师</el-button>
</span>
</el-radio-group> </el-radio-group>
<span style="display:inline-block;margin:0 10px;" class="add-teacher-ctn" v-if="ruleForm.private === 'publickToPart'">
<el-button class="person-btn" icon="el-icon-plus" @click="handleSelect('publicTeacher')">添加教师</el-button>
<span class="person-count">已选择 <span style="color:blue">{{ ruleForm.publicTeacher.length }}</span></span>
</span>
</el-form-item> </el-form-item>
<el-form-item class="limit-ctn" v-if="ruleForm.folderType === 'task'" label="每人上传数" prop="limitCount"> <el-form-item class="limit-ctn" v-if="ruleForm.folderType === 'task'" label="每人上传数" prop="limitCount">
<el-radio-group v-model="ruleForm.limitCount"> <el-radio-group v-model="ruleForm.limitCount">
<el-radio label="limit">限制数量</el-radio> <el-radio label="limit">限制数量</el-radio>
<span style="display:inline-block;width:100px" v-if="ruleForm.limitCount === 'limit'"><el-input v-model="input" placeholder="请输入..."></el-input></span> <span style="display:inline-block;width:100px" v-if="ruleForm.limitCount === 'limit'"><el-input type="number" v-model="ruleForm.limitCountNumber" placeholder="请输入..."></el-input></span>
<el-radio label="noLimit">不限制数量</el-radio> <el-radio label="noLimit">不限制数量</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="管理者" prop="manager"> <el-form-item label="管理者" prop="manager">
<div class="header-ctn"> <div class="header-ctn">
<el-button class="person-btn" icon="el-icon-plus" @click="teacherSelectorOptions.isBlock = true">添加教师</el-button> <el-button class="person-btn" icon="el-icon-plus" @click="handleSelect('manager')">添加教师</el-button>
<span class="person-count">已选择 <span style="color:blue">2</span></span> <span class="person-count">已选择 <span style="color:blue">{{ ruleForm.manager.length }}</span></span>
</div> </div>
<div class="tag-ctn"> <div class="tag-ctn">
<el-tag <el-tag
...@@ -62,17 +63,18 @@ ...@@ -62,17 +63,18 @@
type="info" type="info"
color="#F2F2F2" color="#F2F2F2"
size="medium" size="medium"
@close="deleteManagerUser(index)"
closable> closable>
{{tag.name}} {{tag.realname}}
</el-tag> </el-tag>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item v-if="ruleForm.folderType === 'task'" label="教师" prop="uploadTeacher"> <el-form-item v-if="ruleForm.folderType === 'task'" label="上传教师" prop="uploadTeacher">
<div class="header-ctn"> <div class="header-ctn">
<el-button class="person-btn" icon="el-icon-plus" @click="teacherSelectorOptions.isBlock = true">添加教师</el-button> <el-button class="person-btn" icon="el-icon-plus" @click="handleSelect('uploadTeacher')">添加教师</el-button>
<span class="person-count">已选择 <span style="color:blue">2</span></span> <span class="person-count">已选择 <span style="color:blue">{{ ruleForm.uploadTeacher.length }}</span></span>
</div> </div>
<div class="tag-ctn"> <!-- <div class="tag-ctn">
<el-tag <el-tag
v-for="(tag, index) in ruleForm.uploadTeacher" v-for="(tag, index) in ruleForm.uploadTeacher"
:key="index" :key="index"
...@@ -83,16 +85,12 @@ ...@@ -83,16 +85,12 @@
closable> closable>
{{tag.name}} {{tag.name}}
</el-tag> </el-tag>
</div> </div> -->
</el-form-item> </el-form-item>
<el-form-item class="submit-ctn"> <el-form-item class="submit-ctn">
<el-button size="medium" type="primary" @click="newFolderVisible = false">保存</el-button> <el-button size="medium" type="primary" @click="hanlderCreateOrUpdate('ruleForm')">保存</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<teacher-selector
:teacherSelectorOptions="teacherSelectorOptions"
@closeTeacherSelector="teacherSelectorOptions.isBlock = false">
</teacher-selector>
</el-dialog> </el-dialog>
<!-- 删除文件窗口 --> <!-- 删除文件窗口 -->
...@@ -103,6 +101,12 @@ ...@@ -103,6 +101,12 @@
<el-button type="primary" @click="deleteVisible = false">确 定</el-button> <el-button type="primary" @click="deleteVisible = false">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<userselector
:mode="userSelector.mode"
:list="userSelector.list"
:visible.sync="userSelector.visible"
@submit="selectUser"
/>
</div> </div>
</template> </template>
...@@ -115,6 +119,10 @@ export default { ...@@ -115,6 +119,10 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
currentIsFiLe: { // 当前层次是否为文档列表
type: Boolean,
default: false
},
rightMenuData: { // 右键文件的数据 rightMenuData: { // 右键文件的数据
type: Object, type: Object,
default: () => { default: () => {
...@@ -139,14 +147,16 @@ export default { ...@@ -139,14 +147,16 @@ export default {
} }
}, },
components: { components: {
TeacherSelector: () => import('@/common/TeacherSelector') userselector: () => import('@/common/userSelector/UserSelector')
}, },
data () { data () {
return { return {
teacherSelectorOptions: { userSelector: {
isBlock: false, mode: 'teacherCheckbox',
isShow: true list: [],
visible: false
}, },
seletorListName: '', // 当前需要选人的用户列表名
newFolderVisible: false, newFolderVisible: false,
newFolderName: '', newFolderName: '',
deleteVisible: false, deleteVisible: false,
...@@ -160,15 +170,11 @@ export default { ...@@ -160,15 +170,11 @@ export default {
folderType: 'usual', folderType: 'usual',
private: 'private', private: 'private',
limitCount: 'limit', limitCount: 'limit',
limitCountNumber: 0,
uploadCount: '', uploadCount: '',
manager: [ publicTeacher: [],
{ name: '标某某' }, manager: [],
{ name: '某某某' } uploadTeacher: []
],
uploadTeacher: [
{ name: '标某某' },
{ name: '某某某' }
]
}, },
usualRules: { usualRules: {
name: [ name: [
...@@ -199,6 +205,69 @@ export default { ...@@ -199,6 +205,69 @@ export default {
clickFile () { clickFile () {
let file = this.rightMenuData let file = this.rightMenuData
this.$emit('menuOpenFile', file) this.$emit('menuOpenFile', file)
},
handleSelect (listName) {
/* 根据选择教师按钮类型来定义接收list的值 */
this.seletorListName = listName
this.userSelector.list = this.ruleForm[listName]
this.userSelector.visible = true
},
deleteManagerUser (index) {
this.ruleForm.manager.splice(index, 1)
},
selectUser (list) {
this.ruleForm[this.seletorListName] = list
},
hanlderCreateOrUpdate (formName) {
/* 新建或修改学校文件夹 */
this.$refs[formName].validate((valid) => {
if (valid) {
let data
let form = this.ruleForm
let folderType = form.folderType === 'usual' ? 1 : 2
let isPublic = form.private === 'private' ? 1 : (form.private === 'publicToAll' ? 2 : 3)
let publicTeacher = this.userListToString(form.publicTeacher)
let manager = this.userListToString(form.manager)
let uploadTeacher = this.userListToString(form.uploadTeacher)
let uploadCount = folderType === 1 ? 0 : (form.limitCount === 'limit' ? 1 : 2)
data = {
b_id: undefined,
parent_id: this.rightMenuData.b_id,
step_number: this.rightMenuData.step_number + 1 || 1,
folder_name: form.name,
folder_type: folderType,
is_public: isPublic,
public_user_ids: isPublic === 3 ? publicTeacher.userIds : undefined,
public_user_names: isPublic === 3 ? publicTeacher.userNames : undefined,
manage_user_ids: manager.userIds,
manage_user_names: manager.userNames,
upload_count: uploadCount,
limit_count: uploadCount === 1 ? parseInt(form.limitCountNumber) : undefined,
teacher_user_ids: folderType === 2 ? uploadTeacher.userIds : undefined,
teacher_user_names: folderType === 2 ? uploadTeacher.userNames : undefined
}
this.$emit('createOrUpdateFolder', data)
} else {
console.log('error submit!!')
return false
}
})
},
userListToString (userList) {
let data = {
userIds: '',
userNames: ''
}
for (let i = 0; i < userList.length; i++) {
if (i === 0) {
data.userIds += userList[i].id
data.userNames += userList[i].realname
} else {
data.userIds += ',' + userList[i].id
data.userNames += ',' + userList[i].realname
}
}
return data
} }
} }
} }
...@@ -268,7 +337,7 @@ export default { ...@@ -268,7 +337,7 @@ export default {
/deep/ .submit-ctn { /deep/ .submit-ctn {
.el-button { .el-button {
margin-left: 145px; margin-left: 220px;
margin-top: 50px; margin-top: 50px;
} }
} }
......
...@@ -6,12 +6,20 @@ ...@@ -6,12 +6,20 @@
<el-breadcrumb-item <el-breadcrumb-item
v-for="(breadcrumbItem, index) of breadcrumb" v-for="(breadcrumbItem, index) of breadcrumb"
:key="index" :key="index"
@click.native="backCrumb(breadcrumbItem, index)"> @click.native="backCrumb(index)">
{{ breadcrumbItem.label }} {{ breadcrumbItem.label }}
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="rightNav"> <div class="rightNav">
<el-select style="margin:2px 15px 0 0" class="timer-select" v-show="currentIsFiLe" v-model="timeSelect" placeholder="请选择">
<el-option
v-for="item in termOptions"
:key="item.ID"
:label="item.TeamName"
:value="item.ID">
</el-option>
</el-select>
<search></search> <search></search>
<div class="feature" v-show="!currentIsFiLe"> <div class="feature" v-show="!currentIsFiLe">
<div :class="{'icon-sel': bigMode}" class="icon-ctn" @click="bigMode = true"> <div :class="{'icon-sel': bigMode}" class="icon-ctn" @click="bigMode = true">
...@@ -27,10 +35,13 @@ ...@@ -27,10 +35,13 @@
<component :is="(bigMode && currentIsFiLe === false)?'big-folder':'small-folder'" <component :is="(bigMode && currentIsFiLe === false)?'big-folder':'small-folder'"
:file-list="currentFileList" :file-list="currentFileList"
:currentIsFiLe="currentIsFiLe" :currentIsFiLe="currentIsFiLe"
:pagination-query="paginationQuery"
@showMenu="showMenu" @showMenu="showMenu"
@intoFolder="intoFolder" @intoFolder="intoFolder"
@dragUploadFile="dragUploadFile" @dragUploadFile="dragUploadFile"
@tableIntoFile="intoFolder"> @tableIntoFile="intoFolder"
@getSizeChange="handleSizeChange"
@getCurrentPage="handleCurrentChange">
</component> </component>
</div> </div>
...@@ -67,7 +78,7 @@ ...@@ -67,7 +78,7 @@
</el-drawer> </el-drawer>
<input v-show="false" type="file" ref="fileUpload" @change="uploadfileChange"/> <input v-show="false" type="file" ref="fileUpload" @change="uploadfileChange"/>
<!-- <button @click="getFolderList">重排</button> --> <button v-show="false" ref="btn" @click="currentIsFiLe = true">设置当前页面为文件模式</button>
</div> </div>
</template> </template>
...@@ -89,6 +100,11 @@ export default { ...@@ -89,6 +100,11 @@ export default {
currentComponent: 'BigFolder', // BigFolder 大图标模式,SmallFolder 小图标模式 currentComponent: 'BigFolder', // BigFolder 大图标模式,SmallFolder 小图标模式
bigMode: true, // 文件夹大小图标模式 bigMode: true, // 文件夹大小图标模式
currentIsFiLe: false, // 当前层次是否为文档列表 currentIsFiLe: false, // 当前层次是否为文档列表
timeSelect: 'allItem', // 学期选择框数据
termOptions: [{ // 学期选择options
value: 'allItem',
label: '全部学期'
}],
menuVisible: false, // 右键菜单栏 menuVisible: false, // 右键菜单栏
menuMode: '', // 菜单根据模式显示对于内容 menuMode: '', // 菜单根据模式显示对于内容
uploadVisible: false, // 上传菜单栏 uploadVisible: false, // 上传菜单栏
...@@ -110,11 +126,17 @@ export default { ...@@ -110,11 +126,17 @@ export default {
file: null, file: null,
folderId: '', folderId: '',
isdrag: false // 当时是否是拖拽获得文件信息 isdrag: false // 当时是否是拖拽获得文件信息
},
paginationQuery: { // 分页信息
amount: 0,
pageSize: 50,
pageIndex: 1
} }
} }
}, },
mounted () { mounted () {
this.getFolderList() this.getFolderList()
this.getTermList()
}, },
created () { created () {
}, },
...@@ -122,13 +144,19 @@ export default { ...@@ -122,13 +144,19 @@ export default {
getFolderList () { getFolderList () {
this.$api.schoolBasedResourcesApi.GetFolderList().then(res => { this.$api.schoolBasedResourcesApi.GetFolderList().then(res => {
this.$handleResponse(res).then(data => { this.$handleResponse(res).then(data => {
// this.folderListData = data
// this.currentFileList = data
// this.breadcrumb = [{ label: '首页', listData: data, parent: { b_id: '0' }, currentIsFiLe: false }]
this.initFromBreadcrumb(data) this.initFromBreadcrumb(data)
}) })
}) })
}, },
getTermList () {
/* 获取学期列表 */
this.$api.commonApi.getTermInfoList().then(res => {
this.$handleResponse(res).then(data => {
this.termOptions = data
this.timeSelect = data[0].ID
})
})
},
initFromBreadcrumb (data) { initFromBreadcrumb (data) {
/* 通过面包屑初始化数据 */ /* 通过面包屑初始化数据 */
this.currentIsFile = false this.currentIsFile = false
...@@ -143,9 +171,10 @@ export default { ...@@ -143,9 +171,10 @@ export default {
let hasThisFile = false let hasThisFile = false
for (let j = 0; j < currentList.length; j++) { for (let j = 0; j < currentList.length; j++) {
if (currentList[j].b_id === breadcrumb[i].parent.b_id) { if (currentList[j].b_id === breadcrumb[i].parent.b_id) {
this.currentIsFile = breadcrumb[i].currentIsFiLe let isFile = (!currentList[j].children || currentList[j].children.length === 0) && currentList[j].file_count > 0
this.addCrumb(newBreadcrumb, currentList[j], breadcrumb[i].currentIsFiLe) this.currentIsFile = isFile
if (breadcrumb[i].currentIsFiLe === true) { this.addCrumb(newBreadcrumb, currentList[j], isFile)
if (isFile) {
this.getFileList(currentList[j]) this.getFileList(currentList[j])
} else { } else {
currentList = currentList[j].children currentList = currentList[j].children
...@@ -165,22 +194,25 @@ export default { ...@@ -165,22 +194,25 @@ export default {
} }
}, },
getFileList (file) { getFileList (file) {
this.$refs.btn.click()
const folderId = file.b_id const folderId = file.b_id
const selType = file.folder_type const selType = file.folder_type
let data = { let data = {
data: { folder_id: folderId, sel_type: selType }, data: { folder_id: folderId, sel_type: selType },
PageSize: 50, PageSize: this.paginationQuery.pageSize,
PageNumber: 1 PageNumber: this.paginationQuery.pageIndex
} }
this.$api.schoolBasedResourcesApi.GetFileList(data).then(res => { this.$api.schoolBasedResourcesApi.GetFileList(data).then(res => {
this.$handleResponse(res).then(data => { this.$handleResponse(res).then(data => {
this.currentFileList = data.Data this.currentFileList = data.Data
this.paginationQuery.amount = data.TotalRecords
}) })
}) })
}, },
backCrumb (item, index) { backCrumb (index) {
/* 点击面包屑返回前几级 */ /* 点击面包屑返回前几级 */
let breadcrumb = this.breadcrumb let breadcrumb = this.breadcrumb
let item = breadcrumb[index]
this.currentIsFiLe = false this.currentIsFiLe = false
if (index < breadcrumb.length - 1) { if (index < breadcrumb.length - 1) {
this.currentFileList = item.listData this.currentFileList = item.listData
...@@ -193,7 +225,6 @@ export default { ...@@ -193,7 +225,6 @@ export default {
}, },
intoFolder (file) { intoFolder (file) {
/* 进入下一级文件夹 */ /* 进入下一级文件夹 */
console.log(this.breadcrumb.length)
if ((file.children && file.children.length > 0 && this.currentIsFiLe === false) || (file.file_count === 0 && this.breadcrumb.length < 3)) { if ((file.children && file.children.length > 0 && this.currentIsFiLe === false) || (file.file_count === 0 && this.breadcrumb.length < 3)) {
// 进入文件夹 // 进入文件夹
this.currentIsFiLe = false this.currentIsFiLe = false
...@@ -206,7 +237,6 @@ export default { ...@@ -206,7 +237,6 @@ export default {
this.addCrumb(this.breadcrumb, file, this.currentIsFiLe) this.addCrumb(this.breadcrumb, file, this.currentIsFiLe)
this.getFileList(file) this.getFileList(file)
} else { } else {
console.log(1111111, file)
let url = 'https://onlinepreview.vschool100.cn/onlinePreview?url=' + encodeURIComponent(file.file_path) let url = 'https://onlinepreview.vschool100.cn/onlinePreview?url=' + encodeURIComponent(file.file_path)
this.documentUrl = url this.documentUrl = url
this.documentDrawer = true this.documentDrawer = true
...@@ -286,6 +316,11 @@ export default { ...@@ -286,6 +316,11 @@ export default {
type: 'success' type: 'success'
}) })
this.getFolderList() this.getFolderList()
} else {
this.$message({
message: res.data.ResponseError.LongMessage,
type: 'error'
})
} }
}) })
}, },
...@@ -298,12 +333,24 @@ export default { ...@@ -298,12 +333,24 @@ export default {
type: 'success' type: 'success'
}) })
this.$refs.contextMenu.shareVisible = false this.$refs.contextMenu.shareVisible = false
} else {
this.$message({
message: res.data.ResponseError.LongMessage,
type: 'error'
})
} }
}) })
}, },
updateOrCreateFolder (params, message) { updateOrCreateFolder (isFile, params, message) {
/* 新增或编辑个人文件夹 */ /* 新增或编辑个人文件夹 */
this.$api.schoolBasedResourcesApi.CreateOrUpdateFolder(params).then(res => { let updateApi
if (isFile) { // 对象是文件
updateApi = this.$api.schoolBasedResourcesApi.updateFileName
params.folder_info_id = this.breadcrumb[this.breadcrumb.length - 1].parent.b_id
} else { // 对象是文件夹
updateApi = this.$api.schoolBasedResourcesApi.CreateOrUpdateFolder
}
updateApi(params).then(res => {
if (res.data.Status === true) { if (res.data.Status === true) {
this.$message({ this.$message({
message: message, message: message,
...@@ -312,19 +359,38 @@ export default { ...@@ -312,19 +359,38 @@ export default {
this.$refs.contextMenu.newFolderVisible = false this.$refs.contextMenu.newFolderVisible = false
this.$refs.contextMenu.renameVisible = false this.$refs.contextMenu.renameVisible = false
this.getFolderList() this.getFolderList()
} else {
this.$message({
message: res.data.ResponseError.LongMessage,
type: 'error'
})
} }
}) })
}, },
handleDeleteFolder (params) { handleDeleteFolder (isFile, params) {
/* 删除个人文件夹 */ /* 删除文件或文件夹 */
this.$api.schoolBasedResourcesApi.deleteFolder(params).then(res => { let deleteApi
if (isFile) { // 对象是文件
deleteApi = this.$api.schoolBasedResourcesApi.deleteFile
} else { // 对象是文件夹
deleteApi = this.$api.schoolBasedResourcesApi.deleteFolder
}
deleteApi(params).then(res => {
if (res.data.Status === true) { if (res.data.Status === true) {
this.$message({ this.$message({
message: '删除成功', message: '删除成功',
type: 'success' type: 'success'
}) })
if (isFile && this.currentFileList.length === 1) {
this.backCrumb(this.breadcrumb.length - 2)
}
this.$refs.contextMenu.deleteVisible = false this.$refs.contextMenu.deleteVisible = false
this.getFolderList() this.getFolderList()
} else {
this.$message({
message: res.data.ResponseError.LongMessage,
type: 'error'
})
} }
}) })
}, },
...@@ -363,6 +429,14 @@ export default { ...@@ -363,6 +429,14 @@ export default {
}, },
showUploadMenu () { showUploadMenu () {
this.uploadVisible = !this.uploadVisible this.uploadVisible = !this.uploadVisible
},
handleSizeChange (val) {
this.paginationQuery.pageSize = val
this.getFileList(this.breadcrumb[this.breadcrumb.length - 1].parent)
},
handleCurrentChange (val) {
this.paginationQuery.pageIndex = val
this.getFileList(this.breadcrumb[this.breadcrumb.length - 1].parent)
} }
} }
} }
......
...@@ -210,33 +210,55 @@ export default { ...@@ -210,33 +210,55 @@ export default {
let data = { let data = {
// b_id: this.rightMenuData.b_id, // b_id: this.rightMenuData.b_id,
parent_id: this.rightMenuData.b_id, parent_id: this.rightMenuData.b_id,
folder_name: folderName folder_name: folderName,
step_number: this.rightMenuData.step_number + 1 || undefined
} }
this.$emit('updateOrCreateFolder', data, '创建文件夹成功') this.$emit('updateOrCreateFolder', false, data, '创建文件夹成功')
this.newFolderName = '' this.newFolderName = ''
}, },
clickRenameBtn () { clickRenameBtn () {
/* 点击重命名按钮 */ /* 点击重命名按钮 */
this.rename = this.rightMenuData.folder_name this.rename = this.rightMenuData.folder_name || this.rightMenuData.file_name
this.renameVisible = true this.renameVisible = true
}, },
handleUpdate () { handleUpdate () {
/* 修改个人文件夹名称 */ /* 修改个人文件夹名称 */
let folderName = this.rename let data = {}
let data = { if (this.currentIsFiLe) {
b_id: this.rightMenuData.b_id, /* 修改文件名称 */
parent_id: this.rightMenuData.parent_id, data = {
folder_name: folderName b_id: this.rightMenuData.file_info_id,
file_name: this.rename
}
this.$emit('updateOrCreateFolder', true, data, '修改文件名称成功')
} else {
/* 修改文件名称 */
data = {
b_id: this.rightMenuData.b_id,
parent_id: this.rightMenuData.parent_id,
folder_name: this.rename,
step_number: this.rightMenuData.step_number
}
this.$emit('updateOrCreateFolder', false, data, '修改文件夹名称成功')
} }
this.$emit('updateOrCreateFolder', data, '修改文件夹名称成功')
this.rename = '' this.rename = ''
}, },
handleDelete () { handleDelete () {
/* 删除个人文件夹 */ /* 删除个人文件夹 */
let data = { let data = {}
b_id: this.rightMenuData.b_id if (this.currentIsFiLe) {
/* 删除文件 */
data = {
b_id: this.rightMenuData.file_info_id
}
this.$emit('handleDeleteFolder', true, data)
} else {
/* 删除文件夹 */
data = {
b_id: this.rightMenuData.b_id
}
this.$emit('handleDeleteFolder', false, data)
} }
this.$emit('handleDeleteFolder', data)
} }
} }
} }
......
...@@ -33,13 +33,15 @@ ...@@ -33,13 +33,15 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="manageMode" v-if="manageMode"
prop="private"
label="公开/不公开" label="公开/不公开"
width="180"> width="180">
<template slot-scope="scope">
{{ scope.row.is_public == 1 ? '不公开': (scope.row.is_public == 2 ? '对所有教师公开': '对部分教师公开')}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="manageMode" v-if="manageMode"
prop="documentCount" prop="file_count"
label="文档数量" label="文档数量"
width="150"> width="150">
</el-table-column> </el-table-column>
...@@ -54,8 +56,14 @@ ...@@ -54,8 +56,14 @@
min-width="220"> min-width="220">
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination" v-if="!(fileList[0] && fileList[0].isFolder)"> <div class="pagination" v-if="currentIsFiLe">
<pagination :amount="50"></pagination> <pagination
:amount="paginationQuery.amount"
:page-size="paginationQuery.pageSize"
:page-index="paginationQuery.pageIndex"
@getCurrentPage="handleCurrentChange"
@getSizeChange="handleSizeChange"
/>
</div> </div>
</div> </div>
</template> </template>
...@@ -84,12 +92,19 @@ export default { ...@@ -84,12 +92,19 @@ export default {
manageMode: { // 是否为我管理的页面使用 manageMode: { // 是否为我管理的页面使用
type: Boolean, type: Boolean,
default: false default: false
},
paginationQuery: {
type: Object,
default: () => {
return { amount: 0, pageSize: 50, pageIndex: 1 }
}
} }
}, },
computed: { computed: {
folderTypeOptions () { folderTypeOptions () {
/* 根据foderType来判断显示哪种options */ /* 根据foderType来判断显示哪种options */
const uploadType = { 1: '学校文件夹', 2: '个人文件夹' } const uploadType = { 1: '学校文件夹', 2: '个人文件夹' }
const school = { 1: '常规文件夹', 2: '任务文件夹' }
const favorType = { 1: '我收藏的', 2: '我分享的', 3: '分享给我的' } const favorType = { 1: '我收藏的', 2: '我分享的', 3: '分享给我的' }
let folderTypeOptions = {} let folderTypeOptions = {}
switch (this.mode) { switch (this.mode) {
...@@ -99,6 +114,9 @@ export default { ...@@ -99,6 +114,9 @@ export default {
case 'favor': case 'favor':
folderTypeOptions = favorType folderTypeOptions = favorType
break break
case 'school':
folderTypeOptions = school
break
} }
return folderTypeOptions return folderTypeOptions
} }
...@@ -117,10 +135,10 @@ export default { ...@@ -117,10 +135,10 @@ export default {
this.$emit('tableIntoFile', row) this.$emit('tableIntoFile', row)
}, },
handleSizeChange (val) { handleSizeChange (val) {
console.log(`每页 ${val} 条`) this.$emit('getSizeChange', val)
}, },
handleCurrentChange (val) { handleCurrentChange (val) {
console.log(`当前页: ${val}`) this.$emit('getCurrentPage', val)
} }
} }
} }
......
...@@ -16,7 +16,7 @@ export default { ...@@ -16,7 +16,7 @@ export default {
}, },
data () { data () {
return { return {
isShowPrevPage: true, isShowPrevPage: false,
menus: [ menus: [
{ {
name: '校内资源', name: '校内资源',
...@@ -28,24 +28,8 @@ export default { ...@@ -28,24 +28,8 @@ export default {
} }
}, },
methods: { methods: {
initDataFromRoute (route) {
/* 根据路由参数来显示对应数据 */
if (route.query.folderName) { // 有参数说明不是首页,显示返回上一页
this.isShowPrevPage = true
} else {
this.isShowPrevPage = false
}
}
}, },
mounted () { mounted () {
},
created () {
this.initDataFromRoute(this.$route)
},
watch: {
$route (to, from) {
this.initDataFromRoute(to)
}
} }
} }
......
...@@ -7,17 +7,17 @@ ...@@ -7,17 +7,17 @@
v-for="(breadcrumbItem, index) of breadcrumb" v-for="(breadcrumbItem, index) of breadcrumb"
:key="index" :key="index"
@click.native="backCrumb(index)"> @click.native="backCrumb(index)">
{{ breadcrumbItem }} {{ breadcrumbItem.label }}
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="rightNav"> <div class="rightNav">
<el-select v-if="!(currentFileList[0] && currentFileList[0].isFolder)" class="timer-select" v-model="timeSelect" placeholder="请选择"> <el-select v-show="currentIsFiLe" class="timer-select" v-model="timeSelect" placeholder="请选择">
<el-option <el-option
v-for="item in options" v-for="item in termOptions"
:key="item.value" :key="item.ID"
:label="item.label" :label="item.TeamName"
:value="item.value"> :value="item.ID">
</el-option> </el-option>
</el-select> </el-select>
<search></search> <search></search>
...@@ -27,7 +27,11 @@ ...@@ -27,7 +27,11 @@
<div class="smallCtn"> <div class="smallCtn">
<small-folder <small-folder
:file-list="currentFileList" :file-list="currentFileList"
:currentIsFiLe="currentIsFiLe"
:pagination-query="paginationQuery"
@tableIntoFile="intoFolder" @tableIntoFile="intoFolder"
@getSizeChange="handleSizeChange"
@getCurrentPage="handleCurrentChange"
> >
</small-folder> </small-folder>
</div> </div>
...@@ -37,10 +41,12 @@ ...@@ -37,10 +41,12 @@
<el-drawer <el-drawer
title="查看" title="查看"
:visible.sync="documentDrawer" :visible.sync="documentDrawer"
:size="'60%'"> :size="'80%'">
<span>文档内容</span> <iframe :src="documentUrl" width="100%" height= "100%" name="topFrame" noresize="noresize" frameborder="0" id="topFrame"></iframe>
</el-drawer> </el-drawer>
<button v-show="false" ref="btn" @click="currentIsFiLe = true">设置当前页面为文件模式</button>
</div> </div>
</template> </template>
...@@ -55,157 +61,139 @@ export default { ...@@ -55,157 +61,139 @@ export default {
data () { data () {
return { return {
timeSelect: 'allItem', // 学期选择框数据 timeSelect: 'allItem', // 学期选择框数据
options: [{ termOptions: [{ // 学期选择options
value: 'allItem', value: 'allItem',
label: '全部学期' label: '全部学期'
}], }],
documentDrawer: false, // 查看文档抽屉 documentDrawer: false, // 查看文档抽屉
currentIsFiLe: false, // 当前层次是否为文档列表
currentFileList: [], currentFileList: [],
selectFolderVisible: false, // 查看文件侧滑框 selectFolderVisible: false, // 查看文件侧滑框
breadcrumb: ['首页'], // 面包屑 breadcrumb: [], // 面包屑
fileListData: { documentUrl: '', // 文档在线地址
firstLevelData: [ paginationQuery: { // 分页信息
{ amount: 0,
id: 991, pageSize: 20,
name: '第一级文件夹', pageIndex: 1
typeName: '学校文件夹',
type: 'school',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
isFocus: false,
isFolder: true,
folderData: 'secondLevelData',
nextIsFolder: true,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
},
{
id: 992,
name: '第一级文件夹',
typeName: '个人文件夹',
type: 'personal',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
isFocus: false,
isFolder: true,
folderData: 'secondLevelData',
nextIsFolder: true,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
},
{
id: 993,
name: '第一级文件夹',
typeName: '个人文件夹',
type: 'personal',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
isFocus: false,
isFolder: true,
folderData: 'secondLevelData',
nextIsFolder: true,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
}
],
secondLevelData: [
{
id: 1001,
name: '第二级文件夹',
typeName: '学校文件夹',
type: 'school',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
isFocus: false,
isFolder: true,
folderData: 'thirdLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
},
{
id: 1002,
name: '第二级文件夹',
typeName: '学校文件夹',
type: 'school',
icon: 'el-icon-folder',
descript: '我上传了10个文档',
isFocus: false,
isFolder: true,
folderData: 'thirdLevelData',
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
}
],
thirdLevelData: [
{
id: 1101,
name: '第三级文件.txt',
typeName: '文件',
type: 'file',
icon: 'el-icon-document',
descript: '我上传了10个文档',
isFocus: false,
isFolder: false,
nextIsFolder: false,
uploadCount: '10',
author: '张三',
updateTime: '2020-08-22 12:00'
}
]
} }
} }
}, },
mounted () {
this.getFolderList()
this.getTermList()
},
watch: {
},
methods: { methods: {
initDataFromRoute (route) { getFolderList () {
/* 根据路由参数初始化数据 */ this.$api.schoolBasedResourcesApi.getSchoolResourceFolderList().then(res => {
if (route.query.folderName) { this.$handleResponse(res).then(data => {
this.currentFileList = this.fileListData[route.query.folderName] this.initFromBreadcrumb(data)
this.breadcrumb = JSON.parse(route.query.breadcrumb) })
})
},
getTermList () {
/* 获取学期列表 */
this.$api.commonApi.getTermInfoList().then(res => {
this.$handleResponse(res).then(data => {
this.termOptions = data
this.timeSelect = data[0].ID
})
})
},
initFromBreadcrumb (data) {
/* 通过面包屑初始化数据 */
this.currentIsFile = false
let breadcrumb = this.breadcrumb
if (breadcrumb.length <= 1) {
this.breadcrumb = [{ label: '首页', listData: data, parent: { b_id: '0', parent_id: '0' }, currentIsFiLe: false }]
this.currentFileList = data
} else { } else {
this.currentFileList = this.fileListData.firstLevelData let newBreadcrumb = [{ label: '首页', listData: data, parent: { b_id: '0', parent_id: '0' }, currentIsFiLe: false }]
this.breadcrumb = ['首页'] let currentList = data
for (let i = 1; i < breadcrumb.length; i++) {
let hasThisFile = false
for (let j = 0; j < currentList.length; j++) {
if (currentList[j].b_id === breadcrumb[i].parent.b_id) {
let isFile = (!currentList[j].children || currentList[j].children.length === 0) && currentList[j].file_count > 0
this.currentIsFile = isFile
this.addCrumb(newBreadcrumb, currentList[j], isFile)
if (isFile) {
this.getFileList(currentList[j])
} else {
currentList = currentList[j].children
}
hasThisFile = true
break
}
}
if (hasThisFile === false) {
break
}
}
this.breadcrumb = newBreadcrumb
if (!this.currentIsFile) {
this.currentFileList = currentList
}
}
},
getFileList (file) {
this.$refs.btn.click()
const folderId = file.b_id
const selType = file.folder_type
let data = {
data: { folder_id: folderId, sel_type: selType },
PageSize: this.paginationQuery.pageSize,
PageNumber: this.paginationQuery.pageIndex
} }
this.$api.schoolBasedResourcesApi.GetFileList(data).then(res => {
this.$handleResponse(res).then(data => {
this.currentFileList = data.Data
this.paginationQuery.amount = data.TotalRecords
})
})
}, },
backCrumb (index) { backCrumb (index) {
/* 点击面包屑返回前几级 */ /* 点击面包屑返回前几级 */
if (index < this.breadcrumb.length - 1) { let breadcrumb = this.breadcrumb
let backPageCount = index - this.breadcrumb.length + 1 let item = breadcrumb[index]
this.$router.go(backPageCount) this.currentIsFiLe = false
if (index < breadcrumb.length - 1) {
this.currentFileList = item.listData
this.breadcrumb = breadcrumb.slice(0, index + 1)
} }
}, },
addCrumb (breadcrumb, file, currentIsFiLe) {
/* 添加面包屑 */
breadcrumb.push({ label: file.folder_name, listData: file.children, parent: file, currentIsFiLe })
},
intoFolder (file) { intoFolder (file) {
/* 进入下一级文件夹 */ /* 进入下一级文件夹 */
if (file.isFolder) { if ((file.children && file.children.length > 0 && this.currentIsFiLe === false) || (file.file_count === 0 && this.breadcrumb.length < 3)) {
// 进入文件夹 // 进入文件夹
this.breadcrumb.push(file.name) this.currentIsFiLe = false
this.$router.push({ this.addCrumb(this.breadcrumb, file, this.currentIsFiLe)
path: '/education/schoolResources/index', this.currentFileList = file.children
query: {
folderName: file.folderData,
breadcrumb: JSON.stringify(this.breadcrumb)
}
})
} else { } else {
// 查看文件 // 获取当前文件夹的文档列表
this.documentDrawer = true if (this.currentIsFiLe === false) {
this.currentIsFiLe = true
this.addCrumb(this.breadcrumb, file, this.currentIsFiLe)
this.getFileList(file)
} else {
let url = 'https://onlinepreview.vschool100.cn/onlinePreview?url=' + encodeURIComponent(file.file_path)
this.documentUrl = url
this.documentDrawer = true
}
} }
} },
}, handleSizeChange (val) {
mounted () { this.paginationQuery.pageSize = val
}, this.getFileList(this.breadcrumb[this.breadcrumb.length - 1].parent)
created () { },
this.initDataFromRoute(this.$route) handleCurrentChange (val) {
}, this.paginationQuery.pageIndex = val
watch: { this.getFileList(this.breadcrumb[this.breadcrumb.length - 1].parent)
$route (to, from) {
this.initDataFromRoute(to)
} }
} }
} }
......
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