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 | `; | ... | ... |