index.ts
5.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import { BasicColumn, BasicTableProps, FormSchema } from '/@/components/Table';
import moment from 'moment';
import { h } from 'vue';
//业务权限配置
export enum PermissionConvertScriptEnum {
PERMISSION_POST = 'api:yt:js:post',
PERMISSION_DELETE = 'api:yt:js:delete',
PERMISSION_TEST = 'api:yt:js:test',
PERMISSION_UPDATE = 'api:yt:js:update',
PERMISSION_UPDATE_STATUS = 'api:yt:js:update:status',
}
//业务文字描述配置
export enum BusinessConvertScriptTextEnum {
BUSINESS_ENABLE_SUCCESS = '启用成功',
BUSINESS_DISABLE_SUCCESS = '禁用成功',
BUSINESS_ADD_TEXT = '新增转换脚本',
BUSINESS_DELETE_TEXT = '批量删除',
BUSINESS_VIEW_TEXT = '查看转换脚本',
BUSINESS_TEST_TEXT = '测试转换脚本',
BUSINESS_EDIT_TEXT = '编辑转换脚本',
BUSINESS_SUBMIT_TEXT = '确定',
}
//业务脚本类型枚举
export enum ScriptTypeEnum {
//上行脚本
TRANSPORT_TCP_UP = 'TRANSPORT_TCP_UP',
//设备鉴权
TRANSPORT_TCP_AUTH = 'TRANSPORT_TCP_AUTH',
}
//Ace编辑器通用配置
export const aceEditorAttribtes = {
maxLines: 16, // 最大行数,超过会自动出现滚动条
minLines: 12, // 最小行数,还未到最大行数时,编辑器会自动伸缩大小
fontSize: 14, // 编辑器内字体大小
theme: 'ace/theme/chrome', // 默认设置的主题
mode: 'ace/mode/javascript', // 默认设置的语言模式
tabSize: 2, // 制表符设置为 4 个空格大小
};
export const aceEditorOptions = {
enableBasicAutocompletion: true,
enableLiveAutocompletion: true,
enableSnippets: true,
enableEmmet: true,
};
// 表格配置
export const columns: BasicColumn[] = [
{
title: '脚本名称',
dataIndex: 'name',
width: 80,
},
{
title: '脚本状态',
dataIndex: 'status',
width: 120,
slots: { customRender: 'status' },
},
{
title: '脚本内容',
dataIndex: 'convertJs',
width: 120,
slots: { customRender: 'convertJs' },
},
{
title: '备注',
dataIndex: 'description',
width: 120,
},
{
title: '创建时间',
dataIndex: 'createTime',
width: 180,
},
];
//表格通用属性配置
export const defaultTableAttribtes: BasicTableProps = {
columns,
title: '转换脚本列表',
showIndexColumn: false,
clickToRowSelect: false,
useSearchForm: true,
showTableSetting: true,
bordered: true,
rowKey: 'id',
actionColumn: {
width: 200,
title: '操作',
dataIndex: 'action',
slots: { customRender: 'action' },
fixed: 'right',
},
};
// 表格查询配置
export const searchFormSchema: FormSchema[] = [
{
field: 'name',
label: '脚本名称',
component: 'Input',
colProps: { span: 6 },
componentProps: {
maxLength: 36,
placeholder: '请输入配置名称',
},
},
{
field: 'sendTime',
label: '创建时间',
component: 'RangePicker',
componentProps: {
showTime: {
defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')],
},
},
colProps: { span: 6 },
},
];
//示例配置
export const defaultAuthTitle = h('div', { style: 'background:#404040' }, [
h('h3', { style: 'color:white' }, '设备鉴权示例'),
h('h3', { style: 'color:white' }, '输入参数:为16进制字符串'),
h('h3', { style: 'color:white' }, '输出参数:{"password":"","success":""}'),
h('h3', { style: 'color:white' }, 'password为设备鉴权信息,success为鉴权成功后响应给设备的内容'),
]);
export const defaultUpTitle = h('div', { style: 'background:#404040' }, [
h('h3', { style: 'color:white' }, '上行数据解析示例'),
h('h3', { style: 'color:white' }, '输入参数:为字符串'),
h(
'h3',
{ style: 'color:white' },
`输出参数:{"datas":{"source":""},"telemetry":true,"ackMsg":"","deviceName":"","ts":1681701034289}`
),
h(
'h3',
{ style: 'color:white' },
`datas:json对象,属性名为遥测指标或子设备名称
telemetry: datas内容是否为遥测数据
ackMsg: 响应给设备的确认消息
deviceName: 设备名称
ts: 数据采集时间`
),
]);
//用例配置
export const defaultScriptTypeContent = {
TRANSPORT_TCP_UP: `/*网关上行脚本*/
var teleData = {};
/*物模型数据(可选):原始数据*/
teleData.source = params;
/*网关设备:slaveDevice是网关子设备的“设备标识”*/
slaveDevice = params.substr(0, 2);
teleData[slaveDevice] = params;
out.datas = teleData;
out.telemetry = true;
/*必填:true表示设备上报的遥测数据,false表示命令下发的响应数据*/
`,
TRANSPORT_TCP_AUTH: `/*必填:设备的访问令牌*/
out.password = params;
/*选填:设备鉴权成功后响应给设备的信息*/
out.success = params;
`,
};
export const defaultTestUpExample = defaultScriptTypeContent['TRANSPORT_TCP_UP'];
export const defaultTestAuthExample = defaultScriptTypeContent['TRANSPORT_TCP_AUTH'];
export const defaultTestSubGatewayUpExample = `/*params为TCP上报的标准ModBus数据,实际使用或测试时请删除*/
var params = "010304026C00883BF0"
var teleData = {};
/*物模型数据(可选):原始数据*/
teleData.source = params;
/*直连设备:tempVal是产品物模型中所定义属性的标识符*/
tempVal = params;
/*物模型温度标识符*/
teleData.temperature = (parseInt('0x'+tempVal.substr(10, 4))*0.1).toFixed(2);
/*物模型湿度标识符*/
teleData.humidity = (parseInt('0x'+tempVal.substr(6, 4))*0.1).toFixed(2);
out.datas = teleData;
/*必填:true表示设备上报的遥测数据,false表示命令下发的响应数据*/
out.telemetry = true;`;