xiaoshushu 3 years ago
parent
commit
91d118f940

+ 2 - 2
smart-admin/src/main/resources/application-druid.yml

@@ -6,9 +6,9 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://106.55.241.82:3306/smart-tourism?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://42.193.39.24:3306/smart-tourism?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: Gogs_2021
+                password: fu?Pg36exk
 #                url: jdbc:mysql://127.0.0.1:3306/smart_tourism?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
 #                username: root
 #                password: 123456

+ 1 - 1
smart-ui-app/App.vue

@@ -25,7 +25,7 @@ button::after { border: none }
 /**挂载iconfont图表*/
 @font-face {
 	font-family: 'iconfont';
-	src: url('https://at.alicdn.com/t/font_2816842_bkqrrarbwmr.ttf?t=1637732404174') format('truetype'); //在线
+	src: url('https://at.alicdn.com/t/font_2816842_y7wrurhw29b.ttf?t=1638869589801') format('truetype'); //在线
 	// src: url('~@/static/font/iconfont.ttf') format('truetype'); //本地
 }
 .icon {

+ 142 - 68
smart-ui-app/common/common.scss

@@ -51,39 +51,58 @@
 .call {
 	color: #67c23a;
 }
+.msearch {
+	margin-bottom: 7px;
+}
 .r_item {
 	background-color: white;
-	padding: 15px 8px 15px 8px;
-	border-bottom: 1px solid #e5e5e5;
+	padding: 10px 8px 10px 8px;
 	margin-top: 10px;
+	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+	border-radius: 7px;
+	overflow: hidden;
 	.pic {
 		float: left;
-		width: 30%;
+		width: 37%;
 		border-radius: 3px;
-		height: 80px;
+		height: 90px;
 		background-color: #dcdcdc;
 	}
+	.bol {
+		font-weight: bold;
+	}
 	.con {
 		padding-left: 20px;
-		width: 60%;
+		width: 63%;
 		float: left;
 		.title {
 			font-size: 15px;
 			text-align: left;
-			color: #252525;
-			font-weight: bold;
+			color: #222222;
 		}
 		.btn {
 			float: right;
-			margin-top: -54px;
-			padding: 5px 25px;
+			margin-top: -30px;
+			padding: 5px 16px;
 			border-radius: 20px;
-			background-color: orange;
-			margin-right: -34px;
+			margin-right: -8px;
+			letter-spacing: 1.1px;
+			.icon {
+				padding-right: 3px;
+			}
+		}
+		.rooms {
+			width: 65px;
+			border-radius: 20px;
+			background-color: #f9efd2;
+			color: #ff9d1d;
+			text-align: center;
+			font-size: 12px;
+			padding: 4px 10px;
+			margin-top: 12px;
 		}
 		.ms {
-			margin-top: 5px;
-			color: $dar2;
+			margin-top: 7px;
 			.phone {
 				font-size: 30px;
 				float: right;
@@ -91,34 +110,48 @@
 			}
 			.rmb {
 				color: $orange;
-				font-size: 18px;
+				font-size: 11px;
+				padding-right: 3px;
+			}
+			.price {
+				color: $orange;
+				font-size: 15px;
+				padding-right: 3px;
+			}
+			.qi {
+				font-size: 11px;
+				color: $dar;
+			}
+			.icon {
+				color: #e22929;
 				padding-right: 3px;
 			}
 			.ll {
-				color: #d72424;
+				color: #999999;
 				font-size: 13px;
-				padding-right: 3px;
+				padding-left: 4px;
 			}
-			.wz {
-				font-size: 12px;
+			.tti {
+				color: #999999;
+				font-size: 13px;
 			}
 		}
 		.lx {
 			float: right;
+			width: 55%;
+			text-align: center;
+			margin-right: -18px;
 			color: #fff;
-			background: #d72424;
-			border-radius: 20px;
+			background: $theme-color;
+			border-radius: 15pt 0pt 0pt 15pt;
 			padding: 5px 12px;
 			font-size: 13px;
+			letter-spacing: 1.1px;
 			color: white;
-			font-weight: bold;
-			margin-top: -2px;
-			margin-right: -20px;
 			line-height: 23px;
-			margin-right: -31px;
+			margin-top: 15px;
 			.icon {
-				padding-right: 5px;
-				font-size: 20px;
+				padding-right: 3px;
 			}
 		}
 	}
@@ -140,7 +173,7 @@
 		color: white;
 		padding: 3px;
 	}
-	.icon1{
+	.icon1 {
 		width: 55px;
 		height: 55px;
 	}
@@ -268,7 +301,8 @@
 	.lable {
 		flex: 0.22;
 		font-size: 14px;
-		font-weight: bold;
+		color: #999999;
+		font-weight: 400;
 	}
 	input {
 		flex: 0.62;
@@ -419,7 +453,7 @@
 			float: left;
 			color: red;
 			text-align: right;
-			.icon{
+			.icon {
 				font-size: 20px;
 				margin-right: -10px;
 			}
@@ -440,49 +474,56 @@
 	}
 }
 .jq_item {
-	padding: 10px;
+	margin-top: 5px;
+	border-radius: 5px;
+	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 	.bmg {
 		width: 100%;
 		height: 150px;
-		border-radius: 5px;
-	}
-	.tit {
-		font-size: 17px;
-		font-weight: bold;
-		margin-top: 3px;
-	}
-	.desc {
-		font-size: 13px;
-		color: $dar;
-		padding-top: 4px;
-	}
-	.img {
-		height: 200px;
-		border-radius: 5px;
-	}
-	.str-summery {
-		font-size: 13px;
-		color: $dar;
-		padding-top: 10px;
-		text-align: left;
-		line-height: 20px;
-		overflow: hidden;
-		-webkit-line-clamp: 6;
-		text-overflow: ellipsis;
-		display: -webkit-box;
-		-webkit-box-orient: vertical;
+		border-radius: 5px 5px 0px 0px;
 	}
-	.lx {
-		width: 150px;
-		color: #fff;
-		background: #d72424;
-		border-radius: 20px;
-		padding: 5px 12px;
-		font-size: 13px;
-		color: white;
-		font-weight: bold;
-		line-height: 23px;
-		margin-top: 20px;
+	.cons {
+		padding: 5px 10px 10px 10px;
+		.tit {
+			font-size: 17px;
+			font-weight: bold;
+			margin-top: 3px;
+		}
+		.desc {
+			font-size: 13px;
+			color: $dar;
+			padding-top: 5px;
+		}
+		.img {
+			height: 200px;
+			border-radius: 5px;
+		}
+		.str-summery {
+			font-size: 13px;
+			color: $dar;
+			padding-top: 10px;
+			text-align: left;
+			line-height: 20px;
+			overflow: hidden;
+			-webkit-line-clamp: 5;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			-webkit-box-orient: vertical;
+		}
+		.lx {
+			float: right;
+			width: 55%;
+			margin-right: -20px;
+			color: #fff;
+			background: #e22929;
+			border-radius: 15pt 0pt 0pt 15pt;
+			padding: 5px 12px;
+			font-size: 13px;
+			letter-spacing: 1.1px;
+			color: white;
+			line-height: 23px;
+			margin-top: 15px;
+		}
 	}
 }
 .sos {
@@ -504,3 +545,36 @@
 		padding-bottom: 3px;
 	}
 }
+.hot_item {
+	.u-node {
+		width: 55rpx;
+		height: 55rpx;
+		border-radius: 100rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		.icon {
+			font-size: 18px;
+			font-weight: bold;
+		}
+	}
+	.content {
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+		padding: 13px;
+		border-radius: 5px;
+	}
+	.title {
+		color: #222222;
+		font-size: 16px;
+	}
+	.ck {
+		color: $dar2;
+		font-size: 13px;
+		padding-top: 5px;
+	}
+	.time {
+		font-size: 13px;
+		padding-top: 5px;
+		color: $dar2;
+	}
+}

+ 12 - 19
smart-ui-app/pages.json

@@ -11,7 +11,7 @@
 				"backgroundTextStyle": "dark",
 				"navigationStyle": "custom"
 			}
-		
+
 		},
 		{
 			"path": "pages/travel/index",
@@ -20,7 +20,15 @@
 				"enablePullDownRefresh": true,
 				"backgroundTextStyle": "dark"
 			}
-		
+
+		},
+		{
+			"path": "pages/travel/detail",
+			"style": {
+				"navigationBarTitleText": "内容详情",
+				"enablePullDownRefresh": false
+			}
+
 		},
 		{
 			"path": "pages/user/my",
@@ -50,7 +58,7 @@
 		{
 			"path": "pages/shop/detail",
 			"style": {
-				"navigationBarTitleText": "详情",
+				"navigationBarTitleText": "酒店详情",
 				"enablePullDownRefresh": false
 			}
 
@@ -117,27 +125,12 @@
 
 		},
 		{
-			"path": "pages/travel/detail",
-			"style": {
-				"navigationBarTitleText": "内容详情",
-				"enablePullDownRefresh": false
-			}
-
-		},
-		{
 			"path": "pages/user/info",
 			"style": {
 				"navigationBarTitleText": "账户设置"
 			}
 		},
 		{
-			"path": "pages/government/detail",
-			"style": {
-				"navigationBarTitleText": "内容详情",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
 			"path": "pages/government/activity",
 			"style": {
 				"navigationBarTitleText": "热门活动",
@@ -222,7 +215,7 @@
 	"globalStyle": {
 		"navigationBarTextStyle": "white",
 		"navigationBarTitleText": "",
-		"navigationBarBackgroundColor": "#c74547",
+		"navigationBarBackgroundColor": "#E22929",
 		"backgroundColor": "#F8F8F8",
 		"pageOrientation": "portrait"
 

+ 19 - 46
smart-ui-app/pages/government/activity.vue

@@ -1,22 +1,23 @@
 <template>
-	<view>
-		<view class="list">
-			<u-time-line>
-				<u-time-line-item nodeTop="2" v-for="(item, index) in list" :key="index">
-					<template v-slot:node>
-						<view class="u-node" style="background: #19be6b;"><u-icon name="volume-up" color="#fff" :size="30"></u-icon></view>
-					</template>
-					<template v-slot:content>
-						<view class="content" @click="detail(item)">
-							<view class="title">{{ item.title }}</view>
-							<view class="ck">点击查看活动内容</view>
-							<view class="time">{{ item.createTime }}</view>
-						</view>
-					</template>
-				</u-time-line-item>
-			</u-time-line>
-			<view class="loading"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+	<view class="list">
+		<view class="msearch" style="margin-bottom: 15px;">
+			<u-search v-model="param.title" :animation="true" action-text="取消" placeholder="输入搜索内容" shape="round" @search="search" @clear="clear"></u-search>
 		</view>
+		<u-time-line>
+			<u-time-line-item class="hot_item" nodeTop="2" v-for="(item, index) in list" :key="index">
+				<template v-slot:node>
+					<view class="u-node" style="background: #fde4e8;"><text class="icon" style="color: #e22929;">&#xe60b;</text></view>
+				</template>
+				<template v-slot:content>
+					<view class="content" @click="detail(item)">
+						<view class="title">{{ item.title }}</view>
+						<view class="ck">点击查看活动内容</view>
+						<view class="time">{{ item.createTime }}</view>
+					</view>
+				</template>
+			</u-time-line-item>
+		</u-time-line>
+		<view class="loading"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
 	</view>
 </template>
 
@@ -49,7 +50,7 @@ export default {
 		},
 		//详情
 		detail(item) {
-			uni.navigateTo({ url: '/pages/government/detail?id=' + item.contentId });
+			uni.navigateTo({ url: '/pages/travel/detail?id=' + item.contentId });
 		},
 		//刷新数据
 		refresh() {
@@ -79,33 +80,5 @@ export default {
 <style lang="scss">
 .list {
 	padding: 15px 20px 30px 20px;
-	.u-node {
-		width: 44rpx;
-		height: 44rpx;
-		border-radius: 100rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-	}
-	.content {
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-		padding: 13px;
-		border-radius: 5px;
-	}
-	.title {
-		color: #333333;
-		font-weight: bold;
-		font-size: 17px;
-	}
-	.ck {
-		color: $dar2;
-		font-size: 13px;
-		padding-top: 5px;
-	}
-	.time {
-		font-size: 13px;
-		padding-top: 5px;
-		color: $dar2;
-	}
 }
 </style>

+ 0 - 95
smart-ui-app/pages/government/detail.vue

@@ -1,95 +0,0 @@
-<template>
-	<view class="contents">
-		<view class="title"><text>{{item.title}}</text></view>
-		<view class="ly">
-			<text>{{item.author}}</text>
-			<text class="day">4天前</text>
-		</view>
-		<view>
-			<view class="fwb">
-				<u-parse :html="item.content"></u-parse>
-			</view>
-			<view class="mt10">
-				<view class="">来源:作者名称</view>
-				<view class="">编辑丨编辑名称</view>
-				<view class="">责编丨初审名称</view>
-				<view class="">审核丨终审名称</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			ip: this.$http.urls.ip,
-			item: {}
-		};
-	},
-	onLoad(e) {
-		this.$http.request({
-			url: this.$http.urls.getContentInfo+ e.id,
-			success: res => {
-				console.log("asd:"+JSON.stringify(res));
-				this.item = res.data.data.info;
-				//this.item.contents = res.data.data.contents.replace(/\<img/gi, '<img style=width:100%;height:auto');
-			}
-		});
-	},
-	methods: {
-		//购物车
-		car() {
-			uni.switchTab({
-				url: 'shopcar'
-			});
-		},
-		//添加购物车
-		add() {
-			this.$http.request({
-				url: this.$http.urls.cart_add,
-				method: 'POST',
-				data: { goodsId: this.item.id, userId: this.$getUser().id },
-				success: res => {
-					uni.showToast({ title: '已加入购物车', icon: 'none' });
-				}
-			});
-		},
-		//直接购买服务
-		buy() {
-			let list = [{ goodsId: this.item.id, goods: { title: this.item.title, price: this.item.price, pic: this.item.pic } }];
-			uni.navigateTo({ url: 'pay?list=' + JSON.stringify(list) });
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.contents {
-	padding: 20px;
-	.ly {
-		font-size: 14px;
-		margin-bottom: 15px;
-		color: #2196f3;
-		.day {
-			color: #818184;
-			padding-left: 10px;
-		}
-	}
-	.title {
-		padding-top: 20px;
-		font-size: 23px;
-		font-weight: 400;
-		margin-bottom: 20px;
-	}
-	.pic {
-		width: 100%;
-		border-radius: 3px;
-		margin-top: 3px;
-	}
-	.fwb {
-		margin-top: 15px;
-		color: #909090;
-	}
-}
-</style>

+ 20 - 12
smart-ui-app/pages/government/index.vue

@@ -1,15 +1,23 @@
 <template>
-	<view>
-		<view class="list">
-			<view class="t_item" v-for="(item, index) in list" :key="index" @click="detail(item)">
-				<view class="r63">
-					<view class="title">{{ item.title }}</view>
-				</view>
-				<view class="r35 day">{{ item.createTime.substring(0, 11) }}</view>
-				<view class="clear"></view>
-			</view>
-			<view class="loading"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+	<view class="list">
+		<view class="msearch" style="margin-bottom: 15px;">
+			<u-search v-model="param.title" :animation="true" action-text="取消" placeholder="输入搜索内容" shape="round" @search="search" @clear="clear"></u-search>
 		</view>
+		<u-time-line>
+			<u-time-line-item class="hot_item" nodeTop="2" v-for="(item, index) in list" :key="index">
+				<template v-slot:node>
+					<view class="u-node" style="background: #fde4e8;"><text class="icon" style="color: #e22929;">&#xe649;</text></view>
+				</template>
+				<template v-slot:content>
+					<view class="content" @click="detail(item)">
+						<view class="title">{{ item.title }}</view>
+						<view class="ck">点击查看内容</view>
+						<view class="time">{{ item.createTime }}</view>
+					</view>
+				</template>
+			</u-time-line-item>
+		</u-time-line>
+		<view class="loading"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
 	</view>
 </template>
 
@@ -42,7 +50,7 @@ export default {
 		},
 		//详情
 		detail(item) {
-			uni.navigateTo({ url: '/pages/government/detail?id=' + item.contentId });
+			uni.navigateTo({ url: '/pages/travel/detail?id=' + item.contentId });
 		},
 		//刷新数据
 		refresh() {
@@ -71,6 +79,6 @@ export default {
 
 <style lang="scss">
 .list {
-	padding: 0px 10px 70px 10px;
+	padding: 15px 20px 30px 20px;
 }
 </style>

+ 16 - 13
smart-ui-app/pages/index/index2.vue

@@ -14,9 +14,8 @@
 		<view class="ms">
 			<text class="icon">&#xe64a;</text>
 			<text>谢通门县欢迎您</text>
-			<!-- <navigator url="/pages/index/index" class="jb">旧版首页</navigator> -->
 		</view>
-		<view class="top"><image :src="aboutUs.bgImg1 ? ip + aboutUs.bgImg1 : '../../static/bj.jpg'" mode="aspectFill"></image></view>
+		<view class="top"><image :src="aboutUs.bgImg1 ? ip + aboutUs.bgImg1 : '../../static/loading.gif'" mode="aspectFill"></image></view>
 		<view class="flex menu">
 			<view class="f" @click="tab('/pages/travel/index')">
 				<image src="../../static/icon3.png" mode="widthFix" class="icon1"></image>
@@ -38,22 +37,22 @@
 		<view class="flex" style="margin-top: 10px;">
 			<view class="f" style="padding-right:8px;">
 				<image
-					@click="tab('/pages/travel/index')"
-					:src="aboutUs.bgImg1 ? ip + aboutUs.bgImg2 : '../../static/bj.jpg'"
+					@click="navigate('/pages/travel/detail?id=41')"
+					:src="aboutUs.bgImg1 ? ip + aboutUs.bgImg2 : '../../static/loading.gif'"
 					style="height: 164px;width: 100%;border-radius: 5px;"
 					mode="aspectFill"
 				/></image>
 			</view>
 			<view class="f">
 				<image
-					@click="tab('/pages/shop/hotel/index')"
-					:src="aboutUs.bgImg1 ? ip + aboutUs.bgImg3 : '../../static/bj.jpg'"
+					@click="navigate('/pages/travel/detail?id=42')"
+					:src="aboutUs.bgImg1 ? ip + aboutUs.bgImg3 : '../../static/loading.gif'"
 					style="height: 77px;width: 100%;border-radius: 5px;"
 					mode="aspectFill"
 				></image>
 				<image
 					@click="navigate('/pages/other/feedback')"
-					:src="aboutUs.bgImg1 ? ip + aboutUs.bgImg4 : '../../static/bj.jpg'"
+					:src="aboutUs.bgImg1 ? ip + aboutUs.bgImg4 : '../../static/loading.gif'"
 					style="height: 77px;width: 100%;margin-top: 5px;border-radius: 5px;"
 					mode="aspectFill"
 				></image>
@@ -71,8 +70,10 @@
 			</view>
 			<view class="jq_item" v-for="(item, index) in hot_list" :key="index" @click="detail(item)">
 				<image :src="ip + item.showPictures" class="bmg" mode="aspectFill"></image>
-				<view class="tit omit">{{ item.title }}</view>
-				<view class="desc omit">{{ item.briefContent }}</view>
+				<view class="cons">
+					<view class="tit omit">{{ item.title }}</view>
+					<view class="desc omit">{{ item.briefContent }}</view>
+				</view>
 			</view>
 		</view>
 		<view class="it">
@@ -86,11 +87,13 @@
 				<view class="clear"></view>
 			</view>
 			<view class="jq_item flex" v-for="(item, index) in zn_list" :key="index" @click="detail(item)">
-				<view class="f" style="height: 200px;border-radius: 5px;"><image :src="ip + item.showPictures" mode="aspectFill" class="img"></image></view>
+				<view class="f" style="height: 213px;border-radius: 5px 0px 0px 5px;"><image :src="ip + item.showPictures" mode="aspectFill"></image></view>
 				<view class="f" style="padding: 10px;">
-					<view class="tit omit" style="margin-top: -12px;">{{ item.title }}</view>
-					<view class="str-summery">{{ item.briefContent }}</view>
-					<view class="lx" style="margin-top: 14px; width: 82px;float: right;">浏览</view>
+					<view class="cons">
+						<view class="tit omit">{{ item.title }}</view>
+						<view class="str-summery">{{ item.briefContent }}</view>
+						<view class="lx">浏览</view>
+					</view>
 				</view>
 			</view>
 		</view>

+ 5 - 4
smart-ui-app/pages/order/my.vue

@@ -16,11 +16,12 @@
 					<image :src="ip + item.shopRoom.pic" mode="aspectFill" class="pic"></image>
 					<view class="con">
 						<view class="title omit">{{ item.shopRoom.title }}</view>
-						<view class="ms">
-							<text class="rmb">¥{{ item.shopRoom.price }}</text>
-							<text>起</text>
+						<view class="ms" style="padding-top:7px;">
+							<text class="rmb">¥</text>
+							<text class="price">{{ item.shopRoom.price }}</text>
+							<text class="qi">起</text>
 						</view>
-						<view class="btn" @click.stop="call(item.bossPhone)" style="margin:-26px -27px 0px 0px">电话</view>
+						<view class="btn" @click.stop="call(item.bossPhone)" style="margin:-26px 4px 0px 0px">电话</view>
 					</view>
 					<view class="clear"></view>
 				</view>

+ 11 - 7
smart-ui-app/pages/shop/detail.vue

@@ -27,13 +27,17 @@
 				<view class="r_item" v-for="(it, index) in item.rooms" :key="index" @click="popup(it)">
 					<image :src="ip + it.pic" mode="aspectFill" class="pic"></image>
 					<view class="con">
-						<view class="title omit">{{ it.title }}</view>
-						<view class="ms">
-							<text class="rmb">¥{{ it.price }}</text>
-							<text>起</text>
+						<view class="title omit bol">{{ it.title }}</view>
+						<view class="rooms">{{ it.nums }}间房</view>
+						<view class="ms" style="padding-top:7px;">
+							<text class="rmb">¥</text>
+							<text class="price">{{ it.price }}</text>
+							<text class="qi">起</text>
+						</view>
+						<view class="btn">
+							<text class="icon">&#xe61a;</text>
+							<text>预订</text>
 						</view>
-						<view class="ms">{{ it.nums }}间房</view>
-						<view class="btn">预订</view>
 					</view>
 					<view class="clear"></view>
 				</view>
@@ -47,6 +51,7 @@
 		<u-popup v-model="popup_show" :mask-close-able="false" mode="center" border-radius="14" width="90%" height="auto" :closeable="true">
 			<view class="u-popup">
 				<view class="tttt" style="font-weight: bolder;">预订房间</view>
+				<view class="tk" style="background-color: #F9EFD2;color: #FF9D1D">仅作基本的订房操作,实际情况以酒店方为准</view>
 				<u-steps :list="numList" mode="number" :current="0" active-color="#c74547" style="margin: 20px 0px 20px 0px;"></u-steps>
 				<view class="form_group hr">
 					<view class="lable">房型</view>
@@ -65,7 +70,6 @@
 					<input placeholder="请选择入住日期" v-model="book.day" :disabled="true" @click="calendar_show = true" />
 					<text class="day" v-if="book.days">{{ book.days }}天</text>
 				</view>
-				<view class="tk" style="background-color: #DCDFE6;color: #7d7d7d;">仅作基本的订房操作,实际情况以酒店方为准</view>
 				<button class="btn" @click="add()">确认</button>
 			</view>
 		</u-popup>

+ 24 - 19
smart-ui-app/pages/shop/hotel/index.vue

@@ -1,23 +1,27 @@
 <template>
-	<view>
-		<view class="list">
-			<view class="r_item" v-for="(item, index) in list" :key="index" @click="detail(item)">
-				<image :src="ip + item.showPictures[0]" mode="aspectFill" class="pic"></image>
-				<view class="con">
-					<view class="title omit">{{ item.name }}</view>
-					<view class="ms omit">{{ item.addres }}</view>
-					<view class="ms">
-						<u-rate :count="5" v-model="value" active-color="#FF9800" :disabled="true"></u-rate>
-						<text>(5.0)</text>
-					</view>
+	<view class="list">
+		<view class="msearch">
+			<u-search v-model="param.title" :animation="true" action-text="取消" placeholder="输入搜索内容" shape="round" @search="search" @clear="clear"></u-search>
+		</view>
+		<view class="r_item" v-for="(item, index) in list" :key="index" @click="detail(item)">
+			<image :src="ip + item.showPictures[0]" mode="aspectFill" class="pic"></image>
+			<view class="con">
+				<view class="title omit">{{ item.name }}</view>
+				<view class="ms omit">
+					<text class="icon">&#xe64a;</text>
+					<text class="tti">{{ item.addres }}</text>
+				</view>
+				<view class="ms">
+					<u-rate :count="5" v-model="value" active-color="#FF9800" :disabled="true"></u-rate>
+					<text>5.0</text>
 				</view>
-				<view class="clear"></view>
-			</view>
-			<view class="loading" v-if="list.length >0"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
-			<view class="noLogin" v-if="list.length == 0">
-				<image class="u-error-icon" src="../../../static/sj.png" mode="widthFix"></image>
-				<view class="dll" @click="go()">暂无酒店</view>
 			</view>
+			<view class="clear"></view>
+		</view>
+		<view class="loading" v-if="list.length > 0"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+		<view class="noLogin" v-if="list.length == 0">
+			<image class="u-error-icon" src="../../../static/sj.png" mode="widthFix"></image>
+			<view class="dll" @click="go()">暂无酒店</view>
 		</view>
 	</view>
 </template>
@@ -29,7 +33,8 @@ export default {
 			ip: this.$http.urls.ip,
 			value: 5,
 			list: [],
-			loadMore:false
+			param: {},
+			loadMore: false
 		};
 	},
 	onLoad() {
@@ -65,6 +70,6 @@ export default {
 
 <style lang="scss">
 .list {
-	padding: 0px 10px 70px 10px;
+	padding: 10px 17px 70px 17px;
 }
 </style>

+ 9 - 9
smart-ui-app/pages/travel/detail.vue

@@ -5,16 +5,10 @@
 		</view>
 		<view class="ly">
 			<text>{{ item.author }}</text>
-			<text class="day">4天前</text>
+			<text class="day">{{item.createTime}}</text>
 		</view>
 		<view>
 			<view class="fwb"><u-parse :html="item.content"></u-parse></view>
-			<view class="mt10">
-				<view class="">来源:作者名称</view>
-				<view class="">编辑丨编辑名称</view>
-				<view class="">责编丨初审名称</view>
-				<view class="">审核丨终审名称</view>
-			</view>
 		</view>
 	</view>
 </template>
@@ -31,9 +25,9 @@ export default {
 		this.$http.request({
 			url: this.$http.urls.getContentInfo + e.id,
 			success: res => {
-				console.log('asd:' + JSON.stringify(res));
 				this.item = res.data.data.info;
-				//this.item.contents = res.data.data.contents.replace(/\<img/gi, '<img style=width:100%;height:auto');
+				this.item.content = res.data.data.info.content.replace(new RegExp('/prod-api/profile/upload','g'),this.ip+'/profile/upload');
+				this.item.createTime = this.$u.timeFrom(new Date(this.item.createTime.replace(/\-/g, '/')).getTime());
 			}
 		});
 	},
@@ -68,4 +62,10 @@ export default {
 		color: #909090;
 	}
 }
+._p{
+	color: #404040;
+	line-height: 23px;
+	margin-top: 13px;
+	font-size: 16px;
+}
 </style>

+ 18 - 20
smart-ui-app/pages/travel/index.vue

@@ -1,23 +1,24 @@
 <template>
-	<view>
-		<view class="list">
-			<view class="r_item" v-for="(item, index) in list" :key="index" @click="detail(item)">
-				<image :src="ip + item.showPictures" mode="aspectFill" class="pic"></image>
-				<view class="con">
-					<view class="title omit">{{ item.title }}</view>
-					<view class="ms">
-						<text class="ll">{{ item.browseNum }}</text>
-						<text class="wz">浏览</text>
-					</view>
-					<view class="lx" @click.stop="lx(item)">
-						<text class="icon">&#xe696;</text>
-						景区路线
-					</view>
+	<view class="list">
+		<view class="msearch">
+			<u-search v-model="param.title" :animation="true" action-text="取消" placeholder="输入搜索内容" shape="round" @search="search" @clear="clear"></u-search>
+		</view>
+		<view class="r_item" v-for="(item, index) in list" :key="index" @click="detail(item)">
+			<image :src="ip + item.showPictures" mode="aspectFill" class="pic"></image>
+			<view class="con">
+				<view class="title omit">{{ item.title }}</view>
+				<view class="ms">
+					<text class="icon">&#xec86;</text>
+					<text class="ll">{{ item.browseNum }}</text>
+				</view>
+				<view class="lx">
+					<text class="icon">&#xe603;</text>
+					<text>景区路线</text>
 				</view>
-				<view class="clear"></view>
 			</view>
-			<view class="loading"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
+			<view class="clear"></view>
 		</view>
+		<view class="loading"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
 	</view>
 </template>
 
@@ -83,10 +84,7 @@ export default {
 </script>
 
 <style lang="scss">
-page{
-	background-color: f6f6f8;
-}	
 .list {
-	padding: 0px 10px 70px 10px;
+	padding: 10px 17px 70px 17px;
 }
 </style>

+ 11 - 4
smart-ui-app/pages/travel/introduction.vue

@@ -1,13 +1,20 @@
 <template>
 	<view>
 		<view class="list">
+			<view class="msearch">
+				<u-search v-model="param.title" :animation="true" action-text="取消" placeholder="输入搜索内容" shape="round" @search="search" @clear="clear"></u-search>
+			</view>
 			<view class="r_item" v-for="(item, index) in list" :key="index" @click="detail(item)">
 				<image :src="ip + item.showPictures" mode="aspectFill" class="pic"></image>
-				<view class="con" style="width: 70%;">
+				<view class="con">
 					<view class="title omit">{{ item.title }}</view>
 					<view class="ms">
+						<text class="icon">&#xec86;</text>
 						<text class="ll">{{ item.browseNum }}</text>
-						<text class="wz">浏览</text>
+					</view>
+					<view class="lx">
+						<text class="icon">&#xe603;</text>
+						<text>获取攻略</text>
 					</view>
 				</view>
 				<view class="clear"></view>
@@ -23,7 +30,7 @@ export default {
 		return {
 			ip: this.$http.urls.ip,
 			list: [],
-			param: { pageNum: 1, pageSize: 10, type: 3 },
+			param: { pageNum: 1, pageSize: 10, type: 3, title: '' },
 			loadMore: true
 		};
 	},
@@ -76,6 +83,6 @@ export default {
 
 <style lang="scss">
 .list {
-	padding: 0px 10px 70px 10px;
+	padding: 10px 17px 70px 17px;
 }
 </style>

+ 1 - 1
smart-ui-app/pages/travel/route.vue

@@ -4,7 +4,7 @@
 			class="map"
 			:latitude="item.lat"
 			:longitude="item.lng"
-			scale="11.5"
+			scale="11.3"
 			:polyline="polyline"
 			:polygons="polygon"
 			:markers="markers"

+ 21 - 17
smart-ui-app/pages/user/my.vue

@@ -12,24 +12,24 @@
 					<view class="nh">{{ user == '' ? '你还未登陆' : ' 你好,欢迎来到智慧旅游' }}</view>
 				</view>
 			</view>
-			<image src="../../static/bj.jpg" mode="aspectFill"></image>
+			<image src="../../static/my.png" mode="aspectFill"></image>
 		</view>
 		<view class="main">
-			<view class="list">
-				<view class="item hr" @click="navigate('/pages/order/my')">
-					<text class="icon ic" style="background-color: #2196F3;">&#xe705;</text>
-					<text>我的预约</text>
-					<text class="icon arrow">&#xe62d;</text>
+			<view class="list flex">
+				<view class="item f" @click="navigate('/pages/order/my')" style="padding-right: 0px;">
+					<view style="border-right: 1px solid #d0d0d0;">
+						<text class="icon ic" style="background-color: #2196F3;">&#xe705;</text>
+						<view class="fon">我的预约</view>
+					</view>
 				</view>
-				<view class="item hr" @click="navigate('/pages/shop/list')">
-					<text class="icon ic" style="background-color:#607D8B">&#xe616;</text>
-					<text>商家中心</text>
-					<text class="icon arrow">&#xe62d;</text>
+				<view class="item f" @click="navigate('/pages/shop/list')">
+					<text class="icon ic" style="background-color:#9727ec">&#xe616;</text>
+					<view class="fon">商家中心</view>
 				</view>
 			</view>
 			<view class="list" style="margin-top: 13px;">
 				<view class="item hr" @click="call()">
-					<text class="icon ic" style="background-color:#366092">&#xe634;</text>
+					<text class="icon ic" style="background-color:#276fec">&#xe634;</text>
 					<text>求助电话</text>
 					<text class="icon arrow">&#xe62d;</text>
 				</view>
@@ -39,14 +39,14 @@
 					<text class="icon arrow">&#xe62d;</text>
 				</view>
 				<view class="item hr">
-					<button open-type="share" hover-class='none'>
-						<text class="icon ic" style="background-color:#18B566">&#xe607;</text>
+					<button open-type="share" hover-class="none">
+						<text class="icon ic" style="background-color:#34cf43">&#xe607;</text>
 						<text>分享朋友</text>
 						<text class="icon arrow">&#xe62d;</text>
 					</button>
 				</view>
 				<view class="item" @click="navigate('/pages/other/about')">
-					<text class="icon ic" style="background-color:#606266">&#xe65f;</text>
+					<text class="icon ic" style="background-color:#343f61">&#xe65f;</text>
 					<text>关于我们</text>
 					<text class="icon arrow">&#xe62d;</text>
 				</view>
@@ -99,7 +99,7 @@ export default {
 <style lang="scss">
 .top {
 	position: relative;
-	height: 300px;
+	height: 270px;
 	color: white;
 	.wd {
 		position: absolute;
@@ -133,7 +133,7 @@ export default {
 	}
 	image {
 		width: 100%;
-		height: 300px;
+		height: 270px;
 		position: absolute;
 	}
 }
@@ -149,10 +149,14 @@ export default {
 		background-color: white;
 		border-radius: 5px;
 		overflow: hidden;
+		.fon {
+			padding-top: 12px;
+		}
 		.item {
 			padding: 16px;
 			background-color: white;
 			font-size: 16px;
+			color: #222222;
 			.ic {
 				font-size: 20px;
 				background-color: red;
@@ -179,7 +183,7 @@ button {
 	overflow: initial;
 	&:hover {
 		background-color: white;
-		outline:none;
+		outline: none;
 	}
 }
 </style>

BIN
smart-ui-app/static/loading.gif


BIN
smart-ui-app/static/my.png


+ 1 - 1
smart-ui-app/uni.scss

@@ -1,5 +1,5 @@
 /* 主题颜色变量 */
-$theme-color: #c74547;
+$theme-color: #E22929;
 $page: #eae6e6;
 $orange: #ecb727;
 $red: #ff554b;

+ 2 - 2
smart-ui/src/views/login.vue

@@ -46,8 +46,8 @@ export default {
       codeUrl: '',
       cookiePassword: '',
       loginForm: {
-        username: 'admin',
-        password: 'admin123',
+        username: '',
+        password: '',
         rememberMe: false,
         code: '',
         uuid: ''

+ 90 - 56
smart-ui/src/views/management/aboutUs/index.vue

@@ -1,26 +1,70 @@
 <template>
-  <div class="app-container">
+  <div class="app-container" v-loading="loading">
     <el-form ref="form" :model="form" :rules="rules" label-width="100px">
       <el-form-item label="标题" prop="title"><el-input v-model="form.title" placeholder="请输入标题" /></el-form-item>
       <el-form-item label="求助电话" prop="helpPhone"><el-input v-model="form.helpPhone" placeholder="请输入求助电话" /></el-form-item>
-      <el-form-item label="首页banner"><imageUpload v-model="form.bgImg1" :limit="1" /></el-form-item>
-      <el-form-item label="旅游景区"><imageUpload v-model="form.bgImg2" :limit="1" /></el-form-item>
-      <el-form-item label="酒店预订"><imageUpload v-model="form.bgImg3" :limit="1" /></el-form-item>
-      <el-form-item label="投诉建议"><imageUpload v-model="form.bgImg4" :limit="1" /></el-form-item>
+      <el-form-item label="图片链接A">
+        <imageUpload v-model="form.bgImg1" :limit="1" />
+        <el-input placeholder="请输选择" v-model="form.briefText3" class="input" :readonly="true">
+          <template slot="prepend">
+            跳转链接
+          </template>
+          <template slot="append">
+            <div @click="op(3)">选择内容</div>
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item label="图片链接B">
+        <imageUpload v-model="form.bgImg2" :limit="1" />
+        <el-input placeholder="请输选择" v-model="form.briefText2" class="input" :readonly="true">
+          <template slot="prepend">
+            跳转链接
+          </template>
+          <template slot="append">
+            <div @click="op(2)">选择内容</div>
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item label="图片链接C">
+        <imageUpload v-model="form.bgImg3" :limit="1" />
+        <el-input placeholder="请输选择" v-model="form.briefText3" class="input" :readonly="true">
+          <template slot="prepend">
+            跳转链接
+          </template>
+          <template slot="append">
+            <div @click="op(3)">选择内容</div>
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item label="图片链接D">
+        <imageUpload v-model="form.bgImg4" :limit="1" />
+        <el-input placeholder="请输选择" v-model="form.briefText4" class="input" :readonly="true">
+          <template slot="prepend">
+            跳转链接
+          </template>
+          <template slot="append">
+            <div @click="op(4)">选择内容</div>
+          </template>
+        </el-input>
+      </el-form-item>
     </el-form>
     <div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button></div>
+    <list v-if="dialog" ref="dialog" @list="getData"></list>
   </div>
 </template>
-
 <script>
 import { getAboutUs, addAboutUs, updateAboutUs } from '@/api/management/aboutUs';
+import list from './list';
 export default {
-  name: 'AboutUs',
+  components: {
+    list
+  },
   data() {
     return {
-      // 表单参数
+      loading: true,
+      dialog: false,
       form: {},
-      // 表单校验
+      flag: 1,
       rules: {
         title: [{ required: true, message: '标题不能为空' }],
         helpPhone: [{ required: true, message: '请输入求助电话' }],
@@ -29,65 +73,55 @@ export default {
       }
     };
   },
+  created() {
+    this.loading = true;
+    getAboutUs(1).then(response => {
+      this.loading = false;
+      this.form = response.data;
+    });
+  },
   methods: {
-    init(aboutUsId) {
-      getAboutUs(aboutUsId).then(response => {
-        if (response.code == 200) {
-          if (response.data != null) {
-            this.form = response.data;
-          } else {
-            this.reset();
-          }
-        } else {
-          this.msgError('获取信息出错!');
-        }
+    op(flag) {
+      this.flag = flag;
+      this.dialog = true;
+      this.$nextTick(() => {
+        this.$refs.dialog.init();
       });
     },
-    // 表单重置
-    reset() {
-      this.form = {
-        aboutUsId: null,
-        title: null,
-        helpPhone: null,
-        showPictures: null,
-        briefText1: null,
-        briefText2: null,
-        briefText3: null,
-        briefText4: null,
-        content: null,
-        bgImg1: null,
-        bgImg2: null,
-        bgImg3: null,
-        bgImg4: null,
-        createTime: null
-      };
-      this.resetForm('form');
+    getData(row) {
+      if (this.flag === 1) {
+        this.form.briefText1 = row.title + '?id=' + row.contentId;
+      }
+      if (this.flag === 2) {
+        this.form.briefText2 = row.title + '?id=' + row.contentId;
+      }
+      if (this.flag === 3) {
+        this.form.briefText3 = row.title + '?id=' + row.contentId;
+      }
+      if (this.flag === 4) {
+        this.form.briefText4 = row.title + '?id=' + row.contentId;
+      }
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs['form'].validate(valid => {
         if (valid) {
-          if (this.form.aboutUsId != null) {
-            updateAboutUs(this.form).then(response => {
-              this.msgSuccess('修改成功');
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addAboutUs(this.form).then(response => {
-              this.msgSuccess('新增成功');
-              this.open = false;
-              this.getList();
-            });
-          }
+          this.loading = true;
+          updateAboutUs(this.form).then(response => {
+            this.loading = false;
+            this.msgSuccess('修改成功');
+          });
         }
       });
     }
-  },
-  created() {
-    this.init(1);
   }
 };
 </script>
 
-<style></style>
+<style lang="scss" scoped>
+.input {
+  width: 40%;
+  float: left;
+  margin: -150px 0px 0px 200px;
+}
+</style>

+ 97 - 0
smart-ui/src/views/management/aboutUs/list.vue

@@ -0,0 +1,97 @@
+<template>
+  <div class="app-container">
+    <el-dialog title="选择跳转文章" width="70%" :close-on-click-modal="false" :visible.sync="visible" append-to-body>
+      <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="72px">
+        <el-form-item label="文章标题" prop="title"><el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="search" /></el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+          <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+        </el-form-item>
+      </el-form>
+      <el-table v-loading="loading" border :data="contentList" ref="table" @select="select">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="标题" align="left" prop="title" />
+        <el-table-column label="文章" align="center" prop="author" width="190" />
+        <el-table-column label="发布标志" align="center" prop="releaseFlag" width="100">
+          <template slot-scope="scope">
+            <el-tag type="danger" effect="dark" v-if="scope.row.releaseFlag == 0">未发布</el-tag>
+            <el-tag effect="dark" v-if="scope.row.releaseFlag == 1">已发布</el-tag>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="ok()">确 定</el-button>
+        <el-button @click="visible = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { listContent, getContent, delContent, addContent, updateContent, exportContent, auditContent, endAuditContent, releaseContent } from '@/api/management/content';
+export default {
+  data() {
+    return {
+      loading: true,
+      visible: false,
+      total: 0,
+      contentList: [],
+      serviceInfoOptions: [],
+      form: {},
+      queryParams: {
+        title: null,
+        pageNum: 1,
+        pageSize: 10,
+        releaseFlag: 1,
+        orderByColumn: 'createTime', //排序字段
+        isAsc: 'desc' //排序方式
+      }
+    };
+  },
+  created() {},
+  methods: {
+    init() {
+      this.visible = true;
+      this.getList();
+      this.getDicts('service_info').then(response => {
+        this.serviceInfoOptions = response.data;
+      });
+    },
+    /** 查询内容管理列表 */
+    getList() {
+      this.loading = true;
+      listContent(this.queryParams).then(response => {
+        this.loading = false;
+        this.contentList = response.rows;
+        this.total = response.total;
+      });
+    },
+    //只允许单选
+    select(selection, row) {
+      this.form = row;
+      if (selection.length > 1) {
+        let del_row = selection.shift();
+        this.$refs.table.toggleRowSelection(del_row, false);
+      }
+    },
+    // 信息类型字典翻译
+    serviceInfoFormat(row, column) {
+      return this.selectDictLabel(this.serviceInfoOptions, row.serviceInfo);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm');
+      this.handleQuery();
+    },
+    ok() {
+      this.$emit('list', this.form);
+      this.visible = false;
+    }
+  }
+};
+</script>

+ 0 - 18
smart-ui/src/views/management/content/index.vue

@@ -412,24 +412,6 @@ export default {
         })
         .catch(() => {});
     },
-    /** 导出按钮操作 */
-    handleExport() {
-      const queryParams = this.queryParams;
-      this.$confirm('是否确认导出所有内容管理数据项?', '警告', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      })
-        .then(() => {
-          this.exportLoading = true;
-          return exportContent(queryParams);
-        })
-        .then(response => {
-          this.download(response.msg);
-          this.exportLoading = false;
-        })
-        .catch(() => {});
-    },
     handleAudit(row, type) {
       this.flag = type;
       this.reset();