瀏覽代碼

界面基本完成,待接口

soft5566 2 年之前
父節點
當前提交
009414c82f

+ 1 - 1
public/index.html

@@ -4,7 +4,7 @@
 		<meta charset="utf-8">
 		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
-		<link rel="icon" href="<%= BASE_URL %>favicon.ico">
+		<!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> -->
 		<title><%= webpackConfig.name %></title>
 	</head>
 	<body>

二進制
src/icons/images/quan/coupon.png


二進制
src/icons/images/quan/voucher.png


File diff suppressed because it is too large
+ 1 - 0
src/icons/svg/complaint.svg


File diff suppressed because it is too large
+ 1 - 0
src/icons/svg/data.svg


File diff suppressed because it is too large
+ 1 - 1
src/icons/svg/order.svg


+ 24 - 1
src/router/index.js

@@ -47,7 +47,7 @@ export const constantRoutes = [{
 			meta: {
 				roles: ['admin', 'superAdmin'],
 				title: '数据中台',
-				icon: 'order'
+				icon: 'data'
 			}
 		}]
 	},
@@ -67,6 +67,22 @@ export const constantRoutes = [{
 			}
 		}]
 	},
+	
+	{
+		path: '/complaintMgr',
+		component: Layout,
+		redirect: '/complaintMgr',
+		children: [{
+			path: '',
+			name: 'ComplaintMgr',
+			component: () => import('@/views/complaintMgr/index'),
+			meta: {
+				roles: ['superAdmin'],
+				title: '投诉管理',
+				icon: 'complaint'
+			}
+		}]
+	},
 
 	{
 		path: '/systemset',
@@ -91,6 +107,13 @@ export const constantRoutes = [{
 			meta: {
 				title: '民宿管理'
 			}
+		}, {
+			path: 'DiscountCoupon',
+			name: 'DiscountCoupon',
+			component: () => import('@/views/discountCouponMgr/index'),
+			meta: {
+				title: '优惠劵管理'
+			}
 		}]
 	},
 	

+ 618 - 0
src/views/complaintMgr/index.vue

