From 92146b2ca987538074c380f07f567ca85347dd13 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 06 一月 2025 14:17:39 +0800
Subject: [PATCH] feat: 新增月租车页面
---
src/components/page/MonthFeePay.vue | 201 ++++++++++++++++++++
src/components/page/paymentLog/index.vue | 114 +++++++++++
src/store/state.js | 24 ++
src/components/page/whiteListRule/index.vue | 196 +++++++++++++++++++
public/words/administratorReturn.docx | 0
src/components/page/whiteList/index.vue | 19 +
src/router/index.js | 15 +
7 files changed, 567 insertions(+), 2 deletions(-)
diff --git a/public/words/administratorReturn.docx b/public/words/administratorReturn.docx
index 5c87f41..f46b420 100644
--- a/public/words/administratorReturn.docx
+++ b/public/words/administratorReturn.docx
Binary files differ
diff --git a/src/components/page/MonthFeePay.vue b/src/components/page/MonthFeePay.vue
new file mode 100644
index 0000000..3dff2b8
--- /dev/null
+++ b/src/components/page/MonthFeePay.vue
@@ -0,0 +1,201 @@
+<template>
+ <div class="weizhang-box">
+ <div class="weizhang-main-box">
+ <div class="weizhang-main-top">
+ <h1>鏈堢杞﹀姙鐞�</h1>
+ </div>
+ <div class="weizhang-main-bootom">
+ <div class="weizhang-main-form">
+ <el-form label-width="100px" :model="statisticData" label-position="left">
+ <el-form-item label="杞︾墝鍙凤細" style="margin-left: 25px;">
+ <el-input v-model="statisticData.carNo" ></el-input>
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙凤細" style="margin-left: 25px;">
+ <el-input v-model="statisticData.phone" ></el-input>
+ </el-form-item>
+ <el-form-item label="濮撳悕锛�" style="margin-left: 25px;">
+ <el-input v-model="statisticData.name" ></el-input>
+ </el-form-item>
+ <el-form-item label="閫夋嫨鍏ㄩ儴锛�" style="margin-left: 25px;">
+ <el-select v-model="statisticData.allFlag" :onchange="changeAll">
+ <el-option label="鍗曚釜" :value=0></el-option>
+ <el-option label="鍏ㄩ儴" :value=1></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item v-if="statisticData.allFlag == 0" label="鍋滆溅鍦猴細" style="margin-left: 25px;">
+ <el-select v-model="statisticData.parkId" :onchange="changePark">
+ <el-option v-for="item in table1" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item class="weizhang-footer-box" style="display: flex;justify-content: center;margin-top: 4.498vh" label-width="0" v-if="showFlag">
+ <el-button class="jiaofei-btn" type="primary" @click="pay()" >鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+
+ </div>
+
+ </div>
+ </div>
+
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'dashboard',
+ data() {
+ return {
+ ticketId:"",
+ table1:[],
+ statisticData:{
+ allFlag:0
+ },
+ showFlag:true,
+ }
+ },
+ created(){
+ var url = window.location.href;
+ var cs = url.split('?')[1];
+ var cs_arr = cs.split('&');
+ var cs={};
+ for(var i=0;i<cs_arr.length;i++){
+ cs[cs_arr[i].split('=')[0]] = cs_arr[i].split('=')[1]
+ }
+ this.statisticData.parkId = cs.id;
+ this.$byutil.postData(this, this.$systemconfig.basePath+'/ffzf/park/findAll', null, res => {
+ this.table1 = res.data;
+
+ this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/whiteListRule/getByParkId', {parkId:cs.id}, res => {
+ this.statisticData.parkId = res.data.id;
+ })
+ })
+ },
+ methods: {
+ pay(){
+ this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/monthFeePay/pay', this.statisticData, res => {
+ if(res.code == 0){
+ //鏈煡璇㈠埌鏈堢エ锛屽彲姝e父缂磋垂
+
+ }else {
+ //鏌ヨ鍒版湀绁紝缁垂
+
+ }
+ })
+ },
+ changePark(){
+
+ },
+ changeAll(){
+
+ }
+
+ }
+ }
+
+</script>
+
+
+<style lang="scss">
+ .weizhang-main-bootom{
+ .el-input__inner{
+ border:none;
+ }
+ .el-form-item__label{
+ color: #000;
+ font-weight: 600;
+ }
+ }
+ .weizhang-footer-box{
+ .el-form-item__content{
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ }
+ .el-button--small{
+ padding: 11px 15px;
+ font-size: 0.347rem /* 26/75 */;
+ }
+ }
+
+</style>
+<style lang="scss" scoped>
+h1,h2,h3,h4,h5{
+ font-family: '鑻规柟 涓瓑';
+ font-weight: normal;
+}
+.weizhang-header{
+ display: flex;
+ height: 12.8vw /* 96/7.5 */;
+ align-items: center;
+ border-bottom:1px solid rgba(154,154,154,0.2);
+ .text{
+ flex: 1;
+ text-align: center;
+ h1{
+ font-size: 2.699vh /* 36/13.34 */;
+ }
+ }
+ .right{
+ width: 6.747vh /* 90/13.34 */;
+ }
+ .leftjiantou{
+ font-size: 5.33vw;
+ width: 6.747vh /* 90/13.34 */;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+}
+.weizhang-main-box{
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ padding:5.33vw /* 40/7.5 */;
+}
+.weizhang-main-top{
+ height: 22.489vh /* 300/13.34 */;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-bottom: 1px solid #f0f0f0;
+ .money{
+ font-size: 6.93vw /* 52/7.5 */;
+ font-weight: 550;
+ }
+ .weizhang{
+ font-size: 0.4rem /* 30/75 */;
+ line-height: 2;
+ font-weight: normal;
+ margin-top:1.33vw /* 10/7.5 */;
+ color: #000;
+ }
+}
+ .weizhang-main-form{
+ }
+ .weizhang-tiaokuan{
+ margin-top: 2.67vw /* 20/7.5 */;
+ h1{
+ font-size:3.2vw /* 24/7.5 */;
+ color: #999999;
+ text-indent: 2.5em;
+ line-height: 2;
+ }
+ }
+ .jiaofei-btn{
+ width: 64.53vw /* 484/7.5 */;
+ border-radius: 5.33vw /* 40/7.5 */;
+ background-image: linear-gradient(to right,#33b1fe,#0679dc);
+ }
+.logoPhone{
+ margin-top: 0.67vw;
+ width: 1.333rem /* 100/75 */;
+ height: 1.333rem /* 100/75 */;
+}
+.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
+ margin-bottom: 10px;
+}
+.weizhang-main-bootom{
+ margin-top: 0.333rem /* 25/75 */;
+}
+</style>
diff --git a/src/components/page/paymentLog/index.vue b/src/components/page/paymentLog/index.vue
new file mode 100644
index 0000000..31230c3
--- /dev/null
+++ b/src/components/page/paymentLog/index.vue
@@ -0,0 +1,114 @@
+<template>
+ <div>
+ <div style="padding: 10px 10px 0px 10px;">
+ <el-form :inline="true" :model="searchForm">
+ <el-form-item label="鍋滆溅鍦�">
+ <el-select v-model="searchForm.parkId" clearable>
+ <el-option v-for="item in table1" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="杞︾墝鍙�">
+ <el-input v-model="searchForm.carNo" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="濮撳悕">
+ <el-input v-model="searchForm.name" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙�">
+ <el-input v-model="searchForm.phone" clearable></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" size="small" @click="onSearch" icon="el-icon-search">鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+
+ <el-table :height="tableHeight" :data="pageData.rows" v-loading="pageData.isLoading" border style="width:100%;border:1px solid #bcbec2;">
+ <el-table-column type="index" width="50" label="搴忓彿" align="center"> </el-table-column>
+ <el-table-column prop="name" label="鍋滆溅鍦�" align="center" width="150"></el-table-column>
+ <el-table-column
+ prop="carNo"
+ header-align="center"
+ align="center"
+ label="杞︾墝鍙�">
+ </el-table-column>
+ <el-table-column prop="name" label="鍚嶇О" align="center"></el-table-column>
+ <el-table-column prop="phone" label="鎵嬫満鍙�" align="center"></el-table-column>
+ <el-table-column prop="money" label="缂磋垂閲戦" align="center"></el-table-column>
+ </el-table>
+ <el-pagination background @size-change="onPageSizeChange" @current-change="onCurrentPageChange" :current-page="pageData.currentPage" :page-size="pageData.pageSize" :total="pageData.total" style="float: right"></el-pagination>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: "index",
+ data: function () {
+ return {
+ flag:false,
+ flag2:false,
+ searchForm: {
+ name: '',
+ carNo:'',
+ type:null,
+ date: null
+ },
+ pageData: this.$byutil.defaultPageData(),
+ formData: {
+ type: 0,
+ parkId:null,
+ carNo:null,
+ phone:0,
+ sixMonthMoney:0,
+ yearMoney:0,
+ name: '',
+ createBy:'',
+ updateBy:''
+ },
+ ids:[],
+ urlPath:this.$systemconfig.basePath + '/ffzf/paymentLog/',
+ table1:[],
+ userName:'',
+ tableHeight:500,
+ }
+ },
+ mounted() {
+ let username = localStorage.getItem('name')
+ this.formData.createBy = username
+ this.userName = username
+ this.loadData();
+ this.$byutil.postData(this, this.$systemconfig.basePath+'/ffzf/park/findAll', this.formData, res => {
+ this.table1 = res.data;
+ })
+ this.tableHeight = window.innerHeight - 260
+ },
+ methods: {
+ selectChange(value){
+ if(value==1){
+ this.flag2 = true;
+ }else{
+ this.flag2 = false;
+ }
+ },
+
+ loadData() {
+ this.$byutil.loadPageData(this, this.urlPath+'findPage', this.searchForm);
+ },
+ onSearch() {
+ this.pageData = this.$byutil.defaultPageData();
+ this.loadData();
+ },
+ onPageSizeChange(val) {
+ this.pageData.pageSize = val;
+ this.loadData();
+ },
+ onCurrentPageChange(val) {
+ this.pageData.page = val;
+ this.loadData();
+ },
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/components/page/whiteList/index.vue b/src/components/page/whiteList/index.vue
index 5aa7a81..a6ca08c 100644
--- a/src/components/page/whiteList/index.vue
+++ b/src/components/page/whiteList/index.vue
@@ -11,6 +11,12 @@
<el-option label="鏈堢エ" :value="1"></el-option>
</el-select>
</el-form-item>
+ <el-form-item label="鏉ユ簮">
+ <el-select v-model="searchForm.payFlag" placeholder="璇烽�夋嫨" clearable>
+ <el-option label="绯荤粺娣诲姞" :value="0"></el-option>
+ <el-option label="鑷富缂磋垂" :value="1"></el-option>
+ </el-select>
+ </el-form-item>
<el-form-item label="閫夋嫨缁撴潫鏃堕棿">
<div class="date-box">
<el-date-picker type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd"
@@ -34,9 +40,16 @@
<p v-if="scope.row.type==1">鏈堢エ</p>
</template>
</el-table-column>
+ <el-table-column prop="payFlag" label="娣诲姞绫诲瀷" align="center" width="100">
+ <template slot-scope="scope">
+ <p v-if="scope.row.payFlag==0">绯荤粺娣诲姞</p>
+ <p v-if="scope.row.payFlag==1">鑷富缂磋垂</p>
+ </template>
+ </el-table-column>
<el-table-column prop="startTime" label="鏈堢エ寮�濮嬫棩鏈�" align="center"></el-table-column>
<el-table-column prop="endTime" label="鏈堢エ缁撴潫鏃ユ湡" align="center"></el-table-column>
<el-table-column prop="name" label="鍋滆溅鍦�" align="center"></el-table-column>
+ <el-table-column prop="phone" label="鎵嬫満鍙�" align="center"></el-table-column>
<el-table-column prop="createBy" label="鎿嶄綔浜�" align="center"></el-table-column>
<el-table-column label="鎿嶄綔" fixed="right" width="150" align="center">
<template slot-scope="scope">
@@ -89,7 +102,8 @@
name: '',
carNo:'',
type:null,
- date: null
+ date: null,
+ payFlag:null
},
pageData: this.$byutil.defaultPageData(),
formData: {
@@ -158,7 +172,8 @@
type: 0,
endTime: '',
startTime: '',
- parkIds: null
+ parkIds: null,
+ payFlag:0
}
},
onEdit(row) {
diff --git a/src/components/page/whiteListRule/index.vue b/src/components/page/whiteListRule/index.vue
new file mode 100644
index 0000000..9e194e0
--- /dev/null
+++ b/src/components/page/whiteListRule/index.vue
@@ -0,0 +1,196 @@
+<template>
+ <div>
+ <div style="padding: 10px 10px 0px 10px;">
+ <el-form :inline="true" :model="searchForm">
+ <el-form-item label="鍋滆溅鍦�">
+ <el-select v-model="searchForm.parkId" clearable>
+ <el-option v-for="item in table1" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="绫诲瀷">
+ <el-select v-model="searchForm.type" placeholder="绫诲瀷" clearable>
+ <el-option label="鍗曚釜" :value=0></el-option>
+ <el-option label="鍏ㄩ儴" :value=1></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" size="small" @click="onSearch" icon="el-icon-search">鏌ヨ</el-button>
+ <el-button type="primary" size="small" @click="onAdd" icon="el-icon-plus">澧炲姞</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+
+ <el-table :height="tableHeight" :data="pageData.rows" v-loading="pageData.isLoading" border style="width:100%;border:1px solid #bcbec2;">
+ <el-table-column type="index" width="50" label="搴忓彿" align="center"> </el-table-column>
+ <el-table-column prop="type" label="绫诲瀷" align="center" width="100">
+ <template slot-scope="scope">
+ <p v-if="scope.row.type==0">鍗曚釜</p>
+ <p v-if="scope.row.type==1">鍏ㄩ儴</p>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="鍋滆溅鍦�" align="center" width="150"></el-table-column>
+ <el-table-column prop="monthMoney" label="鍗曟湀閲戦" align="center"></el-table-column>
+ <el-table-column prop="threeMonthMoney" label="涓変釜鏈堥噾棰�" align="center"></el-table-column>
+ <el-table-column prop="sixMonthMoney" label="鍏釜鏈堥噾棰�" align="center"></el-table-column>
+ <el-table-column prop="yearMoney" label="涓�骞撮噾棰�" align="center"></el-table-column>
+ <el-table-column label="鎿嶄綔" fixed="right" width="150" align="center">
+ <template slot-scope="scope">
+ <el-button size="mini" @click="onEdit(scope.row)">缂栬緫</el-button>
+ <el-button size="mini" type="danger" @click="onDelete(scope.row)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-pagination background @size-change="onPageSizeChange" @current-change="onCurrentPageChange" :current-page="pageData.currentPage" :page-size="pageData.pageSize" :total="pageData.total" style="float: right"></el-pagination>
+
+ <el-dialog title="缂栬緫" :visible.sync="flag" width="30%">
+ <el-form :model="formData" ref="formData" label-width="100px">
+ <el-form-item label="绫诲瀷" prop="type" :rules="[{ required: true, message: '璇烽�夋嫨绫诲瀷', trigger: 'change'}]">
+ <el-select v-model="formData.type" @change="selectChange">
+ <el-option label="鍏ㄩ儴" :value=1></el-option>
+ <el-option label="鍗曚釜" :value=0></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍋滆溅鍦�" prop="parkId" v-if="flag2">
+ <el-select v-model="formData.parkId" clearable>
+ <el-option v-for="item in table1" :key="item.id" :label="item.name" :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍗曟湀閲戦" prop="monthMoney">
+ <el-input-number v-model="formData.monthMoney" :min="0"></el-input-number>
+ </el-form-item>
+ <el-form-item label="涓変釜鏈堥噾棰�" prop="threeMonthMoney">
+ <el-input-number v-model="formData.threeMonthMoney" :min="0"></el-input-number>
+ </el-form-item>
+ <el-form-item label="鍏釜鏈堥噾棰�" prop="sixMonthMoney">
+ <el-input-number v-model="formData.sixMonthMoney" :min="0"></el-input-number>
+ </el-form-item>
+ <el-form-item label="涓�骞撮噾棰�" prop="yearMoney">
+ <el-input-number v-model="formData.yearMoney" :min="0"></el-input-number>
+ </el-form-item>
+
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="flag = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="onSave">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: "index",
+ data: function () {
+ return {
+ flag:false,
+ flag2:false,
+ searchForm: {
+ name: '',
+ carNo:'',
+ type:null,
+ date: null
+ },
+ pageData: this.$byutil.defaultPageData(),
+ formData: {
+ type: 1,
+ parkId:null,
+ monthMoney:0,
+ threeMonthMoney:0,
+ sixMonthMoney:0,
+ yearMoney:0,
+ name: '',
+ createBy:'',
+ updateBy:''
+ },
+ ids:[],
+ urlPath:this.$systemconfig.basePath + '/ffzf/whiteListRule/',
+ table1:[],
+ userName:'',
+ tableHeight:500,
+ }
+ },
+ mounted() {
+ let username = localStorage.getItem('name')
+ this.formData.createBy = username
+ this.userName = username
+ this.loadData();
+ this.$byutil.postData(this, this.$systemconfig.basePath+'/ffzf/park/findAll', this.formData, res => {
+ this.table1 = res.data;
+ })
+ this.tableHeight = window.innerHeight - 260
+ },
+ methods: {
+ selectChange(value){
+ if(value==0){
+ this.flag2 = true;
+ }else{
+ this.flag2 = false;
+ }
+ },
+ onSave(){
+ this.$refs['formData'].validate((valid) => {
+ if (valid) {
+ this.$byutil.postData(this, this.urlPath+'save', this.formData, res => {
+ this.$refs['formData'].resetFields();
+ this.flag=false;
+ this.$message({message:'淇濆瓨鎴愬姛', type: 'success'});
+ this.loadData();
+ })
+ } else {
+ return false;
+ }
+ });
+ },
+ loadData() {
+ this.$byutil.loadPageData(this, this.urlPath+'findPage', this.searchForm);
+ },
+ onSearch() {
+ this.pageData = this.$byutil.defaultPageData();
+ this.loadData();
+ },
+ onAdd() {
+ this.flag=true;
+ this.flag2=false;
+ this.$refs['formData'].resetFields();
+ this.formData = {
+ carNo: '',
+ type: 1,
+ endTime: '',
+ startTime: '',
+ parkIds: null
+ }
+ },
+ onEdit(row) {
+ this.flag=true;
+ this.ids = []
+ this.formData = row;
+ this.formData.updateBy = this.userName
+ if(row.type==1){
+ this.ids = this.formData.parkIds.split(",")
+ this.ids = this.ids.map(function(data){
+ return +data;
+ });
+ this.flag2=true;
+ }
+ },
+ onDelete(row) {
+ this.$byutil.deleteData(this,this.urlPath+"delete",{id:row.id}, res => {
+ this.$message({message: '鍒犻櫎鎴愬姛', type: 'success'});
+ this.loadData();
+ })
+ },
+ onPageSizeChange(val) {
+ this.pageData.pageSize = val;
+ this.loadData();
+ },
+ onCurrentPageChange(val) {
+ this.pageData.page = val;
+ this.loadData();
+ },
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/router/index.js b/src/router/index.js
index 852c55a..2df8b20 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -55,6 +55,16 @@
meta: { title: '娉婅溅鍙戠エ绠$悊' }
},
{
+ path: '/whiteListRule',
+ component: resolve => require(['../components/page/whiteListRule/index.vue'], resolve),
+ meta: { title: '鏈堢エ杞﹁鍒欑鐞�' }
+ },
+ {
+ path: '/paymentLog',
+ component: resolve => require(['../components/page/paymentLog/index.vue'], resolve),
+ meta: { title: '缂磋垂鏃ュ織绠$悊' }
+ },
+ {
path: '/whiteList',
component: resolve => require(['../components/page/whiteList/index.vue'], resolve),
meta: { title: '鐧藉悕鍗�' }
@@ -195,6 +205,11 @@
component: resolve => require(['../components/page/EditParkNum'], resolve),
meta: { title: '杞︿綅鏁伴噺' }
},
+ {
+ path: '/monthFeePay',
+ component: resolve => require(['../components/page/MonthFeePay.vue'], resolve),
+ meta: { title: '鏈堢杞︾即璐�' }
+ },
]
})
diff --git a/src/store/state.js b/src/store/state.js
index 1080d8a..6b2a551 100644
--- a/src/store/state.js
+++ b/src/store/state.js
@@ -62,6 +62,18 @@
indexUrl: "barrierOpenLog"
},
{
+ icon: 'el-icon-document',
+ name: '鏈堢エ杞﹁鍒欑鐞�',
+ parentId: 2,
+ indexUrl: "whiteListRule"
+ },
+ {
+ icon: 'el-icon-document',
+ name: '缂磋垂鏃ュ織绠$悊',
+ parentId: 2,
+ indexUrl: "paymentLog"
+ },
+ {
icon: 'el-icon-document',
name: '鐧藉悕鍗曠鐞�',
parentId: 2,
@@ -153,6 +165,18 @@
},
{
icon: 'el-icon-document',
+ name: '鏈堢エ杞﹁鍒欑鐞�',
+ parentId: 2,
+ indexUrl: "whiteListRule"
+ },
+ {
+ icon: 'el-icon-document',
+ name: '缂磋垂鏃ュ織绠$悊',
+ parentId: 2,
+ indexUrl: "paymentLog"
+ },
+ {
+ icon: 'el-icon-document',
name: '鎵嬪姩鎶潌璁板綍',
parentId: 2,
indexUrl: "barrierOpenLog"
--
Gitblit v1.9.1