Commit 0b912c71df8f3f6632bc395cc853bc46ef5fb680

Authored by 史婷婷
1 parent 9b3104eb

feat: 规格变更 上限>下限校验 ---要求: number,可负数可小数,两个都有值时,上限 要大于 下限 —订货单&规格变更单&撤销单 —(20号之后,单独分支)

1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 <component name="ChangeListManager"> 3 <component name="ChangeListManager">
4 - <list default="true" id="22e3db16-f3f9-44cc-b7ca-0b5f75df2820" name="Changes" comment="" /> 4 + <list default="true" id="22e3db16-f3f9-44cc-b7ca-0b5f75df2820" name="Changes" comment="">
  5 + <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
  6 + <change beforePath="$PROJECT_DIR$/pages/change_list/add.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/change_list/add.vue" afterDir="false" />
  7 + <change beforePath="$PROJECT_DIR$/pages/change_list/modify.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/change_list/modify.vue" afterDir="false" />
  8 + <change beforePath="$PROJECT_DIR$/pages/change_list/product.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/change_list/product.vue" afterDir="false" />
  9 + <change beforePath="$PROJECT_DIR$/pages/order_list/product.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/order_list/product.vue" afterDir="false" />
  10 + <change beforePath="$PROJECT_DIR$/pages/revoke_list/product.vue" beforeDir="false" afterPath="$PROJECT_DIR$/pages/revoke_list/product.vue" afterDir="false" />
  11 + </list>
5 <option name="SHOW_DIALOG" value="false" /> 12 <option name="SHOW_DIALOG" value="false" />
6 <option name="HIGHLIGHT_CONFLICTS" value="true" /> 13 <option name="HIGHLIGHT_CONFLICTS" value="true" />
7 <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> 14 <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -81,12 +88,6 @@ @@ -81,12 +88,6 @@
81 <Host>localhost</Host> 88 <Host>localhost</Host>
82 <Port>5050</Port> 89 <Port>5050</Port>
83 </configuration> 90 </configuration>
84 - <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">  
85 - <module name="" />  
86 - <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />  
87 - <option name="PROGRAM_PARAMETERS" />  
88 - <method />  
89 - </configuration>  
90 <configuration default="true" type="Application" factoryName="Application"> 91 <configuration default="true" type="Application" factoryName="Application">
91 <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> 92 <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
92 <method v="2"> 93 <method v="2">
@@ -115,6 +116,15 @@ @@ -115,6 +116,15 @@
115 <option name="Make" enabled="true" /> 116 <option name="Make" enabled="true" />
116 </method> 117 </method>
117 </configuration> 118 </configuration>
  119 + <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType">
  120 + <module name="" />
  121 + <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
  122 + <option name="PROGRAM_PARAMETERS" />
  123 + <predefined_log_file enabled="true" id="idea.log" />
  124 + <method v="2">
  125 + <option name="Make" enabled="true" />
  126 + </method>
  127 + </configuration>
118 </component> 128 </component>
119 <component name="SharedIndexes"> 129 <component name="SharedIndexes">
120 <attachedChunks> 130 <attachedChunks>
@@ -156,7 +166,15 @@ @@ -156,7 +166,15 @@
156 <component name="TypeScriptGeneratedFilesManager"> 166 <component name="TypeScriptGeneratedFilesManager">
157 <option name="version" value="3" /> 167 <option name="version" value="3" />
158 </component> 168 </component>
159 - <component name="VcsContentAnnotationSettings">  
160 - <option name="myLimit" value="2678400000" /> 169 + <component name="Vcs.Log.Tabs.Properties">
  170 + <option name="TAB_STATES">
  171 + <map>
  172 + <entry key="MAIN">
  173 + <value>
  174 + <State />
  175 + </value>
  176 + </entry>
  177 + </map>
  178 + </option>
161 </component> 179 </component>
162 </project> 180 </project>
@@ -344,6 +344,31 @@ export default { @@ -344,6 +344,31 @@ export default {
344 return false 344 return false
345 } 345 }
346 } 346 }
  347 + const has = (v) => v !== undefined && v !== null && String(v).trim() !== ''
  348 + if (has(it.thicknessTolPos) && has(it.thicknessTolNeg)) {
  349 + const pos = Number(it.thicknessTolPos)
  350 + const neg = Number(it.thicknessTolNeg)
  351 + if (!(pos > neg)) {
  352 + uni.showToast({ title: `产品第${i + 1}条:厚度公差上限需大于下限`, icon: 'none' })
  353 + return false
  354 + }
  355 + }
  356 + if (has(it.widthTolPos) && has(it.widthTolNeg)) {
  357 + const pos = Number(it.widthTolPos)
  358 + const neg = Number(it.widthTolNeg)
  359 + if (!(pos > neg)) {
  360 + uni.showToast({ title: `产品第${i + 1}条:宽度公差上限需大于下限`, icon: 'none' })
  361 + return false
  362 + }
  363 + }
  364 + if (has(it.lengthTolPos) && has(it.lengthTolNeg)) {
  365 + const pos = Number(it.lengthTolPos)
  366 + const neg = Number(it.lengthTolNeg)
  367 + if (!(pos > neg)) {
  368 + uni.showToast({ title: `产品第${i + 1}条:长度公差上限需大于下限`, icon: 'none' })
  369 + return false
  370 + }
  371 + }
347 } 372 }
348 return true 373 return true
349 }, 374 },
@@ -264,6 +264,31 @@ export default { @@ -264,6 +264,31 @@ export default {
264 return false 264 return false
265 } 265 }
266 } 266 }
  267 + const has = (v) => v !== undefined && v !== null && String(v).trim() !== ''
  268 + if (has(it.thicknessTolPos) && has(it.thicknessTolNeg)) {
  269 + const pos = Number(it.thicknessTolPos)
  270 + const neg = Number(it.thicknessTolNeg)
  271 + if (!(pos > neg)) {
  272 + uni.showToast({ title: `产品第${i + 1}条:厚度公差上限需大于下限`, icon: 'none' })
  273 + return false
  274 + }
  275 + }
  276 + if (has(it.widthTolPos) && has(it.widthTolNeg)) {
  277 + const pos = Number(it.widthTolPos)
  278 + const neg = Number(it.widthTolNeg)
  279 + if (!(pos > neg)) {
  280 + uni.showToast({ title: `产品第${i + 1}条:宽度公差上限需大于下限`, icon: 'none' })
  281 + return false
  282 + }
  283 + }
  284 + if (has(it.lengthTolPos) && has(it.lengthTolNeg)) {
  285 + const pos = Number(it.lengthTolPos)
  286 + const neg = Number(it.lengthTolNeg)
  287 + if (!(pos > neg)) {
  288 + uni.showToast({ title: `产品第${i + 1}条:长度公差上限需大于下限`, icon: 'none' })
  289 + return false
  290 + }
  291 + }
267 } 292 }
268 return true 293 return true
269 }, 294 },
@@ -44,18 +44,18 @@ @@ -44,18 +44,18 @@
44 </uni-list-item> 44 </uni-list-item>
45 <uni-list-item title="厚度公差上限(mm)"> 45 <uni-list-item title="厚度公差上限(mm)">
46 <template v-slot:footer> 46 <template v-slot:footer>
47 - <uni-easyinput type="digit" v-model="item.thicknessTolPos" placeholder="请输入厚度公差 +" 47 + <uni-easyinput type="number" v-model="item.thicknessTolPos" placeholder="请输入厚度公差上限"
48 :inputBorder="false" 48 :inputBorder="false"
49 - @input="onNonNegativeNumberInput($event, item, idx, 'thicknessTolPos')"  
50 - @blur="onNonNegativeNumberBlur(item, idx, 'thicknessTolPos')" /> 49 + @input="onRealNumberInput($event, item, idx, 'thicknessTolPos')"
  50 + @blur="onRealNumberBlur(item, idx, 'thicknessTolPos')" />
