Compare commits

...

2 Commits

Author SHA1 Message Date
865d0629bc 3h16min 2026-04-19 16:26:47 +08:00
5690680926 1h27min 2026-04-19 03:15:31 +08:00
23 changed files with 582 additions and 13 deletions

147
components/login.vue Normal file
View File

@@ -0,0 +1,147 @@
<template>
<view class="begin">
<image src="/static/logo.png"></image>
<view>
<view>账号密码登录</view>
<view>欢迎使用原住民宿</view>
</view>
<view>
<view>
<view>手机号码</view>
<input type="text" placeholder="请输入手机号码" />
</view>
<view>
<view>密码</view>
<view><input type="text" placeholder="请输入密码" />
<image src="/static/眼睛.png"></image>
</view>
</view>
</view>
<view>
<view>
<image src="/static/组 151.png" mode="">
</image>
<view>我已同意并阅读<text>用户隐私政策</text>
</view>
</view>
<view></view>
<view>忘记密码</view>
</view>
<view><button type="primary" @click="goto()">登录</button></view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
goto() {
uni.navigateTo({
url:"/pages/index/index"
})
}
}
}
</script>
<style>
* {
padding: 0;
margin: 0;
}
.begin {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.begin>view:nth-child(2) {
align-self: flex-start;
margin-left: 3%;
margin-bottom: 20%;
}
.begin>view:nth-child(2) view:first-child {
font-size: 1.5rem;
font-weight: bold;
}
.begin>view:nth-child(2) view:nth-child(2) {
font-size: 0.9rem;
}
.begin>view:nth-child(3) {
align-self: flex-start;
margin: 5% auto;
width: 90%;
}
.begin>view:nth-child(3) view {
margin-bottom: 7%;
}
.begin>view:nth-child(3) view>view:first-child {
font-weight: bold;
margin-bottom: 2%;
}
.begin>view:nth-child(3) view+input {
display: block;
padding: 10px;
border: 1px solid #999;
border-radius: 5px;
}
.begin>view:nth-child(3) view>view:nth-child(2) {
display: flex;
border: 1px solid #999;
border-radius: 5px;
padding: 10px;
justify-content: space-between;
}
.begin>view:nth-child(3) view>view:nth-child(2) image {
width: 20px;
height: 20px;
}
.begin>view:nth-child(4) {
display: flex;
width: 100%;
justify-content: space-between;
}
.begin>view:nth-child(4) view image {
width: 20px;
height: 20px;
}
.begin>view:nth-child(4) view:first-child {
display: flex;
gap: 10px;
align-items: center;
}
.begin>view:nth-child(4) view:first-child text {
color: cornflowerblue;
}
.begin>view:last-child {
width: 100%;
margin-top: 5%;
}
.begin>view:last-child button {
margin: 10px;
}
</style>

View File

@@ -4,7 +4,26 @@
"style": {
"navigationBarTitleText": "uni-app"
}
}],
},
{
"path": "components/login",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "components/login",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "pages/index/house_list",
"style": {
"navigationBarTitleText": ""
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",

176
pages/index/house_list.vue Normal file
View File

@@ -0,0 +1,176 @@
<template>
<view class="begin">
<view>
<view class="serach">
<image src="/static/搜索.png" mode=""></image>
<input type="search" placeholder="搜索民宿" />
</view>
</view>
<view class="content">
<view v-for="(value,index) in house_list">
<image :src="value[0]"></image>
<view>
<view>
<image src="/static/定位.png"></image>
<text>{{value[1]}}</text>
</view>
<view>{{value[2]}}</view>
<view>{{value[4]}}{{value[5]}}·{{value[6]}}·{{value[7]}}</view>
<view>{{value[3]}}</view>
</view>
</view>
</view>
<view class="footer">
<view v-for="unit in footerlist">
<image :src="unit[1]"></image>
<text>{{unit[0]}}</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
const footerlist = ["首页", "数据分析", "民宿", "我的"].map((value, index) => [value,
`/static/${["首页_首页.png","导航-攻略.png","导航-民宿.png","导航-我的.png"][index]}`
])
return {
house_list: null,
footerlist
}
},
methods: {
async request(method, path) {
let text
if (method == "post") {
text = await fetch(`http://124.93.196.45:10091/Neusoft/homestay${path}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
// "Authorization":
},
body: JSON.stringify({
"password": "0CYdq6Hn",
"username": "6dOMIgIU"
})
})
} else if (method == "get") {
text = await fetch(`http://124.93.196.45:10091/Neusoft/homestay${path}`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": (await this.request("post", "/api/login")).token
}
})
}
const data = await text.json()
console.log(data);
return data
}
},
async mounted() {
this.house_list = (await this.request("get", "/api/house/list")).rows.map(x => [
`http://124.93.196.45:10091/Neusoft/homestay${x.cover}`, x.cityInfo, x.location, x.price, x
.roomNum, x.parlorNum, x.commentNum, x.score
])
console.log(this.house_list)
}
}
</script>
<style>
.begin+view {
background-color: white;
}
.serach {
display: flex;
background-color: #999;
align-items: center;
padding: 6px;
border-radius: 50px;
margin: 30px 13px 10px 13px;
}
.serach>image {
height: 20px;
width: 20px;
}
.content {
background-color: #e6e6e6;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
margin: 10px;
}
.content>view {
display: flex;
flex-direction: column;
justify-content: flex-start;
background-color: white;
}
.content>view>image {
width: 100%;
height: 20vh;
}
.content>view>view {
margin: 10px;
}
.content>view>view>view {
margin: 1px;
}
.content>view>view>view:first-child {
display: flex;
align-items: center;
color: darkgray;
}
.content>view>view>view:first-child text {
font-size: 0.8rem;
}
.content>view>view>view:nth-child(3) {
color: darkgray;
font-size: 0.8rem;
}
.content>view>view>view:nth-child(4) {
color: blue;
}
.content>view>view>view>image {
height: 20px;
width: 20px;
}
.footer {
display: flex;
justify-content: space-evenly;
position: fixed;
bottom: 0;
width: 100%;
background-color: white;
}
.footer view {
display: flex;
flex-direction: column;
align-items: center;
}
.footer view image {
width: 30px;
height: 30px;
}
</style>

