Commit ff4eb366bb1115d428ef6b0aa48c2c6a78efc14a

Authored by chenbiao
1 parent c017d0f8

add 初始化停车缴费页面 支付订单页成功后 跳转至停车缴费页面 优化代码

pages/inputCarNumber/inputCarNumber.vue
1   -
2 1 <template>
3 2  
4 3 <view class="so-mask">
5 4  
6   - <view class="bg-icon" :class="set" >
  5 + <view class="bg-icon" :class="set">
7 6 <image :src="carBg" mode="" class="bac" />
8 7 <view class="bg-text">
9 8 <view class="bg-text-top">输 入 车 牌 号</view>
... ... @@ -27,29 +26,37 @@
27 26 </view>
28 27 </view>
29 28 <view class="so-plate-body" @click="plateShowOrHide = true">
30   - <view class="so-plate-word" :class="{ active: currentInputIndex == 0 }" @tap="inputSwitch" data-index="0">
  29 + <view class="so-plate-word" :class="{ active: currentInputIndex == 0 }" @tap="inputSwitch"
  30 + data-index="0">
31 31 <text>{{ currentInputValue[0] }}</text>
32 32 </view>
33   - <view class="so-plate-word" :class="{ active: currentInputIndex == 1 }" @tap="inputSwitch" data-index="1">
  33 + <view class="so-plate-word" :class="{ active: currentInputIndex == 1 }" @tap="inputSwitch"
  34 + data-index="1">
34 35 <text>{{ currentInputValue[1] }}</text>
35 36 </view>
36 37 <view class="so-plate-dot"></view>
37   - <view class="so-plate-word" :class="{ active: currentInputIndex == 2 }" @tap="inputSwitch" data-index="2">
  38 + <view class="so-plate-word" :class="{ active: currentInputIndex == 2 }" @tap="inputSwitch"
  39 + data-index="2">
38 40 <text>{{ currentInputValue[2] }}</text>
39 41 </view>
40   - <view class="so-plate-word" :class="{ active: currentInputIndex == 3 }" @tap="inputSwitch" data-index="3">
  42 + <view class="so-plate-word" :class="{ active: currentInputIndex == 3 }" @tap="inputSwitch"
  43 + data-index="3">
41 44 <text>{{ currentInputValue[3] }}</text>
42 45 </view>
43   - <view class="so-plate-word" :class="{ active: currentInputIndex == 4 }" @tap="inputSwitch" data-index="4">
  46 + <view class="so-plate-word" :class="{ active: currentInputIndex == 4 }" @tap="inputSwitch"
  47 + data-index="4">
44 48 <text>{{ currentInputValue[4] }}</text>
45 49 </view>
46   - <view class="so-plate-word" :class="{ active: currentInputIndex == 5 }" @tap="inputSwitch" data-index="5">
  50 + <view class="so-plate-word" :class="{ active: currentInputIndex == 5 }" @tap="inputSwitch"
  51 + data-index="5">
47 52 <text>{{ currentInputValue[5] }}</text>
48 53 </view>
49   - <view class="so-plate-word" :class="{ active: currentInputIndex == 6 }" @tap="inputSwitch" data-index="6">
  54 + <view class="so-plate-word" :class="{ active: currentInputIndex == 6 }" @tap="inputSwitch"
  55 + data-index="6">
50 56 <text>{{ currentInputValue[6] }}</text>
51 57 </view>
52   - <view class="so-plate-word" :class="{ active: currentInputIndex == 7 }" @tap="inputSwitch" v-if="type == 2" data-index="7">
  58 + <view class="so-plate-word" :class="{ active: currentInputIndex == 7 }" @tap="inputSwitch"
  59 + v-if="type == 2" data-index="7">
53 60 <text>{{ currentInputValue[7] }}</text>
54 61 </view>
55 62 </view>
... ... @@ -59,26 +66,30 @@
59 66  
60 67 <view style="padding: 0 10px;position: fixed;bottom: 0;left:0">
61 68 <view class="so-plate-foot" v-show="plateShowOrHide">
62   - <view class="so-plate-keyboard" :style="{height:keyboardHeight}">
  69 + <view class="so-plate-keyboard" :style="{height:keyboardHeight}">
63 70 <view id="keyboard">
64 71 <block v-if="inputType == 1">
65   - <view hover-class="hover" class="so-plate-key" v-for="el of provinceText" :key="el" :data-value="el" @tap="chooseKey">{{ el }}</view>
  72 + <view hover-class="hover" class="so-plate-key" v-for="el of provinceText" :key="el"
  73 + :data-value="el" @tap="chooseKey">{{ el }}</view>