51 </template> 51 </template>
52 </uni-list-item> 52 </uni-list-item>
53 <uni-list-item title="厚度公差下限(mm)"> 53 <uni-list-item title="厚度公差下限(mm)">
54 <template v-slot:footer> 54 <template v-slot:footer>
55 - <uni-easyinput type="digit" v-model="item.thicknessTolNeg" placeholder="请输入厚度公差 -" 55 + <uni-easyinput type="number" v-model="item.thicknessTolNeg" placeholder="请输入厚度公差下限"
56 :inputBorder="false" 56 :inputBorder="false"
57 - @input="onNonNegativeNumberInput($event, item, idx, 'thicknessTolNeg')"  
58 - @blur="onNonNegativeNumberBlur(item, idx, 'thicknessTolNeg')" /> 57 + @input="onRealNumberInput($event, item, idx, 'thicknessTolNeg')"
  58 + @blur="onRealNumberBlur(item, idx, 'thicknessTolNeg')" />
59 </template> 59 </template>
60 </uni-list-item> 60 </uni-list-item>
61 <uni-list-item title="宽度(mm)"> 61 <uni-list-item title="宽度(mm)">
@@ -67,18 +67,18 @@ @@ -67,18 +67,18 @@
67 </uni-list-item> 67 </uni-list-item>
68 <uni-list-item title="宽度公差上限(mm)"> 68 <uni-list-item title="宽度公差上限(mm)">
69 <template v-slot:footer> 69 <template v-slot:footer>
70 - <uni-easyinput type="digit" v-model="item.widthTolPos" placeholder="请输入宽度公差 +" 70 + <uni-easyinput type="number" v-model="item.widthTolPos" placeholder="请输入宽度公差上限"
71 :inputBorder="false" 71 :inputBorder="false"
72 - @input="onNonNegativeNumberInput($event, item, idx, 'widthTolPos')"  
73 - @blur="onNonNegativeNumberBlur(item, idx, 'widthTolPos')" /> 72 + @input="onRealNumberInput($event, item, idx, 'widthTolPos')"
  73 + @blur="onRealNumberBlur(item, idx, 'widthTolPos')" />
74 </template> 74 </template>
75 </uni-list-item> 75 </uni-list-item>
76 <uni-list-item title="宽度公差下限(mm)"> 76 <uni-list-item title="宽度公差下限(mm)">
77 <template v-slot:footer> 77 <template v-slot:footer>
78 - <uni-easyinput type="digit" v-model="item.widthTolNeg" placeholder="请输入宽度公差 -" 78 + <uni-easyinput type="number" v-model="item.widthTolNeg" placeholder="请输入宽度公差下限"
79 :inputBorder="false" 79 :inputBorder="false"
80 - @input="onNonNegativeNumberInput($event, item, idx, 'widthTolNeg')"  
81 - @blur="onNonNegativeNumberBlur(item, idx, 'widthTolNeg')" /> 80 + @input="onRealNumberInput($event, item, idx, 'widthTolNeg')"
  81 + @blur="onRealNumberBlur(item, idx, 'widthTolNeg')" />
82 </template> 82 </template>
83 </uni-list-item> 83 </uni-list-item>
84 <uni-list-item title="长度(mm)"> 84 <uni-list-item title="长度(mm)">
@@ -90,18 +90,18 @@ @@ -90,18 +90,18 @@
90 </uni-list-item> 90 </uni-list-item>
91 <uni-list-item title="长度公差上限(mm)"> 91 <uni-list-item title="长度公差上限(mm)">
92 <template v-slot:footer> 92 <template v-slot:footer>
93 - <uni-easyinput type="digit" v-model="item.lengthTolPos" placeholder="请输入长度公差 +" 93 + <uni-easyinput type="number" v-model="item.lengthTolPos" placeholder="请输入长度公差上限"
94 :inputBorder="false" 94 :inputBorder="false"
95 - @input="onNonNegativeNumberInput($event, item, idx, 'lengthTolPos')"  
96 - @blur="onNonNegativeNumberBlur(item, idx, 'lengthTolPos')" /> 95 + @input="onRealNumberInput($event, item, idx, 'lengthTolPos')"
  96 + @blur="onRealNumberBlur(item, idx, 'lengthTolPos')" />
