fix: 修改物模型BUG
This commit is contained in:
parent
084c43cf76
commit
9837a6a588
|
@ -5,7 +5,7 @@
|
||||||
<AIcon type="MenuOutlined" class="item-drag item-icon" />
|
<AIcon type="MenuOutlined" class="item-drag item-icon" />
|
||||||
</div>
|
</div>
|
||||||
<div class="item-middle item-editable">
|
<div class="item-middle item-editable">
|
||||||
<j-popover :visible="editIndex === index" placement="top">
|
<j-popover :visible="editIndex === index" placement="left">
|
||||||
<template #title>
|
<template #title>
|
||||||
<div class="edit-title" style="display: flex; justify-content: space-between; align-items: center;">
|
<div class="edit-title" style="display: flex; justify-content: space-between; align-items: center;">
|
||||||
<div style="width: 150px;">枚举项配置</div>
|
<div style="width: 150px;">枚举项配置</div>
|
||||||
|
|
|
@ -87,6 +87,7 @@
|
||||||
<component
|
<component
|
||||||
:is="tabs[productStore.tabActiveKey]"
|
:is="tabs[productStore.tabActiveKey]"
|
||||||
:class="productStore.tabActiveKey === 'Metadata' ? 'metedata' : ''"
|
:class="productStore.tabActiveKey === 'Metadata' ? 'metedata' : ''"
|
||||||
|
v-bind="{ type: 'product' }"
|
||||||
/>
|
/>
|
||||||
</page-container>
|
</page-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
</j-radio-group>
|
</j-radio-group>
|
||||||
</j-form-item>
|
</j-form-item>
|
||||||
<j-form-item label="输入参数" name="inputs" :rules="[
|
<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>
|
<JsonParam v-model:value="value.inputs" :name="['inputs']"></JsonParam>
|
||||||
</j-form-item>
|
</j-form-item>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<j-form-item :label="title" :name="name.concat(['type'])" :rules="[
|
<j-form-item :label="title" :name="name.concat(['type'])" :rules="[
|
||||||
required ? { required: true, message: `请选择${title}` } : {},
|
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"
|
:options="onlyObject ? eventDataTypeList : _dataTypeList" size="small"
|
||||||
@change="changeType"></j-select>
|
@change="changeType"></j-select>
|
||||||
</j-form-item>
|
</j-form-item>
|
||||||
|
@ -124,7 +124,7 @@ onMounted(() => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const unit = {
|
const unit = reactive({
|
||||||
unitOptions: [] as DefaultOptionType[],
|
unitOptions: [] as DefaultOptionType[],
|
||||||
getUnit: () => {
|
getUnit: () => {
|
||||||
getUnit().then(resp => {
|
getUnit().then(resp => {
|
||||||
|
@ -137,7 +137,7 @@ const unit = {
|
||||||
unit.unitOptions = _data;
|
unit.unitOptions = _data;
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
}
|
})
|
||||||
unit.getUnit()
|
unit.getUnit()
|
||||||
|
|
||||||
const _dataTypeList = computed(() => props.isSub ? DataTypeList.filter(item => item.value !== 'array' && item.value !== 'object') : DataTypeList)
|
const _dataTypeList = computed(() => props.isSub ? DataTypeList.filter(item => item.value !== 'array' && item.value !== 'object') : DataTypeList)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<j-drawer :mask-closable="false" width="25vw" visible :title="`${title}-${typeMapping[metadataStore.model.type]}`"
|
<j-drawer :mask-closable="false" width="25vw" visible :title="`${title}-${typeMapping[metadataStore.model.type]}`"
|
||||||
@close="close" destroy-on-close :z-index="1000" placement="right">
|
@close="close" destroy-on-close :z-index="1000" placement="right">
|
||||||
<template #extra>
|
<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>
|
</template>
|
||||||
<j-form ref="formRef" :model="form.model" layout="vertical">
|
<j-form ref="formRef" :model="form.model" layout="vertical">
|
||||||
<BaseForm :model-type="metadataStore.model.type" :type="type" v-model:value="form.model"></BaseForm>
|
<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 _data = updateMetadata(type, [formValue], _detail, updateStore)
|
||||||
const result = await asyncUpdateMetadata(props.type, _data)
|
const result = await asyncUpdateMetadata(props.type, _data)
|
||||||
if (result.status === 200) {
|
if (result.success) {
|
||||||
if ((window as any).onTabSaveSuccess) {
|
if ((window as any).onTabSaveSuccess) {
|
||||||
if (result) {
|
if (result) {
|
||||||
(window as any).onTabSaveSuccess(result);
|
(window as any).onTabSaveSuccess(result);
|
||||||
|
@ -113,7 +113,16 @@ const save = reactive({
|
||||||
}
|
}
|
||||||
// Store.set(SystemConst.REFRESH_METADATA_TABLE, true);
|
// Store.set(SystemConst.REFRESH_METADATA_TABLE, true);
|
||||||
if (deploy) {
|
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);
|
// Store.set('product-deploy', deploy);
|
||||||
} else {
|
} else {
|
||||||
save.resetMetadata();
|
save.resetMetadata();
|
||||||
|
|
|
@ -17,8 +17,8 @@ export const validateArray = async (_rule: Rule, val: Record<any, any>) => {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
export const validateJson = async (_rule: Rule, val: Record<any, any>[], title = '配置参数') => {
|
export const validateJson = async (_rule: Rule, val: Record<any, any>[], title = '配置参数', required = true) => {
|
||||||
if (!val || val.length === 0) {
|
if (required && (!val || val.length === 0)) {
|
||||||
return Promise.reject(new Error(`请输入${title}`));
|
return Promise.reject(new Error(`请输入${title}`));
|
||||||
}
|
}
|
||||||
for (let item of val) {
|
for (let item of val) {
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
<template v-if="column.dataIndex === 'action'">
|
<template v-if="column.dataIndex === 'action'">
|
||||||
<j-space>
|
<j-space>
|
||||||
<PermissionButton :has-permission="`${permission}:update`" type="link" key="edit" style="padding: 0"
|
<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) ? '当前的存储方式不支持编辑' : '编辑',
|
title: operateLimits('updata', type) ? '当前的存储方式不支持编辑' : '编辑',
|
||||||
}">
|
}">
|
||||||
<AIcon type="EditOutlined" />
|
<AIcon type="EditOutlined" />
|
||||||
|
@ -68,7 +68,6 @@ import { useMetadataStore } from '@/store/metadata'
|
||||||
import PermissionButton from '@/components/PermissionButton/index.vue'
|
import PermissionButton from '@/components/PermissionButton/index.vue'
|
||||||
import { TablePaginationConfig, message } from 'ant-design-vue/es'
|
import { TablePaginationConfig, message } from 'ant-design-vue/es'
|
||||||
import { asyncUpdateMetadata, removeMetadata } from '../metadata'
|
import { asyncUpdateMetadata, removeMetadata } from '../metadata'
|
||||||
import { detail } from '@/api/device/instance'
|
|
||||||
import Edit from './Edit/index.vue'
|
import Edit from './Edit/index.vue'
|
||||||
interface Props {
|
interface Props {
|
||||||
type: MetadataType;
|
type: MetadataType;
|
||||||
|
@ -153,6 +152,9 @@ const handleAddClick = () => {
|
||||||
metadataStore.set('item', undefined)
|
metadataStore.set('item', undefined)
|
||||||
metadataStore.set('type', type)
|
metadataStore.set('type', type)
|
||||||
metadataStore.set('action', 'add')
|
metadataStore.set('action', 'add')
|
||||||
|
if (props.target === 'device' && !instanceStore.detail?.independentMetadata) {
|
||||||
|
message.warning('修改物模型后会脱离产品物模型')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const limitsMap = new Map<string, any>();
|
const limitsMap = new Map<string, any>();
|
||||||
|
@ -172,7 +174,7 @@ const handleEditClick = (record: MetadataItem) => {
|
||||||
metadataStore.model.item = record;
|
metadataStore.model.item = record;
|
||||||
metadataStore.model.type = type;
|
metadataStore.model.type = type;
|
||||||
metadataStore.model.action = 'edit';
|
metadataStore.model.action = 'edit';
|
||||||
if (!instanceStore.detail?.independentMetadata && props.target === 'device') {
|
if (props.target === 'device' && !instanceStore.detail?.independentMetadata) {
|
||||||
message.warning('修改物模型后会脱离产品物模型');
|
message.warning('修改物模型后会脱离产品物模型');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<j-card>
|
<j-card>
|
||||||
<div class='device-detail-metadata' style="position: relative;">
|
<div class='device-detail-metadata' style="position: relative;">
|
||||||
<div class="tips">
|
<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">
|
<div class="ellipsis">
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
<BaseMetadata :target="type" type="tags" :permission="permission" />
|
<BaseMetadata :target="type" type="tags" :permission="permission" />
|
||||||
</j-tab-pane>
|
</j-tab-pane>
|
||||||
</j-tabs>
|
</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" />
|
<Cat v-model:visible="cat" @close="cat = false" :type="type" />
|
||||||
</div>
|
</div>
|
||||||
</j-card>
|
</j-card>
|
||||||
|
|
Loading…
Reference in New Issue