66 74 </block>
67 75 <block v-if="inputType == 1">
68 76 <text class="so-plate-key fill-block"></text>
69 77 <text class="so-plate-key fill-block"></text>
70 78 </block>
71 79 <block v-if="inputType >= 3">
72   - <view hover-class="hover" class="so-plate-key" v-for="el of numberText" :key="el" :data-value="el" @tap="chooseKey">{{ el }}</view>
  80 + <view hover-class="hover" class="so-plate-key" v-for="el of numberText" :key="el"
  81 + :data-value="el" @tap="chooseKey">{{ el }}</view>
73 82 </block>
74 83 <block v-if="inputType >= 2">
75   - <view hover-class="hover" class="so-plate-key" v-for="el of wordText" :key="el" :data-value="el" @tap="chooseKey">{{ el }}</view>
  84 + <view hover-class="hover" class="so-plate-key" v-for="el of wordText" :key="el"
  85 + :data-value="el" @tap="chooseKey">{{ el }}</view>
76 86 </block>
77 87 <block v-if="inputType == 3">
78 88 <text v-for="el of fillBlock" :key="el.num" class="so-plate-key fill-block"></text>
79 89 </block>
80 90 <block v-if="inputType == 4">
81   - <view hover-class="hover" class="so-plate-key" v-for="el of lastWordText" :key="el" :data-value="el" @tap="chooseKey">{{ el }}</view>
  91 + <view hover-class="hover" class="so-plate-key" v-for="el of lastWordText" :key="el"
  92 + :data-value="el" @tap="chooseKey">{{ el }}</view>
82 93 </block>
83 94 <text v-if="inputType == 4" class="so-plate-key fill-block"></text>
84 95 </view>
... ... @@ -99,214 +110,237 @@
99 110 </view>
100 111 </template>
101 112 <script>
  113 + import carBg from 'static/inputCarNumber_pic/carBg.png'
