From 44f051dac9ceb59774e1ead06706e97e4aea4d52 Mon Sep 17 00:00:00 2001 From: wang-liang0615 <53748875+wang-liang0615@users.noreply.github.com> Date: Mon, 11 Sep 2023 19:16:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=B1=9E=E6=80=A7=20?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E8=AE=A1=E7=AE=97=20(#174)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmdb-ui/src/modules/cmdb/api/CITypeAttr.js | 7 ++++ .../cmdb/views/ci_types/attributeCard.vue | 17 +++++++- .../cmdb/views/ci_types/attributeEditForm.vue | 39 ++++++++++++------- .../cmdb/views/ci_types/computedArea.vue | 22 +++++++++++ 4 files changed, 70 insertions(+), 15 deletions(-) diff --git a/cmdb-ui/src/modules/cmdb/api/CITypeAttr.js b/cmdb-ui/src/modules/cmdb/api/CITypeAttr.js index dd8aa99..3720c52 100644 --- a/cmdb-ui/src/modules/cmdb/api/CITypeAttr.js +++ b/cmdb-ui/src/modules/cmdb/api/CITypeAttr.js @@ -153,3 +153,10 @@ export function canDefineComputed() { method: 'HEAD', }) } + +export function calcComputedAttribute(attr_id) { + return axios({ + url: `/v0.1/attributes/${attr_id}/calc_computed_attribute`, + method: 'PUT', + }) +} diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue index b4ae78e..ab7144e 100644 --- a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue +++ b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue @@ -51,6 +51,9 @@ + + + @@ -59,7 +62,7 @@ diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue index ab8fbfc..21a3e27 100644 --- a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue +++ b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue @@ -10,7 +10,7 @@ :headerStyle="{ borderBottom: 'none' }" wrapClassName="attribute-edit-form" > - + 基础设置 @@ -343,7 +343,13 @@ name="is_password" v-decorator="['is_computed', { rules: [], valuePropName: 'checked' }]" /> - + @@ -353,7 +359,7 @@
取消 - 确定 + 确定
@@ -366,6 +372,7 @@ import { updateAttributeById, updateCITypeAttributesById, canDefineComputed, + calcComputedAttribute, } from '@/modules/cmdb/api/CITypeAttr' import { valueTypeMap } from '../../utils/const' import ComputedArea from './computedArea.vue' @@ -576,15 +583,14 @@ export default { }) }, - handleSubmit(e) { - e.preventDefault() - this.form.validateFields((err, values) => { + async handleSubmit(isCalcComputed = false) { + await this.form.validateFields(async (err, values) => { if (!err) { console.log('Received values of form: ', values) if (this.record.is_required !== values.is_required || this.record.default_show !== values.default_show) { console.log('changed is_required') - updateCITypeAttributesById(this.CITypeId, { + await updateCITypeAttributesById(this.CITypeId, { attributes: [ { attr_id: this.record.id, is_required: values.is_required, default_show: values.default_show }, ], @@ -630,19 +636,21 @@ export default { const fontOptions = this.$refs.fontArea.getData() if (values.id) { - this.updateAttribute(values.id, { ...values, option: { fontOptions } }) + await this.updateAttribute(values.id, { ...values, option: { fontOptions } }, isCalcComputed) } else { // this.createAttribute(values) } } }) }, - updateAttribute(attrId, data) { - updateAttributeById(attrId, data).then((res) => { - this.$message.success(`更新成功`) - this.handleOk() - this.onClose() - }) + async updateAttribute(attrId, data, isCalcComputed = false) { + await updateAttributeById(attrId, data) + if (isCalcComputed) { + await calcComputedAttribute(attrId) + } + this.$message.success(`更新成功`) + this.handleOk() + this.onClose() }, handleOk() { this.$emit('ok') @@ -682,6 +690,9 @@ export default { default_value: key, }) }, + async handleCalcComputed() { + await this.handleSubmit(true) + }, }, watch: {}, } diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/computedArea.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/computedArea.vue index 0cc2e8e..0f06347 100644 --- a/cmdb-ui/src/modules/cmdb/views/ci_types/computedArea.vue +++ b/cmdb-ui/src/modules/cmdb/views/ci_types/computedArea.vue @@ -8,6 +8,14 @@ 代码 + @@ -25,6 +33,10 @@ export default { type: Boolean, default: true, }, + showCalcComputed: { + type: Boolean, + default: false, + } }, data() { return { @@ -62,6 +74,16 @@ export default { this.activeKey = 'expr' } }, + handleCalcComputed() { + const that = this + this.$confirm({ + title: '警告', + content: `确认触发将保存当前配置及触发所有CI的计算?`, + onOk() { + that.$emit('handleCalcComputed') + }, + }) + }, }, }