From 05ba26afc5ee6414ed7834fe2d1e43d85b53d0bc Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期六, 23 十一月 2024 15:31:28 +0800
Subject: [PATCH] 项目库基本样式完善2
---
src/views/projectEngineering/projectLibrary/index.vue | 28 ++++--
/dev/null | 29 -------
src/components/VisibilityToolbar/index.vue | 35 ++++++--
src/views/projectEngineering/component/FileDialog.vue | 107 ++++++++++----------------
4 files changed, 83 insertions(+), 116 deletions(-)
diff --git a/src/components/VisibilityToolbar/index.vue b/src/components/VisibilityToolbar/index.vue
index 4f8ff18..2773bb6 100644
--- a/src/components/VisibilityToolbar/index.vue
+++ b/src/components/VisibilityToolbar/index.vue
@@ -1,5 +1,5 @@
<template>
- <div class="top-right-btn" :style="style">
+ <div class="top-right-btn">
<el-row>
<el-tooltip v-if="search" class="item" effect="dark" :content="showSearch ? '闅愯棌鎼滅储' : '鏄剧ず鎼滅储'" placement="top">
<el-button size="small" circle icon="el-icon-search" @click="toggleSearch"></el-button>
@@ -12,12 +12,18 @@
</el-tooltip>
</el-row>
- <el-drawer :visible.sync="table" title="淇℃伅鏄鹃殣绛涢��" size="30%" append-to-body>
+ <el-drawer
+ :visible.sync="table"
+ title="淇℃伅鏄鹃殣绛涢��"
+ size="30%"
+ append-to-body
+ :wrapperCLosable="false"
+ :with-header="true">
<div slot="header">
<span>淇℃伅鏄鹃殣绛涢��</span>
</div>
- <div slot="default">
- <el-table :data="pagedColumns" style="width: 100%; height: 80%">
+ <div slot="default" style="margin-left: 20px;margin-top: 20px">
+ <el-table :data="pagedColumns" style="width: 95%; height: 80%;;margin-bottom: 40px;">
<el-table-column prop="index" label="搴忓彿" width="80"></el-table-column>
<el-table-column prop="label" label="鏁版嵁鍚嶇О"></el-table-column>
<el-table-column prop="visible" label="鏄惁鏄剧ず">
@@ -25,7 +31,8 @@
<el-switch
v-model="scope.row.visible"
class="ml-2"
- style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
@change="switchChange(scope.row)"
></el-switch>
</template>
@@ -36,7 +43,6 @@
</template>
</el-table-column>
</el-table>
-
<el-pagination
v-if="total > pageSize"
:page-size="pageSize"
@@ -46,7 +52,7 @@
@current-change="handlePageChange"
></el-pagination>
</div>
- <div slot="footer">
+ <div style="position: absolute; bottom: 0; left: 0; right: 0; padding: 20px; text-align: right;">
<el-button @click="table = false">鍙� 娑�</el-button>
<el-button type="primary" @click="resetSort">閲� 缃�</el-button>
</div>
@@ -126,10 +132,7 @@
mounted() {
this.columns.forEach((item, index) => {
if (item.visible) {
- // 娉ㄦ剰锛氳繖閲屽亣璁綾olumnRef搴旇鏄竴涓猚heckbox缁勪欢鐨勫紩鐢紝
- // 浣嗗湪Vue 2涓紝鎴戜滑鍙兘闇�瑕佸彟涓�绉嶆柟寮忔潵绠$悊checked鐘舵�侊紝
- // 鍥犱负Vue 2娌℃湁ref鐨勮嚜鍔ㄥ疄渚嬬粦瀹氾紝涓旇繖閲岀殑columnRef閫昏緫浼间箮涓嶅畬鏁存垨閿欒銆�
- // 鍙兘闇�瑕佺Щ闄ゆ垨閲嶅啓杩欓儴鍒嗛�昏緫銆�
+
}
});
},
@@ -157,4 +160,14 @@
.show-btn {
margin-left: 12px;
}
+.drawer-footer {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ padding: 20px;
+ background: #fff;
+ border-top: 1px solid #e8e8e8;
+ text-align: right;
+}
</style>
diff --git a/src/enums/fileType.js b/src/enums/fileType.js
deleted file mode 100644
index d61a14a..0000000
--- a/src/enums/fileType.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// 鏂囦欢绫诲瀷鏋氫妇
-const FileTypeEnum = {
- JPEG: 'image/jpeg',
- JPG: 'image/jpg',
- PNG: 'image/png',
- GIF: 'image/gif',
- SVG: 'image/svg+xml',
- MP4: 'video/mp4',
- AVI: 'video/x-msvideo',
- MOV: 'video/quicktime',
- MKV: 'video/x-matroska',
- WMV: 'video/x-ms-wmv',
- PDF: 'application/pdf',
- DOC: 'application/msword',
- DOCX: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
- XLS: 'application/vnd.ms-excel',
- XLSX: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- PPT: 'application/vnd.ms-powerpoint',
- PPTX: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
- TXT: 'text/plain',
- CSV: 'text/csv',
- JSON: 'application/json',
- XML: 'application/xml',
- ZIP: 'application/zip',
- RAR: 'application/x-rar-compressed',
- MP3: 'audio/mpeg',
- WAV: 'audio/wav',
- OGG: 'audio/ogg'
-};
diff --git a/src/views/projectEngineering/component/FileDialog.vue b/src/views/projectEngineering/component/FileDialog.vue
index 31395be..d06e5bd 100644
--- a/src/views/projectEngineering/component/FileDialog.vue
+++ b/src/views/projectEngineering/component/FileDialog.vue
@@ -1,3 +1,4 @@
+
<template>
<div>
<el-dialog
@@ -8,7 +9,7 @@
close-on-click-modal
@close="closeDialog"
>
- <template slot="header">
+ <template slot="title">
<span style="padding-bottom: 18px">
{{ isImportOrExport ? '璇锋寜鐓ч渶姹傚鍑虹洰鏍囧唴瀹�' : '璇锋寜鐓фā鏉挎牱寮忎笂浼犻」鐩枃浠�' }}
</span>
@@ -18,17 +19,17 @@
<el-upload
ref="uploadRef"
class="upload-demo"
- :action="upload.url"
+ :action="uploadUrl"
:limit="1"
:accept="accept"
- :headers="upload.headers"
- :disabled="upload.isUploading"
+ :headers=" uploadHeaders"
+ :disabled="uploadIsUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
- <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+ <i class="el-icon-upload"></i>
<div class="el-upload__text">璇蜂笂浼�<em>Zip</em>鏂囦欢锛屽ぇ灏忓湪<em>100M</em>浠ュ唴</div>
</el-upload>
<span>浠呭厑璁稿鍏ip鏍煎紡鏂囦欢銆�</span>
@@ -53,15 +54,10 @@
</template>
<script>
-// import UploadFilled from '@element/icons-vue/es/icons/UploadFilled.vue';
import { globalHeaders } from '@/utils/request';
-import { FileTypeEnum } from '@/enums/fileType';
export default {
name: 'FileDialog',
- // components: {
- // UploadFilled
- // },
props: {
isImportOrExport: {
type: Boolean,
@@ -82,49 +78,18 @@
return {
uploadRef: null,
targetColumn: [],
- accept: `${FileTypeEnum.ZIP}`,
- upload: {
- open: false,
- title: '',
- isUploading: false,
- updateSupport: 0,
- headers: globalHeaders(),
- url: process.env.VITE_APP_BASE_API + '/project/import'
- }
+ accept: `.zip`,
+ uploadUrl: '/project/import',
+ uploadHeaders: globalHeaders(),
+ uploadIsUploading: false
};
- },
- computed: {
- // In Vue 2, computed properties don't use setters and getters as objects.
- // Instead, you define them as functions for reading and use methods for writing.
- // However, in this case, we can use a watcher to update the prop.
- fileDialogVisible: {
- get() {
- return this.isFileDialogVisible;
- },
- set(value) {
- this.$emit('update:fileDialogVisible', value);
- }
- }
- // Note: In Vue 2, you cannot directly define a computed property with a setter for a prop.
- // Instead, you should use a watcher or a method to handle changes.
- // Since `fileDialogVisible` is a prop, we'll use a watcher to sync it with the internal state.
- // However, for simplicity, we'll rename `fileDialogVisible` to `isFileDialogVisible` in data and use a watcher.
- },
- watch: {
- fileDialogVisible(newVal) {
- this.isFileDialogVisible = newVal;
- },
- isFileDialogVisible(newVal) {
- this.$emit('update:fileDialogVisible', newVal);
- }
},
methods: {
handleFileUploadProgress() {
- this.upload.isUploading = true;
+ this.uploadIsUploading = true;
},
handleFileSuccess(response, file) {
- this.upload.open = false;
- this.upload.isUploading = false;
+ this.uploadIsUploading = false;
if (this.uploadRef) {
this.uploadRef.handleRemove(file);
}
@@ -140,24 +105,24 @@
},
handleDownloadFile() {
const self = this;
- fetch(`${process.env.VITE_APP_BASE_API}/project/export/template`, {
- method: 'GET',
- headers: self.upload.headers
- })
- .then(response => response.blob())
- .then(blob => {
- const url = window.URL.createObjectURL(blob);
- const a = document.createElement('a');
- a.style.display = 'none';
- a.href = url;
- a.download = `椤圭洰鏂囦欢妯℃澘_${new Date().getTime()}.zip`;
- document.body.appendChild(a);
- a.click();
- window.URL.revokeObjectURL(url);
- })
- .catch(error => {
- console.error('鏂囦欢涓嬭浇澶辫触:', error);
- });
+ // fetch(`${process.env.VITE_APP_BASE_API}/project/export/template`, {
+ // method: 'GET',
+ // headers: self.upload.headers
+ // })
+ // .then(response => response.blob())
+ // .then(blob => {
+ // const url = window.URL.createObjectURL(blob);
+ // const a = document.createElement('a');
+ // a.style.display = 'none';
+ // a.href = url;
+ // a.download = `椤圭洰鏂囦欢妯℃澘_${new Date().getTime()}.zip`;
+ // document.body.appendChild(a);
+ // a.click();
+ // window.URL.revokeObjectURL(url);
+ // })
+ // .catch(error => {
+ // console.error('鏂囦欢涓嬭浇澶辫触:', error);
+ // });
},
submitFileForm() {
if (this.uploadRef) {
@@ -172,8 +137,11 @@
this.targetColumn = this.currentColumns.filter(item => item.visible);
}
},
+ mounted() {
+ this.uploadRef = this.$refs.uploadRef;
+ },
created() {
- // Initialize the computed property as a data property in Vue 2
+
this.isFileDialogVisible = this.fileDialogVisible;
}
};
@@ -186,6 +154,7 @@
align-items: center;
flex-direction: column;
height: 300px;
+
.export-button {
margin-left: 0;
margin-bottom: 10px;
@@ -198,4 +167,10 @@
.upload-demo {
width: 100%;
}
+::v-deep .el-upload{
+ width: 100%;
+}
+::v-deep .el-upload .el-upload-dragger{
+ width: 100%;
+}
</style>
diff --git a/src/views/projectEngineering/projectLibrary/index.vue b/src/views/projectEngineering/projectLibrary/index.vue
index 3d16906..9abbf0d 100644
--- a/src/views/projectEngineering/projectLibrary/index.vue
+++ b/src/views/projectEngineering/projectLibrary/index.vue
@@ -164,7 +164,7 @@
</div>
<VisibilityToolbar
v-model:showSearch="showSearch"
- :columns="columnList"
+ :columns="columns"
@queryTable="handleQuery"
></VisibilityToolbar>
<!-- @update:columns="handleUpdateColumns"-->
@@ -239,27 +239,28 @@
@pagination="getList"
/>
-<!-- <FileDialog-->
-<!-- v-model:fileDialogVisible="fileDialogVisible"-->
-<!-- :isImportOrExport="isImportOrExport"-->
-<!-- @fileDialogCancel="fileDialogCancel"-->
-<!-- :currentColumns="currentColumns"-->
-<!-- />-->
+ <FileDialog
+ :fileDialogVisible.sync="fileDialogVisible"
+ :isImportOrExport="isImportOrExport"
+ @fileDialogCancel="fileDialogCancel"
+ :currentColumns="columns"
+ />
</div>
</template>
<script>
import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/projectInfo";
import { current } from './list';
-
+import FileDialog from '../component/FileDialog';
export default {
name: "projectInfo",
+ components: {
+ FileDialog
+ },
data() {
return {
isImportOrExport: false,
fileDialogVisible: false,
- //鎺у埗鏄鹃殣鐨勮〃鍗�
- columnList: [],
//鏄惁闇�瑕佹柊澧炴寜閽�(鍌ㄨ搫椤圭洰闇�瑕�)
isReserve: false,
//琛ㄥご
@@ -327,6 +328,13 @@
this.getList();
},
methods: {
+ // 鍏抽棴鏂囦欢澶勭悊寮规鐨勬柟娉�
+ fileDialogCancel() {
+ this.tableLoading = true;
+ this.fileDialogVisible = false;
+ // this.getList();
+ this.tableLoading = false;
+ },
handlePopover() {
this.popoverValue.value = !this.popoverValue.value;
},
--
Gitblit v1.8.0