102 114  
103   -import carBg from 'static/inputCarNumber_pic/carBg.png'
104   -
105   -export default {
106   - name: 'uni-plate-input',
107   - data() {
108   - return {
109   - plateShowOrHide: false,
110   - type: 1, //车牌类型
111   - currentInputIndex: 2, //当前编辑的输入框
112   - currentInputValue: ['苏', 'B', '', '', '', '', ''],
113   - fillBlock:[{num:11},{num:12},{num:13},{num:14},{num:15},{num:16}], //避免:key报错
114   - keyboardHeightInit:false,
115   - keyboardHeight:'auto',
116   - carBg: '',
117   - provinceText: [
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   - numberText: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
151   - wordText: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
152   - lastWordText: ['港', '澳', '学', '领', '警']
153   - };
154   - },
155   - props: {
156   - // plate: {
157   - // type: String
158   - // }
159   - },
160   - onShow(){
161   - this.carBg = carBg
162   - },
163   - computed: {
164   - //输入框类型
165   - inputType() {
166   - switch (this.currentInputIndex) {
167   - case 0:
168   - return 1;
169   - break;
170   - case 1:
171   - return 2;
172   - break;
173   - case 2:
174   - return 3;
175   - break;
176   - case 3:
177   - return 3;
178   - break;
179   - case 4:
180   - return 3;
181   - break;
182   - case 5:
183   - return 3;
184   - break;
185   - case 6:
186   - return this.type==2 ? 3 :4 ;
187   - break;
188   - case 7:
189   - return 4;
190   - break;
191   - default:
192   - return 1;
193   - break;
194   - }
195   - }
196   - },
197   - watch:{
198   - // currentInputIndex:function(n,o){
199   - // if(!this.keyboardHeightInit) return
200   - // this.$nextTick(()=>{
201   - // this.changeKeyboardHeight()
202   - // })
203   - // }
204   - },
205   - methods: {
206   - //车牌类型切换
207   - typeChange(e) {
208   - const {value} = e.detail;
209   - this.type = parseInt(value)
210   - this.currentInputIndex = 0
211   - if(value==1){
212   - this.currentInputValue = ['','','','','','','']
213   - }else{
214   - this.currentInputValue = ['','','','','','','','']
215   - }
216   - },
217   - inputSwitch(e) {
218   - const { index } = e.currentTarget.dataset;
219   - this.currentInputIndex = parseInt(index);
220   - },
221   - chooseKey(e) {
222   - const { value } = e.currentTarget.dataset;
223   - this.$set(this.currentInputValue, this.currentInputIndex, value);
224   - if(this.type==1 && this.currentInputIndex<6){
225   - this.currentInputIndex++
226   - }
227   - if(this.type==2 && this.currentInputIndex<7){
228   - this.currentInputIndex++
229   - }
230   - },
231   - deleteKey(){
232   - this.$set(this.currentInputValue,this.currentInputIndex,'')
233   - if(this.currentInputIndex!=0) this.currentInputIndex--
234   - },
235   - exportPlate(){
236   - const plate = this.currentInputValue.join('')
237   - let err = false
238   - if(this.type===1&&plate.length!=7){
239   - err = true
240   - }else if(this.type===2&&plate.length!=8){
241   - err = true
242   - }
243   - if(err) return uni.showToast({
244   - title:'请输入完整的车牌号码',
245   - icon:'error'
246   - })
  115 + export default {
  116 + name: 'uni-plate-input',
  117 + data() {
  118 + return {
  119 + plateShowOrHide: false,
  120 + type: 1, //车牌类型
  121 + currentInputIndex: 2, //当前编辑的输入框
  122 + currentInputValue: ['苏', 'B', '', '', '', '', ''],
  123 + fillBlock: [{
  124 + num: 11
  125 + }, {
  126 + num: 12
  127 + }, {
  128 + num: 13
  129 + }, {
  130 + num: 14
  131 + }, {
  132 + num: 15
  133 + }, {
  134 + num: 16
  135 + }], //避免:key报错
  136 + keyboardHeightInit: false,
  137 + keyboardHeight: 'auto',
  138 + carBg: '',
  139 + provinceText: [
  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 + numberText: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
  173 + wordText: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U',
  174 + 'V', 'W', 'X', 'Y', 'Z'
  175 + ],
  176 + lastWordText: ['港', '澳', '学', '领', '警']
  177 + };
  178 + },
  179 + props: {
  180 + // plate: {
  181 + // type: String
  182 + // }
  183 + },
  184 + onLoad() {
  185 + this.type = 1;
  186 + this.currentInputValue = ['苏', 'B', '', '', '', '', ''];
  187 + this.currentInputIndex = 2;
  188 + },
  189 + onShow() {
  190 + this.carBg = carBg
  191 + },
  192 + computed: {
  193 + //输入框类型
  194 + inputType() {
  195 + switch (this.currentInputIndex) {
  196 + case 0:
  197 + return 1;
  198 + break;
  199 + case 1:
  200 + return 2;
  201 + break;
  202 + case 2:
  203 + return 3;
  204 + break;
  205 + case 3:
  206 + return 3;
  207 + break;
  208 + case 4:
  209 + return 3;
  210 + break;
  211 + case 5:
  212 + return 3;
  213 + break;
  214 + case 6:
  215 + return this.type == 2 ? 3 : 4;
  216 + break;
  217 + case 7:
  218 + return 4;
  219 + break;
  220 + default:
  221 + return 1;
  222 + break;
  223 + }
  224 + }
  225 + },
  226 + watch: {
  227 + // currentInputIndex:function(n,o){
  228 + // if(!this.keyboardHeightInit) return
  229 + // this.$nextTick(()=>{
  230 + // this.changeKeyboardHeight()
  231 + // })
  232 + // }
  233 + },
  234 + methods: {
  235 + //车牌类型切换
  236 + typeChange(e) {
  237 + const {
  238 + value
  239 + } = e.detail;
  240 + this.type = parseInt(value)
  241 + this.currentInputIndex = 0
  242 + if (value == 1) {
  243 + this.currentInputValue = ['', '', '', '', '', '', '']
  244 + } else {
  245 + this.currentInputValue = ['', '', '', '', '', '', '', '']
  246 + }
  247 + },
  248 + inputSwitch(e) {
  249 + const {
  250 + index
  251 + } = e.currentTarget.dataset;
  252 + this.currentInputIndex = parseInt(index);
  253 + },
  254 + chooseKey(e) {
  255 + const {
  256 + value
  257 + } = e.currentTarget.dataset;
  258 + this.$set(this.currentInputValue, this.currentInputIndex, value);
  259 + if (this.type == 1 && this.currentInputIndex < 6) {
  260 + this.currentInputIndex++
  261 + }
  262 + if (this.type == 2 && this.currentInputIndex < 7) {
  263 + this.currentInputIndex++
  264 + }
  265 + },
  266 + deleteKey() {
  267 + this.$set(this.currentInputValue, this.currentInputIndex, '')
  268 + if (this.currentInputIndex != 0) this.currentInputIndex--
  269 + },
  270 + exportPlate() {
  271 + const plate = this.currentInputValue.join('')
  272 + let err = false
  273 + if (this.type === 1 && plate.length != 7) {
  274 + err = true
  275 + } else if (this.type === 2 && plate.length != 8) {
  276 + err = true
  277 + }
  278 + if (err) return uni.showToast({
  279 + title: '请输入完整的车牌号码',
  280 + icon: 'error'
  281 + })
247 282  
248   - console.log(plate)
  283 + console.log(plate)
249 284  
250   - uni.navigateTo({
251   - url: '../parkPay/parkPay?carNumber='+plate
252   - })
253   - },
254   - changeKeyboardHeight(){
255   - const that = this
256   - const query = uni.createSelectorQuery().in(this);
257   - query.select('#keyboard').boundingClientRect();
258   - query.exec(function(res) {
259   - if(res&&res[0]){
260   - that.keyboardHeight = res[0].height + uni.upx2px(30) + 'px'
261   - that.keyboardHeightInit = true
262   - }
263   - });
264   - }
265   - },
266   - mounted() {
267   - console.log(this.plate);
268   - const plateKey = this.plate.split('')
269   - if(plateKey.length===7){
270   - this.type=1
271   - }else if(plateKey.length===8){
272   - this.type=2
273   - }
274   - if(plateKey.length===7 || plateKey.length===8){
275   - this.currentInputValue = plateKey
276   - this.currentInputIndex = plateKey.length-1
277   - }
  285 + uni.navigateTo({
  286 + url: '../parkPay/parkPay?carNumber=' + plate
  287 + })
  288 + },
  289 + changeKeyboardHeight() {
  290 + const that = this
  291 + const query = uni.createSelectorQuery().in(this);
  292 + query.select('#keyboard').boundingClientRect();
  293 + query.exec(function(res) {
  294 + if (res && res[0]) {
  295 + that.keyboardHeight = res[0].height + uni.upx2px(30) + 'px'
  296 + that.keyboardHeightInit = true
  297 + }
  298 + });
  299 + }
  300 + },
  301 + mounted() {
  302 + console.log(this.plate);
  303 + const plateKey = this.plate.split('')
  304 + if (plateKey.length === 7) {
  305 + this.type = 1
  306 + } else if (plateKey.length === 8) {
  307 + this.type = 2
  308 + }
  309 + if (plateKey.length === 7 || plateKey.length === 8) {
  310 + this.currentInputValue = plateKey
  311 + this.currentInputIndex = plateKey.length - 1
  312 + }
278 313  
279   - setTimeout(() => { //在动画结束之后才开始获取
280   - this.$nextTick(()=>{
281   - this.changeKeyboardHeight()
282   - })
283   - }, 500);
284   - }
285   -};
  314 + setTimeout(() => { //在动画结束之后才开始获取
  315 + this.$nextTick(() => {
  316 + this.changeKeyboardHeight()
  317 + })
  318 + }, 500);
  319 + }
  320 + };
286 321 </script>
287 322 <style scoped lang="less">
288 323 @import 'uni-plate-input';
289   - .bg-icon{
  324 +
  325 + .bg-icon {
290 326 /*padding: 10px 0;*/
291 327 height: 60px;
292 328 /*background: url("../../static/inputCarNumber_pic/carBg.png") no-repeat;*/
293 329 /*background-size: 100% 100%;*/
294 330 color: #FFF;
295 331 }
296   - .bac{
  332 +
  333 + .bac {
297 334 position: absolute;
298 335 width: 100%;
299 336 height: 60px;
300 337 }
301   - .bg-text{
  338 +
  339 + .bg-text {
302 340 width: 100%;
303 341 position: absolute;
304   - top:10px;
  342 + top: 10px;
305 343 text-align: center;
306 344  
307 345 }
308 346 </style>
309   -
310   -
311   -
312   -
... ...
pages/parkPay/parkPay.vue
... ... @@ -118,8 +118,12 @@
118 118 duration: 2000
119 119 });
120 120 setTimeout(function() {
121   - uni.navigateTo({
122   - url: '../inputCarNumber/inputCarNumber'
  121 + let pages = getCurrentPages(); //当前页
  122 + let beforePage = pages[pages.length - 2];
  123 + uni.navigateBack({
  124 + success: function() {
  125 + beforePage.onLoad();
  126 + }
123 127 })
124 128 }, 2000);
125 129  
... ...