Commit dbba585d03ddb526017e223e2a6b4f5405fd5914

Authored by fengwotao
1 parent d50c4b76

feat: 脚本管理新增测试用例

... ... @@ -58,6 +58,14 @@
58 58 <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'">
59 59 <Card title="脚本内容" :bodyStyle="{ padding: 0, height: '280px' }">
60 60 <template #extra>
  61 + <Button
  62 + v-show="ifAdd && !view"
  63 + @click="onHandleTestExample(scriptForm.scriptType)"
  64 + style="position: relative; top: -4rem; right: -6.6rem"
  65 + type="primary"
  66 + >
  67 + 测试用例</Button
  68 + >
61 69 <a-button @click="handleFormat" size="small">格式化</a-button>
62 70 <Tooltip
63 71 v-if="scriptForm.scriptType !== 'TRANSPORT_TCP_UP'"
... ... @@ -115,7 +123,13 @@
115 123 import { useMessage } from '/@/hooks/web/useMessage';
116 124 import { findDictItemByCode } from '/@/api/system/dict';
117 125 import { QuestionCircleOutlined } from '@ant-design/icons-vue';
118   - import { defaultAuthTitle, defaultUpTitle, defaultScriptTypeContent } from './config.data';
  126 + import {
  127 + defaultAuthTitle,
  128 + defaultUpTitle,
  129 + defaultScriptTypeContent,
  130 + defaultTestUpExample,
  131 + defaultTestAuthExample,
  132 + } from './config.data';
119 133 import { useAppStore } from '/@/store/modules/app';
120 134 import TestScriptModal from './TestScriptModal.vue';
121 135 import { useModal } from '/@/components/Modal';
... ... @@ -207,6 +221,15 @@
207 221 aceEditor.value.setValue(defaultScriptTypeContent[type]);
208 222 };
209 223
  224 + const onHandleTestExample = (example) => {
  225 + if (example === 'TRANSPORT_TCP_UP') {
  226 + aceEditor.value?.setValue(defaultTestUpExample);
  227 + } else {
  228 + aceEditor.value?.setValue(defaultTestAuthExample);
  229 + }
  230 + handleFormat();
  231 + };
  232 +
210 233 const handleCopy = () => {
211 234 const valueRef = aceEditor.value.getValue();
212 235 const value = unref(valueRef);
... ... @@ -303,10 +326,12 @@
303 326 const [registerModal, { openModal }] = useModal();
304 327
305 328 const onHandleClick = (o) => {
  329 + const getTestContent = aceEditor.value?.getValue();
306 330 openModal(true, {
307 331 isAuth: '',
308   - isUpdate: false,
  332 + isUpdate: o,
309 333 record: o === 'add' ? null : getRecordId.value,
  334 + testContent: getTestContent,
310 335 isTest: true,
311 336 isText: 'test',
312 337 isTitle: 'test',
... ...
... ... @@ -70,8 +70,9 @@
70 70 if (unref(isTitle) == 'test') {
71 71 if (data.record) {
72 72 const res = await getScriptManageDetail(data.record);
73   - converScriptRef.value?.setFormData(res);
  73 + converScriptRef.value?.setFormData({ ...res, convertJs: data?.testContent });
74 74 } else {
  75 + converScriptRef.value?.setFormData({ convertJs: data?.testContent });
75 76 converScriptRef.value?.setDefaultRadio('true', 'TRANSPORT_TCP_UP');
76 77 }
77 78 }
... ...
... ... @@ -90,3 +90,44 @@ export const defaultScriptTypeContent = {
90 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 91 TRANSPORT_TCP_AUTH: 'out.password = params;out.success = params;',
92 92 };
  93 +
  94 +export const defaultTestUpExample = `
  95 +var teleData = {};
  96 +/**
  97 + * 物模型数据(可选):原始数据
  98 + */
  99 +teleData.source= params;
  100 +/**
  101 + * 直连设备:sensor是产品物模型中所定义属性的标识符
  102 + * 网关设备:sensor是网关子设备的设备名称/SN码
  103 + */
  104 +teleData.sensor= params+123;
  105 +out.datas = teleData;
  106 +/**
  107 + * 必填:true表示设备上报的遥测数据,false表示命令下发的响应数据
  108 + */
  109 +out.telemetry = true;
  110 +/**
  111 + * 必填:设备或命令下发的唯一标识,设备的唯一标识必须与设备信息的设备名称/SN码一致
  112 + */
  113 +out.identifier = "01";
  114 +/**
  115 + * 可选:服务端收到设备数据后,响应的消息内容
  116 + */
  117 +out.ackMsg = params;
  118 +/**
  119 + * 可选:默认使用服务器时间,可以使用数据内的时间
  120 + */
  121 +out.ts = Date.now();
  122 +`;
  123 +
  124 +export const defaultTestAuthExample = `
  125 +/**
  126 + * 必填:设备的访问令牌
  127 + */
  128 +out.password = params;
  129 +/**
  130 + * 选填:设备鉴权成功后响应给设备的信息
  131 + */
  132 +out.success = params;
  133 +`;
... ...