|
@@ -14,6 +14,9 @@
|
|
|
<el-input v-model="formData.name" placeholder="请输入属性名称" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="是否数采:" prop="isCollection">
|
|
|
<el-radio-group v-model="formData.isCollection">
|
|
@@ -28,8 +31,6 @@
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="是否累计:" prop="isSum">
|
|
|
<el-radio-group v-model="formData.isSum">
|
|
@@ -44,6 +45,9 @@
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="标识符" prop="code" v-show="formData.isSum === 1">
|
|
|
<el-radio-group v-model="formData.code">
|
|
@@ -74,8 +78,20 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="默认值" prop="defaultValue">
|
|
|
- <el-input v-model="formData.defaultValue" placeholder="请输入默认值" />
|
|
|
+ <el-form-item label="累加值" prop="defaultValue" v-if="formData.isSum === 1">
|
|
|
+<!-- <el-input v-model="formData.defaultValue" placeholder="请选择累加值" />-->
|
|
|
+ <el-select v-model="formData.defaultValue" placeholder="请选择累加值">
|
|
|
+ <el-option
|
|
|
+ v-for="dict in nonSumList"
|
|
|
+ :key="dict.name"
|
|
|
+ :label="dict.name"
|
|
|
+ :value="dict.id"
|
|
|
+ :track-by="dict.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="填写阈值" prop="threshold" v-else>
|
|
|
+ <el-input v-model="formData.threshold" placeholder="请输入阈值" type="number"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -123,13 +139,14 @@ const dialogVisible = ref(false) // 弹窗的是否展示
|
|
|
const dialogTitle = ref('') // 弹窗的标题
|
|
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
|
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
|
|
+const nonSumList = ref<DeviceAttrModelData[]>([]) // 列表的数据
|
|
|
const formData = ref<DeviceAttrModelData>({
|
|
|
deviceCategoryId: -1,
|
|
|
dataType: DataSpecsDataType.DOUBLE,
|
|
|
type: DataSpecsDataType.DOUBLE,
|
|
|
requiredFlag: 0,
|
|
|
description: '',
|
|
|
- defaultValue: '',
|
|
|
+ defaultValue:0,
|
|
|
selectOptions: {
|
|
|
type: DataSpecsDataType.DOUBLE,
|
|
|
defaultValue: '',
|
|
@@ -171,10 +188,30 @@ const props = defineProps({
|
|
|
})
|
|
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
-
|
|
|
+// 添加计算属性用于去重
|
|
|
+const uniqueNonSumList = computed(() => {
|
|
|
+ // 根据id去重
|
|
|
+ const uniqueMap = new Map();
|
|
|
+ nonSumList.value.forEach(item => {
|
|
|
+ if (!uniqueMap.has(item.id)) {
|
|
|
+ uniqueMap.set(item.id, item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return Array.from(uniqueMap.values());
|
|
|
+});
|
|
|
/** 打开弹窗 */
|
|
|
-const open = async (type: string, id?: number,name?:string) => {
|
|
|
-
|
|
|
+const open = async (type: string, id?: number,name?:string,list?:[]) => {
|
|
|
+ nonSumList.value = [];
|
|
|
+ if(list.value.length>0){
|
|
|
+ // 处理传入的列表,确保不重复
|
|
|
+ const tempMap = new Map();
|
|
|
+ list.value.forEach((item: any) => {
|
|
|
+ if (!tempMap.has(item.id)) {
|
|
|
+ tempMap.set(item.id, item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ nonSumList.value = Array.from(tempMap.values());
|
|
|
+ }
|
|
|
deviceCategoryName = name;
|
|
|
if(type=='update'){
|
|
|
await getAttrList();
|
|
@@ -186,7 +223,12 @@ const open = async (type: string, id?: number,name?:string) => {
|
|
|
if (id) {
|
|
|
formLoading.value = true
|
|
|
try {
|
|
|
- formData.value = await DeviceAttrModelApi.getDeviceAttrModel(id)
|
|
|
+ const result = await DeviceAttrModelApi.getDeviceAttrModel(id);
|
|
|
+ formData.value = {
|
|
|
+ ...result,
|
|
|
+ // 确保defaultValue是数值类型的id,以便正确匹配
|
|
|
+ defaultValue: result.defaultValue ? Number(result.defaultValue) : ''
|
|
|
+ };
|
|
|
// 情况一:属性初始化
|
|
|
if (isEmpty(formData.value.selectOptions)) {
|
|
|
formData.value.type = DataSpecsDataType.DOUBLE
|
|
@@ -201,6 +243,7 @@ const open = async (type: string, id?: number,name?:string) => {
|
|
|
formLoading.value = false
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
defineExpose({ open, close: () => (dialogVisible.value = false) })
|
|
|
|