Commit a293ae510427918c3c987de35a569ecbe492c73e
Merge branch 'ft' into 'main_dev'
pref: 优化脚本管理格式化换行 See merge request yunteng/thingskit-front!568
Showing
2 changed files
with
84 additions
and
36 deletions
... | ... | @@ -47,7 +47,7 @@ |
47 | 47 | </a-space> |
48 | 48 | </a-form-item> |
49 | 49 | <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'"> |
50 | - <Card title="脚本内容" :bodyStyle="{ padding: 0, height: '280px' }"> | |
50 | + <Card title="脚本内容" :bodyStyle="{ padding: 0 }"> | |
51 | 51 | <template #extra> |
52 | 52 | <Button |
53 | 53 | v-show="ifAdd && !view" |
... | ... | @@ -69,7 +69,7 @@ |
69 | 69 | <QuestionCircleOutlined style="font-size: 1rem" /> |
70 | 70 | </Tooltip> |
71 | 71 | </template> |
72 | - <div ref="aceRef" class="overflow-hidden"></div> | |
72 | + <div ref="aceRef"></div> | |
73 | 73 | </Card> |
74 | 74 | <Button @click="handleCopy" class="mt-4"> |
75 | 75 | <template #icon> |
... | ... | @@ -180,7 +180,7 @@ |
180 | 180 | // 初始化编辑器 |
181 | 181 | const initEditor = () => { |
182 | 182 | aceEditor.value = ace.edit(aceRef.value, { |
183 | - maxLines: 12, // 最大行数,超过会自动出现滚动条 | |
183 | + maxLines: 16, // 最大行数,超过会自动出现滚动条 | |
184 | 184 | minLines: 12, // 最小行数,还未到最大行数时,编辑器会自动伸缩大小 |
185 | 185 | fontSize: 14, // 编辑器内字体大小 |
186 | 186 | theme: 'ace/theme/chrome', // 默认设置的主题 |
... | ... | @@ -191,6 +191,8 @@ |
191 | 191 | aceEditor.value.setOptions({ |
192 | 192 | enableBasicAutocompletion: true, |
193 | 193 | enableLiveAutocompletion: true, |
194 | + enableSnippets: true, | |
195 | + enableEmmet: true, | |
194 | 196 | theme: getAceClass.value === 'dark' ? 'ace/theme/terminal' : 'ace/theme/chrome', |
195 | 197 | }); |
196 | 198 | aceEditor.value.setValue(''); |
... | ... | @@ -201,6 +203,7 @@ |
201 | 203 | const handleScriptType = ({ target }) => { |
202 | 204 | const { value } = target; |
203 | 205 | scriptForm.scriptType = value; |
206 | + if (convertJsContent.value) return; | |
204 | 207 | switchScriptTypeGetContent(value); |
205 | 208 | }; |
206 | 209 | |
... | ... | @@ -273,6 +276,8 @@ |
273 | 276 | |
274 | 277 | const getRecordId = ref(''); |
275 | 278 | |
279 | + const convertJsContent = ref(''); | |
280 | + | |
276 | 281 | const setFormData = (v) => { |
277 | 282 | if (v) { |
278 | 283 | getRecordId.value = v?.id; |
... | ... | @@ -280,6 +285,7 @@ |
280 | 285 | Reflect.set(scriptForm, i, v[i]); |
281 | 286 | } |
282 | 287 | aceEditor.value.setValue(v.convertJs); |
288 | + convertJsContent.value = v.convertJs; | |
283 | 289 | handleFormat(); |
284 | 290 | } |
285 | 291 | }; |
... | ... | @@ -300,8 +306,10 @@ |
300 | 306 | }; |
301 | 307 | |
302 | 308 | const handleFormat = () => { |
309 | + let oldValue = aceEditor.value?.getValue() || ''; | |
310 | + oldValue = oldValue.replaceAll(/;(\n+)?/g, ';\n'); | |
311 | + aceEditor.value?.setValue(oldValue); | |
303 | 312 | beautify(aceEditor.value.session); |
304 | - aceEditor.value.getSession().setUseWrapMode(true); | |
305 | 313 | }; |
306 | 314 | |
307 | 315 | const [registerModal, { openModal }] = useModal(); | ... | ... |
... | ... | @@ -86,48 +86,88 @@ export const defaultUpTitle = h('div', { style: 'background:#404040' }, [ |
86 | 86 | |
87 | 87 | // TRANSPORT_TCP_DOWN: 'out.datas = "";out.deviceName = "sensor";', |
88 | 88 | export const defaultScriptTypeContent = { |
89 | - TRANSPORT_TCP_UP: | |
90 | - 'var attrData = {};var teleData = {};teleData.source= params;out.datas = teleData;out.telemetry =true;out.ackMsg = params;out.deviceName = "sensor";out.ts = Date.now();', | |
91 | - TRANSPORT_TCP_AUTH: 'out.password = params;out.success = params;', | |
89 | + TRANSPORT_TCP_UP: `var teleData = {}; | |
90 | +/* | |
91 | +物模型数据(可选):原始数据 | |
92 | +*/ | |
93 | +teleData.source= params; | |
94 | +/* | |
95 | +直连/网关子设备设备:temperature是产品物模型中所定义属性的标识符 | |
96 | +*/ | |
97 | +tempVal = params; | |
98 | +teleData.temperature= tempVal; | |
99 | +/* | |
100 | +网关设备:变量slaveDevice是网关子设备的“设备标识” | |
101 | +*/ | |
102 | +slaveDevice = params.substr(0,2); | |
103 | +teleData[slaveDevice]= params; | |
104 | +out.datas = teleData; | |
105 | +/* | |
106 | +必填:true表示设备上报的遥测数据,false表示命令下发的响应数据 | |
107 | +*/ | |
108 | +out.telemetry = true; | |
109 | +/* | |
110 | +必填:设备或命令下发的唯一标识,设备的唯一标识必须与设备信息的“设备名称/SN码”一致 | |
111 | +*/ | |
112 | +out.identifier = "01"; | |
113 | +/* | |
114 | +可选:服务端收到设备数据后,响应的消息内容 | |
115 | +*/ | |
116 | +out.ackMsg = params; | |
117 | +/* | |
118 | +可选:默认使用服务器时间,可以使用数据内的时间 | |
119 | +*/ | |
120 | +out.ts = Date.now();`, | |
121 | + TRANSPORT_TCP_AUTH: `/* | |
122 | + 必填:设备的访问令牌 | |
123 | + */ | |
124 | + out.password = params; | |
125 | + /* | |
126 | + 选填:设备鉴权成功后响应给设备的信息 | |
127 | + */ | |
128 | + out.success = params; | |
129 | + `, | |
92 | 130 | }; |
93 | 131 | |
94 | -export const defaultTestUpExample = ` | |
95 | -var teleData = {}; | |
96 | -/** | |
97 | - * 物模型数据(可选):原始数据 | |
98 | - */ | |
132 | +export const defaultTestUpExample = `var teleData = {}; | |
133 | +/* | |
134 | +物模型数据(可选):原始数据 | |
135 | +*/ | |
99 | 136 | teleData.source= params; |
100 | -/** | |
101 | - * 直连设备:sensor是产品物模型中所定义属性的标识符 | |
102 | - * 网关设备:sensor是网关子设备的设备名称/SN码 | |
103 | - */ | |
104 | -teleData.sensor= params+123; | |
137 | +/* | |
138 | +直连/网关子设备设备:temperature是产品物模型中所定义属性的标识符 | |
139 | +*/ | |
140 | +tempVal = params; | |
141 | +teleData.temperature= tempVal; | |
142 | +/* | |
143 | +网关设备:变量slaveDevice是网关子设备的“设备标识” | |
144 | +*/ | |
145 | +slaveDevice = params.substr(0,2); | |
146 | +teleData[slaveDevice]= params; | |
105 | 147 | out.datas = teleData; |
106 | -/** | |
107 | - * 必填:true表示设备上报的遥测数据,false表示命令下发的响应数据 | |
108 | - */ | |
148 | +/* | |
149 | +必填:true表示设备上报的遥测数据,false表示命令下发的响应数据 | |
150 | +*/ | |
109 | 151 | out.telemetry = true; |
110 | -/** | |
111 | - * 必填:设备或命令下发的唯一标识,设备的唯一标识必须与设备信息的设备名称/SN码一致 | |
112 | - */ | |
152 | +/* | |
153 | +必填:设备或命令下发的唯一标识,设备的唯一标识必须与设备信息的“设备名称/SN码”一致 | |
154 | +*/ | |
113 | 155 | out.identifier = "01"; |
114 | -/** | |
115 | - * 可选:服务端收到设备数据后,响应的消息内容 | |
116 | - */ | |
156 | +/* | |
157 | +可选:服务端收到设备数据后,响应的消息内容 | |
158 | +*/ | |
117 | 159 | out.ackMsg = params; |
118 | -/** | |
119 | - * 可选:默认使用服务器时间,可以使用数据内的时间 | |
120 | - */ | |
121 | -out.ts = Date.now(); | |
122 | -`; | |
160 | +/* | |
161 | +可选:默认使用服务器时间,可以使用数据内的时间 | |
162 | +*/ | |
163 | +out.ts = Date.now();`; | |
123 | 164 | |
124 | -export const defaultTestAuthExample = ` | |
125 | -/** | |
126 | - * 必填:设备的访问令牌 | |
165 | +export const defaultTestAuthExample = `/* | |
166 | + 必填:设备的访问令牌 | |
127 | 167 | */ |
128 | 168 | out.password = params; |
129 | -/** | |
130 | - * 选填:设备鉴权成功后响应给设备的信息 | |
169 | +/* | |
170 | + 选填:设备鉴权成功后响应给设备的信息 | |
131 | 171 | */ |
132 | 172 | out.success = params; |
133 | 173 | `; | ... | ... |