|
@@ -1,58 +1,105 @@
|
|
<template>
|
|
<template>
|
|
<div class="system-edit-dic-container">
|
|
<div class="system-edit-dic-container">
|
|
- <el-dialog :title="(ruleForm.id !== 0 ? '修改' : '添加') + '属性定义'" v-model="isShowDialog" width="769px">
|
|
|
|
- <el-form :model="ruleForm" ref="formRef" :rules="rules" label-width="120px">
|
|
|
|
- <el-form-item label="属性定义标识" prop="key">
|
|
|
|
- <el-input v-model="ruleForm.key" placeholder="请输入属性定义标识" :disabled="ruleForm.id !== 0 ? true : false" />
|
|
|
|
|
|
+ <!-- 新增属性定义/编辑属性定义 -->
|
|
|
|
+ <el-dialog
|
|
|
|
+ :title="ruleForm.id !== 0 ? $t('message.device.dialogI18n.editPropertyDefinition') : $t('message.device.dialogI18n.addPropertyDefinition')"
|
|
|
|
+ v-model="isShowDialog"
|
|
|
|
+ width="769px"
|
|
|
|
+ >
|
|
|
|
+ <!-- 根据当前语言设置label-width -->
|
|
|
|
+ <el-form :model="ruleForm" ref="formRef" :rules="rules" :label-width="currentLocale == 'en' ? '150px' : '120px'">
|
|
|
|
+ <!-- 属性定义标识 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.propertyIdentifier')" prop="key">
|
|
|
|
+ <!-- 请输入属性定义标识 -->
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="ruleForm.key"
|
|
|
|
+ :placeholder="$t('message.device.formI18nPlaceholder.propertyIdentifier')"
|
|
|
|
+ :disabled="ruleForm.id !== 0 ? true : false"
|
|
|
|
+ />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="属性定义名称" prop="name">
|
|
|
|
- <el-input v-model.trim="ruleForm.name" placeholder="请输入属性定义名称" />
|
|
|
|
|
|
+ <!-- 属性定义名称 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.propertyName')" prop="name">
|
|
|
|
+ <!-- 请输入属性定义名称 -->
|
|
|
|
+ <el-input v-model.trim="ruleForm.name" :placeholder="$t('message.device.formI18nPlaceholder.propertyName')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="数据类型" prop="type">
|
|
|
|
- <el-select v-model="valueType.type" placeholder="请选择数据类型" @change="seletChange" :disabled="ruleForm.id !== 0 ? true : false">
|
|
|
|
- <el-option-group v-for="group in typeData" :key="group.label" :label="group.label">
|
|
|
|
- <el-option v-for="item in group.options" :key="item.type" :label="item.title" :value="item.type" />
|
|
|
|
- </el-option-group>
|
|
|
|
- </el-select>
|
|
|
|
|
|
+ <!-- 数据类型 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.dataType')" prop="type">
|
|
|
|
+ <template v-if="typeData.length > 0">
|
|
|
|
+ <!-- 请选择数据类型 -->
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="valueType.type"
|
|
|
|
+ :placeholder="$t('message.device.formI18nPlaceholder.selectDataType')"
|
|
|
|
+ @change="seletChange"
|
|
|
|
+ :disabled="ruleForm.id !== 0 ? true : false"
|
|
|
|
+ >
|
|
|
|
+ <el-option-group v-for="group in typeData" :key="group.label" :label="group.label">
|
|
|
|
+ <el-option v-for="item in group.options" :key="item.type" :label="item.title" :value="item.type" />
|
|
|
|
+ </el-option-group>
|
|
|
|
+ </el-select>
|
|
|
|
+ </template>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<!--根据数据类型输出不同表单-->
|
|
<!--根据数据类型输出不同表单-->
|
|
|
|
|
|
- <el-form-item label="精度" prop="decimals" v-if="type == 'float' || type == 'double'">
|
|
|
|
- <el-input v-model="valueType.decimals" placeholder="请输入精度" />
|
|
|
|
|
|
+ <!-- 精度 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.precision')" prop="decimals" v-if="type == 'float' || type == 'double'">
|
|
|
|
+ <!-- 请输入精度 -->
|
|
|
|
+ <el-input v-model="valueType.decimals" :placeholder="$t('message.device.formI18nPlaceholder.precision')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="单位" prop="unit" v-if="type == 'int' || type == 'long' || type == 'float' || type == 'double'">
|
|
|
|
- <el-input v-model="valueType.unit" placeholder="请输入单位" />
|
|
|
|
|
|
+ <!-- 单位 -->
|
|
|
|
+ <el-form-item
|
|
|
|
+ :label="$t('message.device.formI18nLabel.unit')"
|
|
|
|
+ prop="unit"
|
|
|
|
+ v-if="type == 'int' || type == 'long' || type == 'float' || type == 'double'"
|
|
|
|
+ >
|
|
|
|
+ <!-- 请输入单位 -->
|
|
|
|
+ <el-input v-model="valueType.unit" :placeholder="$t('message.device.formI18nPlaceholder.inputUnit')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="最大长度" prop="maxLength" v-if="type == 'string'">
|
|
|
|
- <el-input v-model="valueType.maxLength" placeholder="请输入最大长度" />
|
|
|
|
|
|
+ <!-- 最大长度 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.maxLength')" prop="maxLength" v-if="type == 'string'">
|
|
|
|
+ <!-- 请输入最大长度 -->
|
|
|
|
+ <el-input v-model="valueType.maxLength" :placeholder="$t('message.device.formI18nPlaceholder.inputMaxLength')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="时间格式" prop="maxLength" v-if="type == 'date'">
|
|
|
|
- <el-input v-model="valueType.maxLength" placeholder="请输入时间格式" />
|
|
|
|
|
|
+ <!-- 时间格式 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.timeFormat')" prop="maxLength" v-if="type == 'date'">
|
|
|
|
+ <!-- 请输入时间格式 -->
|
|
|
|
+ <el-input v-model="valueType.maxLength" :placeholder="$t('message.device.formI18nPlaceholder.inputTimeFormat')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="布尔值" prop="trueText" v-if="type == 'boolean'">
|
|
|
|
|
|
+ <!-- 布尔值 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.booleanValue')" prop="trueText" v-if="type == 'boolean'">
|
|
<div class="input-box flex-row">
|
|
<div class="input-box flex-row">
|
|
- <el-input v-model="valueType.trueText" placeholder="请输入true时显示的文字" /><span style="margin: 0px 10px">~</span>
|
|
|
|
- <el-input v-model="valueType.trueValue" placeholder="请输入布尔值" disabled />
|
|
|
|
|
|
+ <!-- 请输入true时显示的文字 -->
|
|
|
|
+ <el-input v-model="valueType.trueText" :placeholder="$t('message.device.formI18nPlaceholder.inputTrueText')" /><span
|
|
|
|
+ style="margin: 0px 10px"
|
|
|
|
+ >~</span
|
|
|
|
+ >
|
|
|
|
+ <!-- 请输入布尔值 -->
|
|
|
|
+ <el-input v-model="valueType.trueValue" :placeholder="$t('message.device.formI18nPlaceholder.inputBooleanValue')" disabled />
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="input-box flex-row">
|
|
<div class="input-box flex-row">
|
|
- <el-input v-model="valueType.falseText" placeholder="请输入false时显示的文字" /> <span style="margin: 0px 10px">~</span>
|
|
|
|
- <el-input v-model="valueType.falseValue" placeholder="请输入布尔值" disabled />
|
|
|
|
|
|
+ <!-- 请输入false时显示的文字 -->
|
|
|
|
+ <el-input v-model="valueType.falseText" :placeholder="$t('message.device.formI18nPlaceholder.inputFalseText')" />
|
|
|
|
+ <span style="margin: 0px 10px">~</span>
|
|
|
|
+ <!-- 请输入布尔值 -->
|
|
|
|
+ <el-input v-model="valueType.falseValue" :placeholder="$t('message.device.formI18nPlaceholder.inputBooleanValue')" disabled />
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="枚举项" prop="maxLength" v-if="type == 'enum'">
|
|
|
|
|
|
+ <!-- 枚举项 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.enumItems')" prop="maxLength" v-if="type == 'enum'">
|
|
<div class="input-box flex-row" v-for="(item, index) in enumdata" :key="index">
|
|
<div class="input-box flex-row" v-for="(item, index) in enumdata" :key="index">
|
|
- <el-input v-model="item.text" placeholder="请输入枚举文本" /><span style="margin: 0px 10px"><el-icon>
|
|
|
|
- <Right />
|
|
|
|
- </el-icon></span>
|
|
|
|
- <el-input v-model="item.value" placeholder="请输入枚举值" />
|
|
|
|
|
|
+ <!-- 请输入枚举文本 -->
|
|
|
|
+ <el-input v-model="item.text" :placeholder="$t('message.device.formI18nPlaceholder.inputEnumText')" /><span style="margin: 0px 10px"
|
|
|
|
+ ><el-icon> <Right /> </el-icon
|
|
|
|
+ ></span>
|
|
|
|
+ <!-- 请输入枚举值 -->
|
|
|
|
+ <el-input v-model="item.value" :placeholder="$t('message.device.formI18nPlaceholder.inputEnumValue')" />
|
|
<div class="input-option">
|
|
<div class="input-option">
|
|
<el-icon @click="addEnum" v-if="index == 0">
|
|
<el-icon @click="addEnum" v-if="index == 0">
|
|
<Plus />
|
|
<Plus />
|
|
@@ -64,15 +111,20 @@
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="JSON对象" prop="maxLength" v-if="type == 'object'">
|
|
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.jsonObject')" prop="maxLength" v-if="type == 'object'">
|
|
<div v-for="(item, index) in jsondata" :key="index" class="jslist">
|
|
<div v-for="(item, index) in jsondata" :key="index" class="jslist">
|
|
<div class="jsonlist">
|
|
<div class="jsonlist">
|
|
- <div>参数标识:{{ item.key }}</div>
|
|
|
|
- <div>参数名称:{{ item.name }}</div>
|
|
|
|
- <div>数据类型:{{ item.valueType.type }}</div>
|
|
|
|
|
|
+ <!-- 参数标识:{{ item.key }} -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nLabel.parameterIdentifier') }}:{{ item.key }}</div>
|
|
|
|
+ <!-- 参数名称:{{ item.name }} -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nLabel.parameterName') }}:{{ item.name }}</div>
|
|
|
|
+ <!-- 数据类型:{{ item.valueType.type }} -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nLabel.dataType') }}:{{ item.valueType.type }}</div>
|
|
<div class="jsonoption">
|
|
<div class="jsonoption">
|
|
- <el-link type="primary" @click="editjson(index)">编辑</el-link>
|
|
|
|
- <el-link type="primary" @click="deljson(index)">删除</el-link>
|
|
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <el-link type="primary" @click="editjson(index)">{{ $t('message.tableI18nAction.edit') }}</el-link>
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-link type="primary" @click="deljson(index)">{{ $t('message.tableI18nAction.delete') }}</el-link>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -82,54 +134,81 @@
|
|
<el-icon>
|
|
<el-icon>
|
|
<Plus />
|
|
<Plus />
|
|
</el-icon>
|
|
</el-icon>
|
|
- <div>添加参数</div>
|
|
|
|
|
|
+ <!-- 添加参数 -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nButton.addParameter') }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<div v-if="type == 'array'">
|
|
<div v-if="type == 'array'">
|
|
- <el-form-item label="元素类型" prop="types">
|
|
|
|
- <el-select v-model="elementType.type" placeholder="请选择元素类型" @change="seletChanges">
|
|
|
|
|
|
+ <!-- 元素类型 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.elementType')" prop="types">
|
|
|
|
+ <!-- 请选择元素类型 -->
|
|
|
|
+ <el-select v-model="elementType.type" :placeholder="$t('message.device.formI18nPlaceholder.selectElementType')" @change="seletChanges">
|
|
<el-option-group v-for="group in typeData" :key="group.label" :label="group.label">
|
|
<el-option-group v-for="group in typeData" :key="group.label" :label="group.label">
|
|
<el-option v-for="item in group.options" :key="item.type" :label="item.title" :value="item.type" :disabled="item.type == 'array'" />
|
|
<el-option v-for="item in group.options" :key="item.type" :label="item.title" :value="item.type" :disabled="item.type == 'array'" />
|
|
</el-option-group>
|
|
</el-option-group>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="精度" prop="decimals" v-if="types == 'float' || types == 'double'">
|
|
|
|
- <el-input v-model="elementType.decimals" placeholder="请输入精度" />
|
|
|
|
|
|
+ <!-- 精度 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.precision')" prop="decimals" v-if="types == 'float' || types == 'double'">
|
|
|
|
+ <!-- 请输入精度 -->
|
|
|
|
+ <el-input v-model="elementType.decimals" :placeholder="$t('message.device.formI18nPlaceholder.inputPrecision')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="单位" prop="unit" v-if="types == 'int' || types == 'long' || types == 'float' || types == 'double'">
|
|
|
|
- <el-input v-model="elementType.unit" placeholder="请输入单位" />
|
|
|
|
|
|
+ <!-- 单位 -->
|
|
|
|
+ <el-form-item
|
|
|
|
+ :label="$t('message.device.formI18nLabel.unit')"
|
|
|
|
+ prop="unit"
|
|
|
|
+ v-if="types == 'int' || types == 'long' || types == 'float' || types == 'double'"
|
|
|
|
+ >
|
|
|
|
+ <!-- 请输入单位 -->
|
|
|
|
+ <el-input v-model="elementType.unit" :placeholder="$t('message.device.formI18nPlaceholder.inputUnit')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="最大长度" prop="maxLength" v-if="types == 'string'">
|
|
|
|
- <el-input v-model="elementType.maxLength" placeholder="请输入最大长度" />
|
|
|
|
|
|
+ <!-- 最大长度 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.maxLength')" prop="maxLength" v-if="types == 'string'">
|
|
|
|
+ <!-- 请输入最大长度 -->
|
|
|
|
+ <el-input v-model="elementType.maxLength" :placeholder="$t('message.device.formI18nPlaceholder.inputMaxLength')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="时间格式" prop="maxLength" v-if="types == 'date'">
|
|
|
|
- <el-input v-model="elementType.maxLength" placeholder="请输入时间格式" />
|
|
|
|
|
|
+ <!-- 时间格式 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.timeFormat')" prop="maxLength" v-if="types == 'date'">
|
|
|
|
+ <!-- 请输入时间格式 -->
|
|
|
|
+ <el-input v-model="elementType.maxLength" :placeholder="$t('message.device.formI18nPlaceholder.inputTimeFormat')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="布尔值" prop="maxLength" v-if="types == 'boolean'">
|
|
|
|
|
|
+ <!-- 布尔值 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.booleanValue')" prop="maxLength" v-if="types == 'boolean'">
|
|
<div class="input-box flex-row">
|
|
<div class="input-box flex-row">
|
|
- <el-input v-model="elementType.trueText" placeholder="请输入true时显示的文字" /><span style="margin: 0px 10px">~</span>
|
|
|
|
- <el-input v-model="elementType.trueValue" placeholder="请输入布尔值" disabled />
|
|
|
|
|
|
+ <!-- 请输入true时显示的文字 -->
|
|
|
|
+ <el-input v-model="elementType.trueText" :placeholder="$t('message.device.formI18nPlaceholder.inputTrueText')" /><span
|
|
|
|
+ style="margin: 0px 10px"
|
|
|
|
+ >~</span
|
|
|
|
+ >
|
|
|
|
+ <!-- 请输入布尔值 -->
|
|
|
|
+ <el-input v-model="elementType.trueValue" :placeholder="$t('message.device.formI18nPlaceholder.inputBooleanValue')" disabled />
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="input-box flex-row">
|
|
<div class="input-box flex-row">
|
|
- <el-input v-model="elementType.falseText" placeholder="请输入false时显示的文字" /> <span style="margin: 0px 10px">~</span>
|
|
|
|
- <el-input v-model="elementType.falseValue" placeholder="请输入布尔值" disabled />
|
|
|
|
|
|
+ <!-- 请输入false时显示的文字 -->
|
|
|
|
+ <el-input v-model="elementType.falseText" :placeholder="$t('message.device.formI18nPlaceholder.inputFalseText')" />
|
|
|
|
+ <span style="margin: 0px 10px">~</span>
|
|
|
|
+ <!-- 请输入布尔值 -->
|
|
|
|
+ <el-input v-model="elementType.falseValue" :placeholder="$t('message.device.formI18nPlaceholder.inputBooleanValue')" disabled />
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="枚举项" prop="maxLength" v-if="types == 'enum'">
|
|
|
|
|
|
+ <!-- 枚举项 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.enumItems')" prop="maxLength" v-if="types == 'enum'">
|
|
<div class="input-box flex-row" v-for="(item, index) in enumdata" :key="index">
|
|
<div class="input-box flex-row" v-for="(item, index) in enumdata" :key="index">
|
|
- <el-input v-model="item.text" placeholder="请输入枚举文本" /><span style="margin: 0px 10px"><el-icon>
|
|
|
|
- <Right />
|
|
|
|
- </el-icon></span>
|
|
|
|
- <el-input v-model="item.value" placeholder="请输入枚举值" />
|
|
|
|
|
|
+ <!-- 请输入枚举文本 -->
|
|
|
|
+ <el-input v-model="item.text" :placeholder="$t('message.device.formI18nPlaceholder.inputEnumText')" /><span style="margin: 0px 10px"
|
|
|
|
+ ><el-icon> <Right /> </el-icon
|
|
|
|
+ ></span>
|
|
|
|
+ <!-- 请输入枚举值 -->
|
|
|
|
+ <el-input v-model="item.value" :placeholder="$t('message.device.formI18nPlaceholder.inputEnumValue')" />
|
|
<div class="input-option">
|
|
<div class="input-option">
|
|
<el-icon @click="addEnum" v-if="index == 0">
|
|
<el-icon @click="addEnum" v-if="index == 0">
|
|
<Plus />
|
|
<Plus />
|
|
@@ -142,16 +221,20 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
-
|
|
|
|
- <el-form-item label="JSON对象" prop="maxLength" v-if="types == 'object'">
|
|
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.jsonObject')" prop="maxLength" v-if="types == 'object'">
|
|
<div v-for="(item, index) in jsondata" :key="index" class="jslist">
|
|
<div v-for="(item, index) in jsondata" :key="index" class="jslist">
|
|
<div class="jsonlist">
|
|
<div class="jsonlist">
|
|
- <div>参数标识:{{ item.key }}</div>
|
|
|
|
- <div>参数名称:{{ item.name }}</div>
|
|
|
|
- <div>数据类型:{{ item.valueType.type }}</div>
|
|
|
|
|
|
+ <!-- 参数标识:{{ item.key }} -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nLabel.parameterIdentifier') }}:{{ item.key }}</div>
|
|
|
|
+ <!-- 参数名称:{{ item.name }} -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nLabel.parameterName') }}:{{ item.name }}</div>
|
|
|
|
+ <!-- 数据类型:{{ item.valueType.type }} -->
|
|
|
|
+ <div>{{ $t('message.device.formI18nLabel.dataType') }}:{{ item.valueType.type }}</div>
|
|
<div class="jsonoption">
|
|
<div class="jsonoption">
|
|
- <el-link type="primary" @click="editjson(index)">编辑</el-link>
|
|
|
|
- <el-link type="primary" @click="deljson(index)">删除</el-link>
|
|
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <el-link type="primary" @click="editjson(index)">{{ $t('message.tableI18nAction.edit') }}</el-link>
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-link type="primary" @click="deljson(index)">{{ $t('message.tableI18nAction.delete') }}</el-link>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -161,27 +244,36 @@
|
|
<el-icon>
|
|
<el-icon>
|
|
<Plus />
|
|
<Plus />
|
|
</el-icon>
|
|
</el-icon>
|
|
- <div>添加参数</div>
|
|
|
|
|
|
+ <!-- 添加参数 -->
|
|
|
|
+ <div>{{ $t('message.tableI18nAction.addParameter') }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<!--根据数据类型输出不同表单-->
|
|
<!--根据数据类型输出不同表单-->
|
|
-
|
|
|
|
- <el-form-item label="是否只读" prop="accessMode">
|
|
|
|
|
|
+ <!-- 是否只读 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.isReadOnly')" prop="accessMode">
|
|
<el-radio-group v-model="ruleForm.accessMode">
|
|
<el-radio-group v-model="ruleForm.accessMode">
|
|
- <el-radio :label="1">只读</el-radio>
|
|
|
|
- <el-radio :label="0">读写</el-radio>
|
|
|
|
|
|
+ <!-- 1:只读 -->
|
|
|
|
+ <el-radio :label="1">{{ $t('message.device.formI18nOption.readonly') }}</el-radio>
|
|
|
|
+ <!-- 0:读写 -->
|
|
|
|
+ <el-radio :label="0">{{ $t('message.device.formI18nOption.readWrite') }}</el-radio>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="属性定义描述" prop="desc">
|
|
|
|
- <el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入属性定义描述"></el-input>
|
|
|
|
|
|
+ <!-- 属性定义描述 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.formI18nLabel.propertyDescription')" prop="desc">
|
|
|
|
+ <!-- 请输入属性定义描述 -->
|
|
|
|
+ <el-input v-model="ruleForm.desc" type="textarea" :placeholder="$t('message.device.formI18nPlaceholder.inputDescription')"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<template #footer>
|
|
<template #footer>
|
|
<span class="dialog-footer">
|
|
<span class="dialog-footer">
|
|
- <el-button @click="onCancel">取 消</el-button>
|
|
|
|
- <el-button type="primary" @click="onSubmit">{{ ruleForm.id !== 0 ? '修 改' : '添 加' }}</el-button>
|
|
|
|
|
|
+ <!-- 取消 -->
|
|
|
|
+ <el-button @click="onCancel">{{ $t('message.tableI18nAction.cancel') }}</el-button>
|
|
|
|
+ <!-- 编辑/添加 -->
|
|
|
|
+ <el-button type="primary" @click="onSubmit">{{
|
|
|
|
+ ruleForm.id !== 0 ? $t('message.tableI18nAction.edit') : $t('message.tableI18nAction.add')
|
|
|
|
+ }}</el-button>
|
|
</span>
|
|
</span>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
@@ -189,32 +281,23 @@
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
-<script lang="ts">
|
|
|
|
-import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
|
|
|
|
-import api from '/@/api/device';
|
|
|
|
-import { Plus, Minus, Right } from '@element-plus/icons-vue';
|
|
|
|
-import EditOption from './editOption.vue';
|
|
|
|
-import { ElMessage } from 'element-plus';
|
|
|
|
-import { validateNoSpace } from '/@/utils/validator';
|
|
|
|
-
|
|
|
|
-interface RuleFormState {
|
|
|
|
- id: number;
|
|
|
|
- productKey: string;
|
|
|
|
- deviceKey: string;
|
|
|
|
- name: string;
|
|
|
|
- dictType: string;
|
|
|
|
- valueType: Object;
|
|
|
|
- status: number;
|
|
|
|
- desc: string;
|
|
|
|
-}
|
|
|
|
-interface DicState {
|
|
|
|
- isShowDialog: boolean;
|
|
|
|
- ruleForm: RuleFormState;
|
|
|
|
- typeData: RuleFormState[];
|
|
|
|
- rules: {};
|
|
|
|
-}
|
|
|
|
|
|
+<script lang="ts" setup>
|
|
|
|
+import { computed, ref, unref } from 'vue'
|
|
|
|
+import api from '/@/api/device'
|
|
|
|
+import { Plus, Minus, Right } from '@element-plus/icons-vue'
|
|
|
|
+import EditOption from './editOption.vue'
|
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
|
+import { validateNoSpace } from '/@/utils/validator'
|
|
|
|
+import { useI18n } from 'vue-i18n'
|
|
|
|
+
|
|
|
|
+// 国际化
|
|
|
|
+const { locale, t } = useI18n()
|
|
|
|
|
|
-const valueType = {
|
|
|
|
|
|
+const currentLocale = computed(() => locale.value)
|
|
|
|
+
|
|
|
|
+const emit = defineEmits(['typeList'])
|
|
|
|
+
|
|
|
|
+const valueTypeModule = {
|
|
type: '',
|
|
type: '',
|
|
maxLength: '',
|
|
maxLength: '',
|
|
trueText: '是',
|
|
trueText: '是',
|
|
@@ -223,268 +306,248 @@ const valueType = {
|
|
falseValue: false,
|
|
falseValue: false,
|
|
}
|
|
}
|
|
|
|
|
|
-export default defineComponent({
|
|
|
|
- name: 'deviceEditPro',
|
|
|
|
- components: { Plus, Minus, Right, EditOption },
|
|
|
|
- setup(prop, { emit }) {
|
|
|
|
- const formRef = ref<HTMLElement | null>(null);
|
|
|
|
- const editOptionRef = ref();
|
|
|
|
- const state = reactive<DicState>({
|
|
|
|
- isShowDialog: false,
|
|
|
|
- typeData: [], //
|
|
|
|
- type: '',
|
|
|
|
- types: '',
|
|
|
|
- productKey: '',
|
|
|
|
- valueType: JSON.parse(JSON.stringify(valueType)),
|
|
|
|
- elementType: JSON.parse(JSON.stringify(valueType)),
|
|
|
|
- enumdata: [
|
|
|
|
- {
|
|
|
|
- text: '',
|
|
|
|
- value: '',
|
|
|
|
- },
|
|
|
|
- ],
|
|
|
|
-
|
|
|
|
- jsondata: [],
|
|
|
|
-
|
|
|
|
- ruleForm: {
|
|
|
|
- id: 0,
|
|
|
|
- productKey: '',
|
|
|
|
- deviceKey: '',
|
|
|
|
- name: '',
|
|
|
|
- key: '',
|
|
|
|
- transportProtocol: '',
|
|
|
|
- accessMode: 1,
|
|
|
|
- status: 1,
|
|
|
|
- valueType: JSON.parse(JSON.stringify(valueType)),
|
|
|
|
- desc: '',
|
|
|
|
- },
|
|
|
|
- rules: {
|
|
|
|
- name: [{ required: true, message: '属性定义名称不能为空', trigger: 'blur' },
|
|
|
|
- { max: 32, message: '属性定义名称不能超过32个字符', trigger: 'blur' },
|
|
|
|
- { validator: validateNoSpace, message: '属性定义名称不能包含空格', trigger: 'blur' }
|
|
|
|
- ],
|
|
|
|
- key: [{ required: true, message: '属性定义标识不能为空', trigger: 'blur' }],
|
|
|
|
- accessMode: [{ required: true, message: '请选择是否只读', trigger: 'blur' }],
|
|
|
|
- type: [{ required: true, message: '请选择数据类型', trigger: 'blur' }],
|
|
|
|
- },
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- // 打开弹窗
|
|
|
|
- const openDialog = (row: RuleFormState | null, productKey: string | null) => {
|
|
|
|
- resetForm();
|
|
|
|
-
|
|
|
|
- api.product.getDataType({ status: -1 }).then((res: any) => {
|
|
|
|
- const datat = Object.values(res.dataType);
|
|
|
|
- datat.forEach((item, index) => {
|
|
|
|
- if (index == 0) {
|
|
|
|
- datat[index]['label'] = '基础类型';
|
|
|
|
- datat[index]['options'] = item;
|
|
|
|
- } else {
|
|
|
|
- datat[index]['label'] = '扩展类型';
|
|
|
|
- datat[index]['options'] = item;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- state.typeData = datat || [];
|
|
|
|
- });
|
|
|
|
- state.ruleForm = row;
|
|
|
|
- if (row.valueType) {
|
|
|
|
- state.ruleForm = row;
|
|
|
|
-
|
|
|
|
- state.productKey = productKey;
|
|
|
|
- state.deviceKey = row.deviceKey;
|
|
|
|
- state.valueType = row.valueType;
|
|
|
|
- state.ruleForm.valueType.type = row.valueType.type;
|
|
|
|
- state.ruleForm.type = row.valueType.type;
|
|
|
|
- state.type = row.valueType.type;
|
|
|
|
- state.ruleForm.accessMode = row.accessMode;
|
|
|
|
- if (row.valueType.elementType) {
|
|
|
|
- state.elementType = row.valueType.elementType;
|
|
|
|
- state.types = row.valueType.elementType.type;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (row.type == 'enum') {
|
|
|
|
- state.enumdata = row.valueType.elements;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (row.type == 'object') {
|
|
|
|
- state.jsondata = JSON.parse(JSON.stringify(row.valueType.properties));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (row.type == 'array' && state.types == 'enum') {
|
|
|
|
- state.enumdata = row.valueType.elementType.elements
|
|
|
|
- }
|
|
|
|
- if (row.type == 'array' && state.types == 'object') {
|
|
|
|
- state.jsondata = JSON.parse(JSON.stringify(row.valueType.elementType.properties));
|
|
|
|
- }
|
|
|
|
|
|
+const formRef = ref<HTMLElement | null>(null)
|
|
|
|
+const editOptionRef = ref()
|
|
|
|
+const rules = computed(() => ({
|
|
|
|
+ name: [
|
|
|
|
+ // 属性定义名称不能为空
|
|
|
|
+ { required: true, message: t('message.device.rules.propertyName'), trigger: 'blur' },
|
|
|
|
+ // 属性定义名称不能超过32个字符
|
|
|
|
+ { max: 32, message: t('message.device.rules.propertyNameMax32'), trigger: 'blur' },
|
|
|
|
+ // 属性定义名称不能包含空格
|
|
|
|
+ { validator: validateNoSpace, message: t('message.device.rules.propertyNameValidator'), trigger: 'blur' },
|
|
|
|
+ ],
|
|
|
|
+ // 属性定义标识不能为空
|
|
|
|
+ key: [{ required: true, message: t('message.device.rules.propertyKey'), trigger: 'blur' }],
|
|
|
|
+ // 请选择是否只读
|
|
|
|
+ accessMode: [{ required: true, message: t('message.device.rules.accessMode'), trigger: 'blur' }],
|
|
|
|
+ // 请选择数据类型
|
|
|
|
+ type: [{ required: true, message: t('message.device.rules.selectDataType'), trigger: 'blur' }],
|
|
|
|
+}))
|
|
|
|
+const ruleForm = ref<any>({
|
|
|
|
+ id: 0,
|
|
|
|
+ productKey: '',
|
|
|
|
+ deviceKey: '',
|
|
|
|
+ name: '',
|
|
|
|
+ key: '',
|
|
|
|
+ transportProtocol: '',
|
|
|
|
+ accessMode: 1,
|
|
|
|
+ status: 1,
|
|
|
|
+ valueType: JSON.parse(JSON.stringify(valueTypeModule)),
|
|
|
|
+ desc: '',
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const jsondata = ref<any>([])
|
|
|
|
+const isShowDialog = ref(false)
|
|
|
|
+const elementType = ref(JSON.parse(JSON.stringify(valueTypeModule)))
|
|
|
|
+const valueType = ref(JSON.parse(JSON.stringify(valueTypeModule)))
|
|
|
|
+const typeData = ref([])
|
|
|
|
+const enumdata = ref([
|
|
|
|
+ {
|
|
|
|
+ text: '',
|
|
|
|
+ value: '',
|
|
|
|
+ },
|
|
|
|
+])
|
|
|
|
+const type = ref('')
|
|
|
|
+const types = ref('')
|
|
|
|
+const productKey = ref<any>('')
|
|
|
|
+
|
|
|
|
+// 打开弹窗
|
|
|
|
+const openDialog = (row: any, productKeys: string | null) => {
|
|
|
|
+ resetForm()
|
|
|
|
+
|
|
|
|
+ api.product.getDataType({ status: -1 }).then((res: any) => {
|
|
|
|
+ const datat: any = Object.values(res.dataType)
|
|
|
|
+ datat.forEach((item: any, index: any) => {
|
|
|
|
+ if (index == 0) {
|
|
|
|
+ datat[index]['label'] = t('message.device.baseType')
|
|
|
|
+ datat[index]['options'] = item
|
|
|
|
+ } else {
|
|
|
|
+ datat[index]['label'] = t('message.device.extensionType')
|
|
|
|
+ datat[index]['options'] = item
|
|
}
|
|
}
|
|
|
|
+ })
|
|
|
|
+ typeData.value = datat || []
|
|
|
|
+ })
|
|
|
|
+ ruleForm.value = row
|
|
|
|
+ if (row.valueType) {
|
|
|
|
+ ruleForm.value = row
|
|
|
|
+
|
|
|
|
+ productKey.value = productKeys
|
|
|
|
+ // deviceKey.value = row.deviceKey
|
|
|
|
+ valueType.value = row.valueType
|
|
|
|
+ ruleForm.value.valueType.type = row.valueType.type
|
|
|
|
+ ruleForm.value.type = row.valueType.type
|
|
|
|
+ type.value = row.valueType.type
|
|
|
|
+ ruleForm.value.accessMode = row.accessMode
|
|
|
|
+ if (row.valueType.elementType) {
|
|
|
|
+ elementType.value = row.valueType.elementType
|
|
|
|
+ types.value = row.valueType.elementType.type
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ if (row.type == 'enum') {
|
|
|
|
+ enumdata.value = row.valueType.elements
|
|
|
|
+ }
|
|
|
|
|
|
- state.isShowDialog = true;
|
|
|
|
- };
|
|
|
|
- const resetForm = () => {
|
|
|
|
- state.ruleForm = {
|
|
|
|
- name: '',
|
|
|
|
- key: '',
|
|
|
|
- transportProtocol: '',
|
|
|
|
- accessMode: 1,
|
|
|
|
- status: 1,
|
|
|
|
- valueType: JSON.parse(JSON.stringify(valueType)),
|
|
|
|
- desc: '',
|
|
|
|
-
|
|
|
|
- };
|
|
|
|
- state.type = '';
|
|
|
|
- state.types = '';
|
|
|
|
- state.valueType = JSON.parse(JSON.stringify(valueType));
|
|
|
|
- state.elementType = JSON.parse(JSON.stringify(valueType));
|
|
|
|
- state.jsondata = [];
|
|
|
|
- state.enumdata = [{
|
|
|
|
- text: '',
|
|
|
|
- value: '',
|
|
|
|
- },];
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- const seletChange = (val) => {
|
|
|
|
- state.type = val;
|
|
|
|
- state.ruleForm.type = val;
|
|
|
|
- };
|
|
|
|
- const seletChanges = (val) => {
|
|
|
|
- state.types = val;
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- const addEnum = () => {
|
|
|
|
- state.enumdata.push({
|
|
|
|
- text: '',
|
|
|
|
- value: '',
|
|
|
|
- });
|
|
|
|
- };
|
|
|
|
- const delEnum = (index) => {
|
|
|
|
- state.enumdata.splice(index, 1);
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- const editjson = (index) => {
|
|
|
|
-
|
|
|
|
- editOptionRef.value.openDialog(state.jsondata[index]);
|
|
|
|
|
|
+ if (row.type == 'object') {
|
|
|
|
+ jsondata.value = JSON.parse(JSON.stringify(row.valueType.properties))
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ if (row.type == 'array' && types.value == 'enum') {
|
|
|
|
+ enumdata.value = row.valueType.elementType.elements
|
|
}
|
|
}
|
|
- const deljson = (index) => {
|
|
|
|
- state.jsondata.splice(index, 1);
|
|
|
|
|
|
+ if (row.type == 'array' && types.value == 'object') {
|
|
|
|
+ jsondata.value = JSON.parse(JSON.stringify(row.valueType.elementType.properties))
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- const addJson = () => {
|
|
|
|
- editOptionRef.value.openDialog({ productKey: '', id: 0 });
|
|
|
|
- };
|
|
|
|
- const getOptionData = (data) => {
|
|
|
|
- state.jsondata.push(data);
|
|
|
|
- };
|
|
|
|
- // 关闭弹窗
|
|
|
|
- const closeDialog = () => {
|
|
|
|
- state.isShowDialog = false;
|
|
|
|
- };
|
|
|
|
- // 取消
|
|
|
|
- const onCancel = () => {
|
|
|
|
- closeDialog();
|
|
|
|
- };
|
|
|
|
- // 新增
|
|
|
|
- const onSubmit = () => {
|
|
|
|
- const formWrap = unref(formRef) as any;
|
|
|
|
- if (!formWrap) return;
|
|
|
|
- formWrap.validate((valid: boolean) => {
|
|
|
|
- if (valid) {
|
|
|
|
- if (state.ruleForm.id !== 0) {
|
|
|
|
- //修改
|
|
|
|
- if (state.type == 'enum') {
|
|
|
|
- state.valueType.elements = state.enumdata;
|
|
|
|
- }
|
|
|
|
|
|
+ isShowDialog.value = true
|
|
|
|
+}
|
|
|
|
+const resetForm = () => {
|
|
|
|
+ ruleForm.value = {
|
|
|
|
+ name: '',
|
|
|
|
+ key: '',
|
|
|
|
+ transportProtocol: '',
|
|
|
|
+ accessMode: 1,
|
|
|
|
+ status: 1,
|
|
|
|
+ valueType: JSON.parse(JSON.stringify(valueType)),
|
|
|
|
+ desc: '',
|
|
|
|
+ }
|
|
|
|
+ type.value = ''
|
|
|
|
+ types.value = ''
|
|
|
|
+ valueType.value = JSON.parse(JSON.stringify(valueType))
|
|
|
|
+ elementType.value = JSON.parse(JSON.stringify(valueType))
|
|
|
|
+ jsondata.value = []
|
|
|
|
+ enumdata.value = [
|
|
|
|
+ {
|
|
|
|
+ text: '',
|
|
|
|
+ value: '',
|
|
|
|
+ },
|
|
|
|
+ ]
|
|
|
|
+}
|
|
|
|
|
|
- if (state.type == 'object') {
|
|
|
|
- state.valueType.properties = state.jsondata;
|
|
|
|
- }
|
|
|
|
|
|
+const seletChange = (val: string) => {
|
|
|
|
+ type.value = val
|
|
|
|
+ ruleForm.value.type = val
|
|
|
|
+}
|
|
|
|
+const seletChanges = (val: string) => {
|
|
|
|
+ types.value = val
|
|
|
|
+}
|
|
|
|
|
|
- if (state.type == 'array') {
|
|
|
|
- state.valueType.elementType = state.elementType;
|
|
|
|
- //如果是选中数组,并选择了枚举
|
|
|
|
- if (state.types == 'enum') {
|
|
|
|
- state.valueType.elementType = {
|
|
|
|
- elements: state.enumdata,
|
|
|
|
- type: 'enum'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //如果是选中数组,并选择了object
|
|
|
|
- if (state.types == 'object') {
|
|
|
|
- state.valueType.elementType = {
|
|
|
|
- properties: state.jsondata,
|
|
|
|
- type: 'object'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+const addEnum = () => {
|
|
|
|
+ enumdata.value.push({
|
|
|
|
+ text: '',
|
|
|
|
+ value: '',
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+const delEnum = (index: number) => {
|
|
|
|
+ enumdata.value.splice(index, 1)
|
|
|
|
+}
|
|
|
|
|
|
- state.ruleForm.valueType = state.valueType;
|
|
|
|
- state.ruleForm.productKey = state.productKey
|
|
|
|
- api.model.propertyedit(state.ruleForm).then(() => {
|
|
|
|
- ElMessage.success('属性定义类型修改成功');
|
|
|
|
- closeDialog(); // 关闭弹窗
|
|
|
|
- emit('typeList');
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- //添加
|
|
|
|
- if (state.type == 'enum') {
|
|
|
|
- state.valueType.elements = state.enumdata;
|
|
|
|
- }
|
|
|
|
|
|
+const editjson = (index: number) => {
|
|
|
|
+ editOptionRef.value.openDialog(jsondata.value[index])
|
|
|
|
+}
|
|
|
|
+const deljson = (index: number) => {
|
|
|
|
+ jsondata.value.splice(index, 1)
|
|
|
|
+}
|
|
|
|
|
|
- if (state.type == 'object') {
|
|
|
|
- state.valueType.properties = state.jsondata;
|
|
|
|
- }
|
|
|
|
|
|
+const addJson = () => {
|
|
|
|
+ editOptionRef.value.openDialog({ productKey: '', id: 0 })
|
|
|
|
+}
|
|
|
|
+const getOptionData = (data: any) => {
|
|
|
|
+ jsondata.value.push(data)
|
|
|
|
+}
|
|
|
|
+// 关闭弹窗
|
|
|
|
+const closeDialog = () => {
|
|
|
|
+ isShowDialog.value = false
|
|
|
|
+}
|
|
|
|
+// 取消
|
|
|
|
+const onCancel = () => {
|
|
|
|
+ closeDialog()
|
|
|
|
+}
|
|
|
|
+// 新增
|
|
|
|
+const onSubmit = () => {
|
|
|
|
+ const formWrap = unref(formRef) as any
|
|
|
|
+ if (!formWrap) return
|
|
|
|
+ formWrap.validate((valid: boolean) => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ if (ruleForm.value.id !== 0) {
|
|
|
|
+ //修改
|
|
|
|
+ if (type.value == 'enum') {
|
|
|
|
+ valueType.value.elements = enumdata.value
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (type.value == 'object') {
|
|
|
|
+ valueType.value.properties = jsondata.value
|
|
|
|
+ }
|
|
|
|
|
|
- if (state.type == 'array') {
|
|
|
|
- state.valueType.elementType = state.elementType;
|
|
|
|
- //如果是选中数组,并选择了枚举
|
|
|
|
- if (state.types == 'enum') {
|
|
|
|
- state.valueType.elementType = {
|
|
|
|
- elements: state.enumdata,
|
|
|
|
- type: 'enum'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //如果是选中数组,并选择了object
|
|
|
|
- if (state.types == 'object') {
|
|
|
|
- state.valueType.elementType = {
|
|
|
|
- properties: state.jsondata,
|
|
|
|
- type: 'object'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ if (type.value == 'array') {
|
|
|
|
+ valueType.value.elementType = elementType.value
|
|
|
|
+ //如果是选中数组,并选择了枚举
|
|
|
|
+ if (types.value == 'enum') {
|
|
|
|
+ valueType.value.elementType = {
|
|
|
|
+ elements: enumdata.value,
|
|
|
|
+ type: 'enum',
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ //如果是选中数组,并选择了object
|
|
|
|
+ if (types.value == 'object') {
|
|
|
|
+ valueType.value.elementType = {
|
|
|
|
+ properties: jsondata.value,
|
|
|
|
+ type: 'object',
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ruleForm.value.valueType = valueType.value
|
|
|
|
+ ruleForm.value.productKey = productKey.value
|
|
|
|
+ api.model.propertyedit(ruleForm.value).then(() => {
|
|
|
|
+ ElMessage.success(t('message.tableI18nConfirm.editSuccess'))
|
|
|
|
+ closeDialog() // 关闭弹窗
|
|
|
|
+ emit('typeList')
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ //添加
|
|
|
|
+ if (type.value == 'enum') {
|
|
|
|
+ valueType.value.elements = enumdata.value
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (type.value == 'object') {
|
|
|
|
+ valueType.value.properties = jsondata.value
|
|
|
|
+ }
|
|
|
|
|
|
- state.ruleForm.valueType = state.valueType;
|
|
|
|
- api.model.propertyadd(state.ruleForm).then(() => {
|
|
|
|
- ElMessage.success('属性定义类型添加成功');
|
|
|
|
- closeDialog(); // 关闭弹窗
|
|
|
|
- emit('typeList');
|
|
|
|
- });
|
|
|
|
|
|
+ if (type.value == 'array') {
|
|
|
|
+ valueType.value.elementType = elementType.value
|
|
|
|
+ //如果是选中数组,并选择了枚举
|
|
|
|
+ if (types.value == 'enum') {
|
|
|
|
+ valueType.value.elementType = {
|
|
|
|
+ elements: enumdata.value,
|
|
|
|
+ type: 'enum',
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //如果是选中数组,并选择了object
|
|
|
|
+ if (types.value == 'object') {
|
|
|
|
+ valueType.value.elementType = {
|
|
|
|
+ properties: jsondata.value,
|
|
|
|
+ type: 'object',
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- });
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- return {
|
|
|
|
- editOptionRef,
|
|
|
|
- getOptionData,
|
|
|
|
- openDialog,
|
|
|
|
- deljson,
|
|
|
|
- editjson,
|
|
|
|
- addEnum,
|
|
|
|
- delEnum,
|
|
|
|
- addJson,
|
|
|
|
- seletChange,
|
|
|
|
- seletChanges,
|
|
|
|
- closeDialog,
|
|
|
|
- onCancel,
|
|
|
|
- onSubmit,
|
|
|
|
- formRef,
|
|
|
|
- ...toRefs(state),
|
|
|
|
- };
|
|
|
|
- },
|
|
|
|
-});
|
|
|
|
|
|
+
|
|
|
|
+ ruleForm.value.valueType = valueType.value
|
|
|
|
+ api.model.propertyadd(ruleForm.value).then(() => {
|
|
|
|
+ ElMessage.success(t('message.tableI18nConfirm.addSuccess'))
|
|
|
|
+ closeDialog() // 关闭弹窗
|
|
|
|
+ emit('typeList')
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+defineExpose({ openDialog })
|
|
</script>
|
|
</script>
|
|
-<style scoped>
|
|
|
|
|
|
+<style scoped lang="scss">
|
|
.input-box {
|
|
.input-box {
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-direction: row;
|
|
@@ -524,8 +587,6 @@ export default defineComponent({
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
|
|
|
|
-.jsonoption {}
|
|
|
|
-
|
|
|
|
.jsonoption a {
|
|
.jsonoption a {
|
|
margin: 0px 10px;
|
|
margin: 0px 10px;
|
|
}
|
|
}
|