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