Commit 8df1fba8cc9b9be632fc42767850a9731014a9a5

Authored by ww
1 parent 2ae23072

perf: on view mode not allowed edit form in product profiles's model of matter

1 <template> 1 <template>
2 - <BasicDrawer v-bind="$attrs" title="产品详情" @register="register" width="60%"> 2 + <BasicDrawer v-bind="$attrs" title="产品详情" @register="register" width="60%" destroy-on-close>
3 <Tabs :animated="true" v-model:activeKey="activeKey" @change="handlePanelChange"> 3 <Tabs :animated="true" v-model:activeKey="activeKey" @change="handlePanelChange">
4 <TabPane key="product" tab="产品"> 4 <TabPane key="product" tab="产品">
5 <div class="relative"> 5 <div class="relative">
@@ -23,7 +23,7 @@ export const steps = [ @@ -23,7 +23,7 @@ export const steps = [
23 export const formatFunctionType: Record<FunctionType, string> = { 23 export const formatFunctionType: Record<FunctionType, string> = {
24 [FunctionType.PROPERTIES]: '属性', 24 [FunctionType.PROPERTIES]: '属性',
25 [FunctionType.EVENTS]: '事件', 25 [FunctionType.EVENTS]: '事件',
26 - [FunctionType.SERVICE]: '事件', 26 + [FunctionType.SERVICE]: '服务',
27 }; 27 };
28 28
29 export const physicalColumn: BasicColumn[] = [ 29 export const physicalColumn: BasicColumn[] = [
@@ -83,9 +83,9 @@ export const modelOfMatterForm: FormSchema[] = [ @@ -83,9 +83,9 @@ export const modelOfMatterForm: FormSchema[] = [
83 colProps: { span: 8 }, 83 colProps: { span: 8 },
84 componentProps: { 84 componentProps: {
85 options: [ 85 options: [
86 - { label: '属性', value: FunctionType.PROPERTIES },  
87 - { label: '事件', value: FunctionType.EVENTS },  
88 - { label: '服务', value: FunctionType.SERVICE }, 86 + { label: formatFunctionType[FunctionType.PROPERTIES], value: FunctionType.PROPERTIES },
  87 + { label: formatFunctionType[FunctionType.EVENTS], value: FunctionType.EVENTS },
  88 + { label: formatFunctionType[FunctionType.SERVICE], value: FunctionType.SERVICE },
89 ], 89 ],
90 }, 90 },
91 }, 91 },
@@ -32,6 +32,9 @@ @@ -32,6 +32,9 @@
32 新增物模型 32 新增物模型
33 </Button> 33 </Button>
34 <Button type="primary" @click="handleOpenTsl"> 物模型TSL </Button> 34 <Button type="primary" @click="handleOpenTsl"> 物模型TSL </Button>
  35 + <Button v-if="isShowBtn" type="primary" @click="handleImportModel"
  36 + >导入物模型</Button
  37 + >
35 </Authority> 38 </Authority>
36 </div> 39 </div>
37 <div class="flex gap-2"> 40 <div class="flex gap-2">
@@ -224,6 +227,8 @@ @@ -224,6 +227,8 @@
224 } 227 }
225 }; 228 };
226 229
  230 + const handleImportModel = async () => {};
  231 +
227 defineExpose({}); 232 defineExpose({});
228 </script> 233 </script>
229 <style lang="less" scoped> 234 <style lang="less" scoped>
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 @ok="handleSubmit" 9 @ok="handleSubmit"
10 @cancel="handleCancel" 10 @cancel="handleCancel"
11 > 11 >
12 - <div> 12 + <div class="relative">
13 <div v-if="openModalMode === OpenModelMode.CREATE"> 13 <div v-if="openModalMode === OpenModelMode.CREATE">
14 <Typography> 14 <Typography>
15 <TypographyParagraph> 15 <TypographyParagraph>
@@ -38,6 +38,10 @@ @@ -38,6 +38,10 @@
38 ref="ServiceRef" 38 ref="ServiceRef"
39 /> 39 />
40 <Events v-show="activeKey === FunctionType.EVENTS" ref="EventsRef" /> 40 <Events v-show="activeKey === FunctionType.EVENTS" ref="EventsRef" />
  41 + <div
  42 + v-if="openModalMode === OpenModelMode.VIEW"
  43 + class="absolute w-full h-full top-0 cursor-not-allowed"
  44 + ></div>
41 </div> 45 </div>
42 </BasicModal> 46 </BasicModal>
43 </div> 47 </div>
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 width="55rem" 6 width="55rem"
7 @register="register" 7 @register="register"
8 @ok="handleSubmit" 8 @ok="handleSubmit"
  9 + okText="导出物模型"
9 @cancel="handleCancel" 10 @cancel="handleCancel"
10 > 11 >
11 <TslContent :record="$props.record" ref="TslConRef" /> 12 <TslContent :record="$props.record" ref="TslConRef" />
@@ -19,7 +20,7 @@ @@ -19,7 +20,7 @@
19 20
20 defineEmits(['register']); 21 defineEmits(['register']);
21 22
22 - defineProps<{ 23 + const props = defineProps<{
23 record: DeviceRecord; 24 record: DeviceRecord;
24 }>(); 25 }>();
25 26
@@ -42,7 +43,17 @@ @@ -42,7 +43,17 @@
42 const handleSubmit = () => { 43 const handleSubmit = () => {
43 const value = TslConRef.value?.getFormData(); 44 const value = TslConRef.value?.getFormData();
44 if (!value) return; 45 if (!value) return;
45 - console.log('搜集值', value); 46 +
  47 + const blob = new Blob([JSON.stringify(value, null, 2)], { type: 'text/json' });
  48 + const objectURL = URL.createObjectURL(blob);
  49 + const element = document.createElement('a');
  50 + element.href = objectURL;
  51 + element.download = `${props.record.name}-model.json`;
  52 + element.style.display = 'none';
  53 + document.body.appendChild(element);
  54 + element.click();
  55 + element.remove();
  56 + URL.revokeObjectURL(objectURL);
46 }; 57 };
47 </script> 58 </script>
48 59