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,7 +47,7 @@ | ||
| 47 | </a-space> | 47 | </a-space> |
| 48 | </a-form-item> | 48 | </a-form-item> |
| 49 | <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'"> | 49 | <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'"> |
| 50 | - <Card title="脚本内容" :bodyStyle="{ padding: 0, height: '280px' }"> | 50 | + <Card title="脚本内容" :bodyStyle="{ padding: 0 }"> |
| 51 | <template #extra> | 51 | <template #extra> |
| 52 | <Button | 52 | <Button |
| 53 | v-show="ifAdd && !view" | 53 | v-show="ifAdd && !view" |
| @@ -69,7 +69,7 @@ | @@ -69,7 +69,7 @@ | ||
| 69 | <QuestionCircleOutlined style="font-size: 1rem" /> | 69 | <QuestionCircleOutlined style="font-size: 1rem" /> |
| 70 | </Tooltip> | 70 | </Tooltip> |
| 71 | </template> | 71 | </template> |
| 72 | - <div ref="aceRef" class="overflow-hidden"></div> | 72 | + <div ref="aceRef"></div> |
| 73 | </Card> | 73 | </Card> |
| 74 | <Button @click="handleCopy" class="mt-4"> | 74 | <Button @click="handleCopy" class="mt-4"> |
| 75 | <template #icon> | 75 | <template #icon> |
| @@ -180,7 +180,7 @@ | @@ -180,7 +180,7 @@ | ||
| 180 | // 初始化编辑器 | 180 | // 初始化编辑器 |
| 181 | const initEditor = () => { | 181 | const initEditor = () => { |
| 182 | aceEditor.value = ace.edit(aceRef.value, { | 182 | aceEditor.value = ace.edit(aceRef.value, { |
| 183 | - maxLines: 12, // 最大行数,超过会自动出现滚动条 | 183 | + maxLines: 16, // 最大行数,超过会自动出现滚动条 |
| 184 | minLines: 12, // 最小行数,还未到最大行数时,编辑器会自动伸缩大小 | 184 | minLines: 12, // 最小行数,还未到最大行数时,编辑器会自动伸缩大小 |
| 185 | fontSize: 14, // 编辑器内字体大小 | 185 | fontSize: 14, // 编辑器内字体大小 |
| 186 | theme: 'ace/theme/chrome', // 默认设置的主题 | 186 | theme: 'ace/theme/chrome', // 默认设置的主题 |
| @@ -191,6 +191,8 @@ | @@ -191,6 +191,8 @@ | ||
| 191 | aceEditor.value.setOptions({ | 191 | aceEditor.value.setOptions({ |
| 192 | enableBasicAutocompletion: true, | 192 | enableBasicAutocompletion: true, |
| 193 | enableLiveAutocompletion: true, | 193 | enableLiveAutocompletion: true, |
| 194 | + enableSnippets: true, | ||
| 195 | + enableEmmet: true, | ||
| 194 | theme: getAceClass.value === 'dark' ? 'ace/theme/terminal' : 'ace/theme/chrome', | 196 | theme: getAceClass.value === 'dark' ? 'ace/theme/terminal' : 'ace/theme/chrome', |
| 195 | }); | 197 | }); |
| 196 | aceEditor.value.setValue(''); | 198 | aceEditor.value.setValue(''); |
| @@ -201,6 +203,7 @@ | @@ -201,6 +203,7 @@ | ||
| 201 | const handleScriptType = ({ target }) => { | 203 | const handleScriptType = ({ target }) => { |
| 202 | const { value } = target; | 204 | const { value } = target; |
| 203 | scriptForm.scriptType = value; | 205 | scriptForm.scriptType = value; |
| 206 | + if (convertJsContent.value) return; | ||
| 204 | switchScriptTypeGetContent(value); | 207 | switchScriptTypeGetContent(value); |
| 205 | }; | 208 | }; |
| 206 | 209 | ||
| @@ -273,6 +276,8 @@ | @@ -273,6 +276,8 @@ | ||
| 273 | 276 | ||
| 274 | const getRecordId = ref(''); | 277 | const getRecordId = ref(''); |
| 275 | 278 | ||
| 279 | + const convertJsContent = ref(''); | ||
| 280 | + | ||
| 276 | const setFormData = (v) => { | 281 | const setFormData = (v) => { |
| 277 | if (v) { | 282 | if (v) { |
| 278 | getRecordId.value = v?.id; | 283 | getRecordId.value = v?.id; |
| @@ -280,6 +285,7 @@ | @@ -280,6 +285,7 @@ | ||
| 280 | Reflect.set(scriptForm, i, v[i]); | 285 | Reflect.set(scriptForm, i, v[i]); |
| 281 | } | 286 | } |
| 282 | aceEditor.value.setValue(v.convertJs); | 287 | aceEditor.value.setValue(v.convertJs); |
| 288 | + convertJsContent.value = v.convertJs; | ||
| 283 | handleFormat(); | 289 | handleFormat(); |
| 284 | } | 290 | } |
| 285 | }; | 291 | }; |
| @@ -300,8 +306,10 @@ | @@ -300,8 +306,10 @@ | ||
| 300 | }; | 306 | }; |
| 301 | 307 | ||
| 302 | const handleFormat = () => { | 308 | const handleFormat = () => { |
| 309 | + let oldValue = aceEditor.value?.getValue() || ''; | ||
| 310 | + oldValue = oldValue.replaceAll(/;(\n+)?/g, ';\n'); | ||
| 311 | + aceEditor.value?.setValue(oldValue); | ||
| 303 | beautify(aceEditor.value.session); | 312 | beautify(aceEditor.value.session); |
| 304 | - aceEditor.value.getSession().setUseWrapMode(true); | ||
| 305 | }; | 313 | }; |
| 306 | 314 | ||
| 307 | const [registerModal, { openModal }] = useModal(); | 315 | const [registerModal, { openModal }] = useModal(); |
| @@ -86,48 +86,88 @@ export const defaultUpTitle = h('div', { style: 'background:#404040' }, [ | @@ -86,48 +86,88 @@ export const defaultUpTitle = h('div', { style: 'background:#404040' }, [ | ||
| 86 | 86 | ||
| 87 | // TRANSPORT_TCP_DOWN: 'out.datas = "";out.deviceName = "sensor";', | 87 | // TRANSPORT_TCP_DOWN: 'out.datas = "";out.deviceName = "sensor";', |
| 88 | export const defaultScriptTypeContent = { | 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 | teleData.source= params; | 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 | out.datas = teleData; | 147 | out.datas = teleData; |
| 106 | -/** | ||
| 107 | - * 必填:true表示设备上报的遥测数据,false表示命令下发的响应数据 | ||
| 108 | - */ | 148 | +/* |
| 149 | +必填:true表示设备上报的遥测数据,false表示命令下发的响应数据 | ||
| 150 | +*/ | ||
| 109 | out.telemetry = true; | 151 | out.telemetry = true; |
| 110 | -/** | ||
| 111 | - * 必填:设备或命令下发的唯一标识,设备的唯一标识必须与设备信息的设备名称/SN码一致 | ||
| 112 | - */ | 152 | +/* |
| 153 | +必填:设备或命令下发的唯一标识,设备的唯一标识必须与设备信息的“设备名称/SN码”一致 | ||
| 154 | +*/ | ||
| 113 | out.identifier = "01"; | 155 | out.identifier = "01"; |
| 114 | -/** | ||
| 115 | - * 可选:服务端收到设备数据后,响应的消息内容 | ||
| 116 | - */ | 156 | +/* |
| 157 | +可选:服务端收到设备数据后,响应的消息内容 | ||
| 158 | +*/ | ||
| 117 | out.ackMsg = params; | 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 | out.password = params; | 168 | out.password = params; |
| 129 | -/** | ||
| 130 | - * 选填:设备鉴权成功后响应给设备的信息 | 169 | +/* |
| 170 | + 选填:设备鉴权成功后响应给设备的信息 | ||
| 131 | */ | 171 | */ |
| 132 | out.success = params; | 172 | out.success = params; |
| 133 | `; | 173 | `; |