Commit 0b912c71df8f3f6632bc395cc853bc46ef5fb680

Authored by 史婷婷
1 parent 9b3104eb

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

1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <project version="4">
3 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 12 <option name="SHOW_DIALOG" value="false" />
6 13 <option name="HIGHLIGHT_CONFLICTS" value="true" />
7 14 <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
... ... @@ -81,12 +88,6 @@
81 88 <Host>localhost</Host>
82 89 <Port>5050</Port>
83 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 91 <configuration default="true" type="Application" factoryName="Application">
91 92 <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
92 93 <method v="2">
... ... @@ -115,6 +116,15 @@
115 116 <option name="Make" enabled="true" />
116 117 </method>
117 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 128 </component>
119 129 <component name="SharedIndexes">
120 130 <attachedChunks>
... ... @@ -156,7 +166,15 @@
156 166 <component name="TypeScriptGeneratedFilesManager">
157 167 <option name="version" value="3" />
158 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 179 </component>
162 180 </project>
\ No newline at end of file
... ...
... ... @@ -344,6 +344,31 @@ export default {
344 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 373 return true
349 374 },
... ...
... ... @@ -264,6 +264,31 @@ export default {
264 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 293 return true
269 294 },
... ...
... ... @@ -44,18 +44,18 @@
44 44 </uni-list-item>
45 45 <uni-list-item title="厚度公差上限(mm)">
46 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 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 51 </template>
52 52 </uni-list-item>
53 53 <uni-list-item title="厚度公差下限(mm)">
54 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 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 59 </template>
60 60 </uni-list-item>
61 61 <uni-list-item title="宽度(mm)">
... ... @@ -67,18 +67,18 @@
67 67 </uni-list-item>
68 68 <uni-list-item title="宽度公差上限(mm)">
69 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 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 74 </template>
75 75 </uni-list-item>
76 76 <uni-list-item title="宽度公差下限(mm)">
77 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 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 82 </template>
83 83 </uni-list-item>
84 84 <uni-list-item title="长度(mm)">
... ... @@ -90,18 +90,18 @@
90 90 </uni-list-item>
91 91 <uni-list-item title="长度公差上限(mm)">
92 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 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 97 </template>
98 98 </uni-list-item>
99 99 <uni-list-item title="长度公差下限(mm)">
100 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 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 105 </template>
106 106 </uni-list-item>
107 107 <uni-list-item title="状态">
... ... @@ -178,22 +178,26 @@
178 178 <view class="value value-spec">
179 179 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
180 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 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 184 </view>
185 185 </view>
186 186 <view v-if="item.width" class="value-spec_val p12">*</view>
187 187 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
188 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 193 </view>
192 194 <view v-if="item.length" class="value-spec_val p12">*</view>
193 195 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
194 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 201 </view>
198 202 </view>
199 203 </view>
... ... @@ -274,7 +278,7 @@ export default {
274 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 279 this.items = init
276 280 },
277   - methods: {
  281 + methods: {
278 282 defaultItem() {
279 283 return {
280 284 id: '',
... ... @@ -302,7 +306,6 @@ export default {
302 306 },
303 307
304 308 onAdd() {
305   - if (this.items.length >= this.max) return uni.showToast({ title: `最多添加${this.max}个`, icon: 'none' })
306 309 const obj = this.defaultItem()
307 310 obj.collapsed = true
308 311 this.items.push(obj)
... ... @@ -358,6 +361,25 @@ export default {
358 361 if (isNaN(num) || num < 0) item[field] = '0'
359 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 383 toggleViewCollapse() {
362 384 this.collapsedView = !this.collapsedView
363 385 },
... ...
... ... @@ -34,14 +34,14 @@
34 34 <view v-if="item.width" class="value-spec_val p12">*</view>
35 35 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
36 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 39 </view>
40 40 <view v-if="item.length" class="value-spec_val p12">*</view>
41 41 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
42 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 45 </view>
46 46 </view>
47 47 </view>
... ... @@ -103,22 +103,24 @@
103 103 <view class="value value-spec">
104 104 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
105 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 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 109 </view>
110 110 </view>
111 111 <view v-if="item.width" class="value-spec_val p12">*</view>
112 112 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
113 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 118 </view>
117 119 <view v-if="item.length" class="value-spec_val p12">*</view>
118 120 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
119 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 124 </view>
123 125 </view>
124 126 </view>
... ...
... ... @@ -26,22 +26,26 @@
26 26 <view class="value value-spec">
27 27 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
28 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 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 32 </view>
33 33 </view>
34 34 <view v-if="item.width" class="value-spec_val p12">*</view>
35 35 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
36 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 41 </view>
40 42 <view v-if="item.length" class="value-spec_val p12">*</view>
41 43 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
42 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 49 </view>
46 50 </view>
47 51 </view>
... ... @@ -86,22 +90,26 @@
86 90 <view class="value value-spec">
87 91 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
88 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 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 96 </view>
93 97 </view>
94 98 <view v-if="item.width" class="value-spec_val p12">*</view>
95 99 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
96 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 105 </view>
100 106 <view v-if="item.length" class="value-spec_val p12">*</view>
101 107 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
102 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 113 </view>
106 114 </view>
107 115 </view>
... ...