View File

@@ -1,29 +1,256 @@
<template>
<view class="container">
<view class="intro">本项目已包含uni ui组件无需import和注册可直接使用在代码区键入字母u即可通过代码助手列出所有可用组件光标置于组件名称处按F1即可查看组件文档</view>
<text class="intro">详见</text>
<uni-link :href="href" :text="href"></uni-link>
<view class="begin">
<swiper :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000">
<swiper-item v-for="value in adv_list">
<view class="swiper-item">
<image :src="value[0]"></image>
</view>
</swiper-item>
</swiper>
<view>
<view>
<view>
<image src="/static/定位.png"></image>
<text>{{gps}}</text>
</view>
<view>
<image src="/static/坐标.png"></image>
<text>我的位置</text>
</view>
</view>
<view>
<view>
<view>入住</view>
<view>请选择</view>
</view>
<view>{{}}</view>
<view>
<view>离店</view>
<view>请选择</view>
</view>
</view>
<view>
<input type="text" placeholder="搜索民宿名称" />
</view>
<button style="background-color: orange;">开始搜索</button>
</view>
<view>
<view>
<image src="/static/民俗文化.png"></image>
<text>民俗文化</text>
</view>
<view>
<image src="/static/优惠促销.png"></image>
<text>优惠促销</text>
</view>
</view>
<view>
<view>
<view>旅游攻略</view>
<view>旅游头条</view>
</view>
<view>
<view>查看更多</view>
<view>
<image src="/static/联合 10.png"></image>
</view>
</view>
</view>
<view class="footer">
<view v-for="unit in footerlist">
<image :src="unit[1]"></image>
<text>{{unit[0]}}</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
const footerlist = ["首页", "数据分析", "民宿", "我的"].map((value, index) => [value,
`/static/${["首页_首页.png","导航-攻略.png","导航-民宿.png","导航-我的.png"][index]}`
])
return {
href: 'https://uniapp.dcloud.io/component/README?id=uniui'
adv_list: null,
footerlist,
area_list: [
[]
],
gps: []
}
},
methods: {
methods: {
async request(method, path) {
let text
if (method == "post") {
text = await fetch(`http://124.93.196.45:10091/Neusoft/homestay${path}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
// "Authorization":
},
body: JSON.stringify({
"password": "0CYdq6Hn",
"username": "6dOMIgIU"
})
})
} else if (method == "get") {
text = await fetch(`http://124.93.196.45:10091/Neusoft/homestay${path}`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": (await this.request("post", "/api/login")).token
}
})
}
const data = await text.json()
console.log(data);
return data
}
},
async mounted() {
this.adv_list = (await this.request("get", "/api/adv/list")).data.map(x => [
`http://124.93.196.45:10091/Neusoft/homestay${x.image}`, x.id, x.title, x.createTime
])
this.area_list = (await this.request("get", "/api/location/area/list")).rows.map(x => [x.provinceName, x
.cityName, x.name, x.id
])
this.gps = (await this.request("get", "/api/location/gps")).data.location
}
}
</script>
<style>
.container {
padding: 20px;
font-size: 14px;
line-height: 24px;
swiper {
height: 30vh;
}
swiper image {
width: 100%;
}
.begin>view:nth-child(2) {
display: flex;
flex-direction: column;
height: 35vh;
justify-content: space-evenly;
box-shadow: 2px 2px 5px black;
padding: 3%;
margin: 3%;
border-radius: 10px;
}
.begin>view:nth-child(2)>view:first-child {
display: flex;
justify-content: space-between;
border-bottom: 1px solid #999;
padding-bottom: 10px;
}
.begin>view:nth-child(2)>view>view {
display: flex;
flex-direction: row;
align-items: center;
}
.begin>view:nth-child(2)>view:first-child>view image {
width: 20px;
height: 20px;
}
.begin>view:nth-child(2)>view:nth-child(2) {
display: flex;
justify-content: space-around;
border-bottom: 1px solid #999;
}
.begin>view:nth-child(2)>view:nth-child(2)>view {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 15px 0px;
}
.begin>view:nth-child(2)>view:nth-child(3) {
padding: 15px;
border-bottom: 1px solid #999;
margin-bottom: 15px;
}
button {
width: 95%;
}
.begin>view:nth-child(3) {
height: 10vh;
margin: 15px;
display: flex;
justify-content: space-around;
align-items: center;
padding: 0px 10px;
}
.begin>view:nth-child(3)>view {
height: 7vh;
display: flex;
align-items: center;
padding: 5px 15px;
border-radius: 10px;
box-shadow: 2px 2px 5px black;
}
.begin>view:nth-child(3) image {
height: 30px;
width: 30px;
}
.begin>view:nth-child(3)+view {
display: flex;
justify-content: space-between;
}
.begin>view:nth-child(3)+view>view:nth-child(1) {
display: flex;
align-items: flex-end;
}
.begin>view:nth-child(3)+view>view:nth-child(2) {
display: flex;
align-items: center;
}
.begin>view:nth-child(3)+view>view:nth-child(2)>view:nth-child(2) image {
display: block;
height: 20px;
width: 18px;
line-height: 20px;
}
.begin>view:nth-child(3)+view>view:first-child>view:first-child {
font-size: 1.4rem;
}
.footer {
display: flex;
justify-content: space-evenly;
position: fixed;
bottom: 0;
width: 100%;
}
.footer view {
display: flex;
flex-direction: column;
align-items: center;
}
.footer view image {
width: 30px;
height: 30px;
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
static/优惠促销.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/坐标.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 B

BIN
static/定位.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/导航-我的.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

BIN
static/导航-攻略.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/导航-民宿.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/搜索.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

BIN
static/支付宝.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
static/民俗文化.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/眼睛.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/组 148.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/组 151.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/联合 10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

BIN
static/首页_首页-5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/首页_首页.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB