From 3cb358495ee26ca2e776dbca079b4c2a89502f23 Mon Sep 17 00:00:00 2001 From: xiao-fajia <1665375861@qq.com> Date: Thu, 29 Aug 2024 14:42:46 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=AE=A1=E7=90=863?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/company/archives/archives.js | 24 +++ src/utils/createUUID.js | 5 - src/utils/createUniqueCode.js | 17 ++ src/utils/dict.js | 2 + .../form/PropertyDealChangeForm.vue | 2 +- .../form/PropertyDealDisposalForm.vue | 2 +- .../archives/components/ArchivesTable.vue | 122 +++++++++-- .../archives/components/ArchivesType.vue | 16 -- .../archives/form/ArchivesCatalogForm.vue | 1 - .../views/archives/form/ArchivesForm.vue | 199 ++++++++++++++++++ 10 files changed, 351 insertions(+), 39 deletions(-) create mode 100644 src/api/company/archives/archives.js delete mode 100644 src/utils/createUUID.js create mode 100644 src/utils/createUniqueCode.js delete mode 100644 src/views/knowledge/views/archives/components/ArchivesType.vue create mode 100644 src/views/knowledge/views/archives/form/ArchivesForm.vue diff --git a/src/api/company/archives/archives.js b/src/api/company/archives/archives.js new file mode 100644 index 0000000..17604bd --- /dev/null +++ b/src/api/company/archives/archives.js @@ -0,0 +1,24 @@ +import request from '@/utils/request' + +export function updateArchives(data){ + return request({ + url: "/archives/update", + method: "post", + data + }) +} + +export function queryArchivesPage(params){ + return request({ + url: "/archives/list", + method: "get", + params + }) +} + +export function removeArchivesById(id){ + return request({ + url: "/archives/remove/" + id, + method: 'delete' + }) +} diff --git a/src/utils/createUUID.js b/src/utils/createUUID.js deleted file mode 100644 index a261edd..0000000 --- a/src/utils/createUUID.js +++ /dev/null @@ -1,5 +0,0 @@ -import {v4 as uuidv4} from 'uuid' - -export function createUUID(){ - return uuidv4().replace(/-/g, '') -} diff --git a/src/utils/createUniqueCode.js b/src/utils/createUniqueCode.js new file mode 100644 index 0000000..eb411cb --- /dev/null +++ b/src/utils/createUniqueCode.js @@ -0,0 +1,17 @@ +import { v4 as uuidv4 } from 'uuid' + +export function createUUID() { + return uuidv4().replace(/-/g, '') +} + +export function createHashCodeByStr(str) { + let hash = 0 + if (str.length === 0) return hash + for (let i = 0; i < str.length; i++) { + const char = str.charCodeAt(i) + hash = ((hash << 5) - hash) + char + hash = hash & hash // 转换为32位整数 + } + // 将整数转换为16进制字符串,以缩短code长度 + return Math.abs(hash).toString(16) +} diff --git a/src/utils/dict.js b/src/utils/dict.js index 1284e6d..b8c035c 100644 --- a/src/utils/dict.js +++ b/src/utils/dict.js @@ -169,6 +169,8 @@ export const DICT_TYPE = { RESCUE_CAR_TYPE: 'rescue_car_type', // 档案分类 ARCHIVES_TYPE: 'archives_type', + // 档案项分类 + ARCHIVES_ITEM_TYPE: 'archives_item_type', } /** diff --git a/src/views/company/property/propertyDealChange/form/PropertyDealChangeForm.vue b/src/views/company/property/propertyDealChange/form/PropertyDealChangeForm.vue index 62b75f1..26a8a27 100644 --- a/src/views/company/property/propertyDealChange/form/PropertyDealChangeForm.vue +++ b/src/views/company/property/propertyDealChange/form/PropertyDealChangeForm.vue @@ -186,7 +186,7 @@ - - diff --git a/src/views/knowledge/views/archives/form/ArchivesCatalogForm.vue b/src/views/knowledge/views/archives/form/ArchivesCatalogForm.vue index e407681..7ba657a 100644 --- a/src/views/knowledge/views/archives/form/ArchivesCatalogForm.vue +++ b/src/views/knowledge/views/archives/form/ArchivesCatalogForm.vue @@ -166,7 +166,6 @@ export default { deleteRoleIds: this.formData.deleteRoleIds.join(","), createRoleIds: this.formData.createRoleIds.join(","), } - console.log(data) // 修改的提交 if (data.dataId) { await updateArchivesRoleAndDict(data) diff --git a/src/views/knowledge/views/archives/form/ArchivesForm.vue b/src/views/knowledge/views/archives/form/ArchivesForm.vue new file mode 100644 index 0000000..eeb2545 --- /dev/null +++ b/src/views/knowledge/views/archives/form/ArchivesForm.vue @@ -0,0 +1,199 @@ + + + + + From 5aa3e8b2e3eda6a39b3c07bf9f8abc297df7fadf Mon Sep 17 00:00:00 2001 From: xiao-fajia <1665375861@qq.com> Date: Thu, 29 Aug 2024 19:18:18 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=AE=A1=E7=90=863?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- src/components/FileUpload2/index.vue | 25 +++ src/utils/downloadZIP.js | 29 +++ .../archives/components/ArchivesTable.vue | 80 ++++++- .../archives/form/ArchivesCatalogForm.vue | 33 ++- .../views/archives/form/ArchivesForm.vue | 13 +- .../views/archives/form/ArchivesShowForm.vue | 199 ++++++++++++++++++ 7 files changed, 362 insertions(+), 20 deletions(-) create mode 100644 src/utils/downloadZIP.js create mode 100644 src/views/knowledge/views/archives/form/ArchivesShowForm.vue diff --git a/package.json b/package.json index 6c2d691..57ccf95 100644 --- a/package.json +++ b/package.json @@ -52,11 +52,12 @@ "dayjs": "^1.11.12", "echarts": "5.4.0", "element-ui": "2.15.12", - "file-saver": "2.0.5", + "file-saver": "^2.0.5", "fuse.js": "6.6.2", "highlight.js": "9.18.5", "js-beautify": "1.13.0", "jsencrypt": "3.3.1", + "jszip": "^3.10.1", "min-dash": "3.5.2", "nprogress": "0.2.0", "qrcode.vue": "^1.7.0", diff --git a/src/components/FileUpload2/index.vue b/src/components/FileUpload2/index.vue index e7873ad..5183ce4 100644 --- a/src/components/FileUpload2/index.vue +++ b/src/components/FileUpload2/index.vue @@ -98,8 +98,13 @@ export default { return this.isShowTip && (this.fileType || this.fileSize); }, }, + mounted(){ + //加载文件列表 + this.initFiles() + }, watch: { value(val) { + if (val) { let temp = 1; const list = Array.isArray(val)? val : this.value.split(","); @@ -116,6 +121,26 @@ export default { }, }, methods: { + /** + * 手动加载文件列表,为了解决本组件value值变化可能会出现监听不到的情况 + */ + initFiles(){ + if(this.fileList.length==0){ + // 不存在就是新增,新增时直接返回,不然要报错 + if (!this.value){ + return; + } + let temp = 1; + const list = Array.isArray(this.value)? this.value : this.value.split(","); + this.fileList = list.map((item) => { + if (typeof item === "string") { + item = { name: item, url: item }; + } + item.uid = item.uid || new Date().getTime() + temp++; + return item; + }); + } + }, handleBeforeUpload(file) { if (this.fileType.length) { const name = file.name.split("."); diff --git a/src/utils/downloadZIP.js b/src/utils/downloadZIP.js new file mode 100644 index 0000000..444554c --- /dev/null +++ b/src/utils/downloadZIP.js @@ -0,0 +1,29 @@ +import JSZip from 'jszip' +import { saveAs } from 'file-saver' + +export async function downloadFilesAsZip(fileObject) { + const zip = new JSZip() + for (const item of fileObject.files) { + try { + const response = await fetch(item.url) + if (!response.ok) { + throw new Error(`下载失败 ${item.url}: ${response.status}`) + } + const blob = await response.blob() + // 提取文件名,假设文件路径中最后一部分为文件名 + const fileName = item.name + zip.file(fileName, blob) + } catch (error) { + console.error(`下载失败 ${item.url}:`, error) + } + } + + // 生成压缩文件 + try { + const content = await zip.generateAsync({ type: 'blob' }); + // 保存压缩文件 + saveAs(content, fileObject.zipName); + } catch (error) { + console.error('生成ZIP错误', error); + } +} diff --git a/src/views/knowledge/views/archives/components/ArchivesTable.vue b/src/views/knowledge/views/archives/components/ArchivesTable.vue index 46282b1..d974eda 100644 --- a/src/views/knowledge/views/archives/components/ArchivesTable.vue +++ b/src/views/knowledge/views/archives/components/ArchivesTable.vue @@ -34,6 +34,7 @@ :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current + :default-checked-keys="[chooseData.id]" >