Commit d1f3b9d3991515acd8538a6ea8ff00ca91061924

Authored by fengtao
1 parent 966f4dbc

feat:转换函数新增保存原始数据字段

@@ -14,7 +14,12 @@ @@ -14,7 +14,12 @@
14 :rules="[{ required: true, message: ifAdd ? '请输入脚本名称' : '请输入参数' }]" 14 :rules="[{ required: true, message: ifAdd ? '请输入脚本名称' : '请输入参数' }]"
15 > 15 >
16 <a-input v-if="ifAdd" v-model:value="scriptForm.name" placeholder="请输入脚本名称" /> 16 <a-input v-if="ifAdd" v-model:value="scriptForm.name" placeholder="请输入脚本名称" />
17 - <a-input v-else v-model:value="scriptForm.params" placeholder="请输入参数" /> 17 + <a-input
  18 + @change="handleInputChange"
  19 + v-else
  20 + v-model:value="scriptForm.params"
  21 + placeholder="请输入参数"
  22 + />
18 </a-form-item> 23 </a-form-item>
19 <a-form-item 24 <a-form-item
20 label="上报数据类型" 25 label="上报数据类型"
@@ -25,6 +30,15 @@ @@ -25,6 +30,15 @@
25 <a-radio-group v-model:value="scriptForm.dataType" :options="typeOptions" /> 30 <a-radio-group v-model:value="scriptForm.dataType" :options="typeOptions" />
26 </a-space> 31 </a-space>
27 </a-form-item> 32 </a-form-item>
  33 + <a-form-item
  34 + label="保存原始数据"
  35 + name="saveOriginalData"
  36 + :rules="[{ required: true, message: '请选择保存原始数据' }]"
  37 + >
  38 + <a-space direction="vertical">
  39 + <a-radio-group v-model:value="scriptForm.saveOriginalData" :options="originalOptions" />
  40 + </a-space>
  41 + </a-form-item>
28 <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'"> 42 <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'">
29 <Card title="脚本内容" :bodyStyle="{ padding: 0, height: '280px' }"> 43 <Card title="脚本内容" :bodyStyle="{ padding: 0, height: '280px' }">
30 <template #extra> 44 <template #extra>
@@ -74,7 +88,8 @@ @@ -74,7 +88,8 @@
74 import { useMessage } from '/@/hooks/web/useMessage'; 88 import { useMessage } from '/@/hooks/web/useMessage';
75 import { findDictItemByCode } from '/@/api/system/dict'; 89 import { findDictItemByCode } from '/@/api/system/dict';
76 import { QuestionCircleOutlined } from '@ant-design/icons-vue'; 90 import { QuestionCircleOutlined } from '@ant-design/icons-vue';
77 - import { defaultTitle, defaultScriptContent } from './config.data'; 91 + import { defaultTitle } from './config.data';
  92 + import { nextTick } from 'process';
78 93
79 defineEmits(['register']); 94 defineEmits(['register']);
80 const props = defineProps({ 95 const props = defineProps({
@@ -88,11 +103,13 @@ @@ -88,11 +103,13 @@
88 params: '', 103 params: '',
89 output: '', 104 output: '',
90 dataType: 'HEX', 105 dataType: 'HEX',
  106 + saveOriginalData: 'false',
91 }); 107 });
92 const reportTypeOptions = reactive({ 108 const reportTypeOptions = reactive({
93 typeOptions: [], 109 typeOptions: [],
  110 + originalOptions: [],
94 }); 111 });
95 - const { typeOptions } = toRefs(reportTypeOptions); 112 + const { typeOptions, originalOptions } = toRefs(reportTypeOptions);
96 const { createMessage } = useMessage(); 113 const { createMessage } = useMessage();
97 const { clipboardRef, copiedRef } = useCopyToClipboard(); 114 const { clipboardRef, copiedRef } = useCopyToClipboard();
98 const aceEditor = ref(); 115 const aceEditor = ref();
@@ -101,10 +118,17 @@ @@ -101,10 +118,17 @@
101 const res: any = await findDictItemByCode({ 118 const res: any = await findDictItemByCode({
102 dictCode: 'report_data_type', 119 dictCode: 'report_data_type',
103 }); 120 });
  121 + const resOriginal: any = await findDictItemByCode({
  122 + dictCode: 'original_data',
  123 + });
104 reportTypeOptions.typeOptions = res.map((m) => { 124 reportTypeOptions.typeOptions = res.map((m) => {
105 return { label: m.itemText, value: m.itemValue }; 125 return { label: m.itemText, value: m.itemValue };
106 }); 126 });
  127 + reportTypeOptions.originalOptions = resOriginal.map((m) => {
  128 + return { label: m.itemText, value: m.itemValue };
  129 + });
107 scriptForm.dataType = 'HEX'; 130 scriptForm.dataType = 'HEX';
  131 + scriptForm.saveOriginalData = 'false';
108 }); 132 });
109 // 初始化编辑器 133 // 初始化编辑器
110 const initEditor = (jsScript?: string) => { 134 const initEditor = (jsScript?: string) => {
@@ -121,7 +145,7 @@ @@ -121,7 +145,7 @@
121 enableBasicAutocompletion: true, 145 enableBasicAutocompletion: true,
122 enableLiveAutocompletion: true, 146 enableLiveAutocompletion: true,
123 }); 147 });
124 - aceEditor.value.setValue(jsScript ?? defaultScriptContent); 148 + aceEditor.value.setValue(jsScript);
125 beautify(aceEditor.value.session); 149 beautify(aceEditor.value.session);
126 scriptForm.convertJs = aceEditor.value.getValue(); 150 scriptForm.convertJs = aceEditor.value.getValue();
127 }; 151 };
@@ -154,16 +178,28 @@ @@ -154,16 +178,28 @@
154 } 178 }
155 } 179 }
156 if (!value) return; 180 if (!value) return;
  181 + if (scriptForm.params) {
  182 + const trimParams = scriptForm.params.replace(/\s*/g, '');
  183 + Reflect.set(value, 'params', trimParams);
  184 + }
157 return { 185 return {
158 ...value, 186 ...value,
159 ...{ convertJs: props.ifAdd ? scriptForm.convertJs : null }, 187 ...{ convertJs: props.ifAdd ? scriptForm.convertJs : null },
160 ...{ script: !props.ifAdd ? scriptForm.script : null }, 188 ...{ script: !props.ifAdd ? scriptForm.script : null },
  189 + ...{ saveOriginalData: scriptForm.saveOriginalData === 'false' ? false : true },
161 }; 190 };
162 }; 191 };
  192 + const handleInputChange = (e) => {
  193 + const trimParams = e.target.value.replace(/\s*/g, '');
  194 + Reflect.set(scriptForm, 'params', trimParams);
  195 + };
163 const setFormData = (v) => { 196 const setFormData = (v) => {
164 for (let i in scriptForm) { 197 for (let i in scriptForm) {
165 Reflect.set(scriptForm, i, v[i]); 198 Reflect.set(scriptForm, i, v[i]);
166 } 199 }
  200 + nextTick(() => {
  201 + scriptForm.saveOriginalData = v.saveOriginalData === false ? 'false' : 'true';
  202 + });
167 aceEditor.value.setValue(v.convertJs); 203 aceEditor.value.setValue(v.convertJs);
168 handleFormat(); 204 handleFormat();
169 }; 205 };