97 </template> 97 </template>
98 </uni-list-item> 98 </uni-list-item>
99 <uni-list-item title="长度公差下限(mm)"> 99 <uni-list-item title="长度公差下限(mm)">
100 <template v-slot:footer> 100 <template v-slot:footer>
101 - <uni-easyinput type="digit" v-model="item.lengthTolNeg" placeholder="请输入长度公差 -" 101 + <uni-easyinput type="number" v-model="item.lengthTolNeg" placeholder="请输入长度公差下限"
102 :inputBorder="false" 102 :inputBorder="false"
103 - @input="onNonNegativeNumberInput($event, item, idx, 'lengthTolNeg')"  
104 - @blur="onNonNegativeNumberBlur(item, idx, 'lengthTolNeg')" /> 103 + @input="onRealNumberInput($event, item, idx, 'lengthTolNeg')"
  104 + @blur="onRealNumberBlur(item, idx, 'lengthTolNeg')" />
105 </template> 105 </template>
106 </uni-list-item> 106 </uni-list-item>
107 <uni-list-item title="状态"> 107 <uni-list-item title="状态">
@@ -178,22 +178,26 @@ @@ -178,22 +178,26 @@
178 <view class="value value-spec"> 178 <view class="value value-spec">
179 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view> 179 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
180 <view v-if="item.thickness" class="value-spec_box"> 180 <view v-if="item.thickness" class="value-spec_box">
181 - <view v-if="item.thicknessTolPos" class="value-spec_box_1">+{{ item.thicknessTolPos }} 181 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
182 </view> 182 </view>
183 - <view v-if="item.thicknessTolNeg" class="value-spec_box_2">-{{ item.thicknessTolNeg }} 183 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
184 </view> 184 </view>
185 </view> 185 </view>
186 <view v-if="item.width" class="value-spec_val p12">*</view> 186 <view v-if="item.width" class="value-spec_val p12">*</view>
187 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view> 187 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
188 <view v-if="item.width" class="value-spec_box"> 188 <view v-if="item.width" class="value-spec_box">
189 - <view v-if="item.widthTolPos" class="value-spec_box_1">+{{ item.widthTolPos }}</view>  
190 - <view v-if="item.widthTolNeg" class="value-spec_box_2">-{{ item.widthTolNeg }}</view> 189 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  190 + </view>
  191 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  192 + </view>
191 </view> 193 </view>
192 <view v-if="item.length" class="value-spec_val p12">*</view> 194 <view v-if="item.length" class="value-spec_val p12">*</view>
193 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view> 195 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
194 <view v-if="item.length" class="value-spec_box"> 196 <view v-if="item.length" class="value-spec_box">
195 - <view v-if="item.lengthTolPos" class="value-spec_box_1">+{{ item.lengthTolPos }}</view>  
196 - <view v-if="item.lengthTolNeg" class="value-spec_box_2">-{{ item.lengthTolNeg }}</view> 197 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}
  198 + </view>
  199 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}
  200 + </view>
