fix: 修改物模型BUG

This commit is contained in:
wangshuaiswim 2023-03-19 21:49:01 +08:00
parent 084c43cf76
commit 9837a6a588
8 changed files with 27 additions and 15 deletions

View File

@ -5,7 +5,7 @@
<AIcon type="MenuOutlined" class="item-drag item-icon" />
</div>
<div class="item-middle item-editable">
<j-popover :visible="editIndex === index" placement="top">
<j-popover :visible="editIndex === index" placement="left">
<template #title>
<div class="edit-title" style="display: flex; justify-content: space-between; align-items: center;">
<div style="width: 150px;">枚举项配置</div>

View File

@ -87,6 +87,7 @@
<component
:is="tabs[productStore.tabActiveKey]"
:class="productStore.tabActiveKey === 'Metadata' ? 'metedata' : ''"
v-bind="{ type: 'product' }"
/>
</page-container>
</template>

View File

@ -31,7 +31,7 @@
</j-radio-group>
</j-form-item>
<j-form-item label="输入参数" name="inputs" :rules="[
{ required: true, validator: (_rule: Rule, val: Record<any, any>[]) => validateJson(_rule, val, '输入参数') },
{ validator: (_rule: Rule, val: Record<any, any>[]) => validateJson(_rule, val, '输入参数', false) },
]">
<JsonParam v-model:value="value.inputs" :name="['inputs']"></JsonParam>
</j-form-item>

View File

@ -2,7 +2,7 @@
<j-form-item :label="title" :name="name.concat(['type'])" :rules="[
required ? { required: true, message: `请选择${title}` } : {},
]">
<j-select v-model:value="_value.type"
<j-select v-model:value="_value.type" :disabled="onlyObject"
:options="onlyObject ? eventDataTypeList : _dataTypeList" size="small"
@change="changeType"></j-select>
</j-form-item>
@ -124,7 +124,7 @@ onMounted(() => {
}
})
const unit = {
const unit = reactive({
unitOptions: [] as DefaultOptionType[],
getUnit: () => {
getUnit().then(resp => {
@ -137,7 +137,7 @@ const unit = {
unit.unitOptions = _data;
})
},
}
})
unit.getUnit()
const _dataTypeList = computed(() => props.isSub ? DataTypeList.filter(item => item.value !== 'array' && item.value !== 'object') : DataTypeList)

View File

@ -2,7 +2,7 @@
<j-drawer :mask-closable="false" width="25vw" visible :title="`${title}-${typeMapping[metadataStore.model.type]}`"
@close="close" destroy-on-close :z-index="1000" placement="right">
<template #extra>
<j-button :loading="save.loading" type="primary" @click="save.saveMetadata">保存</j-button>
<j-button :loading="save.loading" type="primary" @click="() => save.saveMetadata()">保存</j-button>
</template>
<j-form ref="formRef" :model="form.model" layout="vertical">
<BaseForm :model-type="metadataStore.model.type" :type="type" v-model:value="form.model"></BaseForm>
@ -98,7 +98,7 @@ const save = reactive({
}
const _data = updateMetadata(type, [formValue], _detail, updateStore)
const result = await asyncUpdateMetadata(props.type, _data)
if (result.status === 200) {
if (result.success) {
if ((window as any).onTabSaveSuccess) {
if (result) {
(window as any).onTabSaveSuccess(result);
@ -113,7 +113,16 @@ const save = reactive({
}
// Store.set(SystemConst.REFRESH_METADATA_TABLE, true);
if (deploy) {
_deploy(id as string)
const res = await _deploy(id as string)
if (res.success) {
save.resetMetadata();
message.success({
key: 'metadata',
content: '操作成功!',
});
} else {
message.error('操作失败!');
}
// Store.set('product-deploy', deploy);
} else {
save.resetMetadata();

View File

@ -17,8 +17,8 @@ export const validateArray = async (_rule: Rule, val: Record<any, any>) => {
return Promise.resolve();
}
export const validateJson = async (_rule: Rule, val: Record<any, any>[], title = '配置参数') => {
if (!val || val.length === 0) {
export const validateJson = async (_rule: Rule, val: Record<any, any>[], title = '配置参数', required = true) => {
if (required && (!val || val.length === 0)) {
return Promise.reject(new Error(`请输入${title}`));
}
for (let item of val) {

View File

@ -39,7 +39,7 @@
<template v-if="column.dataIndex === 'action'">
<j-space>
<PermissionButton :has-permission="`${permission}:update`" type="link" key="edit" style="padding: 0"
:udisabled="operateLimits('updata', type)" @click="handleEditClick(record)" :tooltip="{
:disabled="operateLimits('updata', type)" @click="handleEditClick(record)" :tooltip="{
title: operateLimits('updata', type) ? '当前的存储方式不支持编辑' : '编辑',
}">
<AIcon type="EditOutlined" />
@ -68,7 +68,6 @@ import { useMetadataStore } from '@/store/metadata'
import PermissionButton from '@/components/PermissionButton/index.vue'
import { TablePaginationConfig, message } from 'ant-design-vue/es'
import { asyncUpdateMetadata, removeMetadata } from '../metadata'
import { detail } from '@/api/device/instance'
import Edit from './Edit/index.vue'
interface Props {
type: MetadataType;
@ -153,6 +152,9 @@ const handleAddClick = () => {
metadataStore.set('item', undefined)
metadataStore.set('type', type)
metadataStore.set('action', 'add')
if (props.target === 'device' && !instanceStore.detail?.independentMetadata) {
message.warning('修改物模型后会脱离产品物模型')
}
}
const limitsMap = new Map<string, any>();
@ -172,7 +174,7 @@ const handleEditClick = (record: MetadataItem) => {
metadataStore.model.item = record;
metadataStore.model.type = type;
metadataStore.model.action = 'edit';
if (!instanceStore.detail?.independentMetadata && props.target === 'device') {
if (props.target === 'device' && !instanceStore.detail?.independentMetadata) {
message.warning('修改物模型后会脱离产品物模型');
}
}

View File

@ -2,7 +2,7 @@
<j-card>
<div class='device-detail-metadata' style="position: relative;">
<div class="tips">
<j-tooltip :title="instanceStore.detail?.independentMetadata && type === 'device'
<j-tooltip v-if="type === 'device'" :title="instanceStore.detail?.independentMetadata && type === 'device'
? '该设备已脱离产品物模型,修改产品物模型对该设备无影响'
: '设备会默认继承产品的物模型,修改设备物模型后将脱离产品物模型'">
<div class="ellipsis">
@ -41,7 +41,7 @@
<BaseMetadata :target="type" type="tags" :permission="permission" />
</j-tab-pane>
</j-tabs>
<Import v-model:visible="visible" :type="type" @close="visible = false" />
<Import v-if="visible" v-model:visible="visible" :type="type" @close="visible = false" />
<Cat v-model:visible="cat" @close="cat = false" :type="type" />
</div>
</j-card>