Commit a293ae510427918c3c987de35a569ecbe492c73e

Authored by xp.Huang
2 parents b2ad4d17 33f47616

Merge branch 'ft' into 'main_dev'

pref: 优化脚本管理格式化换行

See merge request yunteng/thingskit-front!568
@@ -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 `;