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