From be9b308f56300ea7259dc5e37b91e478b957218d Mon Sep 17 00:00:00 2001 From: wang-liang0615 Date: Thu, 7 Sep 2023 10:25:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BAci=E5=8F=8A=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=97=B6=EF=BC=8C=E6=96=B0=E5=BB=BA=E5=85=B3?= =?UTF-8?q?=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmdb-ui/src/modules/cmdb/utils/helper.js | 26 ++- .../cmdb/views/batch/modules/CiTypeChoice.vue | 170 ++++++++++++++++-- .../views/batch/modules/CiUploadTable.vue | 20 ++- .../views/batch/modules/UploadFileForm.vue | 4 +- cmdb-ui/src/modules/cmdb/views/ci/index.vue | 20 ++- .../cmdb/views/ci/modules/CiDetail.vue | 10 +- .../views/ci/modules/CreateInstanceForm.vue | 43 +++++ .../views/ci/modules/ciDetailRelation.vue | 9 +- .../cmdb/views/relation_views/index.vue | 24 ++- .../modules/cmdb/views/tree_views/index.vue | 24 ++- 10 files changed, 292 insertions(+), 58 deletions(-) diff --git a/cmdb-ui/src/modules/cmdb/utils/helper.js b/cmdb-ui/src/modules/cmdb/utils/helper.js index 1ddd76fd..44de91ba 100644 --- a/cmdb-ui/src/modules/cmdb/utils/helper.js +++ b/cmdb-ui/src/modules/cmdb/utils/helper.js @@ -1,5 +1,7 @@ /* eslint-disable */ import _ from 'lodash' +import XLSX from 'xlsx' +import XLSXS from 'xlsx-js-style' export function sum(arr) { if (!arr.length) { return 0 @@ -149,4 +151,26 @@ export const toThousands = (num = 0) => { return num.toString().replace(/\d+/, function (n) { return n.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') }) -} \ No newline at end of file +} + +export const downloadExcel = (data, fileName = `${moment().format('YYYY-MM-DD HH:mm:ss')}.xls`) => { + // STEP 1: Create a new workbook + const wb = XLSXS.utils.book_new() + // STEP 2: Create data rows and styles + const rowArray = data + // STEP 3: Create worksheet with rows; Add worksheet to workbook + const ws = XLSXS.utils.aoa_to_sheet(rowArray) + XLSXS.utils.book_append_sheet(wb, ws, fileName) + + let maxColumnNumber = 1 // 默认最大列数 + rowArray.forEach(item => { if (item.length > maxColumnNumber) { maxColumnNumber = item.length } }) + + // 添加列宽 + ws['!cols'] = (rowArray[0].map(item => { + return { width: 22 } + })) + // // 添加行高 + // ws['!rows'] = [{ 'hpt': 80 }] + // STEP 4: Write Excel file to browser #导出 + XLSXS.writeFile(wb, fileName + '.xlsx') +} diff --git a/cmdb-ui/src/modules/cmdb/views/batch/modules/CiTypeChoice.vue b/cmdb-ui/src/modules/cmdb/views/batch/modules/CiTypeChoice.vue index fe9af41a..49686c7f 100644 --- a/cmdb-ui/src/modules/cmdb/views/batch/modules/CiTypeChoice.vue +++ b/cmdb-ui/src/modules/cmdb/views/batch/modules/CiTypeChoice.vue @@ -14,20 +14,83 @@ }} 下载模板 + + 模型属性 + + 全选 + +
+ + + + + {{ item.alias || item.name }} + * + + + + + +
@@ -105,3 +233,15 @@ export default { } } + + diff --git a/cmdb-ui/src/modules/cmdb/views/batch/modules/CiUploadTable.vue b/cmdb-ui/src/modules/cmdb/views/batch/modules/CiUploadTable.vue index 0d3b8aa0..4a97bb1e 100644 --- a/cmdb-ui/src/modules/cmdb/views/batch/modules/CiUploadTable.vue +++ b/cmdb-ui/src/modules/cmdb/views/batch/modules/CiUploadTable.vue @@ -40,15 +40,25 @@ export default { }, computed: { columns() { + const _columns = [] if (this.ciTypeAttrs.attributes) { - return this.ciTypeAttrs.attributes.map((item) => { - return { - title: item.alias || item.name, - field: item.alias || item.name, + _columns.push( + ...this.ciTypeAttrs.attributes.map((item) => { + return { + title: item.alias || item.name, + field: item.alias || item.name, + } + }) + ) + } + if (this.uploadData && this.uploadData.length) { + Object.keys(this.uploadData[0]).forEach((key) => { + if (key.startsWith('$')) { + _columns.push({ title: key, field: key }) } }) } - return [] + return _columns }, dataSource() { return _.cloneDeep(this.uploadData) diff --git a/cmdb-ui/src/modules/cmdb/views/batch/modules/UploadFileForm.vue b/cmdb-ui/src/modules/cmdb/views/batch/modules/UploadFileForm.vue index a258f5b6..1898ce04 100644 --- a/cmdb-ui/src/modules/cmdb/views/batch/modules/UploadFileForm.vue +++ b/cmdb-ui/src/modules/cmdb/views/batch/modules/UploadFileForm.vue @@ -4,13 +4,13 @@ ref="upload" :multiple="false" :customRequest="customRequest" - accept=".xls" + accept=".xls,.xlsx" :showUploadList="false" :fileList="fileList" >

点击或拖拽文件至此上传!

-

支持文件类型:xls

+

支持文件类型:xls,xlsx

{{ item.name }} diff --git a/cmdb-ui/src/modules/cmdb/views/ci/index.vue b/cmdb-ui/src/modules/cmdb/views/ci/index.vue index 20d7ac11..3479214c 100644 --- a/cmdb-ui/src/modules/cmdb/views/ci/index.vue +++ b/cmdb-ui/src/modules/cmdb/views/ci/index.vue @@ -209,13 +209,19 @@ +