|
|
@@ -5,77 +5,117 @@
|
|
|
</div>
|
|
|
<div class="padding-left padding-right mt-20" style="padding: 20px">
|
|
|
<avue-crud
|
|
|
- v-model="form"
|
|
|
:option="option"
|
|
|
:data="data"
|
|
|
ref="crud"
|
|
|
- :before-open="beforeOpen"
|
|
|
- @row-del="rowDel"
|
|
|
+ v-model="form"
|
|
|
+ v-model:page="page"
|
|
|
+ @current-change="currentChange"
|
|
|
+ @size-change="sizeChange"
|
|
|
+ @refresh-change="refreshChange"
|
|
|
@on-load="onLoad"
|
|
|
>
|
|
|
<template #menu-left>
|
|
|
<div>
|
|
|
<el-dropdown @command="openFile">
|
|
|
<el-button type="primary">
|
|
|
- 上传附件<el-icon class="el-icon--right"><arrow-down /></el-icon>
|
|
|
+ 上传附件
|
|
|
+ <el-icon class="el-icon--right">
|
|
|
+ <arrow-down />
|
|
|
+ </el-icon>
|
|
|
</el-button>
|
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
|
<el-dropdown-item command="1"
|
|
|
- >备案证/可研批复</el-dropdown-item
|
|
|
- >
|
|
|
+ >备案证/可研批复
|
|
|
+ </el-dropdown-item>
|
|
|
<el-dropdown-item command="2">合同</el-dropdown-item>
|
|
|
<el-dropdown-item command="3">工程量清单</el-dropdown-item>
|
|
|
<el-dropdown-item command="4">现场照片</el-dropdown-item>
|
|
|
<el-dropdown-item command="5"
|
|
|
- >项目核实认定表</el-dropdown-item
|
|
|
- >
|
|
|
+ >项目核实认定表
|
|
|
+ </el-dropdown-item>
|
|
|
<el-dropdown-item command="6">其他资料</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
|
</el-dropdown>
|
|
|
- <el-button type="primary" plain>导出</el-button>
|
|
|
+ <el-button type="primary" plain @click="exportFile"
|
|
|
+ >导 出</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<template #menu-right>
|
|
|
- <el-button icon="Refresh" circle></el-button>
|
|
|
+ <el-button icon="Refresh" circle @click="onLoad"></el-button>
|
|
|
</template>
|
|
|
- <template #menu>
|
|
|
+ <template #menu="{ row }">
|
|
|
<div>
|
|
|
- <el-button icon="Download" type="primary" size="mini" text
|
|
|
- >下载</el-button
|
|
|
- >
|
|
|
- <el-button icon="Download" type="primary" size="mini" text
|
|
|
- >打开文件夹</el-button
|
|
|
- >
|
|
|
+ <el-button
|
|
|
+ icon="View"
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ text
|
|
|
+ @click="previewFile(row)"
|
|
|
+ >查 看
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ icon="Download"
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ text
|
|
|
+ @click="downLoad(row)"
|
|
|
+ >下 载
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ icon="Download"
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ text
|
|
|
+ @click="openFolder(row)"
|
|
|
+ >打开文件夹
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ icon="Delete"
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ text
|
|
|
+ @click="rowDel(row)"
|
|
|
+ >删 除
|
|
|
+ </el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</avue-crud>
|
|
|
</div>
|
|
|
+ <el-image-viewer
|
|
|
+ v-if="showImage"
|
|
|
+ :url-list="preList"
|
|
|
+ @close="showImage = false"
|
|
|
+ />
|
|
|
<!--dialog-->
|
|
|
<el-dialog v-model="show" width="800px" title="附件要素">
|
|
|
<el-descriptions title="合同">
|
|
|
<el-descriptions-item label="Username"
|
|
|
- >kooriookami</el-descriptions-item
|
|
|
- >
|
|
|
+ >kooriookami
|
|
|
+ </el-descriptions-item>
|
|
|
<el-descriptions-item label="Telephone"
|
|
|
- >18100000000</el-descriptions-item
|
|
|
- >
|
|
|
+ >18100000000
|
|
|
+ </el-descriptions-item>
|
|
|
<el-descriptions-item label="Place">Suzhou</el-descriptions-item>
|
|
|
<el-descriptions-item label="Remarks">
|
|
|
<el-tag size="small">School</el-tag>
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="Address"
|
|
|
- >No.1188, Wuzhong Avenue, Wuzhong District, Suzhou, Jiangsu
|
|
|
- Province</el-descriptions-item
|
|
|
- >
|
|
|
+ >No.1188, Wuzhong Avenue, Wuzhong District, Suzhou, Jiangsu Province
|
|
|
+ </el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import api from '@/api/index.js'
|
|
|
+import { ElMessageBox } from 'element-plus'
|
|
|
+
|
|
|
export default {
|
|
|
props: {
|
|
|
info: {
|
|
|
@@ -86,8 +126,10 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
pid: '',
|
|
|
+ showImage: false,
|
|
|
uploadShow: false,
|
|
|
show: false,
|
|
|
+ preList: [],
|
|
|
form: {},
|
|
|
data: [],
|
|
|
page: {
|
|
|
@@ -100,6 +142,7 @@ export default {
|
|
|
height: 525,
|
|
|
size: 'mini',
|
|
|
addBtn: false,
|
|
|
+ delBtn: false,
|
|
|
editBtn: false,
|
|
|
refreshBtn: false,
|
|
|
columnBtn: false,
|
|
|
@@ -120,11 +163,11 @@ export default {
|
|
|
value: 2
|
|
|
},
|
|
|
{
|
|
|
- label: '现场照片',
|
|
|
+ label: '工程量清单',
|
|
|
value: 3
|
|
|
},
|
|
|
{
|
|
|
- label: '分享工程清单',
|
|
|
+ label: '现场照片',
|
|
|
value: 4
|
|
|
},
|
|
|
{
|
|
|
@@ -139,7 +182,8 @@ export default {
|
|
|
},
|
|
|
{
|
|
|
label: '附件名称',
|
|
|
- prop: 'title'
|
|
|
+ prop: 'title',
|
|
|
+ type: 'input'
|
|
|
},
|
|
|
{
|
|
|
label: '上传情况',
|
|
|
@@ -167,15 +211,70 @@ export default {
|
|
|
onLoad() {
|
|
|
const data = Object.assign(this.page, { id: this.pid })
|
|
|
this.$api.store.fileList(data).then(res => {
|
|
|
- if (res.code === 200) {
|
|
|
+ if (res.code === 200 && res.data.files.length > 0) {
|
|
|
this.data = res.data.files.map(ele => {
|
|
|
+ delete ele.fileId
|
|
|
const tmp = ele.fileFolder
|
|
|
+ tmp.folderId = tmp.id
|
|
|
delete tmp.id
|
|
|
return Object.assign(tmp, ele)
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ currentChange(currentPage) {
|
|
|
+ this.page.current = currentPage
|
|
|
+ },
|
|
|
+ sizeChange(pageSize) {
|
|
|
+ this.page.size = pageSize
|
|
|
+ },
|
|
|
+ refreshChange() {
|
|
|
+ this.onLoad()
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 文件下载
|
|
|
+ * @param row
|
|
|
+ */
|
|
|
+ downLoad(row) {
|
|
|
+ window.open(row.url, '_blank')
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 文件预览
|
|
|
+ * @param item
|
|
|
+ */
|
|
|
+ previewFile(item) {
|
|
|
+ console.log(item)
|
|
|
+ if (api.offices.includes(item.suffix)) {
|
|
|
+ const routeData = this.$router.resolve({
|
|
|
+ path: '/home/file_detail',
|
|
|
+ query: { id: item.fileId }
|
|
|
+ })
|
|
|
+ window.open(routeData.href, '_blank')
|
|
|
+ } else {
|
|
|
+ this.preList.length = 0
|
|
|
+ this.preList.push(item.url)
|
|
|
+ this.showImage = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 打开文件夹
|
|
|
+ * @param item
|
|
|
+ */
|
|
|
+ openFolder(item) {
|
|
|
+ console.log(item)
|
|
|
+ const data = this.$router.resolve({
|
|
|
+ path: '/home/files',
|
|
|
+ query: {
|
|
|
+ id: item.parentId,
|
|
|
+ projectId: item.projectId
|
|
|
+ }
|
|
|
+ })
|
|
|
+ window.open(data.href, '_blank')
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 打开文件
|
|
|
+ * @param row
|
|
|
+ */
|
|
|
openFile(row) {
|
|
|
const routeUrl = this.$router.resolve({
|
|
|
path: '/home/details',
|
|
|
@@ -188,20 +287,40 @@ export default {
|
|
|
})
|
|
|
window.open(routeUrl.href, '_blank')
|
|
|
},
|
|
|
- rowDel(row, index, done) {
|
|
|
- console.log(row)
|
|
|
- },
|
|
|
- beforeOpen(done, type) {
|
|
|
- if (['view'].includes(type)) {
|
|
|
- console.log(this.showInfo)
|
|
|
- } else if (type === 'edit') {
|
|
|
- this.$router.push({
|
|
|
- path: '/home/details',
|
|
|
- query: { id: this.form.id, type: '1' }
|
|
|
+ exportFile() {
|
|
|
+ console.log('export')
|
|
|
+ this.$api.store
|
|
|
+ .exportFile({ projectId: this.info.projectId })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ ElMessageBox.alert(
|
|
|
+ '智能生成文档中,生成完成后系统将会发送通知消息给您!',
|
|
|
+ ''
|
|
|
+ )
|
|
|
+ }
|
|
|
})
|
|
|
- } else {
|
|
|
- done()
|
|
|
- }
|
|
|
+ },
|
|
|
+ rowDel(row) {
|
|
|
+ ElMessageBox.confirm('确定要执行删除操作?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(res => {
|
|
|
+ if (res === 'confirm') {
|
|
|
+ const data = {
|
|
|
+ id: row.id,
|
|
|
+ projectId: row.projectId,
|
|
|
+ fileId: row.folderId
|
|
|
+ }
|
|
|
+ this.$api.store.removeFile(data).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message.success('删除成功')
|
|
|
+ } else {
|
|
|
+ this.$message.error(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|