From adf0b831fe152d9588a666d056e968bff2401384 Mon Sep 17 00:00:00 2001 From: hyx Date: Fri, 2 Jun 2023 14:15:00 +0800 Subject: [PATCH] =?UTF-8?q?CN-1016=20=E6=A0=B9=E6=8D=AE=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E8=BF=9B=E8=A1=8C=E7=9B=B8=E5=BA=94?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setting/KnowledgeBaseTableForRow.vue | 4 +- .../setting/knowledgeBaseTableForCard.vue | 14 +- src/mixins/data-list.js | 10 - src/mixins/table.js | 31 ++- src/views/setting/KnowledgeBase.vue | 2 +- src/views/setting/KnowledgeBaseForm.vue | 236 ++++++++++++------ src/views/setting/KnowledgeFilter.vue | 62 ++--- 7 files changed, 215 insertions(+), 144 deletions(-) diff --git a/src/components/table/setting/KnowledgeBaseTableForRow.vue b/src/components/table/setting/KnowledgeBaseTableForRow.vue index 569131dd..26645f15 100644 --- a/src/components/table/setting/KnowledgeBaseTableForRow.vue +++ b/src/components/table/setting/KnowledgeBaseTableForRow.vue @@ -71,9 +71,11 @@ @@ -426,7 +428,8 @@ export default { isClick: false, pageNoForTable: 1, listMode: 'list', - status: true + status: 1, + oldItemIds: [] } }, methods: { @@ -451,16 +454,20 @@ export default { }, handleSpeticalTypeData (originalImportedData) { originalImportedData.forEach(item => { - const names = item.tagNames - if (this.editObject.source === knowledgeSourceValue.ipTag && names) { - const format = names.addrFormat + // const names = item.tagNames + if (this.editObject.source === knowledgeSourceValue.ipTag) { + const format = item.addrFormat if (format === 'Single') { - item.tagName = names.ip1 + item.tagName = item.ip1 } else if (format === 'CIDR') { - item.tagName = names.ip1 + '/' + names.ip2 + item.tagName = item.ip1 + '/' + item.ip2 } else if (format === 'Range') { - item.tagName = names.ip1 + '~' + names.ip2 + item.tagName = item.ip1 + '~' + item.ip2 } + } else if (this.editObject.source === knowledgeSourceValue.domainTag) { + item.tagName = item.domain + } else if (this.editObject.source === knowledgeSourceValue.appTag) { + item.tagName = item.appName } }) return originalImportedData @@ -482,6 +489,9 @@ export default { this.isLoad = false originalImportedData.sort((a, b) => b.isValid - a.isValid) this.importedData = this.handleSpeticalTypeData(originalImportedData) + this.addItemList = _.cloneDeep(this.importedData) + this.updateItemList = [] + this.deleteItemIds = this.oldItemIds this.handleShowImportedData() this.addEditFlag = false @@ -499,6 +509,16 @@ export default { if (files && files.status === 'success') { this.uploaded = false this.typeSelectDisable = false + this.importedData.forEach(item => { + if (item.id) { + const delIndex = this.deleteItemIds.indexOf(item.id) + if (delIndex === -1) { + this.deleteItemIds.push(item.id) + } + } + }) + this.addItemList = [] + this.updateItemList = [] this.importedData = [] this.showImportedData = [] this.originalImportInfo = { @@ -615,6 +635,21 @@ export default { this.editTagErrorTip = '' const toRemoveIndex = (this.importedPageObj.pageNo - 1) * this.importedPageObj.pageSize + index + const delItem = this.importedData[toRemoveIndex] + if (delItem.id) { + if (this.deleteItemIds.indexOf(delItem.id) === -1) { + this.deleteItemIds.push(delItem.id) + } + const delIndex = this.updateItemList.findIndex(item => item.id === delItem.id) + if (delIndex > -1) { + this.updateItemList.splice(delIndex, 1) + } + } else { + const delIndex = this.addItemList.findIndex(item => item.tagName === delItem.tagName && item.tagValue === delItem.tagValue) + if (delIndex > -1) { + this.addItemList.splice(delIndex, 1) + } + } this.importedData.splice(toRemoveIndex, 1) // 删除内容为空的新增记录 const lastIndex = this.importedData.length - 1 @@ -700,13 +735,16 @@ export default { if (this.importedData.length === 1 && this.importedData[0].tagName === '') { // this.blockOperation.save = false } else { - const t = this.knowledgeBaseType.find(t => t.value === this.editObject.source) + const userId = localStorage.getItem(storageKey.userId) const postData = { name: this.editObject.name, category: 'user_defined', - type: t ? t.name : '', + source: this.editObject.source, description: this.editObject.description, - status: this.status ? 1 : 0 + status: this.editObject.status, + user: { + id: userId ? Number(userId) : 1 + } } // 避免点击新增后,并没有保存新增项就点击了save,此时删除新增的空白项 if (this.importedData[this.importedData.length - 1].tagName === '') { @@ -715,36 +753,7 @@ export default { const self = this if (!this.editObject.knowledgeId) { - postData.addItemList = [] - this.importedData.forEach(d => { - if (this.editObject.source === knowledgeSourceValue.ipTag) { - const sepIndex = d.tagName.indexOf('/') - if (sepIndex > -1) { // CIDR - postData.addItemList.push({ - tagValue: d.tagValue, - tagNames: { - addrFormat: 'CIDR', - ip1: d.tagName.substring(0, sepIndex), - ip2: d.tagName.substring(sepIndex + 1) - } - }) - } else { // Single - postData.addItemList.push({ - tagValue: d.tagValue, - tagNames: { - addrFormat: 'Single', - ip1: d.tagName, - ip2: '' - } - }) - } - } else { - postData.addItemList.push({ - tagValue: d.tagValue, - tagName: d.tagName - }) - } - }) + postData.addItemList = this.addItemList axios.post(this.url, postData).then(response => { if (response.data.code === 200) { this.$message({ @@ -770,36 +779,9 @@ export default { this.blockOperation.save = false }) } else { - postData.updateItemList = [] - this.importedData.forEach(d => { - if (this.editObject.source === knowledgeSourceValue.ipTag) { - const sepIndex = d.tagName.indexOf('/') - if (sepIndex > -1) { // CIDR - postData.updateItemList.push({ - tagValue: d.tagValue, - tagNames: { - addrFormat: 'CIDR', - ip1: d.tagName.substring(0, sepIndex), - ip2: d.tagName.substring(sepIndex + 1) - } - }) - } else { // Single - postData.updateItemList.push({ - tagValue: d.tagValue, - tagNames: { - addrFormat: 'Single', - ip1: d.tagName, - ip2: '' - } - }) - } - } else { - postData.updateItemList.push({ - tagValue: d.tagValue, - tagName: d.tagName - }) - } - }) + postData.updateItemList = this.updateItemList + postData.addItemList = this.addItemList + postData.deleteItemIds = this.deleteItemIds postData.knowledgeId = this.editObject.knowledgeId axios.put(this.url, postData).then(response => { if (response.data.code === 200) { @@ -880,6 +862,87 @@ export default { this.backEditFlag = false this.editTagErrorTip = '' }, + updateData (data) { + if (data) { + const updateItemIndex = this.updateItemList.findIndex(item => item.id === data.id) + if (updateItemIndex > -1) { + this.updateItemList.splice(updateItemIndex, 1, data) + } else { + let updateItemData = { + id: data.id, + tagValue: data.tagValue, + isValid: 1 + } + if (this.editObject.source === knowledgeSourceValue.ipTag) { + const sepIndex = data.tagName.indexOf('/') + if (sepIndex > -1) { // CIDR + updateItemData = { + ...updateItemData, + addrFormat: 'CIDR', + ip1: data.tagName.substring(0, sepIndex), + ip2: data.tagName.substring(sepIndex + 1) + } + } else { // Single + updateItemData = { + ...updateItemData, + addrFormat: 'Single', + ip1: data.tagName, + ip2: '' + } + } + } else if (this.editObject.source === knowledgeSourceValue.domainTag) { + updateItemData = { + ...updateItemData, + domain: data.tagName + } + } else if (this.editObject.source === knowledgeSourceValue.appTag) { + updateItemData = { + ...updateItemData, + appName: data.tagName + } + } + this.updateItemList.push(updateItemData) + } + } + }, + addData (data) { + if (data) { + const addItemIndex = this.addItemList.findIndex(item => item.tagName === data.tagName && item.tagValue === data.tagValue) + if (addItemIndex === -1) { + let addItem = data + if (this.editObject.source === knowledgeSourceValue.ipTag) { + const sepIndex = data.tagName.indexOf('/') + if (sepIndex > -1) { // CIDR + addItem = { + ...addItem, + addrFormat: 'CIDR', + ip1: data.tagName.substring(0, sepIndex), + ip2: data.tagName.substring(sepIndex + 1) + } + } else { // Single + addItem = { + ...addItem, + addrFormat: 'Single', + ip1: data.tagName, + ip2: '' + } + } + } else if (this.editObject.source === knowledgeSourceValue.domainTag) { + addItem = { + ...addItem, + domain: data.tagName + } + } else if (this.editObject.source === knowledgeSourceValue.appTag) { + addItem = { + ...addItem, + appName: data.tagName + } + } + + this.addItemList.push(addItem) + } + } + }, saveImportedData (index) { this.$refs.editForm.validate(valid => { if (valid) { @@ -895,6 +958,13 @@ export default { this.importedData[num].tagName = this.editTagForm.tagName this.importedData[num].tagValue = this.editTagForm.tagValue this.importedData[num].isValid = 1 + this.addData(this.importedData[num]) + } else { + if (findData.id) { + this.updateData(findData) + } else { + this.addData(findData) + } } this.addEditFlag = false @@ -935,9 +1005,8 @@ export default { }, computed: { uploadParams () { - const t = this.knowledgeBaseType.find(t => t.value === this.editObject.source) return { - type: t ? t.name : '' + source: this.editObject.source } }, importedTableFirstColumn () { @@ -972,16 +1041,16 @@ export default { this.stepHeights[2] = itemListHeight.hasData// 修改的时候一直是478 this.stepHeightConstant.third = itemListHeight.hasData// 修改的时候一直是478 this.isLoad = true - axios.get(`${api.knowledgeBase}/${this.knowledgeBaseId}`).then(response => { + axios.get(`${api.knowledgeBase}/${this.knowledgeBaseId}`, { params: { pageSize: -1 } }).then(response => { if (response.data.code === 200) { if (!response.data.data) { throw new Error('No data found, id: ' + this.knowledgeBaseId) } this.editObject = response.data.data - this.status = this.editObject.isValid === 1 - // this.importedData = this.revertImportedData(this.editObject.data) - this.importedData = this.handleSpeticalTypeData(this.editObject.list) - + this.importedData = this.handleSpeticalTypeData(this.editObject.itemList) + this.importedData.forEach(item => { + this.oldItemIds.push(item.id) + }) this.handleShowImportedData() this.originalImportInfo = { total: this.importedData.length, @@ -1074,7 +1143,7 @@ export default { source: 'cn_ip_tag_user_defined', description: '', updateTime: '', - status: true + status: 1 } /* 将组织后的数据还原拉平 */ const revertImportedData = (data) => { @@ -1102,6 +1171,12 @@ export default { }) // table中显示的导入的数据 const showImportedData = ref([]) + // 新增数据 + const addItemList = ref([]) + // 修改的数据 + const updateItemList = ref([]) + // 删除的数据 + const deleteItemIds = ref([]) // table分页对象 const importedPageObj = ref({ pageNo: 1, @@ -1153,6 +1228,9 @@ export default { knowledgeBaseType, importedData, showImportedData, + addItemList, + updateItemList, + deleteItemIds, importedPageObj, importedType, revertImportedData, diff --git a/src/views/setting/KnowledgeFilter.vue b/src/views/setting/KnowledgeFilter.vue index 2b68d7d6..bcf8b7e5 100644 --- a/src/views/setting/KnowledgeFilter.vue +++ b/src/views/setting/KnowledgeFilter.vue @@ -4,13 +4,13 @@ {{ $t('knowledge.filters') }}