@@ -0,0 +1,618 @@
+<template>
+	<div class="app-container">
+		<el-row>
+			<el-col :span="24">
+				<div class="cell">
+					<div class="cell-title">
+						<div class="title-left">
+							<div class="title">投诉管理</div>
+						</div>
+					</div>
+					<div class="cell-body">
+						<div class="controls">
+							<el-form :inline="true" :model="formInline" class="demo-form-inline">
+								<el-form-item label="状态">
+									<el-select v-model="formInline.id" clearable placeholder="请选择">
+										<el-option v-for="item in formInline.options" :key="item.id" :label="item.hotelTownship" :value="item.id">
+										</el-option>
+									</el-select>
+								</el-form-item>
+								<el-form-item label="投诉时间">
+									<el-date-picker v-model="formInline.search_datatime" type="daterange" align="right" start-placeholder="开始日期"
+										end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+									</el-date-picker>
+								</el-form-item>
+								<el-form-item label="">
+									<el-input v-model="formInline.keyword" style="width: 200px;" prefix-icon="el-icon-search" clearable
+										placeholder="请输入关键字段"></el-input>
+								</el-form-item>
+								<el-form-item>
+									<el-button type="primary" class="btn-search" @click="btn_search">查询</el-button>
+								</el-form-item>
+							</el-form>
+							<el-button type="primary" icon="el-icon-download" class="export" @click="exportExcel">导出投诉</el-button>
+						</div>
+						<el-table ref="multipleTable" :data="tableData" height="510" style="width: 100%" :cell-style="cell_style" v-loading="loading"
+							:header-cell-style="header_cell_style">
+							<el-table-column type="selection" width="50">
+							</el-table-column>
+							<el-table-column label="状态" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.hotelTownshipName }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="投诉单号" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.hotelName }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="民宿" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.orderNum }}</span>
+								</template>
+							</el-table-column>
+
+							<el-table-column label="民宿电话" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.houseTotalPrice }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="投诉人电话" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="订单号" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="标题" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="问题表述" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="投诉时间" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column fixed="right" label="操作" width="100">
+								<template slot-scope="scope">
+									<el-button @click="handleClick(scope.row)" type="text" size="small">查看详情</el-button>
+								</template>
+							</el-table-column>
+						</el-table>
+						<div class="pagination-table">
+							<el-pagination @current-change="currentPageChange" :current-page.sync="pagination.currentPage" :page-size="pagination.pageSize"
+								layout="prev, pager, next, jumper" :total="pagination.total">
+							</el-pagination>
+						</div>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- 投诉详情 -->
+		<el-dialog title="投诉详情" custom-class="add-account-class" :visible.sync="dialogComplaintVisible" :close-on-click-modal="false"
+			:close-on-press-escape="false" @close="complaint_close">
+			<p><label class="lbl-cls">投诉状态:</label>{{ complaint.status }}</p>
+			<p><label class="lbl-cls">投诉单号:</label> {{ complaint.complaintNumber }}</p>
+			<p><label class="lbl-cls">民宿:</label> {{ complaint.lodge }}</p>
+			<p><label class="lbl-cls">民宿电话:</label> {{ complaint.lodgePhone }}</p>
+			<p><label class="lbl-cls">投诉人电话:</label> {{ complaint.complainantPhone }}</p>
+			<p><label class="lbl-cls">订单号:</label> {{ complaint.orderNumber }}</p>
+			<div>
+				<h3 style="padding-top: 20px;">投诉信息</h3>
+				<p><label class="lbl-cls">标题:</label> {{ complaint.title }}</p>
+				<p><label class="lbl-cls">问题描述:</label> {{ complaint.description }}</p>
+				<div class="show-imgs">
+					<div><label class="lbl-cls">图片:</label></div>
+					<div class="imgs">
+						<div v-for="(image, index) in complaint.images" :key="index">
+							<img :src="image" alt="" @click="handlePictureCardPreview(image)" height="80px" width="80px" />
+						</div>
+					</div>
+				</div>
+				<p><label class="lbl-cls">投诉时间:</label> {{ complaint.complaintTime }}</p>
+			</div>
+		</el-dialog>
+		<el-dialog :visible.sync="dialogVisible">
+			<img width="100%" :src="dialogImageUrl" alt="">
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		getTableData,
+		getTowns,
+		downloadExcel
+	} from '@/api/stdbookMgr'
+
+	export default {
+		data() {
+			return {
+				currentUserLevel: this.$store.state.user.level, // 当前用户的权限
+				dialogImageUrl: '',
+				formLabelWidth: '120px',
+				// 表格单元格样式
+				cell_style: {
+					color: '#1A202B',
+					'font-size': '14px',
+					'font-family': 'Microsoft YaHei-3970(82674968)'
+				},
+				// 表格头部样式
+				header_cell_style: {
+					background: '#E6ECFE',
+					color: '#1A202B',
+					'font-size': '16px',
+					'font-family': 'Microsoft YaHei-3970(82674968)'
+				},
+				// 查询数据
+				formInline: {
+					options: [],
+					id: '',
+					search_datatime: '',
+					keyword: ''
+				},
+				tableData: [],
+				cond_data: {},
+				// 分页参数
+				pagination: {
+					currentPage: 1,
+					pageSize: 9,
+					total: 0
+				},
+				loading: true,
+				complaint: {
+					status: 'Pending',
+					complaintNumber: '123456',
+					lodge: 'Some Lodge',
+					lodgePhone: '1234567890',
+					complainantPhone: '0987654321',
+					orderNumber: '987654321',
+					title: 'Complaint Title',
+					description: 'Complaint Description',
+					images: [
+						'image1.jpg',
+						'image2.jpg',
+						'image3.jpg',
+						'image1.jpg',
+						'image2.jpg',
+						'image3.jpg'
+					],
+					complaintTime: '2022-01-01 10:00:00'
+				},
+				dialogComplaintVisible: false,
+				dialogVisible: false,
+			}
+		},
+		created() {
+			// 检测权限
+			if (this.currentUserLevel !== 2) {
+				this.$router.replace({
+					path: '/data'
+				})
+				return
+			}
+			// 获取消费记录,表格数据
+			this.get_table_data('list')
+			// 获取乡镇
+			this.get_towns()
+		},
+		mounted() {
+			document.getElementsByClassName("el-pagination__jump")[0].childNodes[0].nodeValue = "跳至";
+		},
+		methods: {
+			handlePictureCardPreview(file) {
+				this.dialogImageUrl = file.url;
+				this.dialogVisible = true;
+			},
+			// 点击查看投诉详情,弹出投诉详情对话框
+			handleClick(row) {
+				console.log(row);
+				this.dialogComplaintVisible = true
+			},
+			// 关闭投诉详情对话框
+			complaint_close() {
+				this.dialogComplaintVisible = false
+			},
+			// 获取乡镇列表
+			get_towns() {
+				getTowns().then((res) => {
+					if (res.code === 200) {
+						this.formInline.options = []
+						for (var i = 0; i < res.data.length; i++) {
+							let town = {
+								id: res.data[i].id,
+								hotelTownship: res.data[i].name
+							}
+							this.formInline.options.push(town)
+						}
+					} else {
+						if (res.data.length === 0) {
+							this.formInline.options = []
+							this.$message.warning('没有符合条件的数据!')
+						} else {
+							this.$message.warning(res.message)
+						}
+					}
+				}).catch((err) => {
+					// console.log(err);
+					this.$message.error(err.message)
+				});
+			},
+			/**
+			 * 获取消费记录,表格数据
+			 */
+			get_table_data(param) {
+				this.loading = true
+				this.get_condtion();
+
+				let data = this.cond_data;
+				if (param == 'search') {
+					data.page = 1
+					this.pagination.currentPage = 1
+				}
+
+				var that = this
+				// console.log(data);
+				getTableData(data).then((res) => {
+					// console.log(res);
+					if (res.code === 200) {
+						var d = res.data
+						that.pagination.total = d.bookIPage.total
+						that.tableData = []
+						for (var i = 0; i < d.bookIPage.pageList.length; i++) {
+							that.tableData.push(d.bookIPage.pageList[i])
+						}
+					} else {
+						that.tableData = []
+						that.$message.warning('没有符合条件的数据!')
+					}
+				}).catch((err) => {
+					// console.log(err);
+					that.$message.error(err.message)
+				});
+				that.loading = false;
+			},
+			/**
+			 * 查询条件
+			 */
+			get_condtion() {
+				let data = {
+					page: this.pagination.currentPage,
+					rows: this.pagination.pageSize
+				}
+
+				if (this.formInline.id !== '') {
+					data.id = this.formInline.id
+				}
+
+				if (this.formInline.search_datatime !== '') {
+					data.search_datatime = this.formInline.search_datatime
+				}
+
+				if (this.formInline.keyword !== '') {
+					data.keyword = this.formInline.keyword
+				}
+
+				this.cond_data = data;
+			},
+			/**
+			 * 导出为Excel
+			 */
+			exportExcel() {
+				var that = this
+				downloadExcel(this.cond_data).then((res) => {
+					console.log(res);
+					if (res.code === 200) {
+						that.$message.success(res.message)
+					} else {
+						that.tableData = []
+						that.$message.warning(res.message)
+					}
+				}).catch((err) => {
+					// console.log(err);
+					that.$message.error(err.message)
+				});
+			},
+			/**
+			 * 搜索
+			 */
+			btn_search() {
+				this.get_table_data('search')
+			},
+			/**
+			 * currentPage 改变时会触发
+			 * @param {Object} val
+			 */
+			currentPageChange(val) {
+				this.pagination.currentPage = val
+				this.get_table_data('pages')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.app-container {
+		background-color: #EFF2F7;
+		padding: 10px;
+
+		.el-row {
+
+			.el-col {
+				padding: 10px;
+
+				.cell {
+					padding: 30px;
+					border-radius: 10px;
+					background-color: #FFFFFF;
+					box-shadow: 0px 3px 21px 0px rgba(60, 108, 254, 0.16);
+
+					.cell-title {
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						margin-bottom: 30px;
+						padding-bottom: 30px;
+						border-bottom: 1px solid #CCCCCC;
+
+						.title-left {
+							display: flex;
+							align-items: center;
+
+							.title {
+								font-size: 22px;
+								font-family: Microsoft YaHei-3970(82674968);
+								font-weight: bold;
+								color: #1A202B;
+							}
+
+							.title-detail {
+								margin-left: 50px;
+								font-size: 18px;
+								font-family: Microsoft YaHei-3970(82674968);
+								color: #1A202B;
+							}
+						}
+
+						.title-right {
+							display: flex;
+							justify-content: space-between;
+							align-items: center;
+
+							.el-button {
+								width: 110px;
+								height: 46px;
+								background: #2B4CFE;
+								font-size: 18px;
+								color: #FFFFFF;
+								font-family: Microsoft YaHei-3970(82674968);
+								border-radius: 5px;
+							}
+
+							.el-button--warning {
+								background: #F88A64;
+							}
+						}
+					}
+
+					.cell-body {
+
+						.controls {
+							display: flex;
+							justify-content: space-between;
+							align-items: center;
+
+							.demo-form-inline {
+								display: inline-flex;
+								flex-wrap: wrap;
+								align-items: center;
+								justify-content: flex-start;
+
+								.btn-search {
+									background: rgba(9, 101, 98, 1);
+									font-size: 14px;
+									color: #FFFFFF;
+									font-family: Microsoft YaHei-3970(82674968);
+									border-radius: 5px;
+									border: none;
+								}
+							}
+
+							.export {
+								background: rgba(9, 101, 98, 1);
+								font-size: 14px;
+								color: #FFFFFF;
+								font-family: Microsoft YaHei-3970(82674968);
+								border-radius: 5px;
+								margin-bottom: 22px;
+								border: none;
+							}
+						}
+
+						.pagination-table {
+							display: flex;
+							justify-content: flex-end;
+							align-items: center;
+							height: 30px;
+							margin-top: 20px;
+							padding-right: 100px;
+
+							.txt-notice {
+
+								span {
+									font-size: 28px;
+									font-weight: 500;
+									font-family: '微软雅黑';
+								}
+							}
+
+							::v-deep .el-pagination {
+								display: flex;
+								justify-content: flex-end;
+								align-items: center;
+							}
+
+							::v-deep .el-pagination ul {
+								display: flex;
+
+							}
+
+							::v-deep .el-pagination button,
+							::v-deep .el-pagination li {
+								display: flex;
+								justify-content: center;
+								align-items: center;
+								width: 50px;
+								height: 36px;
+								border: 1px solid #626262;
+								border-radius: 3px;
+								font-size: 14px;
+								margin: 0 5px;
+							}
+
+							::v-deep .el-pagination span {
+								margin-left: 10px;
+							}
+
+							::v-deep .el-pagination .el-pagination__jump {
+								font-size: 16px;
+							}
+
+							::v-deep .el-pagination .el-pagination__editor {
+								width: 50px;
+								height: 36px;
+								margin: 0 5px;
+							}
+
+							::v-deep .el-pagination .el-input__inner {
+								width: 50px;
+								height: 36px;
+								border: 1px solid #626262;
+								margin: -4px 0 0 0;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		::v-deep .el-dialog {
+			margin: 0 !important;
+			width: 650px;
+			height: 560px;
+			background: #FFFFFF;
+			box-shadow: 0px 0px 13px 0px rgba(0, 0, 0, 0.29);
+			border-radius: 6px;
+			position: absolute;
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+
+			.el-dialog__header {
+				display: flex;
+				align-items: center;
+				width: 100%;
+				height: 58px;
+				padding: 30px;
+				border-radius: 6px 6px 0px 0px;
+				font-weight: bold;
+				border-bottom: 1px solid rgba(230, 230, 230, 1);
+			}
+
+			.el-dialog__body {
+				padding-bottom: 0;
+
+				.el-form-item__label,
+				.el-form-item__content {
+					font-size: 16px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #53575A;
+				}
+
+				.el-input__inner {
+					width: 180px;
+				}
+			}
+
+			// 删除对话框的样式
+			.del-account-body {
+				display: flex;
+				flex-direction: column;
+				justify-content: center;
+				align-items: center;
+				height: 180px;
+
+				img {
+					width: 72px;
+				}
+
+				.del-account-body-txt {
+					height: 58px;
+					line-height: 58px;
+					font-size: 18px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #333333;
+				}
+			}
+
+			.el-dialog__footer {
+				padding-bottom: 0 !important;
+				text-align: center;
+
+				.el-button.el-button--default {
+					width: 75px;
+					height: 40px;
+					border: 1px solid #2B4CFE;
+					border-radius: 6px;
+					font-size: 16px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #2B4CFE;
+				}
+
+				.el-button.el-button--primary {
+					width: 75px;
+					height: 40px;
+					background: #2B4CFE;
+					border-radius: 6px;
+					font-size: 16px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #FFFFFF;
+					margin-left: 60px;
+				}
+			}
+		}
+	}
+</style>
+
+<style>
+	.el-date-editor--daterange.el-input__inner {
+		width: 280px !important;
+	}
+	
+	.show-imgs {
+		display: flex;
+	}
+	
+	.imgs {
+		display: flex;
+		flex-direction: row;
+		margin-left: 20px;
+	}
+	
+	.lbl-cls {
+		display: inline-block;
+		width: 100px;
+		text-align: right;
+		padding-right: 10px;
+		color: #bbb;
+	}
+</style>

+ 7 - 2
src/views/data/index.vue

@@ -281,8 +281,13 @@
 		},
 		methods: {
 			visit_date_change() {
-				this.index_visit = 4
-				this.getIdcvisitsDiyQuery()
+				if (this.visit_date !== null) {
+					this.index_visit = 4
+					this.getIdcvisitsDiyQuery()
+				} else {
+					this.index_visit = 2
+					this.getIdcvisitsDiyQuery()
+				}
 			},
 			// 日访问量
 			getIdcvisitsToday() {

+ 902 - 0
src/views/discountCouponMgr/index.vue

@@ -0,0 +1,902 @@
+<template>
+	<div class="app-container">
+		<el-row>
+			<el-col :span="24">
+				<div class="cell">
+					<div class="cell-title">
+						<div class="title-left">
+							<div class="title">优惠券管理</div>
+						</div>
+					</div>
+					<div class="cell-body">
+						<div class="controls">
+							<el-form :inline="true" :model="formInline" class="demo-form-inline">
+								<el-form-item label="名称">
+									<el-input v-model="formInline.keyword" style="width: 200px;" prefix-icon="el-icon-search" clearable
+										placeholder="请输入关键字段"></el-input>
+								</el-form-item>
+								<el-form-item label="类型">
+									<el-select v-model="formInline.id" clearable placeholder="全部">
+										<el-option v-for="item in formInline.options" :key="item.id" :label="item.hotelTownship" :value="item.id">
+										</el-option>
+									</el-select>
+								</el-form-item>
+								<el-form-item label="状态">
+									<el-select v-model="formInline.id" clearable placeholder="全部">
+										<el-option v-for="item in formInline.options" :key="item.id" :label="item.hotelTownship" :value="item.id">
+										</el-option>
+									</el-select>
+								</el-form-item>
+								<el-form-item label="发放时间">
+									<el-date-picker v-model="formInline.search_datatime" type="daterange" align="right" start-placeholder="开始日期"
+										end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+									</el-date-picker>
+								</el-form-item>
+								<el-form-item>
+									<el-button type="primary" class="btn-search" @click="btn_search">查询</el-button>
+								</el-form-item>
+							</el-form>
+							<div>
+								<el-button type="primary" class="export" @click="invalidate_batch">批量失效</el-button>
+								<el-button type="primary" class="export" @click="add_discount_coupons">增加</el-button>
+							</div>
+						</div>
+						<el-table ref="multipleTable" :data="tableData" height="510" style="width: 100%" :cell-style="cell_style" v-loading="loading"
+							:header-cell-style="header_cell_style">
+							<el-table-column type="selection" width="50">
+							</el-table-column>
+							<el-table-column label="名称" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.hotelTownshipName }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="类型" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.hotelName }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="额度" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.orderNum }}</span>
+								</template>
+							</el-table-column>
+
+							<el-table-column label="有效期" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.houseTotalPrice }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="状态" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="发放时间" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="发放数量" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="剩余" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="已核销" align="center">
+								<template slot-scope="scope">
+									<span>{{ scope.row.checkOutTime }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column fixed="right" label="操作" width="100">
+								<template slot-scope="scope">
+									<el-button @click="handleClick(scope.row)" type="text" size="small">查看详情</el-button>
+								</template>
+							</el-table-column>
+						</el-table>
+						<div class="pagination-table">
+							<el-pagination @current-change="currentPageChange" :current-page.sync="pagination.currentPage" :page-size="pagination.pageSize"
+								layout="prev, pager, next, jumper" :total="pagination.total">
+							</el-pagination>
+						</div>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- 投诉详情 -->
+		<el-dialog title="优惠券详情" custom-class="add-account-class" :visible.sync="dialogComplaintVisible" :close-on-click-modal="false"
+			:close-on-press-escape="false" @close="dialogComplaintVisible = false">
+			<p><label class="lbl-cls">优惠券名称:</label>{{ coupon.name }}</p>
+			<p><label class="lbl-cls">折扣:</label> {{ coupon.discount }}</p>
+			<p><label class="lbl-cls">最大折扣金额:</label> {{ coupon.maxAmount }}</p>
+			<p><label class="lbl-cls">发放数量:</label> {{ coupon.quantity }}</p>
+			<p><label class="lbl-cls">每人限额:</label> {{ coupon.limitPerPerson }}</p>
+			<p><label class="lbl-cls">发放时间:</label> {{ coupon.issueDate }}</p>
+			<div>
+				<h3 style="padding-top: 20px;">限制条件</h3>
+				<p><label class="lbl-cls">使用条件:</label> {{ coupon.restrictions }}</p>
+				<p><label class="lbl-cls">有效期:</label> {{ coupon.expirationDate }}</p>
+				<p><label class="lbl-cls">选用民宿:</label> {{ coupon.applicableAccommodations }}</p>
+			</div>
+		</el-dialog>
+		<!-- 新增优惠券界面 -->
+		<el-dialog title="新增优惠券" custom-class="add-class" :visible.sync="dialogAddVisible" :close-on-click-modal="false" :close-on-press-escape="false"
+			@close="dialogAddVisible = false">
+			<div style="display: flex; justify-content: space-around; height: 350px;">
+				<div style="display: flex; flex-direction: column; align-items: center; height: 350px;">
+					<img src="@/icons/images/quan/voucher.png" alt="" width="300">
+					<p style="width: 310px; height: 40px; font-size: 16px; margin: 30px 0;">代金券可为用户提供抵扣现金服务,可设置抵扣金额,抵扣条件,及适用民宿范围。</p>
+					<el-button class="export" @click="add_voucher">去新增</el-button>
+				</div>
+				<div style="display: flex; flex-direction: column; align-items: center; height: 350px;">
+					<img src="@/icons/images/quan/coupon.png" alt="" width="300">
+					<p style="width: 310px; height: 40px; font-size: 16px; margin: 30px 0;">折扣券可为用户提供消费折扣,可设置折扣,折扣条件,及适用民宿范围。</p>
+					<el-button class="export" @click="add_coupon">去新增</el-button>
+				</div>
+			</div>
+		</el-dialog>
+		<!-- 新增代金券对话框 -->
+		<el-dialog title="新增代金券" custom-class="add-voucher-class" :visible.sync="dialogAddVoucherFormVisible" :close-on-click-modal="false"
+			:close-on-press-escape="false" @close="dialogAddVoucherFormVisible = false">
+			<el-form :model="formAddVoucher" ref="addHostelForm" :rules="addHostelFormRules">
+				<el-row>
+					<el-col :span="24">
+						<div style="font-size: 18px;font-weight: 700; color: rgba(0, 0, 0, 1); margin: -10px 0 20px 20px;">代金券<span
+								style="color: red; font-size: 14px;">(同一代金券,每笔订单最多仅可使用一张)</span></div>
+						<el-form-item label="优惠券名称:" :label-width="formLabelWidth" :required="true" prop="hotelName">
+							<el-input v-model="formAddVoucher.hotelName" autocomplete="off" placeholder="请输入优惠券名称" maxlength="20">
+							</el-input>
+						</el-form-item>
+						<el-form-item label="减免金额:" :label-width="formLabelWidth" :required="true" prop="corpnName">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddVoucher.corpnName" autocomplete="off" placeholder="请输入金额" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">元</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="发放数量:" :label-width="formLabelWidth" :required="true" prop="corpnPhone">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddVoucher.corpnName" autocomplete="off" placeholder="请输入数量" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">张</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="每人限领:" :label-width="formLabelWidth" :required="true" prop="adminName">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddVoucher.corpnName" autocomplete="off" placeholder="请输入数量" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">张</div>
+								<div style="color: #ccc;">(每个用户可领卷上限)</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="发放时间:" :label-width="formLabelWidth" :required="true" prop="adminName">
+							<el-time-picker v-model="formAddVoucher.startTime" placeholder="开始时间">
+							</el-time-picker>
+							<span style="margin: 0 10px;">—</span>
+							<el-time-picker v-model="formAddVoucher.endTime" placeholder="结束时间">
+							</el-time-picker>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<div style="font-size: 18px;font-weight: 700; color: rgba(0, 0, 0, 1); margin: -10px 0 20px 20px;">限制条件</div>
+						<el-form-item label="使用条件:" :label-width="formLabelWidth" :required="true" prop="hotelName">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<div style="margin-right: 10px;">订单满</div>
+								<el-input v-model="formAddVoucher.corpnName" autocomplete="off" placeholder="请输入金额" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">元,可使用</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="有效期:" :label-width="formLabelWidth" :required="true" prop="corpnName">
+							<div style="display: flex; align-items: center; margin-bottom: 15px;">
+								<el-radio v-model="formAddVoucher.radio" label="1">时间段</el-radio>
+								<el-date-picker v-model="formAddVoucher.startDate" type="date" placeholder="选择日期">
+								</el-date-picker>
+								<div style="margin: 0 10px;">—</div>
+								<el-date-picker v-model="formAddVoucher.endDate" type="date" placeholder="选择日期">
+								</el-date-picker>
+							</div>
+							<div style="display: flex; align-items: center;">
+								<el-radio v-model="formAddVoucher.radio" label="2">领取后</el-radio>
+								<el-input v-model="formAddVoucher.corpnName" autocomplete="off" placeholder="请输入金额" class="custom-input" maxlength="8">
+								</el-input>
+								<div style="margin: 0 10px;">天开始</div>
+								<el-input v-model="formAddVoucher.corpnName" autocomplete="off" placeholder="请输入金额" class="custom-input" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">天内有效</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="适用民宿:" :label-width="formLabelWidth" :required="true" prop="corpnPhone">
+							<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
+							<div style="margin: 0;"></div>
+							<div style="height: 100px; padding: 0; margin: 0; overflow:auto">
+								<el-checkbox-group v-model="checkedTowns" @change="handleCheckedTownsChange">
+									<el-checkbox v-for="town in towns" :label="town" :key="town">{{town}}</el-checkbox>
+								</el-checkbox-group>
+							</div>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<div slot="footer" class="dialog-footer">
+				<el-button class="add-info-cancel-btn" @click="dialogAddVoucherFormVisible = false">取 消</el-button>
+				<el-button class="add-info-confirm-btn" @click="add_house_dialog_handler">确 认</el-button>
+			</div>
+		</el-dialog>
+		<!-- 新增折扣券对话框 -->
+		<el-dialog title="新增折扣券" custom-class="add-voucher-class" :visible.sync="dialogAddCouponFormVisible" :close-on-click-modal="false"
+			:close-on-press-escape="false" @close="dialogAddVoucherFormVisible = false">
+			<el-form :model="formAddCoupon" ref="addHostelForm" :rules="addHostelFormRules">
+				<el-row>
+					<el-col :span="24">
+						<div style="font-size: 18px;font-weight: 700; color: rgba(0, 0, 0, 1); margin: -10px 0 20px 20px;">折扣券<span
+								style="color: red; font-size: 14px;">(同一优惠券,每笔订单最多仅可使用一张)</span></div>
+						<el-form-item label="优惠券名称:" :label-width="formLabelWidth" :required="true" prop="hotelName">
+							<el-input v-model="formAddCoupon.hotelName" autocomplete="off" placeholder="请输入优惠券名称" maxlength="20">
+							</el-input>
+						</el-form-item>
+						<el-form-item label="折扣:" :label-width="formLabelWidth" :required="true" prop="corpnName">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入折扣" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">折</div>
+								<div style="color: #ccc;">(填写1.0-9.9,仅可带有一位小数)</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="最大抵扣金额:" :label-width="formLabelWidth" :required="true" prop="corpnPhone">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入金额" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">元</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="发放数量:" :label-width="formLabelWidth" :required="true" prop="corpnPhone">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入数量" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">张</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="每人限领:" :label-width="formLabelWidth" :required="true" prop="adminName">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入数量" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">张</div>
+								<div style="color: #ccc;">(每个用户可领卷上限)</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="发放时间:" :label-width="formLabelWidth" :required="true" prop="adminName">
+							<el-time-picker v-model="formAddCoupon.startTime" placeholder="开始时间">
+							</el-time-picker>
+							<span style="margin: 0 10px;">—</span>
+							<el-time-picker v-model="formAddCoupon.endTime" placeholder="结束时间">
+							</el-time-picker>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<div style="font-size: 18px;font-weight: 700; color: rgba(0, 0, 0, 1); margin: -10px 0 20px 20px;">限制条件</div>
+						<el-form-item label="使用条件:" :label-width="formLabelWidth" :required="true" prop="hotelName">
+							<div style="display: flex; justify-content: flex-start; align-items: center;">
+								<div style="margin-right: 10px;">订单满</div>
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入金额" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">元,可使用</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="有效期:" :label-width="formLabelWidth" :required="true" prop="corpnName">
+							<div style="display: flex; align-items: center; margin-bottom: 15px;">
+								<el-radio v-model="formAddCoupon.radio" label="1">时间段</el-radio>
+								<el-date-picker v-model="formAddCoupon.startDate" type="date" placeholder="选择日期">
+								</el-date-picker>
+								<div style="margin: 0 10px;">—</div>
+								<el-date-picker v-model="formAddCoupon.endDate" type="date" placeholder="选择日期">
+								</el-date-picker>
+							</div>
+							<div style="display: flex; align-items: center;">
+								<el-radio v-model="formAddCoupon.radio" label="2">领取后</el-radio>
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入金额" class="custom-input" maxlength="8">
+								</el-input>
+								<div style="margin: 0 10px;">天开始</div>
+								<el-input v-model="formAddCoupon.corpnName" autocomplete="off" placeholder="请输入金额" class="custom-input" maxlength="8">
+								</el-input>
+								<div style="margin-left: 10px;">天内有效</div>
+							</div>
+						</el-form-item>
+						<el-form-item label="适用民宿:" :label-width="formLabelWidth" style="margin-bottom: 0;" :required="true" prop="corpnPhone">
+							<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
+							<div style="margin: 0;"></div>
+							<div style="height: 60px; padding: 0; margin: 0; overflow:auto">
+								<el-checkbox-group v-model="checkedTowns" @change="handleCheckedTownsChange">
+									<el-checkbox v-for="town in towns" :label="town" :key="town">{{town}}</el-checkbox>
+								</el-checkbox-group>
+							</div>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<div slot="footer" class="dialog-footer">
+				<el-button class="add-info-cancel-btn" @click="dialogAddCouponFormVisible = false">取 消</el-button>
+				<el-button class="add-info-confirm-btn" @click="add_house_dialog_handler">确 认</el-button>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		getTableData,
+		getTowns
+	} from '@/api/stdbookMgr'
+
+	const townOptions = ['靖安野塘隐夏民宿', '九岭山房民宿', '巧遇山庄', '大野山居','靖安野塘隐夏民宿', '九岭山房民宿', '巧遇山庄', '大野山居','靖安野塘隐夏民宿', '九岭山房民宿', '巧遇山庄', '大野山居'];
+	export default {
+		data() {
+			return {
+				currentUserLevel: this.$store.state.user.level, // 当前用户的权限
+				formLabelWidth: '140px',
+				// 表格单元格样式
+				cell_style: {
+					color: '#1A202B',
+					'font-size': '14px',
+					'font-family': 'Microsoft YaHei-3970(82674968)'
+				},
+				// 表格头部样式
+				header_cell_style: {
+					background: '#E6ECFE',
+					color: '#1A202B',
+					'font-size': '16px',
+					'font-family': 'Microsoft YaHei-3970(82674968)'
+				},
+				// 查询数据
+				formInline: {
+					options: [],
+					id: '',
+					search_datatime: '',
+					keyword: ''
+				},
+				tableData: [],
+				cond_data: {},
+				// 分页参数
+				pagination: {
+					currentPage: 1,
+					pageSize: 9,
+					total: 0
+				},
+				loading: true,
+				coupon: {
+					name: '7.5折扣优惠券',
+					discount: '7.5',
+					maxAmount: '300元',
+					quantity: '1000张',
+					limitPerPerson: '2023-08-01 — 2024-08-01',
+					issueDate: '10张',
+					restrictions: '订单慢200元可使用',
+					expirationDate: '有效期至2024-08-01',
+					applicableAccommodations: '九岭山民宿'
+				},
+				dialogComplaintVisible: false, // 优惠券详情界面
+				dialogAddVisible: false, // 新增优惠券界面
+				dialogAddVoucherFormVisible: false, // 新增代金券对话框
+				formAddVoucher: {},
+				dialogAddCouponFormVisible: false, // 新增折扣券对话框
+				formAddCoupon: {},
+				checkAll: false,
+				checkedTowns: ['靖安野塘隐夏民宿', '九岭山房民宿'],
+				towns: townOptions,
+				isIndeterminate: true,
+			}
+		},
+		created() {
+			// 检测权限
+			if (this.currentUserLevel !== 2) {
+				this.$router.replace({
+					path: '/data'
+				})
+				return
+			}
+			// 获取消费记录,表格数据
+			this.get_table_data('list')
+			// 获取乡镇
+			this.get_towns()
+		},
+		mounted() {
+			document.getElementsByClassName("el-pagination__jump")[0].childNodes[0].nodeValue = "跳至";
+		},
+		methods: {
+			// 全选
+			handleCheckAllChange(val) {
+				this.checkedTowns = val ? townOptions : [];
+				this.isIndeterminate = false;
+			},
+			// 勾选某一项
+			handleCheckedTownsChange(value) {
+				let checkedCount = value.length;
+				this.checkAll = checkedCount === this.towns.length;
+				this.isIndeterminate = checkedCount > 0 && checkedCount < this.towns.length;
+			},
+			// 关闭当前对话框,打开增加代金券
+			add_voucher() {
+				// this.dialogAddVisible = false
+				this.dialogAddVoucherFormVisible = true
+			},
+			// 关闭当前对话框,打开增加折扣券
+			add_coupon() {
+				// this.dialogAddVisible = false
+				this.dialogAddCouponFormVisible = true
+			},
+			invalidate_batch() {
+
+			},
+			add_discount_coupons() {
+				this.dialogAddVisible = true;
+			},
+			// 点击查看投诉详情,弹出投诉详情对话框
+			handleClick(row) {
+				console.log(row);
+				this.dialogComplaintVisible = true
+			},
+			// 获取乡镇列表
+			get_towns() {
+				getTowns().then((res) => {
+					if (res.code === 200) {
+						this.formInline.options = []
+						for (var i = 0; i < res.data.length; i++) {
+							let town = {
+								id: res.data[i].id,
+								hotelTownship: res.data[i].name
+							}
+							this.formInline.options.push(town)
+						}
+					} else {
+						if (res.data.length === 0) {
+							this.formInline.options = []
+							this.$message.warning('没有符合条件的数据!')
+						} else {
+							this.$message.warning(res.message)
+						}
+					}
+				}).catch((err) => {
+					// console.log(err);
+					this.$message.error(err.message)
+				});
+			},
+			/**
+			 * 获取消费记录,表格数据
+			 */
+			get_table_data(param) {
+				this.loading = true
+				this.get_condtion();
+
+				let data = this.cond_data;
+				if (param == 'search') {
+					data.page = 1
+					this.pagination.currentPage = 1
+				}
+
+				var that = this
+				// console.log(data);
+				getTableData(data).then((res) => {
+					// console.log(res);
+					if (res.code === 200) {
+						var d = res.data
+						that.pagination.total = d.bookIPage.total
+						that.tableData = []
+						for (var i = 0; i < d.bookIPage.pageList.length; i++) {
+							that.tableData.push(d.bookIPage.pageList[i])
+						}
+					} else {
+						that.tableData = []
+						that.$message.warning('没有符合条件的数据!')
+					}
+				}).catch((err) => {
+					// console.log(err);
+					that.$message.error(err.message)
+				});
+				that.loading = false;
+			},
+			/**
+			 * 查询条件
+			 */
+			get_condtion() {
+				let data = {
+					page: this.pagination.currentPage,
+					rows: this.pagination.pageSize
+				}
+
+				if (this.formInline.id !== '') {
+					data.id = this.formInline.id
+				}
+
+				if (this.formInline.search_datatime !== '') {
+					data.search_datatime = this.formInline.search_datatime
+				}
+
+				if (this.formInline.keyword !== '') {
+					data.keyword = this.formInline.keyword
+				}
+
+				this.cond_data = data;
+			},
+			/**
+			 * 搜索
+			 */
+			btn_search() {
+				this.get_table_data('search')
+			},
+			/**
+			 * currentPage 改变时会触发
+			 * @param {Object} val
+			 */
+			currentPageChange(val) {
+				this.pagination.currentPage = val
+				this.get_table_data('pages')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.app-container {
+		background-color: #EFF2F7;
+		padding: 10px;
+
+		.el-row {
+
+			.el-col {
+				padding: 10px;
+
+				.cell {
+					padding: 30px;
+					border-radius: 10px;
+					background-color: #FFFFFF;
+					box-shadow: 0px 3px 21px 0px rgba(60, 108, 254, 0.16);
+
+					.cell-title {
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						margin-bottom: 30px;
+						padding-bottom: 30px;
+						border-bottom: 1px solid #CCCCCC;
+
+						.title-left {
+							display: flex;
+							align-items: center;
+
+							.title {
+								font-size: 22px;
+								font-family: Microsoft YaHei-3970(82674968);
+								font-weight: bold;
+								color: #1A202B;
+							}
+
+							.title-detail {
+								margin-left: 50px;
+								font-size: 18px;
+								font-family: Microsoft YaHei-3970(82674968);
+								color: #1A202B;
+							}
+						}
+
+						.title-right {
+							display: flex;
+							justify-content: space-between;
+							align-items: center;
+
+							.el-button {
+								width: 110px;
+								height: 46px;
+								background: #2B4CFE;
+								font-size: 18px;
+								color: #FFFFFF;
+								font-family: Microsoft YaHei-3970(82674968);
+								border-radius: 5px;
+							}
+
+							.el-button--warning {
+								background: #F88A64;
+							}
+						}
+					}
+
+					.cell-body {
+
+						.controls {
+							display: flex;
+							justify-content: space-between;
+							align-items: center;
+
+							.demo-form-inline {
+								display: inline-flex;
+								flex-wrap: wrap;
+								align-items: center;
+								justify-content: flex-start;
+
+								.btn-search {
+									background: rgba(9, 101, 98, 1);
+									font-size: 14px;
+									color: #FFFFFF;
+									font-family: Microsoft YaHei-3970(82674968);
+									border-radius: 5px;
+									border: none;
+								}
+							}
+
+							.export {
+								background: rgba(9, 101, 98, 1);
+								font-size: 14px;
+								color: #FFFFFF;
+								font-family: Microsoft YaHei-3970(82674968);
+								border-radius: 5px;
+								margin-bottom: 22px;
+								border: none;
+							}
+						}
+
+						.pagination-table {
+							display: flex;
+							justify-content: flex-end;
+							align-items: center;
+							height: 30px;
+							margin-top: 20px;
+							padding-right: 100px;
+
+							.txt-notice {
+
+								span {
+									font-size: 28px;
+									font-weight: 500;
+									font-family: '微软雅黑';
+								}
+							}
+
+							::v-deep .el-pagination {
+								display: flex;
+								justify-content: flex-end;
+								align-items: center;
+							}
+
+							::v-deep .el-pagination ul {
+								display: flex;
+
+							}
+
+							::v-deep .el-pagination button,
+							::v-deep .el-pagination li {
+								display: flex;
+								justify-content: center;
+								align-items: center;
+								width: 50px;
+								height: 36px;
+								border: 1px solid #626262;
+								border-radius: 3px;
+								font-size: 14px;
+								margin: 0 5px;
+							}
+
+							::v-deep .el-pagination span {
+								margin-left: 10px;
+							}
+
+							::v-deep .el-pagination .el-pagination__jump {
+								font-size: 16px;
+							}
+
+							::v-deep .el-pagination .el-pagination__editor {
+								width: 50px;
+								height: 36px;
+								margin: 0 5px;
+							}
+
+							::v-deep .el-pagination .el-input__inner {
+								width: 50px;
+								height: 36px;
+								border: 1px solid #626262;
+								margin: -4px 0 0 0;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		::v-deep .el-dialog {
+			margin: 0 !important;
+			width: 600px;
+			height: 560px;
+			background: #FFFFFF;
+			box-shadow: 0px 0px 13px 0px rgba(0, 0, 0, 0.29);
+			border-radius: 6px;
+			position: absolute;
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+
+			.el-dialog__header {
+				display: flex;
+				align-items: center;
+				width: 100%;
+				height: 58px;
+				padding: 30px;
+				border-radius: 6px 6px 0px 0px;
+				font-weight: bold;
+				border-bottom: 1px solid rgba(230, 230, 230, 1);
+			}
+
+			.el-dialog__body {
+				padding-bottom: 0;
+
+				.el-form-item__label,
+				.el-form-item__content {
+					font-size: 16px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #53575A;
+				}
+
+				.el-input {
+					width: 180px;
+				}
+
+				.el-input__inner {
+					width: 180px;
+				}
+			}
+
+			// 删除对话框的样式
+			.del-account-body {
+				display: flex;
+				flex-direction: column;
+				justify-content: center;
+				align-items: center;
+				height: 180px;
+
+				img {
+					width: 72px;
+				}
+
+				.del-account-body-txt {
+					height: 58px;
+					line-height: 58px;
+					font-size: 18px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #333333;
+				}
+			}
+
+			.el-dialog__footer {
+				padding-bottom: 0 !important;
+				text-align: center;
+
+				.el-button.el-button--default {
+					width: 75px;
+					height: 40px;
+					border: 1px solid #2B4CFE;
+					border-radius: 6px;
+					font-size: 16px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #2B4CFE;
+				}
+
+				.el-button.el-button--primary {
+					width: 75px;
+					height: 40px;
+					background: #2B4CFE;
+					border-radius: 6px;
+					font-size: 16px;
+					font-family: Microsoft YaHei-3970(82674968);
+					color: #FFFFFF;
+					margin-left: 60px;
+				}
+			}
+		}
+	}
+</style>
+
+<style>
+	.add-voucher-class {
+		width: 800px !important;
+		height: 890px !important;
+	}
+
+	.el-date-editor--daterange.el-input__inner {
+		width: 280px !important;
+	}
+
+	.demo-table-expand {
+		font-size: 0;
+	}
+
+	.demo-table-expand label {
+		width: 180px;
+		color: #99a9bf;
+	}
+
+	.demo-table-expand .el-form-item {
+		margin-right: 0;
+		margin-bottom: 0;
+		width: 33%;
+	}
+
+	.show-imgs {
+		display: flex;
+	}
+
+	.imgs {
+		display: flex;
+		flex-direction: row;
+		margin-left: 20px;
+	}
+
+	.lbl-cls {
+		display: inline-block;
+		width: 100px;
+		text-align: right;
+		padding-right: 10px;
+		color: #bbb;
+	}
+
+	.export {
+		background: rgba(9, 101, 98, 1) !important;
+		font-size: 14px !important;
+		color: #FFFFFF !important;
+		font-family: Microsoft YaHei-3970(82674968);
+		border-radius: 5px !important;
+		margin-bottom: 22px !important;
+		border: none !important;
+	}
+
+	.add-class {
+		height: 450px !important;
+		width: 800px !important;
+	}
+
+	.dialog-footer {
+		display: flex;
+		justify-content: flex-end;
+	}
+
+	.add-info-cancel-btn {
+		color: rgba(9, 101, 98, 1) !important;
+		border: 1px solid rgba(9, 101, 98, 1) !important;
+	}
+
+	.add-info-confirm-btn {
+		border: none !important;
+		background: rgba(9, 101, 98, 1) !important;
+		color: #fff !important;
+		border-radius: 5px !important;
+		margin-left: 28px !important;
+	}
+
+	.el-form-item>label {
+		color: rgba(128, 128, 128, 1) !important;
+	}
+
+	.custom-input {
+		width: 7rem !important;
+	}
+
+	.custom-input input {
+		width: 7rem !important;
+	}
+
+	.el-radio {
+		margin-right: 10px;
+	}
+	
+	.el-checkbox-group {
+		height: 22px !important;
+		line-height: 22px !important;
+	}
+	
+	.el-form-item {
+		margin-bottom: 16px !important;
+	}
+</style>

+ 19 - 19
src/views/residentialhostelMgr/index.vue

@@ -223,7 +223,7 @@
 							<el-input v-model="formModifyHostel.cardName" autocomplete="off" placeholder="请输入户主姓名" maxlength="8">
 							</el-input>
 						</el-form-item>
-						<el-form-item label="银行名称:" :label-width="formLabelWidth" :required="true" prop="bankName" maxlength="10">
+						<el-form-item label="银行名称:" :label-width="formLabelWidth" :required="true" prop="bankName" maxlength="20">
 							<el-input v-model="formModifyHostel.bankName" autocomplete="off" placeholder="请输入银行名称">
 							</el-input>
 						</el-form-item>
@@ -397,7 +397,7 @@
 				<el-col :span="24">
 					<el-form :model="add_dictionary_data" ref="addHostelClassForm" :rules="addHostelClassFormRules">
 						<el-form-item label="民宿类型:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="10" placeholder="请输入民宿类型">
+							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入民宿类型">
 							</el-input>
 						</el-form-item>
 					</el-form>
@@ -415,7 +415,7 @@
 				<el-row>
 					<el-col :span="24">
 						<el-form-item label="民宿服务:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="16" placeholder="请输入民宿服务">
+							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入民宿服务">
 							</el-input>
 						</el-form-item>
 					</el-col>
@@ -442,7 +442,7 @@
 				<el-col :span="24">
 					<el-form :model="add_dictionary_data" ref="addHostelNameForm" :rules="addHostelNameFormRules">
 						<el-form-item label="房型名称:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="16" placeholder="请输入房型名称">
+							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入房型名称">
 							</el-input>
 						</el-form-item>
 					</el-form>
@@ -460,7 +460,7 @@
 				<el-row>
 					<el-col :span="24">
 						<el-form-item label="房型服务:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="8" placeholder="请输入房型服务">
+							<el-input v-model="add_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入房型服务">
 							</el-input>
 						</el-form-item>
 					</el-col>
@@ -487,7 +487,7 @@
 				<el-col :span="24">
 					<el-form :model="modify_dictionary_data" ref="modifyHostelClassForm" :rules="modifyHostelClassFormRules">
 						<el-form-item label="民宿类型:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="10" placeholder="请输入民宿类型">
+							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入民宿类型">
 							</el-input>
 						</el-form-item>
 					</el-form>
@@ -505,7 +505,7 @@
 				<el-row>
 					<el-col :span="24">
 						<el-form-item label="民宿服务:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="16" placeholder="请输入民宿服务">
+							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入民宿服务">
 							</el-input>
 						</el-form-item>
 					</el-col>
@@ -531,7 +531,7 @@
 				<el-col :span="24">
 					<el-form :model="modify_dictionary_data" ref="modifyHostelNameForm" :rules="modifyHostelNameFormRules">
 						<el-form-item label="房型名称:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="16" placeholder="请输入房型名称">
+							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入房型名称">
 							</el-input>
 						</el-form-item>
 					</el-form>
@@ -549,7 +549,7 @@
 				<el-row>
 					<el-col :span="24">
 						<el-form-item label="房型服务:" :label-width="formLabelWidth" :required="true" prop="name">
-							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="8" placeholder="请输入房型服务">
+							<el-input v-model="modify_dictionary_data.name" autocomplete="off" maxlength="20" placeholder="请输入房型服务">
 							</el-input>
 						</el-form-item>
 					</el-col>
@@ -697,9 +697,9 @@
 					return callback(new Error('请输入银行名称'));
 				}
 				setTimeout(() => {
-					var reg = /^[\u4e00-\u9fa5]{4,10}$/
+					var reg = /^[\u4e00-\u9fa5]{4,20}$/
 					if (!reg.test(value)) {
-						callback(new Error('只能包含4到10个汉字'));
+						callback(new Error('只能包含4到20个汉字'));
 					} else {
 						callback();
 					}
@@ -716,9 +716,9 @@
 					return callback(new Error('请输入民宿类型'));
 				}
 				setTimeout(() => {
-					var reg = /^[\u4e00-\u9fa5]{2,10}$/
+					var reg = /^[^\s]{2,20}$/
 					if (!reg.test(value)) {
-						callback(new Error('只能包含2到10个汉字'));
+						callback(new Error('只能包含2到20个字符长度'));
 					} else {
 						callback();
 					}
@@ -729,9 +729,9 @@
 					return callback(new Error('请输入民宿服务'));
 				}
 				setTimeout(() => {
-					var reg = /^[\u4e00-\u9fa5]{2,10}$/
+					var reg = /^[^\s]{2,20}$/
 					if (!reg.test(value)) {
-						callback(new Error('只能包含2到10个汉字'));
+						callback(new Error('只能包含2到20个字符长度'));
 					} else {
 						callback();
 					}
@@ -742,9 +742,9 @@
 					return callback(new Error('请输入房型名称'));
 				}
 				setTimeout(() => {
-					var reg = /^[\u4e00-\u9fa5]{2,10}$/
+					var reg = /^[^\s]{2,20}$/
 					if (!reg.test(value)) {
-						callback(new Error('只能包含2到10个汉字'));
+						callback(new Error('只能包含2到20个字符长度'));
 					} else {
 						callback();
 					}
@@ -755,9 +755,9 @@
 					return callback(new Error('请输入房型服务'));
 				}
 				setTimeout(() => {
-					var reg = /^[\u4e00-\u9fa5]{2,8}$/
+					var reg = /^[^\s]{2,20}$/
 					if (!reg.test(value)) {
-						callback(new Error('只能包含2到8个汉字'));
+						callback(new Error('只能包含2到20个字符长度'));
 					} else {
 						callback();
 					}