197 </view> 201 </view>
198 </view> 202 </view>
199 </view> 203 </view>
@@ -274,7 +278,7 @@ export default { @@ -274,7 +278,7 @@ export default {
274 const init = Array.isArray(this.list) && this.list.length > 0 ? this.list.map(v => ({ ...this.defaultItem(), ...v, collapsed: false })) : [{ ...this.defaultItem(), collapsed: false }] 278 const init = Array.isArray(this.list) && this.list.length > 0 ? this.list.map(v => ({ ...this.defaultItem(), ...v, collapsed: false })) : [{ ...this.defaultItem(), collapsed: false }]
275 this.items = init 279 this.items = init
276 }, 280 },
277 - methods: { 281 + methods: {
278 defaultItem() { 282 defaultItem() {
279 return { 283 return {
280 id: '', 284 id: '',
@@ -302,7 +306,6 @@ export default { @@ -302,7 +306,6 @@ export default {
302 }, 306 },
303 307
304 onAdd() { 308 onAdd() {
305 - if (this.items.length >= this.max) return uni.showToast({ title: `最多添加${this.max}个`, icon: 'none' })  
306 const obj = this.defaultItem() 309 const obj = this.defaultItem()
307 obj.collapsed = true 310 obj.collapsed = true
308 this.items.push(obj) 311 this.items.push(obj)
@@ -358,6 +361,25 @@ export default { @@ -358,6 +361,25 @@ export default {
358 if (isNaN(num) || num < 0) item[field] = '0' 361 if (isNaN(num) || num < 0) item[field] = '0'
359 if (typeof idx === 'number') this.$set(this.items, idx, { ...item }) 362 if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
360 }, 363 },
  364 + onRealNumberInput(val, item, idx, field) {
  365 + let s = String(val != null ? val : (item && item[field]) || '')
  366 + const neg = s.trim().startsWith('-')
  367 + s = s.replace(/[^0-9.\-]/g, '')
  368 + s = s.replace(/(?!^)-/g, '')
  369 + s = s.replace(/(\..*)\./g, '$1')
  370 + if (s.startsWith('.')) s = '0' + s
  371 + if (s.startsWith('-.')) s = '-0.' + s.slice(2)
  372 + if (neg && !s.startsWith('-')) s = '-' + s.replace(/-/g, '')
  373 + item[field] = s
  374 + if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
  375 + },
  376 + onRealNumberBlur(item, idx, field) {
  377 + const s = String((item && item[field]) || '')
  378 + if (s === '') { if (typeof idx === 'number') this.$set(this.items, idx, { ...item }); return }
  379 + const n = Number(s)
  380 + if (isNaN(n)) item[field] = ''
  381 + if (typeof idx === 'number') this.$set(this.items, idx, { ...item })
  382 + },
361 toggleViewCollapse() { 383 toggleViewCollapse() {
362 this.collapsedView = !this.collapsedView 384 this.collapsedView = !this.collapsedView
363 }, 385 },
@@ -34,14 +34,14 @@ @@ -34,14 +34,14 @@
34 <view v-if="item.width" class="value-spec_val p12">*</view> 34 <view v-if="item.width" class="value-spec_val p12">*</view>
35 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view> 35 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
36 <view v-if="item.width" class="value-spec_box"> 36 <view v-if="item.width" class="value-spec_box">
37 - <view v-if="item.widthTolPos" class="value-spec_box_1">+{{ item.widthTolPos }}</view>  
38 - <view v-if="item.widthTolNeg" class="value-spec_box_2">-{{ item.widthTolNeg }}</view> 37 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}</view>
  38 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}</view>
39 </view> 39 </view>
40 <view v-if="item.length" class="value-spec_val p12">*</view> 40 <view v-if="item.length" class="value-spec_val p12">*</view>
41 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view> 41 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
42 <view v-if="item.length" class="value-spec_box"> 42 <view v-if="item.length" class="value-spec_box">
43 - <view v-if="item.lengthTolPos" class="value-spec_box_1">+{{ item.lengthTolPos }}</view>  
44 - <view v-if="item.lengthTolNeg" class="value-spec_box_2">-{{ item.lengthTolNeg }}</view> 43 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}</view>
  44 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}</view>
45 </view> 45 </view>
46 </view> 46 </view>
47 </view> 47 </view>
@@ -103,22 +103,24 @@ @@ -103,22 +103,24 @@
103 <view class="value value-spec"> 103 <view class="value value-spec">
104 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view> 104 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
105 <view v-if="item.thickness" class="value-spec_box"> 105 <view v-if="item.thickness" class="value-spec_box">
106 - <view v-if="item.thicknessTolPos" class="value-spec_box_1">+{{ item.thicknessTolPos }} 106 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
107 </view> 107 </view>
108 - <view v-if="item.thicknessTolNeg" class="value-spec_box_2">-{{ item.thicknessTolNeg }} 108 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
109 </view> 109 </view>
110 </view> 110 </view>
111 <view v-if="item.width" class="value-spec_val p12">*</view> 111 <view v-if="item.width" class="value-spec_val p12">*</view>
112 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view> 112 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
113 <view v-if="item.width" class="value-spec_box"> 113 <view v-if="item.width" class="value-spec_box">
114 - <view v-if="item.widthTolPos" class="value-spec_box_1">+{{ item.widthTolPos }}</view>  
115 - <view v-if="item.widthTolNeg" class="value-spec_box_2">-{{ item.widthTolNeg }}</view> 114 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  115 + </view>
  116 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  117 + </view>
116 </view> 118 </view>
117 <view v-if="item.length" class="value-spec_val p12">*</view> 119 <view v-if="item.length" class="value-spec_val p12">*</view>
118 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view> 120 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
119 <view v-if="item.length" class="value-spec_box"> 121 <view v-if="item.length" class="value-spec_box">
120 - <view v-if="item.lengthTolPos" class="value-spec_box_1">+{{ item.lengthTolPos }}</view>  
121 - <view v-if="item.lengthTolNeg" class="value-spec_box_2">-{{ item.lengthTolNeg }}</view> 122 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}</view>
  123 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}</view>
122 </view> 124 </view>
123 </view> 125 </view>
124 </view> 126 </view>
@@ -26,22 +26,26 @@ @@ -26,22 +26,26 @@
26 <view class="value value-spec"> 26 <view class="value value-spec">
27 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view> 27 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
28 <view v-if="item.thickness" class="value-spec_box"> 28 <view v-if="item.thickness" class="value-spec_box">
29 - <view v-if="item.thicknessTolPos" class="value-spec_box_1">+{{ item.thicknessTolPos }} 29 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
30 </view> 30 </view>
31 - <view v-if="item.thicknessTolNeg" class="value-spec_box_2">-{{ item.thicknessTolNeg }} 31 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
32 </view> 32 </view>
33 </view> 33 </view>
34 <view v-if="item.width" class="value-spec_val p12">*</view> 34 <view v-if="item.width" class="value-spec_val p12">*</view>
35 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view> 35 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
36 <view v-if="item.width" class="value-spec_box"> 36 <view v-if="item.width" class="value-spec_box">
37 - <view v-if="item.widthTolPos" class="value-spec_box_1">+{{ item.widthTolPos }}</view>  
38 - <view v-if="item.widthTolNeg" class="value-spec_box_2">-{{ item.widthTolNeg }}</view> 37 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  38 + </view>
  39 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  40 + </view>
39 </view> 41 </view>
40 <view v-if="item.length" class="value-spec_val p12">*</view> 42 <view v-if="item.length" class="value-spec_val p12">*</view>
41 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view> 43 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
42 <view v-if="item.length" class="value-spec_box"> 44 <view v-if="item.length" class="value-spec_box">
43 - <view v-if="item.lengthTolPos" class="value-spec_box_1">+{{ item.lengthTolPos }}</view>  
44 - <view v-if="item.lengthTolNeg" class="value-spec_box_2">-{{ item.lengthTolNeg }}</view> 45 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}
  46 + </view>
  47 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}
  48 + </view>
