|
|
@@ -2,146 +2,222 @@
|
|
|
<div class="full-width full-height mb-10">
|
|
|
<div class="flex flex-col">
|
|
|
<div class="flex flex-align-center padding border-bottom bold title-sp">
|
|
|
-
|
|
|
<span class="flex-1"></span>
|
|
|
- <span style="flex: 2;text-align: left">文件/文件夹名称</span>
|
|
|
+ <span style="flex: 2; text-align: left">文件/文件夹名称</span>
|
|
|
<span style="flex: 1">更新(上传)时间</span>
|
|
|
<span style="flex: 1.5">文件数量</span>
|
|
|
<span style="flex: 3">操作</span>
|
|
|
</div>
|
|
|
|
|
|
- <el-empty v-if="folder && folder.length === 0" description="暂无数据"/>
|
|
|
- <div v-for="item in folder" :key='item.id' v-else
|
|
|
- class="flex flex-center border-bottom padding content-sp">
|
|
|
+ <el-empty v-if="folder && folder.length === 0" description="暂无数据" />
|
|
|
+ <div
|
|
|
+ v-for="item in folder"
|
|
|
+ :key="item.id"
|
|
|
+ v-else
|
|
|
+ class="flex flex-center border-bottom padding content-sp"
|
|
|
+ >
|
|
|
<div class="flex-1 pointer" @click="fileView(item)">
|
|
|
- <img v-if="item.isAccess === 1" class="icon" src="../../../assets/svg/folder/see.svg">
|
|
|
- <img v-else-if="item.isAccess === 2" class="icon" src="../../../assets/svg/folder/edit.svg">
|
|
|
- <img v-else class="icon" src="../../../assets/svg/folder/invisible.svg">
|
|
|
+ <img
|
|
|
+ v-if="item.isAccess === 1"
|
|
|
+ class="icon"
|
|
|
+ src="../../../assets/svg/folder/see.svg"
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ v-else-if="item.isAccess === 2"
|
|
|
+ class="icon"
|
|
|
+ src="../../../assets/svg/folder/edit.svg"
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ v-else
|
|
|
+ class="icon"
|
|
|
+ src="../../../assets/svg/folder/invisible.svg"
|
|
|
+ />
|
|
|
</div>
|
|
|
- <div class="flex" style="flex:2;text-align: left">
|
|
|
+ <div class="flex" style="flex: 2; text-align: left">
|
|
|
<span>{{ item.title }}</span>
|
|
|
- <el-icon style="margin-top: 3px;margin-left: 2px" @click="showUpdate(item)">
|
|
|
- <Edit/>
|
|
|
+ <el-icon
|
|
|
+ style="margin-top: 3px; margin-left: 2px"
|
|
|
+ @click="showUpdate(item)"
|
|
|
+ >
|
|
|
+ <Edit />
|
|
|
</el-icon>
|
|
|
</div>
|
|
|
<span style="flex: 1">{{ item.updateTime }}</span>
|
|
|
<span style="flex: 1.5">{{ item.fileAmount }}</span>
|
|
|
<div class="flex flex-center" style="flex: 3">
|
|
|
- <main-button v-if='item.isAccess !== 3' icon="View" title="详情" width="85"
|
|
|
- @click="fileView(item)"/>
|
|
|
- <main-button icon="Position" title="任务下发" width="85" v-if='item.isAccess === 2 '
|
|
|
- @click="sendTask(item)"/>
|
|
|
- <main-button v-if='item.isAccess === 2 '
|
|
|
- icon="Upload"
|
|
|
- title="上传文件" width="85" @click="uploadFiles(item)"/>
|
|
|
-<!-- <main-button v-if="permissions && permissions.permissions.home_folder_authorize" icon="Pointer"-->
|
|
|
-<!-- title="授权操作" width="85"-->
|
|
|
-<!-- @click='getFileList(item)'/>-->
|
|
|
- <main-button v-if="[1,3].includes(item.isAccess)"
|
|
|
- icon="Position"
|
|
|
- title="授权申请" width="85" @click="folderApply(item)"/>
|
|
|
<main-button
|
|
|
- v-if="item.isAccess === 2 && item.createUser === user.info.bladeUserId "
|
|
|
- icon="Delete" title="删除" width="85"
|
|
|
- @click="folderRemove(item)"/>
|
|
|
+ v-if="item.isAccess !== 3"
|
|
|
+ icon="View"
|
|
|
+ title="详情"
|
|
|
+ width="85"
|
|
|
+ @click="fileView(item)"
|
|
|
+ />
|
|
|
+ <main-button
|
|
|
+ icon="Position"
|
|
|
+ title="任务下发"
|
|
|
+ width="85"
|
|
|
+ v-if="item.isAccess === 2"
|
|
|
+ @click="sendTask(item)"
|
|
|
+ />
|
|
|
+ <main-button
|
|
|
+ v-if="item.isAccess === 2"
|
|
|
+ icon="Upload"
|
|
|
+ title="上传文件"
|
|
|
+ width="85"
|
|
|
+ @click="uploadFiles(item)"
|
|
|
+ />
|
|
|
+ <main-button
|
|
|
+ v-if="[1, 3].includes(item.isAccess)"
|
|
|
+ icon="Position"
|
|
|
+ title="授权申请"
|
|
|
+ width="85"
|
|
|
+ @click="folderApply(item)"
|
|
|
+ />
|
|
|
+ <main-button
|
|
|
+ v-if="
|
|
|
+ item.isAccess === 2 && item.createUser === user.info.bladeUserId
|
|
|
+ "
|
|
|
+ icon="Delete"
|
|
|
+ title="删除"
|
|
|
+ width="85"
|
|
|
+ @click="folderRemove(item)"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-------分页----->
|
|
|
- <div v-if="folder && folder.length !== 0" class="mt-20 flex flex-center flex-justify-end"
|
|
|
- style="margin-right: 50px">
|
|
|
+ <div
|
|
|
+ v-if="folder && folder.length !== 0"
|
|
|
+ class="mt-20 flex flex-center flex-justify-end"
|
|
|
+ style="margin-right: 50px"
|
|
|
+ >
|
|
|
<span class="mr-20">共{{ total }}条</span>
|
|
|
- <el-pagination :total="total" background layout="prev, pager, next" @current-change='changePage'/>
|
|
|
+ <el-pagination
|
|
|
+ :total="total"
|
|
|
+ background
|
|
|
+ layout="prev, pager, next"
|
|
|
+ @current-change="changePage"
|
|
|
+ />
|
|
|
</div>
|
|
|
- <el-dialog v-model="show"
|
|
|
- append-to-body
|
|
|
- center
|
|
|
- title="附件上传(可批量)">
|
|
|
+ <el-dialog v-model="show" append-to-body center title="附件上传(可批量)">
|
|
|
<div class="flex flex-col" style="margin-top: -20px">
|
|
|
<span class="main-color bold font-16 mb-10">{{ folderName }}</span>
|
|
|
- <uploadFile :data='{type:1,toStatus:0}' :max='20'
|
|
|
- @close='show = false'
|
|
|
- accept='.doc,.docx,.pdf,.xls,.xlsx,.png,.jpg,.jpeg,.ppt,pptx'
|
|
|
- @success='success'/>
|
|
|
+ <uploadFile
|
|
|
+ :data="{ type: 1, toStatus: 0 }"
|
|
|
+ :max="20"
|
|
|
+ @close="show = false"
|
|
|
+ accept=".doc,.docx,.pdf,.xls,.xlsx,.png,.jpg,.jpeg,.ppt,pptx"
|
|
|
+ @success="success"
|
|
|
+ />
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
<!-- 授权操作-->
|
|
|
- <el-dialog v-model='authorizeShow' :show-close='false' append-to-body center class='custom-dialog'>
|
|
|
+ <el-dialog
|
|
|
+ v-model="authorizeShow"
|
|
|
+ :show-close="false"
|
|
|
+ append-to-body
|
|
|
+ center
|
|
|
+ class="custom-dialog"
|
|
|
+ >
|
|
|
<template #header="{ close, titleId, titleClass }">
|
|
|
<div class="flex flex-justify-between">
|
|
|
<h4 :id="titleId" :class="titleClass">{{ currentRow.folderName }}</h4>
|
|
|
<el-button text type="danger" @click="close">
|
|
|
<el-icon class="el-icon--left">
|
|
|
- <CircleCloseFilled/>
|
|
|
+ <CircleCloseFilled />
|
|
|
</el-icon>
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <authorize :list='fileData.records' :folder-id='currentRow.fileFolderId' :project-id='projectId' :extra='{type:1}'
|
|
|
- @close='authorizeShow = false'/>
|
|
|
+ <authorize
|
|
|
+ :list="fileData.records"
|
|
|
+ :folder-id="currentRow.id"
|
|
|
+ :project-id="projectId"
|
|
|
+ :extra="{ type: 1 }"
|
|
|
+ @close="authorizeShow = false"
|
|
|
+ />
|
|
|
</el-dialog>
|
|
|
- <el-dialog v-model='sendMsg' top='20%' width='400px'>
|
|
|
+ <el-dialog v-model="sendMsg" top="20%" width="400px">
|
|
|
<div class="flex flex-col flex-center">
|
|
|
<span class="font-15">是否给业主发送提醒消息?</span>
|
|
|
<div class="flex flex-center mt-20">
|
|
|
<el-button class="mr-15" @click="sendMsg = false">取消</el-button>
|
|
|
- <el-button type='primary' @click="SendMsg">发送</el-button>
|
|
|
+ <el-button type="primary" @click="SendMsg">发送</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
<!-- 申请授权-->
|
|
|
- <el-dialog title='申请授权' v-model='applyShow' width='35%'>
|
|
|
- <div class='full-width flex flex-center flex-col'>
|
|
|
- <text class='full-width black text-left font-14 bold'>确认向业主申请{{ currentFolder.folderName }}的管理权限?
|
|
|
+ <el-dialog title="申请授权" v-model="applyShow" width="35%">
|
|
|
+ <div class="full-width flex flex-center flex-col">
|
|
|
+ <text class="full-width black text-left font-14 bold"
|
|
|
+ >确认向业主申请{{ currentFolder.folderName }}的管理权限?
|
|
|
</text>
|
|
|
- <div class='full-width flex flex-align-center mt-20'>
|
|
|
- <span class='font-14 bold'>授权时长</span>
|
|
|
+ <div class="full-width flex flex-align-center mt-20">
|
|
|
+ <span class="font-14 bold">授权时长</span>
|
|
|
<el-date-picker
|
|
|
- v-model="applyTime"
|
|
|
- class='ml-20'
|
|
|
- end-placeholder="截止日期"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- type="daterange"
|
|
|
- value-format='YYYY-MM-DD'
|
|
|
+ v-model="applyTime"
|
|
|
+ class="ml-20"
|
|
|
+ end-placeholder="截止日期"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ type="daterange"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
/>
|
|
|
</div>
|
|
|
- <el-divider/>
|
|
|
- <div class='full-width flex flex-center'>
|
|
|
- <el-button type='danger' plain @click="applyShow = false">取 消</el-button>
|
|
|
- <el-button type='primary' @click='submit'>确 定</el-button>
|
|
|
+ <el-divider />
|
|
|
+ <div class="full-width flex flex-center">
|
|
|
+ <el-button type="danger" plain @click="applyShow = false"
|
|
|
+ >取 消</el-button
|
|
|
+ >
|
|
|
+ <el-button type="primary" @click="submit">确 定</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
- <el-dialog v-model='updateShow' append-to-body width='40%'>
|
|
|
+ <el-dialog v-model="updateShow" append-to-body width="40%">
|
|
|
<div class="flex flex-col">
|
|
|
<div class="main-color bold font-15 text-center">
|
|
|
<span>请谨慎修改文件夹名称!</span>
|
|
|
</div>
|
|
|
<div class="flex flex-col mt-20">
|
|
|
- <el-form ref="ruleFormRef"
|
|
|
- :model="folderInfo"
|
|
|
- class="demo-ruleForm"
|
|
|
- label-width="120px"
|
|
|
- status-icon>
|
|
|
+ <el-form
|
|
|
+ ref="ruleFormRef"
|
|
|
+ :model="folderInfo"
|
|
|
+ class="demo-ruleForm"
|
|
|
+ label-width="120px"
|
|
|
+ status-icon
|
|
|
+ >
|
|
|
<el-form-item label="新文件夹名称">
|
|
|
<el-input
|
|
|
- v-model="folderInfo.title"
|
|
|
- placeholder="填写修改的文件夹名称"
|
|
|
- style="width: 100%"
|
|
|
+ v-model="folderInfo.title"
|
|
|
+ placeholder="填写修改的文件夹名称"
|
|
|
+ style="width: 100%"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div class="full-width flex flex-center mt-10">
|
|
|
- <base-button icon="Close" title="取消" type="0" @click="updateShow = false"/>
|
|
|
- <base-button icon="Check" title="保存" type="1" @click="folderUpdate"/>
|
|
|
+ <base-button
|
|
|
+ icon="Close"
|
|
|
+ title="取消"
|
|
|
+ type="0"
|
|
|
+ @click="updateShow = false"
|
|
|
+ />
|
|
|
+ <base-button
|
|
|
+ icon="Check"
|
|
|
+ title="保存"
|
|
|
+ type="1"
|
|
|
+ @click="folderUpdate"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
<!-- 任务下发-->
|
|
|
- <el-dialog v-model='taskShow' append-to-body title='任务下发'>
|
|
|
- <task :project-id='projectId' :folders='currentFolders' @close='closeTask'></task>
|
|
|
+ <el-dialog v-model="taskShow" append-to-body title="任务下发">
|
|
|
+ <task
|
|
|
+ :project-id="projectId"
|
|
|
+ :folders="currentFolders"
|
|
|
+ @close="closeTask"
|
|
|
+ ></task>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -158,7 +234,7 @@ import task from './task.vue'
|
|
|
export default {
|
|
|
name: 'file_list',
|
|
|
components: { mainButton, uploadFile, authorize, baseButton, task },
|
|
|
- setup () {
|
|
|
+ setup() {
|
|
|
const permissions = permissionStore()
|
|
|
const user = useStore()
|
|
|
return { permissions, user }
|
|
|
@@ -174,7 +250,7 @@ export default {
|
|
|
default: 0
|
|
|
}
|
|
|
},
|
|
|
- data () {
|
|
|
+ data() {
|
|
|
return {
|
|
|
taskShow: false,
|
|
|
show: false,
|
|
|
@@ -209,18 +285,16 @@ export default {
|
|
|
currentFolders: []
|
|
|
}
|
|
|
},
|
|
|
- created () {
|
|
|
-
|
|
|
- },
|
|
|
+ created() {},
|
|
|
methods: {
|
|
|
- sendTask (item) {
|
|
|
+ sendTask(item) {
|
|
|
const index = this.currentFolders.findIndex(sub => sub.id === item.id)
|
|
|
if (index === -1) {
|
|
|
this.currentFolders.push(item)
|
|
|
}
|
|
|
this.taskShow = true
|
|
|
},
|
|
|
- fileView (item) {
|
|
|
+ fileView(item) {
|
|
|
if (this.type === 0) {
|
|
|
console.log(item)
|
|
|
this.$router.push({
|
|
|
@@ -243,33 +317,32 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
- uploadFiles (item) {
|
|
|
+ uploadFiles(item) {
|
|
|
this.currentRow = item
|
|
|
this.folderName = item.folderName
|
|
|
this.show = true
|
|
|
},
|
|
|
- folderRemove (item) {
|
|
|
+ folderRemove(item) {
|
|
|
this.$confirm('确认是否删除所选文件/文件夹?', {
|
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '取消',
|
|
|
type: 'warning'
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- this.$api.project.folderRemove({ ids: item.fileFolderId }).then(res => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.$message.success(res.msg)
|
|
|
- this.$emit('delFolder')
|
|
|
- } else {
|
|
|
- this.$message.error(res.msg)
|
|
|
- }
|
|
|
- })
|
|
|
+ }).then(() => {
|
|
|
+ this.$api.project.folderRemove({ ids: item.id }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message.success(res.msg)
|
|
|
+ this.$emit('delFolder')
|
|
|
+ } else {
|
|
|
+ this.$message.error(res.msg)
|
|
|
+ }
|
|
|
})
|
|
|
+ })
|
|
|
},
|
|
|
- folderApply (item) {
|
|
|
+ folderApply(item) {
|
|
|
this.currentFolder = item
|
|
|
this.applyShow = true
|
|
|
},
|
|
|
- success (res) {
|
|
|
+ success(res) {
|
|
|
this.fileList = res.fileList.map(res => {
|
|
|
const item = {}
|
|
|
item.title = res.response.data.originalFileName
|
|
|
@@ -286,7 +359,11 @@ export default {
|
|
|
})
|
|
|
this.fileList.forEach(sub => {
|
|
|
this.saveCount++
|
|
|
- if (['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'].includes(sub.suffix)) {
|
|
|
+ if (
|
|
|
+ ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'].includes(
|
|
|
+ sub.suffix
|
|
|
+ )
|
|
|
+ ) {
|
|
|
this.saveLibrary(sub)
|
|
|
}
|
|
|
if (this.saveCount === this.fileList.length) {
|
|
|
@@ -295,7 +372,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- saveLibrary (sub) {
|
|
|
+ saveLibrary(sub) {
|
|
|
const data = { category: 4, content: '' }
|
|
|
this.$api.common.submit(Object.assign(sub, data)).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
@@ -305,7 +382,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- addFile () {
|
|
|
+ addFile() {
|
|
|
this.$api.project.fileAdd(this.fileList).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
this.show = false
|
|
|
@@ -316,10 +393,9 @@ export default {
|
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '取消',
|
|
|
type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ this.SendMsg()
|
|
|
})
|
|
|
- .then(() => {
|
|
|
- this.SendMsg()
|
|
|
- })
|
|
|
}
|
|
|
} else {
|
|
|
this.show = false
|
|
|
@@ -327,7 +403,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- SendMsg () {
|
|
|
+ SendMsg() {
|
|
|
this.sendParams.ids = this.fileList.map(e => e.fileId).join(',')
|
|
|
this.sendParams.projectId = this.$route.query.id
|
|
|
this.sendParams.ownerId = this.$route.query.ownerId
|
|
|
@@ -341,9 +417,9 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- getFileList (item) {
|
|
|
+ getFileList(item) {
|
|
|
this.currentRow = item
|
|
|
- this.$api.project.fileList({ folderId: item.fileFolderId }).then(res => {
|
|
|
+ this.$api.project.fileList({ folderId: item.id }).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
this.authorizeShow = true
|
|
|
this.fileData = res.data
|
|
|
@@ -358,35 +434,41 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
|
|
|
- change (res) {
|
|
|
+ change(res) {
|
|
|
this.fileData[res.index] = res
|
|
|
},
|
|
|
- submit () {
|
|
|
+ submit() {
|
|
|
if (this.applyTime.length !== 2) {
|
|
|
this.$message.error('请选择授权时间')
|
|
|
return
|
|
|
}
|
|
|
const tmp = { projectId: this.projectId, ownerId: this.ownerId }
|
|
|
- const item = { startTime: this.applyTime[0], endTime: this.applyTime[1], folderId: this.currentFolder.id }
|
|
|
+ const item = {
|
|
|
+ startTime: this.applyTime[0],
|
|
|
+ endTime: this.applyTime[1],
|
|
|
+ folderId: this.currentFolder.id
|
|
|
+ }
|
|
|
const list = [item]
|
|
|
- this.$api.project.apply(Object.assign(tmp, { folders: list })).then(res => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.applyShow = false
|
|
|
- this.$confirm(res.data, {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.$message.error(res.msg)
|
|
|
- }
|
|
|
- })
|
|
|
+ this.$api.project
|
|
|
+ .apply(Object.assign(tmp, { folders: list }))
|
|
|
+ .then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.applyShow = false
|
|
|
+ this.$confirm(res.data, {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
- showUpdate (item) {
|
|
|
+ showUpdate(item) {
|
|
|
this.updateShow = true
|
|
|
- this.folderInfo.id = item.fileFolderId
|
|
|
+ this.folderInfo = item
|
|
|
},
|
|
|
- folderUpdate () {
|
|
|
+ folderUpdate() {
|
|
|
this.$api.project.folderUpdate(this.folderInfo).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
this.updateShow = false
|
|
|
@@ -398,10 +480,10 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- changePage (res) {
|
|
|
+ changePage(res) {
|
|
|
this.$emit('change', res)
|
|
|
},
|
|
|
- closeTask () {
|
|
|
+ closeTask() {
|
|
|
this.taskShow = false
|
|
|
this.currentFolders = []
|
|
|
}
|
|
|
@@ -411,7 +493,7 @@ export default {
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.title-sp {
|
|
|
- color: #596A8A;
|
|
|
+ color: #596a8a;
|
|
|
}
|
|
|
|
|
|
.content-sp {
|