From 7e13c9523c9dec70c7647654cd043aa84a7a9ae2 Mon Sep 17 00:00:00 2001
From: 819527061@qq.com <123456>
Date: 星期二, 07 一月 2025 16:12:56 +0800
Subject: [PATCH] 支付成功和失败页面
---
src/components/page/MonthFeePay.vue | 92 ++++++++---
src/components/page/components/TKeyword.vue | 334 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 401 insertions(+), 25 deletions(-)
diff --git a/src/components/page/MonthFeePay.vue b/src/components/page/MonthFeePay.vue
index 00fc28c..9f59340 100644
--- a/src/components/page/MonthFeePay.vue
+++ b/src/components/page/MonthFeePay.vue
@@ -3,12 +3,12 @@
<div class="weizhang-main-top">
<h1 class="title">鏈堢杞﹀姙鐞�</h1>
</div>
- <div class="weizhang-main-box">
+ <div class="weizhang-main-box">
<div class="weizhang-main-bootom">
<div class="weizhang-main-form">
<el-form label-width="100px" :model="statisticData" ref="statisticData" :rules="rules" label-position="left">
<el-form-item label="杞︾墝鍙凤細" style="margin-left: 25px;" prop="carNo">
- <el-input v-model="statisticData.carNo" ></el-input>
+ <el-input @focus="isShow=true" v-model="statisticData.carNo" ></el-input>
</el-form-item>
<el-form-item label="鎵嬫満鍙凤細" style="margin-left: 25px;" prop="phone">
<el-input v-model="statisticData.phone" ></el-input>
@@ -33,10 +33,14 @@
</el-form>
</div>
<div class="yuezu-box" v-if="searchShow">
- <div class="current-box" v-if="startTime && endTime">
+ <div>
+ <div class="current-box" v-if="startTime && endTime">鍓╀綑浣跨敤鏃堕棿锛�<span class="utilTime">{{untilToday}}澶╋紙{{endTime}}缁撴潫锛�</span></div>
+ <div class="current-box" v-else>鍓╀綑浣跨敤鏃堕棿锛氭殏鏈紑閫氭湀绁�</div>
+ </div>
+<!-- <div class="current-box" v-if="startTime && endTime">
<span class="title">褰撳墠浣跨敤鏃堕棿锛�</span>
{{startTime}} - {{endTime}}
- </div>
+ </div>-->
<div class="yuezuCard">
<div class="yuezu-line">
<div class="title">
@@ -77,21 +81,33 @@
</div>
</div>
-
+ <t-keyword
+ :isShow="isShow"
+ @ok="isShow=false"
+ @cancel="isShow=false"
+ @inputchange="inputchange"
+ :finalValue="statisticData.carNo"
+ />
</div>
</template>
<script>
import {isMobile} from "@/utils/validate";
+import TKeyword from "@/components/page/components/TKeyword";
export default {
name: 'dashboard',
+ components: {
+ TKeyword,
+ },
data() {
return {
+ isShow: false,
ticketId:"",
table1:[],
statisticData:{
- allFlag:0
+ allFlag:0,
+ carNo:'',
},
showFlag:true,
activeIndex:'',
@@ -105,7 +121,7 @@
yueZuObj:{},
rules: {
carNo: [
- { required: true, message: '璇疯緭鍏ヨ溅鐗屽彿', trigger: 'blur' },
+ { required: true, message: '璇疯緭鍏ヨ溅鐗屽彿', trigger: ['blur','change'] },
],
phone: [
{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿', trigger: 'blur' },
@@ -123,6 +139,15 @@
}
}
},
+ computed: {
+ untilToday() {
+ if(this.endTime) {
+ let toady = new Date()
+ let cur = this.$moment(toady).format('YYYY-MM-DD')
+ return this.getDayDifference(cur,this.endTime)
+ }
+ }
+ },
created(){
var url = window.location.href;
var cs = url.split('?')[1];
@@ -137,18 +162,7 @@
})
},
methods: {
- getNewDate(date, n) {//date 鏃ユ湡 n 鍓嶅悗鐩稿樊鏈堜唤
- let curDate = new Date(date),newDate = new Date(date),diff,remainder //curDate褰撳墠鏃ユ湡 newDate璁$畻鍚庢棩鏈� diff鏃ユ湡鐩稿樊鏈堜唤 remainder n瀵�12鐨勪綑鏁�
- newDate.setMonth(curDate.getMonth() + n); //璁剧疆鏈堜唤+n
- diff = newDate.getMonth() - curDate.getMonth(); //璁$畻鍚庢湀涓庝箣鍓嶆湀宸��
- diff < 0 ? diff += 12: diff; //濡傛灉宸�煎皬浜�12 瀵瑰叾+12
- n > 0 ? remainder = n % 12 : remainder = n + 12 * Math.ceil((Math.abs(n) /12 )) //n>0鏃剁洿鎺ュ12鍙栦綑 n<0鏃讹紝灏嗗叾鍔犱笂 n鍙栫粷瀵瑰�煎悗鐨勫勾浠斤紙鍚戜笂鍙栨暣锛�* 12
- if(diff != remainder){
- return new Date(newDate.setMonth(newDate.getMonth(),0)) //濡傛灉diff涓巖emainder涓嶇浉绛夛紝姝ゆ椂鐨勬儏鍐垫槸Date.setMonth()鏂规硶鑷姩澶勭悊浜嗘湀鏈棩鏈熷悜鍚庨『寤跺埌涓嬩釜鏈堬紝灏嗗叾璁剧疆涓轰笂涓湀鐨勬渶鍚庝竴澶╋紝鍚﹀垯涓嶈繘琛屽鐞�
- }
- return newDate;
- },
- pay(){
+ pay(){
this.$refs.statisticData.validate((valid) => {
if(valid) {
this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/monthFeePay/pay', this.statisticData, res => {
@@ -166,8 +180,6 @@
}else {
this.startTime = ''
this.endTime = ''
- this.$message.error(res.msg)
- console.log('鎴戣繘鏉ヤ簡----------------')
}
}else {
@@ -178,7 +190,7 @@
}
})
},
- getYuezuMoney() {
+ getYuezuMoney() { //鑾峰彇闇�瑕佺殑鏈堢鐨刴oney
let params = {
parkId:this.statisticData.parkId,
type:this.statisticData.allFlag
@@ -258,6 +270,35 @@
this.compEndTime = this.$moment(a).format('YYYY-MM-DD')
}
}
+ },
+ // 杈撳叆杞︾墝鍙�
+ inputchange(val, maxLength) {
+ console.log(val,'0000',maxLength)
+ if (this.statisticData.carNo && this.statisticData.carNo.length >= maxLength && val !== 'delete') {
+ return false
+ }
+ if (val === 'delete') {
+ this.statisticData.carNo = this.statisticData.carNo.slice(0, this.statisticData.carNo.length - 1)
+ } else {
+ this.statisticData.carNo += val.toUpperCase()
+ }
+ },
+ getNewDate(date, n) {//date 鏃ユ湡 n 鍓嶅悗鐩稿樊鏈堜唤 锛堢浉宸殑鏈堜唤锛�
+ let curDate = new Date(date),newDate = new Date(date),diff,remainder //curDate褰撳墠鏃ユ湡 newDate璁$畻鍚庢棩鏈� diff鏃ユ湡鐩稿樊鏈堜唤 remainder n瀵�12鐨勪綑鏁�
+ newDate.setMonth(curDate.getMonth() + n); //璁剧疆鏈堜唤+n
+ diff = newDate.getMonth() - curDate.getMonth(); //璁$畻鍚庢湀涓庝箣鍓嶆湀宸��
+ diff < 0 ? diff += 12: diff; //濡傛灉宸�煎皬浜�12 瀵瑰叾+12
+ n > 0 ? remainder = n % 12 : remainder = n + 12 * Math.ceil((Math.abs(n) /12 )) //n>0鏃剁洿鎺ュ12鍙栦綑 n<0鏃讹紝灏嗗叾鍔犱笂 n鍙栫粷瀵瑰�煎悗鐨勫勾浠斤紙鍚戜笂鍙栨暣锛�* 12
+ if(diff != remainder){
+ return new Date(newDate.setMonth(newDate.getMonth(),0)) //濡傛灉diff涓巖emainder涓嶇浉绛夛紝姝ゆ椂鐨勬儏鍐垫槸Date.setMonth()鏂规硶鑷姩澶勭悊浜嗘湀鏈棩鏈熷悜鍚庨『寤跺埌涓嬩釜鏈堬紝灏嗗叾璁剧疆涓轰笂涓湀鐨勬渶鍚庝竴澶╋紝鍚﹀垯涓嶈繘琛屽鐞�
+ }
+ return newDate;
+ },
+ getDayDifference(date1, date2) { //鐩稿樊鐨勫ぉ鏁�
+ const millisecondsPerDay = 24 * 60 * 60 * 1000; // 涓�澶╃殑姣鏁�
+ const timeDifference = Math.abs(new Date(date2).getTime() - new Date(date1).getTime()); // 鑾峰彇涓や釜鏃ユ湡鐨勬绉掓暟宸��
+ const dayDifference = Math.round(timeDifference / millisecondsPerDay); // 灏嗘绉掓暟宸�艰浆鎹负澶╂暟
+ return dayDifference;
},
changePark(){
@@ -353,7 +394,7 @@
width: 100%;
display: flex;
flex-direction: column;
- padding:5.33vw /* 40/7.5 */;
+ padding: 0 5.33vw /* 40/7.5 */ 5.33vw /* 40/7.5 */ 5.33vw /* 40/7.5 */;
}
.weizhang-main-top{
display: flex;
@@ -392,9 +433,10 @@
flex-direction: column;
margin-top: 8vw /* 30/7.5 */;
.current-box{
- .title{
+ margin-left: 3.33vw /* 25/7.5 */;
+ .utilTime{
font-weight: bolder;
- margin-left: 3.33vw /* 25/7.5 */;
+ color: #ff423b;
}
font-size: 3.73vw /* 28/7.5 */;
color: #000;
diff --git a/src/components/page/components/TKeyword.vue b/src/components/page/components/TKeyword.vue
new file mode 100644
index 0000000..c969b68
--- /dev/null
+++ b/src/components/page/components/TKeyword.vue
@@ -0,0 +1,334 @@
+<template>
+ <div class="panel-wrap" v-if="isShow" data-value="exit" @click="colse_da">
+ <div class="mask_layer" v-if="isShowMask"></div>
+ <div class="vehicle-panel" :style="{background:backgroundColor}" @click.stop>
+ <div class="topItem">
+ <div class="check" @click.stop="check">涓�/鑻卞垏鎹�</div>
+ <div class="contentShow" v-if="finalValue">鏈�缁堝�硷細{{finalValue}}</div>
+ <div class="exit" :style="{color:cancelColor}" @click.stop="vehicleTap('cancel')">鍙栨秷</div>
+ </div>
+ <!--鐪佷唤绠�鍐欓敭鐩�-->
+ <div v-if="keyBoardType === 1">
+ <div class="vehicle-panel-row_province">
+ <div
+ class="vehicle-panel-row-button"
+ :style="{border:buttonBorder}"
+ v-for="(item,idx) in keyVehicle1"
+ @click.stop="vehicleTap(item)"
+ :key="idx+item"
+ >{{item}}</div>
+ </div>
+ <div class="vehicle-panel-row_province">
+ <div
+ class="vehicle-panel-row-button"
+ :style="{border:buttonBorder}"
+ v-for="(item,idx) in keyVehicle2"
+ @click.stop="vehicleTap(item)"
+ :key="idx+item"
+ >{{item}}</div>
+ </div>
+ <div class="vehicle-panel-row_province">
+ <div
+ class="vehicle-panel-row-button"
+ :style="{border:buttonBorder}"
+ v-for="(item,idx) in keyVehicle3"
+ @click.stop="vehicleTap(item)"
+ :key="idx+item"
+ >{{item}}</div>
+ </div>
+
+ <div class="vehicle-panel-row_province">
+ <div
+ class="vehicle-panel-row-button vehicle-panel-row-button-last"
+ @click.stop="vehicleTap(item)"
+ v-for="(item,idx) in keyVehicle4"
+ :style="{border:buttonBorder}"
+ :key="idx+item"
+ >{{item}}</div>
+ <div
+ :style="{border:buttonBorder}"
+ class="vehicle-panel-row-button vehicle-panel-row-button-img"
+ >
+ <span class="delete-btn" @click.stop="vehicleTap('delete')">鍒犻櫎</span>
+<!-- <van-icon
+ class="vehicle-en-button-delete"
+ name="close"
+ @click.stop="vehicleTap('delete')"
+ />-->
+ </div>
+ </div>
+ </div>
+ <!--鑻辨枃閿洏 -->
+ <div v-else>
+ <div class="vehicle-panel-row">
+ <div
+ class="vehicle-panel-row-button vehicle-panel-row-button-number"
+ @click.stop="vehicleTap(item)"
+ v-for="(item,idx) in keyNumber"
+ :style="{border:buttonBorder}"
+ :key="item+idx"
+ >{{item}}</div>
+ </div>
+ <div class="vehicle-panel-row">
+ <div
+ class="vehicle-panel-row-button"
+ :style="{border:buttonBorder}"
+ v-for="(item,idx) in keyEnInput1"
+ @click.stop="vehicleTap(item)"
+ :key="idx+item"
+ >{{item}}</div>
+ </div>
+ <div class="vehicle-panel-row">
+ <div
+ class="vehicle-panel-row-button"
+ :style="{border:buttonBorder}"
+ v-for="(item,idx) in keyEnInput2"
+ @click.stop="vehicleTap(item)"
+ :key="idx+item"
+ >{{item}}</div>
+ <div
+ :style="{border:buttonBorder}"
+ class="vehicle-panel-row-button vehicle-panel-row-button-img"
+ >
+ <span class="delete-btn" @click.stop="vehicleTap('delete')">鍒犻櫎</span>
+<!-- <van-icon
+ class="vehicle-en-button-delete"
+ name="close"
+ @click.stop="vehicleTap('delete')"
+ />-->
+ </div>
+ </div>
+ <div class="vehicle-panel-row-last">
+ <div
+ class="vehicle-panel-row-button vehicle-panel-row-button-last"
+ @click.stop="vehicleTap(item)"
+ :style="{border:buttonBorder}"
+ v-for="(item,idx) in keyEnInput3"
+ :key="idx+item"
+ >{{item}}</div>
+ <div
+ :style="{border:buttonBorder,backgroundColor:confirmColor}"
+ class="vehicle-panel-row-button vehicle-panel-ok"
+ @click.stop="vehicleTap('ok')"
+ >纭畾</div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "TKeyword",
+ props: {
+ // 鏄惁寮硅捣閿洏
+ isShow: {
+ type: Boolean,
+ default: false
+ },
+ // 鍙栨秷瀛椾綋棰滆壊
+ cancelColor: {
+ type: String,
+ default: `#2072ED`
+ },
+ // 鏄惁鏄剧ず閬僵
+ isShowMask: {
+ type: Boolean,
+ default: true
+ },
+ // 鏄惁鐐瑰嚮閬僵鍏抽棴閿洏
+ isClickMask: {
+ type: Boolean,
+ default: true
+ },
+ // 鏈�澶ц緭鍏ラ暱搴�
+ maxLength: {
+ type: Number,
+ default: 8
+ },
+ // 纭鑳屾櫙棰滆壊
+ confirmColor: {
+ type: String,
+ default: `#2072ED`
+ },
+ // 鏈�缁堟樉绀虹殑鍊�
+ finalValue: {
+ type: String
+ }
+ },
+ data() {
+ return {
+ keyVehicle1: ['浜�', '娲�', '鏅�', '鍐�', '钂�', '杈�', '鍚�', '榛�', '娌�'],
+ keyVehicle2: ['鑻�', '娴�', '鐨�', '闂�', '璧�', '椴�', '璞�', '閯�', '婀�'],
+ keyVehicle3: ['绮�', '妗�', '鐞�', '娓�', '宸�', '璐�', '浜�', '钘�'],
+ keyVehicle4: ['闄�', '鐢�', '闈�', '瀹�', '鏂�', 'W'],
+ keyNumber: '1234567890',
+ keyEnInput1: 'QWERTYUP', // 娌℃湁IO
+ keyEnInput2: 'ASDFGHJKL',
+ keyEnInput3: 'ZXCVBNM',
+ backgroundColor: '#fff',
+ keyBoardType: 1,
+ buttonBorder: '1px solid #ccc'
+ }
+ },
+ methods: {
+ vehicleTap(event) {
+ console.log(event)
+ if (/^[\u4e00-\u9fa5]/.test(event)) {
+ this.keyBoardType = 2
+ }
+ switch (event) {
+ case 'delete':
+ this.$emit('delete')
+ this.$emit('inputchange', event, this.maxLength)
+ break
+ case 'ok':
+ this.$emit('ok')
+ break
+ case 'cancel':
+ this.$emit('cancel')
+ break
+ default:
+ this.$emit('inputchange', event, this.maxLength)
+ }
+ },
+ // 鐐瑰嚮閬僵鍏抽棴閿洏mask-layer
+ colse_da() {
+ if (!this.isClickMask) {
+ return
+ }
+ this.$emit('cancel')
+ },
+ check() {
+ if (this.keyBoardType === 1) {
+ this.keyBoardType = 2
+ } else if (this.keyBoardType === 2) {
+ this.keyBoardType = 1
+ }
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+:host {
+ width: 100%;
+}
+
+.panel-wrap {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 9999;
+.mask_layer {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, 0.5);
+}
+.vehicle-panel {
+ width: 100%;
+ position: fixed;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ z-index: 1000;
+ background: #fff;
+ padding-bottom: 10px;
+}
+.vehicle-panel-row_province {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.vehicle-panel-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.vehicle-panel-row-last {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.vehicle-panel-row-button {
+ background-color: #fff;
+ margin: 0 1vw;
+ margin-top: 8px;
+ width: 8.8vw;
+ height: 40px;
+ border-radius: 5px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+ .delete-btn{
+ color: #fff;
+ }
+.vehicle-panel-row-button-number {
+ background-color: #eee;
+}
+.vehicle-panel-row-button-last {
+ width: 8.8vw;
+ height: 40px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.vehicle-hover {
+ background-color: #ccc;
+}
+.vehicle-panel-row-button-img {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background: #dd6161;
+ border: 1px solid #dd6161;
+}
+.vehicle-en-button-delete {
+ width: 8.8vw;
+ height: 40px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.vehicle-panel-ok {
+ background-color: #355db4;
+ color: #fff;
+ width: 50px;
+ height: 40px;
+ font-size: 16px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.topItem {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 40px;
+ font-size: 16px;
+ border: 1px solid #ebedf0;
+.check {
+ margin-left: 10px;
+ color: #355db4;
+ flex: 0.5;
+}
+.exit {
+ margin-left: 0;
+ margin-right: 10px;
+ flex: 0.5;
+ text-align: right;
+}
+.contentShow {
+ text-align: center;
+ flex: 1;
+}
+}
+}
+</style>
--
Gitblit v1.9.1