45 </view> 49 </view>
46 </view> 50 </view>
47 </view> 51 </view>
@@ -86,22 +90,26 @@ @@ -86,22 +90,26 @@
86 <view class="value value-spec"> 90 <view class="value value-spec">
87 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view> 91 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
88 <view v-if="item.thickness" class="value-spec_box"> 92 <view v-if="item.thickness" class="value-spec_box">
89 - <view v-if="item.thicknessTolPos" class="value-spec_box_1">+{{ item.thicknessTolPos }} 93 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
90 </view> 94 </view>
91 - <view v-if="item.thicknessTolNeg" class="value-spec_box_2">-{{ item.thicknessTolNeg }} 95 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
92 </view> 96 </view>
93 </view> 97 </view>
94 <view v-if="item.width" class="value-spec_val p12">*</view> 98 <view v-if="item.width" class="value-spec_val p12">*</view>
95 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view> 99 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
96 <view v-if="item.width" class="value-spec_box"> 100 <view v-if="item.width" class="value-spec_box">
97 - <view v-if="item.widthTolPos" class="value-spec_box_1">+{{ item.widthTolPos }}</view>  
98 - <view v-if="item.widthTolNeg" class="value-spec_box_2">-{{ item.widthTolNeg }}</view> 101 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  102 + </view>
  103 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  104 + </view>
99 </view> 105 </view>
100 <view v-if="item.length" class="value-spec_val p12">*</view> 106 <view v-if="item.length" class="value-spec_val p12">*</view>
101 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view> 107 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
102 <view v-if="item.length" class="value-spec_box"> 108 <view v-if="item.length" class="value-spec_box">
103 - <view v-if="item.lengthTolPos" class="value-spec_box_1">+{{ item.lengthTolPos }}</view>  
104 - <view v-if="item.lengthTolNeg" class="value-spec_box_2">-{{ item.lengthTolNeg }}</view> 109 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}
  110 + </view>
  111 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}
  112 + </view>
105 </view> 113 </view>
106 </view> 114 </view>
107 </view> 115 </view>