Commit c6f35eabd632b6dd3757eefacf7547965efee434
Merge branch 'cherry-pick-14ac14d6' into 'main'
fix: 修改创建产品数据携带hex长度的为偶数的问题 See merge request yunteng/thingskit-front!1533
Showing
3 changed files
with
36 additions
and
3 deletions
@@ -28,7 +28,7 @@ export default { | @@ -28,7 +28,7 @@ export default { | ||
28 | telemetryDataSubjectFilterText: 'Telemetry data subject filter', | 28 | telemetryDataSubjectFilterText: 'Telemetry data subject filter', |
29 | attributeTopicFilterText: 'Attribute topic filter', | 29 | attributeTopicFilterText: 'Attribute topic filter', |
30 | testScriptText: 'Test script', | 30 | testScriptText: 'Test script', |
31 | - hexLengthText: 'Hex length', | 31 | + hexLengthText: 'Min Hex length', |
32 | splicePositionText: 'Intercept start and stop position', | 32 | splicePositionText: 'Intercept start and stop position', |
33 | splicePositionHelpMessageText: | 33 | splicePositionHelpMessageText: |
34 | 'Example of interception: "ABCD".substring(0,2) The value after interception is "AB"', | 34 | 'Example of interception: "ABCD".substring(0,2) The value after interception is "AB"', |
@@ -36,6 +36,9 @@ export default { | @@ -36,6 +36,9 @@ export default { | ||
36 | splicePositionValidText: | 36 | splicePositionValidText: |
37 | 'The intercept start position is large and the intercept end position is large', | 37 | 'The intercept start position is large and the intercept end position is large', |
38 | spliceLengthValidText: 'Intercept start and stop position large with HEX length', | 38 | spliceLengthValidText: 'Intercept start and stop position large with HEX length', |
39 | + spliceLengthEndValidText: 'Cut end position is less than HEX length', | ||
40 | + spliceRemingLength: 'The remaining length position cannot be odd', | ||
41 | + spliceLengthNotSame: 'The starting and ending positions of the interception cannot be the same', | ||
39 | inputStartPositionText: 'Please enter the starting position', | 42 | inputStartPositionText: 'Please enter the starting position', |
40 | inputEndPositionText: 'Please enter cut-off location', | 43 | inputEndPositionText: 'Please enter cut-off location', |
41 | filterPrefixText: 'Matching prefix', | 44 | filterPrefixText: 'Matching prefix', |
@@ -28,12 +28,15 @@ export default { | @@ -28,12 +28,15 @@ export default { | ||
28 | telemetryDataSubjectFilterText: '遥测数据主题筛选器 ', | 28 | telemetryDataSubjectFilterText: '遥测数据主题筛选器 ', |
29 | attributeTopicFilterText: '属性主题过滤器', | 29 | attributeTopicFilterText: '属性主题过滤器', |
30 | testScriptText: '测试脚本', | 30 | testScriptText: '测试脚本', |
31 | - hexLengthText: 'HEX长度', | 31 | + hexLengthText: '最小HEX长度', |
32 | splicePositionText: '截取起止位置', | 32 | splicePositionText: '截取起止位置', |
33 | splicePositionHelpMessageText: '截取示例:"ABCD".substring(0,2) 截取后的值为"AB"', | 33 | splicePositionHelpMessageText: '截取示例:"ABCD".substring(0,2) 截取后的值为"AB"', |
34 | inputSpliceStartPositionText: '请输入截取起止位置', | 34 | inputSpliceStartPositionText: '请输入截取起止位置', |
35 | splicePositionValidText: '截取起始位置大于截取结束位置', | 35 | splicePositionValidText: '截取起始位置大于截取结束位置', |
36 | - spliceLengthValidText: '截取起止位置大与HEX长度', | 36 | + spliceLengthValidText: '截取起止位置大于HEX长度', |
37 | + spliceLengthEndValidText: '截取结束位置要小于HEX长度', | ||
38 | + spliceLengthNotSame: '截取起止位置不能相同', | ||
39 | + spliceRemingLength: '截取剩余长度位置不能是奇数', | ||
37 | inputStartPositionText: '请输入起始位置', | 40 | inputStartPositionText: '请输入起始位置', |
38 | inputEndPositionText: '请输入截止位置', | 41 | inputEndPositionText: '请输入截止位置', |
39 | filterPrefixText: '匹配前缀', | 42 | filterPrefixText: '匹配前缀', |
@@ -123,6 +123,24 @@ export const formSchemas = (deviceTypeStr: string): FormSchema[] => { | @@ -123,6 +123,24 @@ export const formSchemas = (deviceTypeStr: string): FormSchema[] => { | ||
123 | required: true, | 123 | required: true, |
124 | ifShow: ({ values }) => | 124 | ifShow: ({ values }) => |
125 | values[FormFieldsEnum.AuthType] === TCPProtocolAccessAuthTypeEnum.DataCombination, | 125 | values[FormFieldsEnum.AuthType] === TCPProtocolAccessAuthTypeEnum.DataCombination, |
126 | + rules: [ | ||
127 | + { | ||
128 | + required: true, | ||
129 | + validator(_rule, value) { | ||
130 | + const number = parseInt(value, 10); | ||
131 | + const isEven = number % 2 === 0; | ||
132 | + if (!value) { | ||
133 | + return Promise.reject( | ||
134 | + t('common.inputText') + t('deviceManagement.product.hexLengthText') | ||
135 | + ); | ||
136 | + } | ||
137 | + if (!isEven) { | ||
138 | + return Promise.reject(t('validator.hexLength')); | ||
139 | + } | ||
140 | + return Promise.resolve(); | ||
141 | + }, | ||
142 | + }, | ||
143 | + ], | ||
126 | componentProps: { | 144 | componentProps: { |
127 | precision: 0, | 145 | precision: 0, |
128 | min: 1, | 146 | min: 1, |
@@ -162,6 +180,15 @@ export const formSchemas = (deviceTypeStr: string): FormSchema[] => { | @@ -162,6 +180,15 @@ export const formSchemas = (deviceTypeStr: string): FormSchema[] => { | ||
162 | ) { | 180 | ) { |
163 | return Promise.reject(t('deviceManagement.product.spliceLengthValidText')); | 181 | return Promise.reject(t('deviceManagement.product.spliceLengthValidText')); |
164 | } | 182 | } |
183 | + if (value[FormFieldsEnum.SubEndIndex] >= hexLength) { | ||
184 | + return Promise.reject(t('deviceManagement.product.spliceLengthEndValidText')); | ||
185 | + } | ||
186 | + if ((hexLength - value[FormFieldsEnum.SubEndIndex]) % 2 !== 0) { | ||
187 | + return Promise.reject(t('deviceManagement.product.spliceRemingLength')); | ||
188 | + } | ||
189 | + if (value[FormFieldsEnum.SubBeginIndex] == value[FormFieldsEnum.SubEndIndex]) { | ||
190 | + return Promise.reject(t('deviceManagement.product.spliceLengthNotSame')); | ||
191 | + } | ||
165 | 192 | ||
166 | return Promise.resolve(); | 193 | return Promise.resolve(); |
167 | }, | 194 | }, |