Browse Source

上传

master
前端-胡立永 4 months ago
parent
commit
84ea1f40b1
25 changed files with 919 additions and 509 deletions
  1. +1
    -0
      App.vue
  2. +63
    -6
      api/api.js
  3. +2
    -2
      components/config/PrivacyAgreementPoup.vue
  4. +6
    -5
      components/list/activityList.vue
  5. +207
    -0
      components/list/dynamic/dynamicItem.vue
  6. +103
    -0
      components/user/createDetailPopup.vue
  7. +3
    -3
      config.js
  8. +6
    -0
      mixins/list.js
  9. +9
    -3
      pages.json
  10. +10
    -8
      pages/index/activity.vue
  11. +58
    -346
      pages/index/index.vue
  12. +137
    -0
      pages_order/activity/activityDetail.vue
  13. +1
    -1
      pages_order/auth/wxLogin.vue
  14. +1
    -1
      pages_order/auth/wxUserInfo.vue
  15. +84
    -0
      pages_order/components/list/gourmet/gourmetItem.vue
  16. +1
    -1
      pages_order/components/list/workList/index.vue
  17. +11
    -8
      pages_order/components/list/workList/workItem.vue
  18. +41
    -0
      pages_order/gourmet/gourmetList.vue
  19. +48
    -51
      pages_order/post/addPost.vue
  20. +64
    -25
      pages_order/renting/rentingDetail.vue
  21. +20
    -26
      pages_order/renting/rentingList.vue
  22. +0
    -0
      pages_order/work/addWork.vue
  23. +11
    -16
      pages_order/work/workDetail.vue
  24. +7
    -1
      pages_order/work/workList.vue
  25. +25
    -6
      store/store.js

+ 1
- 0
App.vue View File

@ -4,6 +4,7 @@
},
onShow: function() {
// this.$store.commit('initConfig')
this.$store.commit('getCityList')
},
onHide: function() {
}


+ 63
- 6
api/api.js View File

@ -17,7 +17,7 @@ const config = {
// 微信登录接口
wxLogin: {
url: '/login/login',
method: 'POST',
method: 'GET',
limit : 500,
showLoading : true,
},
@ -46,29 +46,86 @@ const config = {
//获取分类
getClassInfo: {
url: '/api/city/getClassInfo',
url: '/city/getClassInfo',
method: 'GET',
},
//获取首页头部信息
getIndexHeaderInfo: {
url: '/api/city/getIndexHeaderInfo',
url: '/city/getIndexHeaderInfo',
method: 'GET',
},
//获取banner列表
getBannerList: {
url: '/city/getBannerList',
method: 'GET',
},
//获取分类类型列表
getClassifyList: {
url: '/city/getClassifyList',
method: 'GET',
},
//获取工作信息列表
getJobPage: {
url: '/api/city/getJobPage',
url: '/city/getJobPage',
method: 'GET',
},
//获取工作详情
getJobDetail: {
url: '/city/getJobDetail',
method: 'GET',
},
//根据分类获取租房信息列表
getRentPage: {
url: '/api/city/getRentPage',
url: '/city/getRentPage',
method: 'GET',
},
//获取租房详情
getRentDetail: {
url: '/city/getRentDetail',
method: 'GET',
},
//根据分类获取动态帖子列表带分页
getPostPage: {
url: '/api/city/getPostPage',
url: '/city/getPostPage',
method: 'GET',
},
//获取活动列表信息
getActivityPage: {
url: '/city/getActivityPage',
method: 'GET',
},
//获取活动详情
getActivityDetail: {
url: '/city/getActivityDetail',
method: 'GET',
},
//根据分类获取门店信息列表(美食)
getStorePage: {
url: '/city/getStorePage',
method: 'GET',
},
//发布按钮列表
getPublishList: {
url: '/city/getPublishList',
method: 'GET',
},
//获取城市列表服务区域
getCityList: {
url: '/city/getCityList',
method: 'GET',
},
//发布帖子\动态
publishPost: {
url: '/token/publishPost',
method: 'POST',
limit : 1000,
},
}


+ 2
- 2
components/config/PrivacyAgreementPoup.vue View File

@ -10,7 +10,7 @@
</view>
<view class="content_pri">
<view class="text">
欢迎来到酒店布草!我们根据最新的法律法规监管政策要求更新了用户协议隐私政策,请您认真阅读
欢迎来到瑶都万能墙!我们根据最新的法律法规监管政策要求更新了用户协议隐私政策,请您认真阅读
</view>
</view>
<view class="config">
@ -18,7 +18,7 @@
<view class="content">
<view style="display: flex;">
<!-- <uv-checkbox size="30rpx" :name="1"></uv-checkbox> -->
同意<text @click="goToPrivacy">酒店布草隐私政策</text>
同意<text @click="goToPrivacy">瑶都万能墙隐私政策</text>
</view>
<view class="">
以及<text @click="goToPrivacy">用户协议</text>


+ 6
- 5
components/list/activityList.vue View File

@ -1,7 +1,7 @@
<template>
<view class="postList">
<view class="item" v-for="(item, index) in list"
@click="$utils.navigateTo('/pages_order/post/postDetail?id=' + item.id)"
@click="$utils.navigateTo('/pages_order/activity/activityDetail?id=' + item.id)"
:key="index">
<image
:src="item.image &&
@ -12,13 +12,14 @@
</view>
<view class="createBy">
<view class="">
发布人{{ item.userId }}
发布人{{ item.userName }}
</view>
<view class="">
<uv-icon
<!-- <uv-icon
size="26rpx"
name="thumb-up"></uv-icon>
{{ item.dropNum?item.dropNum:0 }}
name="thumb-up"></uv-icon> -->
浏览
{{ item.browseNum }}
</view>
</view>
<view class="createTime">


+ 207
- 0
components/list/dynamic/dynamicItem.vue View File

@ -0,0 +1,207 @@
<template>
<view class="works">
<view class="box">
<view class="headPortraitimg">
<image :src="item.userImage" mode="aspectFill"></image>
</view>
<view class="YaoduUniversalWall">
<view class="heide">
<view class="username text-ellipsis">
</view>
<view class="inde">
男性
</view>
<view class="inde">
99
</view>
<view class="inde">
大路铺镇
</view>
<view class="authentication">
官方认证
</view>
</view>
<view class="Times">
<view class="TimeMonth">
<!-- 10-08 -->
{{ item.createTime }}发布
</view>
<!-- <view class="Month">
12:34
</view> -->
</view>
</view>
</view>
<view class="dynamics" v-html="$utils.stringFormatHtml(item.title)">
</view>
<view class="Artworkimages">
<view class="wrokimg" :key="i" v-for="(img, i) in item.image && item.image.split(',')">
<image :src="img" mode=""></image>
</view>
</view>
<view class="bottom">
<view class="browse">
{{ item.isBrowse }}浏览
</view>
<view class="browse">
{{ item.isComment }}条评论
</view>
<view class="Leavingamessage">
<uv-icon size="30rpx" name="chat"></uv-icon>
</view>
</view>
</view>
</template>
<script>
export default {
props: {
item: {}
},
data() {
return {
}
},
methods: {
}
}
</script>
<style scoped lang="scss">
.works {
margin: 40rpx 24rpx;
background-color: #fff;
padding: 40rpx;
border-radius: 20rpx;
box-shadow: 0 0 6rpx 6rpx #00000011;
.box {
display: flex;
align-items: center;
.headPortraitimg {
width: 100rpx;
height: 100rpx;
background-color: greenyellow;
border-radius: 15rpx;
overflow: hidden;
image{
width: 100%;
height: 100%;
}
}
.YaoduUniversalWall {
padding: 0rpx 10rpx;
.username {
max-width: 200rpx;
}
.heide {
display: flex;
justify-content: center;
align-items: center;
}
.inde {
display: flex;
justify-content: center;
align-items: center;
padding: 0rpx 10rpx;
margin: 0rpx 5rpx;
font-size: 20rpx;
height: 30rpx;
color: white;
background-color: rgb(124, 136, 242);
border-radius: 7rpx;
flex-shrink: 0;
}
.authentication {
display: flex;
justify-content: center;
align-items: center;
padding: 0rpx 10rpx;
margin: 0rpx 5rpx;
font-size: 20rpx;
height: 34rpx;
padding: 0rpx 10rpx;
color: white;
background-color: #ffd036;
border-radius: 7rpx;
flex-shrink: 0;
}
.Times {
display: flex;
padding: 5rpx 0rpx;
font-size: 20rpx;
margin-top: 10rpx;
.Month {
margin: 0rpx 15rpx;
}
}
}
}
.personalInformation {
display: flex;
.inde {
font-size: 25rpx;
padding: 0rpx 8rpx;
}
.authentication {
font-size: 25rpx;
}
}
.dynamics {
margin-top: 20rpx;
font-size: 28rpx;
// font-weight: bold;
// line-height: 35rpx;
letter-spacing: 3rpx;
}
.Artworkimages {
display: flex;
flex-wrap: wrap;
.wrokimg {
margin: 10rpx;
image {
height: 190rpx;
width: 190rpx;
border-radius: 20rpx;
}
}
}
.bottom {
display: flex;
margin-top: 20rpx;
font-size: 20rpx;
.browse {
margin: 0rpx 30rpx;
color: rgb(132, 132, 132);
}
.Leavingamessage {
height: 20rpx;
width: 20rpx;
margin-left: auto;
}
}
}
</style>

+ 103
- 0
components/user/createDetailPopup.vue View File

@ -0,0 +1,103 @@
<template>
<view>
<view class="createDetail" @click="$refs.createDetailPopup.open('bottom')">
<uv-icon size="40rpx" color="#fff" name="plus"></uv-icon>
</view>
<uv-popup ref="createDetailPopup" :round="30">
<view class="createDetailPopup">
<view class="" :key="index" @click="clickItem(item)" v-for="(item, index) in createDetail">
<image :src="item.image" style="width: 90rpx;height: 90rpx;" mode="aspectFill"></image>
<view class="info">
<view class="title">
{{ item.name }}
</view>
<view class="desc">
{{ item.context }}
</view>
</view>
<view class="icon">
<uv-icon size="30rpx" name="arrow-right"></uv-icon>
</view>
</view>
</view>
</uv-popup>
</view>
</template>
<script>
export default {
data() {
return {
createDetail: [],
}
},
created() {
this.getData()
},
methods: {
getData() {
this.$api('getPublishList', res => {
if (res.code == 200) {
this.createDetail = res.result
}
})
},
clickItem(item) {
this.$utils.navigateTo(item.url)
this.$refs.createDetailPopup.close()
},
}
}
</script>
<style scoped lang="scss">
.createDetail {
position: fixed;
top: 50vh;
right: 50rpx;
width: 100rpx;
height: 100rpx;
background-color: $uni-color-primary;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 0 10rpx 10rpx rgba(#000, 0.1);
}
.createDetailPopup {
padding: 20rpx;
background-color: #ffffff;
&>view {
display: flex;
align-items: center;
padding: 24rpx;
background-color: #f7f7f7;
margin: 20rpx;
border-radius: 20rpx;
image {
width: 100rpx;
height: 100rpx;
margin-right: 20rpx;
}
.info {
.title {
font-size: 30rpx;
}
.desc {
font-size: 24rpx;
}
}
.icon {
margin-left: auto;
}
}
}
</style>

+ 3
- 3
config.js View File

@ -7,16 +7,16 @@ import uvUI from '@/uni_modules/uv-ui-tools'
Vue.use(uvUI);
// 当前环境
const type = 'prod'
const type = 'dev'
// 环境配置
const config = {
dev : {
baseUrl : 'http://h5.xzaiyp.top',
baseUrl : 'http://h5.xzaiyp.top/api',
},
prod : {
baseUrl : 'https://admin.hhlm1688.com',
baseUrl : 'https://admin.hhlm1688.com/api',
}
}


+ 6
- 0
mixins/list.js View File

@ -28,9 +28,15 @@ export default {
list : [],
}
},
onPullDownRefresh() {
this.getData()
},
onReachBottom() {
this.loadMoreData()
},
onShow() {
this.getData()
},
methods: {
getData(queryParams){
return new Promise((success, error) => {


+ 9
- 3
pages.json View File

@ -87,19 +87,25 @@
"path": "renting/addRenting"
},
{
"path": "recruit/recruitList"
"path": "work/workList"
},
{
"path": "recruit/addRecruit"
"path": "work/addWork"
},
{
"path": "recruit/recruitDetail"
"path": "work/workDetail"
},
{
"path": "post/postDetail"
},
{
"path": "post/addPost"
},
{
"path": "gourmet/gourmetList"
},
{
"path": "activity/activityDetail"
}
]
}],


+ 10
- 8
pages/index/activity.vue View File

@ -1,9 +1,11 @@
<template>
<view class="page">
<navbar/>
<navbar title="活动"/>
<activityList :list="list"/>
<view class="activityList">
<activityList :list="list"/>
</view>
<tabber select="1" />
</view>
@ -21,11 +23,7 @@
},
data() {
return {
list : [
{
title : '这是一条活动',
}
]
mixinsListApi : 'getActivityPage',
}
},
methods: {
@ -35,5 +33,9 @@
</script>
<style scoped lang="scss">
.page{
.activityList{
padding: 0 20rpx;
}
}
</style>

+ 58
- 346
pages/index/index.vue View File

@ -3,6 +3,13 @@
<!-- 瑶都万能墙 -->
<view class="Headbackground">
<view class="Toggle">
<uv-icon
size="30rpx"
color="#fff"
name="map"></uv-icon>
长沙
</view>
<view class="top">
<view class=" profilePicture">
<image :src="headinfo.headImage" mode=""></image>
@ -24,22 +31,22 @@
</view>
<view class="life">
<view class="mouse" @click="menuClick(index)"
<view class="mouse" @click="menuClick(item.url)"
:key="index"
v-for="(item, index) in menu">
<view class="RentingAhouseimg">
<image
:src="`../../static/image/home/${index}.png`"
:src="item.icon"
style="width: 90rpx;height: 90rpx;" mode=""></image>
</view>
<view class="RentingAhouse">
{{ item.name }}
{{ item.title }}
</view>
</view>
</view>
<view class="LabelOptions">
<uv-tabs :list="tabs"
<uv-tabs :list="category"
:activeStyle="{color : '#000', fontWeight : 900}"
lineColor="#00f"
lineHeight="8rpx"
@ -47,100 +54,14 @@
keyName="title"
@click="tabsClick"></uv-tabs>
</view>
<view class="works" :key="index"
v-for="(item, index) in list">
<view class="box">
<view class="headPortraitimg">
<!-- <image :src="item" mode=""></image> -->
</view>
<view class="YaoduUniversalWall">
<view class="heide">
<view class="username text-ellipsis">
</view>
<view class="inde">
男性
</view>
<view class="inde">
99
</view>
<view class="inde">
大路铺镇
</view>
<view class="authentication">
官方认证
</view>
</view>
<view class="Times">
<view class="TimeMonth">
<!-- 10-08 -->
{{ item.createTime }}发布
</view>
<!-- <view class="Month">
12:34
</view> -->
</view>
</view>
</view>
<view class="dynamics"
v-html="$utils.stringFormatHtml(item.title)">
</view>
<view class="Artworkimages">
<view class="wrokimg"
:key="i"
v-for="(img, i) in item.image && item.image.split(',')">
<image :src="img" mode=""></image>
</view>
</view>
<view class="bottom">
<view class="browse">
{{ item.isBrowse }}浏览
</view>
<view class="browse">
{{ item.isComment }}条评论
</view>
<view class="Leavingamessage">
<uv-icon size="30rpx" name="chat"></uv-icon>
</view>
</view>
</view>
<view class="createDetail"
@click="$refs.createDetailPopup.open('bottom')">
<uv-icon
size="40rpx"
color="#fff"
name="plus"></uv-icon>
</view>
<uv-popup ref="createDetailPopup" :round="30">
<view class="createDetailPopup">
<view class=""
:key="index"
@click="$utils.navigateTo(item.path)"
v-for="(item, index) in createDetail">
<image
:src="`../../static/image/home/${index}.png`"
style="width: 90rpx;height: 90rpx;" mode=""></image>
<view class="info">
<view class="title">
{{ item.name }}
</view>
<view class="desc">
{{ item.desc }}
</view>
</view>
<view class="icon">
<uv-icon
size="30rpx"
name="arrow-right"></uv-icon>
</view>
</view>
</view>
</uv-popup>
<dynamicItem
:key="index"
v-for="(item, index) in list"
:item="item"
/>
<createDetailPopup/>
<PrivacyAgreementPoup />
<tabber select="0" />
@ -150,97 +71,49 @@
<script>
import PrivacyAgreementPoup from '@/components/config/PrivacyAgreementPoup.vue'
import tabber from '@/components/base/tabbar.vue'
import createDetailPopup from '@/components/user/createDetailPopup.vue'
import dynamicItem from '@/components/list/dynamic/dynamicItem.vue'
import mixinsList from '@/mixins/list.js'
import { mapState } from 'vuex'
export default {
mixins: [mixinsList],
components: {
tabber,
PrivacyAgreementPoup,
createDetailPopup,
dynamicItem,
},
data() {
return {
tabs: [
// {
// name: '',
// },
// {
// name: '',
// },
// {
// name: ''
// },
],
headinfo: {},
menu : [
{
name : '租房',
},
{
name : '工作',
},
{
name : '活动',
},
{
name : '美食',
},
],
createDetail : [
{
name : '圈子动态',
desc : '发布动态(请发布到合适的分区)',
path : '/pages_order/post/addPost',
},
// {
// name : '',
// desc : '',
// path : '/pages_order/renting/addRenting',
// },
// {
// name : '',
// desc : '',
// path : '/pages_order/recruit/addRecruit',
// },
],
menu : [],
mixinsListApi : 'getPostPage',
}
},
onShow() {
this.getCategory()
this.getIndexHeaderInfo()
this.getData()
this.getClassifyList()
this.$store.commit('getCategory')
},
computed: {
...mapState(['city', 'category']),
},
computed: {},
methods: {
tabsClick(item) {
console.log('item', item);
},
menuClick(index) {
console.log(index);
menuClick(url) {
//
if (index == 0) {
uni.navigateTo({
url: '/pages_order/renting/rentingList'
if (url.includes('reLaunch:')) {
uni.reLaunch({
url : url.replace('reLaunch:', '')
})
} else if (index == 1) {
}else{
uni.navigateTo({
url: '/pages_order/recruit/recruitList'
})
} else if (index == 2) {
uni.reLaunch({
url: '/pages/index/activity'
url
})
}
},
//
getCategory(){
//
this.$api('getClassInfo', res => {
if(res.code == 200){
this.tabs = res.result
}
})
},
//
getIndexHeaderInfo(){
this.$api('getIndexHeaderInfo',res =>{
@ -249,18 +122,14 @@
}
})
},
//
// getPostPage(){
// this.$api('getPostPage', {
// pageNo : 1,
// pageSize : 10,
// },res =>{
// if(res.code == 200){
// this.postList = res.result.records
// }
// console.log(res);
// })
// }
//
getClassifyList(){
this.$api('getClassifyList',res =>{
if(res.code == 200){
this.menu = res.result
}
})
},
}
}
</script>
@ -271,11 +140,20 @@
height: 100%;
}
.Headbackground {
padding-top: 200rpx;
display: flex;
align-items: center;
padding-top: 150rpx;
background: linear-gradient(to bottom, rgb(85, 94, 123), rgb(45, 51, 73));
.Toggle{
margin: 10rpx 30rpx;
padding: 20rpx;
background-color: #00000022;
color: #fff;
border-radius: 40rpx;
width: fit-content;
display: flex;
justify-content: center;
align-items: center;
font-size: 28rpx;
}
.top {
display: flex;
color: white;
@ -346,173 +224,7 @@
}
}
.works {
margin: 40rpx 24rpx;
background-color: #fff;
padding: 40rpx;
border-radius: 20rpx;
box-shadow: 0 0 6rpx 6rpx #00000011;
.box {
display: flex;
align-items: center;
.headPortraitimg {
width: 100rpx;
height: 100rpx;
background-color: greenyellow;
border-radius: 15rpx;
overflow: hidden;
}
.YaoduUniversalWall {
padding: 0rpx 10rpx;
.username{
max-width: 200rpx;
}
.heide {
display: flex;
justify-content: center;
align-items: center;
}
.inde {
display: flex;
justify-content: center;
align-items: center;
padding: 0rpx 10rpx;
margin: 0rpx 5rpx;
font-size: 20rpx;
height: 30rpx;
color: white;
background-color: rgb(124, 136, 242);
border-radius: 7rpx;
flex-shrink: 0;
}
.authentication {
display: flex;
justify-content: center;
align-items: center;
padding: 0rpx 10rpx;
margin: 0rpx 5rpx;
font-size: 20rpx;
height: 34rpx;
padding: 0rpx 10rpx;
color: white;
background-color: #ffd036;
border-radius: 7rpx;
flex-shrink: 0;
}
.Times {
display: flex;
padding: 5rpx 0rpx;
font-size: 20rpx;
margin-top: 10rpx;
.Month {
margin: 0rpx 15rpx;
}
}
}
}
.personalInformation {
display: flex;
.inde {
font-size: 25rpx;
padding: 0rpx 8rpx;
}
.authentication {
font-size: 25rpx;
}
}
.dynamics {
margin-top: 20rpx;
font-size: 28rpx;
// font-weight: bold;
// line-height: 35rpx;
letter-spacing: 3rpx;
}
.Artworkimages {
display: flex;
flex-wrap: wrap;
.wrokimg {
margin: 10rpx;
image {
height: 190rpx;
width: 190rpx;
border-radius: 20rpx;
}
}
}
.bottom {
display: flex;
font-size: 20rpx;
.browse {
margin: 0rpx 30rpx;
color: rgb(132, 132, 132);
}
.Leavingamessage {
height: 20rpx;
width: 20rpx;
margin-left: auto;
}
}
}
.createDetail{
position: fixed;
top: 50vh;
right: 50rpx;
width: 100rpx;
height: 100rpx;
background-color: $uni-color-primary;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 0 10rpx 10rpx rgba(#000, 0.1);
}
.createDetailPopup{
padding: 20rpx;
background-color: #ffffff;
&>view{
display: flex;
align-items: center;
padding: 24rpx;
background-color: #f7f7f7;
margin: 20rpx;
border-radius: 20rpx;
image{
width: 100rpx;
height: 100rpx;
margin-right: 20rpx;
}
.info{
.title{
font-size: 30rpx;
}
.desc{
font-size: 24rpx;
}
}
.icon{
margin-left: auto;
}
}
}
</style>

+ 137
- 0
pages_order/activity/activityDetail.vue View File

@ -0,0 +1,137 @@
<template>
<view class="postDetail">
<navbar leftClick @leftClick="$utils.navigateBack" title="动态详情" />
<view class="swipe">
<uv-swiper :list="item.image &&
item.image.split(',')" indicator height="420rpx"></uv-swiper>
</view>
<view class="box">
<view class="title">
{{ item.title }}
</view>
<view class="createBy">
<view class="">
发布人{{ item.userName }}
</view>
<view class="">
发布时间{{ $dayjs(item.createTime).format('YYYY-MM-DD') }}
</view>
</view>
<view class="content">
<uv-parse :content="item.content"></uv-parse>
</view>
<!-- <view class="controls">
<contentControls
:type="2"
:up="isThumbs_up"
:down="isThumbs_down"
@loadData="getData"
:detail="item"/>
</view> -->
</view>
</view>
</template>
<script>
// import contentControls from '@/components/content/contentControls.vue'
export default {
components: {
// contentControls
},
data() {
return {
list: [
],
item: {},
isThumbs_up: undefined,//
isThumbs_down: undefined,//
id : 0,
}
},
onLoad(options) {
// this.$route.query
console.log(options)
this.id = options.id
},
onPullDownRefresh(){
this.getData()
},
onShow() {
this.getData()
},
onShareAppMessage(res) {
// if (res.from === 'button') {//
// console.log(res.target)
// }
return {
title: this.item.title,
desc: this.item.content && this.item.content.slice(0, 30),
path: '/pages/publish/postDetail?id=' + this.id
}
},
methods: {
getData() {
this.$api('getActivityDetail', {
id : this.id
}, res => {
uni.stopPullDownRefresh()
if (res.code == 200) {
this.item = res.result
// this.isThumbs_up = res.result.isThumbs_up//
// this.isThumbs_down = res.result.isThumbs_down//
}
})
},
}
}
</script>
<style lang="scss" scoped>
.postDetail {
.box {
padding: 20rpx;
width: 100vw;
.title {
font-size: 34rpx;
font-weight: 600;
color: #000;
}
.createBy {
display: flex;
margin-top: auto;
margin-bottom: 10rpx;
font-size: 24rpx;
margin-top: 20rpx;
color: #555;
&>view {
display: flex;
align-items: center;
justify-content: center;
padding-right: 20rpx;
}
}
.controls {
margin-top: 30rpx;
}
.content {
margin-top: 30rpx;
font-size: 28rpx;
}
}
}
</style>

+ 1
- 1
pages_order/auth/wxLogin.vue View File

@ -4,7 +4,7 @@
<!-- <image src="/static/image/login/logo.png" mode=""></image> -->
</view>
<view class="title">
欢迎使用酒店桌布租赁平台
欢迎使用瑶都万能墙
</view>
<view class="btn mt"
@click="wxLogin">


+ 1
- 1
pages_order/auth/wxUserInfo.vue View File

@ -1,7 +1,7 @@
<template>
<view class="login">
<view class="title">
酒店桌布租赁平台
瑶都万能墙
</view>
<view class="title">
申请获取你的头像昵称


+ 84
- 0
pages_order/components/list/gourmet/gourmetItem.vue View File

@ -0,0 +1,84 @@
<template>
<view class="item">
<image :src="item.image &&
item.image.split(',')[0]" mode="aspectFill"></image>
<view class="text">
<view class="title">
{{ item.title }}
</view>
<view class="titleSub">
{{ item.titleSub }}
</view>
<view class="createBy">
工作时间
{{ item.workTime }}
</view>
<view class="createTime">
{{ item.address }}
<!-- {{ $dayjs(item.createTime).format('YYYY-MM-DD') }} -->
</view>
</view>
</view>
</template>
<script>
export default {
props: ['item'],
data() {
return {
}
},
methods: {
}
}
</script>
<style scoped lang="scss">
.item {
height: 200rpx;
width: 100%;
background-color: #fff;
overflow: hidden;
border-radius: 10rpx;
color: #777;
display: flex;
font-size: 24rpx;
margin: 30rpx 0;
image {
width: 50%;
height: 100%;
}
.text {
display: flex;
flex-direction: column;
padding: 16rpx;
width: 50%;
.title {
font-size: 30rpx;
font-weight: 600;
color: #000;
margin-bottom: 10rpx;
}
.titleSub{
}
.createBy {
display: flex;
margin-top: auto;
margin-bottom: 10rpx;
justify-content: space-between;
&>view {
display: flex;
align-items: center;
justify-content: center;
}
}
}
}
</style>

+ 1
- 1
pages_order/components/list/workList/index.vue View File

@ -5,7 +5,7 @@
@scrolltolower="loadMoreData">
<view class="workList">
<view
@click="$utils.navigateTo('/pages_order/recruit/recruitDetail?id=' + item.id)"
@click="$utils.navigateTo('/pages_order/work/workDetail?id=' + item.id)"
:key="index"
v-for="(item, index) in list">
<workItem :item="item"/>


+ 11
- 8
pages_order/components/list/workList/workItem.vue View File

@ -5,25 +5,28 @@
{{ item.title }}
</view>
<view class="price"
v-if="item.salaryLow > 1000">
v-if="item.minPrice >= 1000">
<text>
{{ (item.salaryLow / 1000).toFixed(0) }}
{{ (item.minPrice / 1000).toFixed(0) }}
</text>
<text
v-if="item.salaryUp">
-{{ (item.salaryUp / 1000).toFixed(0) }}
v-if="item.maxPrice">
-{{ (item.maxPrice / 1000).toFixed(0) }}
</text>
K
</view>
<view class="price" v-else>
<text>{{ item.salaryLow }}</text>
<text>{{ item.minPrice }}</text>
<text
v-if="item.salaryUp">-{{ item.salaryUp }}</text>
v-if="item.maxPrice">-{{ item.maxPrice }}</text>
</view>
</view>
<view class="tag-list">
<view>
{{ item.school }}
</view>
<view
v-for="(t, i) in item.tab && item.tab.split('、')"
v-for="(t, i) in item.iconText && item.iconText.split(',')"
:key="i">
{{ t }}
</view>
@ -31,7 +34,7 @@
<view class="bottom">
<view class="address">
<!-- <text>2.5km | 楚河汉区</text> -->
{{ item.userId }}
{{ item.address }}
</view>
<view class="time">
<!-- 09月23日 1620 -->


+ 41
- 0
pages_order/gourmet/gourmetList.vue View File

@ -0,0 +1,41 @@
<template>
<view class="page">
<navbar title="美食" leftClick @leftClick="$utils.navigateBack" />
<view class="list">
<gourmetItem
:key="index"
v-for="(item, index) in list"
:item="item"
/>
</view>
</view>
</template>
<script>
import mixinsList from '@/mixins/list.js'
import gourmetItem from '../components/list/gourmet/gourmetItem.vue'
export default {
mixins: [mixinsList],
components : {
gourmetItem,
},
data() {
return {
mixinsListApi : 'getStorePage',
}
},
methods: {
}
}
</script>
<style scoped lang="scss">
.page{
.list{
padding: 20rpx;
}
}
</style>

+ 48
- 51
pages_order/post/addPost.vue View File

@ -7,34 +7,21 @@
<view class="title-input box">
<!-- <view class="title-input box">
<input type="text" placeholder="取个吸引人的标题吧" v-model="form.title"/>
</view>
</view> -->
<view class="category">
<view class="title">
选择分区
</view>
<view class="tagList">
<view
:class="{act : i == categoryIndex}"
@click="clickCategory(item, i)"
v-for="(t, i) in category"
:key="i">
{{ t.name }}
</view>
</view>
</view>
<view class="content-input">
<uv-textarea
v-model="form.content"
v-model="form.title"
:maxlength="200"
autoHeight
count
placeholder="说点什么吧"></uv-textarea>
</view>
<view class="images box">
<uv-upload
:fileList="fileList"
@ -47,6 +34,21 @@
:previewFullImage="true"></uv-upload>
</view>
<view class="category">
<view class="title">
选择分区
</view>
<view class="tagList">
<view
:class="{act : t.id == form.classId}"
@click="clickCategory(item, i)"
v-for="(t, i) in category"
:key="i">
{{ t.title }}
</view>
</view>
</view>
<!-- <view class="upTop"
>
<view class="title">
@ -94,6 +96,11 @@
发布须知
</view>
<view class="uni-color-btn"
@click="submit">
发布
</view>
<configPopup
ref="configPopup"
@ -103,52 +110,33 @@
</template>
<script>
import { mapState } from 'vuex'
export default {
components : {
},
data() {
return {
form : {
// image : [],
content : '',
topId : 0,
title : '',
classId : 0,
},
fileList: [
// {
// url: 'https://cdn.uviewui.com/uview/swiper/2.jpg'
// },
],
id : 0,
categoryIndex : 0,
category : [
{
name : '圈子动态',
},
{
name : '二手集市',
},
],
fileList : [],
};
},
computed : {
// topInfo(){
// for (var i = 0; i < this.upTopList.length; i++) {
// if(this.upTopList[i].id == this.form.topId){
// return this.upTopList[i]
// }
// }
// return {}
// },
...mapState(['city', 'category']),
},
onLoad(args) {
this.id = args.id
this.form.classId = this.category[0].id
},
onShow() {
this.$store.commit('getCategory')
},
methods : {
clickCategory(item, index){
this.categoryIndex = index
this.form.classId = item.id
},
getDateil(){
if(!this.id){
@ -234,20 +222,29 @@
//
submit(){
if(this.fileList.length == 0){
return uni.showToast({
title: '请上传图片',
icon : 'none'
})
}
// if(this.fileList.length == 0){
// return uni.showToast({
// title: '',
// icon : 'none'
// })
// }
if (this.$utils.verificationAll(this.form, {
title: '请输入标题',
content: '请输入正文',
title: '说点什么吧',
})) {
return
}
this.$api('publishPost', this.form, res => {
if(res.code == 200){
uni.showToast({
title: '发布成功!',
icon: 'none'
})
setTimeout(uni.navigateBack, 1000, -1)
}
})
},
preview(){},
draft(){},


+ 64
- 25
pages_order/renting/rentingDetail.vue View File

@ -1,39 +1,52 @@
<template>
<view>
<view class="leftClick"
@click="$utils.navigateBack">
<uv-icon
size="30rpx"
color="#fff"
name="arrow-left"></uv-icon>
</view>
<view style="width: 100vw; height: 553rpx;">
<image style="width: 100vw; height: 553rpx;"
<!-- <image style="width: 100vw; height: 553rpx;"
src="https://pic1.ajkimg.com/display/anjuke/ea5773-%E8%83%9C%E9%80%B8%E5%9C%B0%E4%BA%A7/3b5e900e0ed231e6154759c8c885b6cc-800x650.jpg?frame=1"
mode="scaleToFill" />
mode="aspectFill" /> -->
<uv-swiper
:list="detail.image && detail.image.split(',')"
indicator
height="553rpx"
indicatorStyle="bottom: 100rpx;"
></uv-swiper>
</view>
<view
style="padding: 36rpx; background: #FFF; position: absolute; z-index: 1; width: calc(100vw - 72rpx); min-height: 780rpx; border-radius: 20rpx 20rpx 20rpx 20rpx;margin-top: -20rpx;">
<view class="t0">2400/</view>
<view class="t1">整租·康卓新城 1室1卫</view>
<view class="t2">房源编号:HC42012205JC33V</view>
<view class="t2">今天10:33更新·浏览 168</view>
<view class="t0">{{ detail.money }}/</view>
<view class="t1">{{ detail.title }} {{ detail.home }}</view>
<!-- <view class="t2">房源编号:HC42012205JC33V</view> -->
<view class="t2">{{ detail.titleSub }}</view>
<view class="t2">{{ detail.createTime }}更新 · 浏览 {{ detail.num }}</view>
<view class="driver"></view>
<view class="flex-wrap xr">
<view class="sb-w4 h70">
<view class="font-a"></view>
<view class="font-a">{{ detail.face }}</view>
<view class="font-b">朝向</view>
</view>
<view class="sb-w4 h70">
<view class="font-a">60</view>
<view class="font-a">{{ detail.crm }}</view>
<view class="font-b">面积</view>
</view>
<view class="sb-w4 h70">
<view class="font-a">32/32</view>
<view class="font-a">{{ detail.floor }}</view>
<view class="font-b">楼层</view>
</view>
<view class="sb-w4 h70">
<view class="font-a">精装</view>
<view class="font-a">{{ detail.decoration }}</view>
<view class="font-b">装修</view>
</view>
</view>
@ -44,21 +57,21 @@
<view class="flex-sb">
<view class="w50">
<span class="font-b">付款</span>
<span class="font-c">季付</span>
<span class="font-c">{{ detail.payment }}</span>
</view>
<view class="w50">
<span class="font-b">电梯</span>
<span class="font-c"></span>
<span class="font-c">{{ detail.lift }}</span>
</view>
</view>
<view class="flex-sb">
<view class="w50">
<span class="font-b">交付</span>
<span class="font-c">即时交付</span>
<span class="font-c">{{ detail.deliver }}</span>
</view>
<view class="w50">
<span class="font-b">看房</span>
<span class="font-c">随时可看</span>
<span class="font-c">{{ detail.showings }}</span>
</view>
</view>
<view class="flex-sb">
@ -66,7 +79,7 @@
<span class="font-b">投诉</span>
<span class="font-c">
<uni-icons type="phone" size="12" />
199 1888 8888
{{ detail.phone }}
</span>
</view>
</view>
@ -75,7 +88,7 @@
<span class="font-b">小区</span>
<span class="font-c">
<uni-icons type="paperplane" size="12" />
长岸江边新民小区
{{ detail.address }}
</span>
</view>
</view>
@ -87,9 +100,10 @@
<view style="padding-left: 20rpx;">
<image src="/static/logo.png" class="radius80 test" />
</view>
<view style="padding: 12rpx 20rpx; width: 280rpx;">
<view class="font-d">廖吃翔</view>
<view class="font-b">新城国际花都</view>
<view style="padding: 12rpx 20rpx; width: 280rpx;
display: flex;align-items: center;">
<view class="font-d">{{ detail.userId }}</view>
<!-- <view class="font-b">新城国际花都</view> -->
</view>
<view style="padding: 20rpx" @click="clickShare()">
<uni-icons type="redo"></uni-icons>
@ -106,12 +120,15 @@
export default {
data() {
return {
id : 0,
detail : {},
}
},
onLoad({id}) {
this.id = id
},
onShow() {
this.getData()
},
methods: {
clickShare() {
@ -125,15 +142,37 @@
},
clickService() {
uni.makePhoneCall({
phoneNumber: '10086',
phoneNumber: this.detail.phone,
});
},
getData(){
let data = {
id : this.id
}
if(uni.getStorageSync('token')){
data.token = uni.getStorageSync('token')
}
this.$api('getRentDetail', data, res => {
if(res.code == 200){
this.detail = res.result
}
})
},
}
}
</script>
<style scoped lang="scss">
.leftClick{
position: absolute;
top: calc(var(--status-bar-height) + 20rpx);
left: 20rpx;
background-color: #00000033;
padding: 20rpx;
border-radius: 50%;
z-index: 99;
}
.t0 {
font-weight: 1000;
font-size: 32rpx;


+ 20
- 26
pages_order/renting/rentingList.vue View File

@ -20,7 +20,7 @@
v-model="queryParams.title"></uv-search>
</view>
<view class="flex-wrap rx">
<!-- <view class="flex-wrap rx">
<view class="sb-w3">
<image src="/static/image/home/1.png" />
<view>居住</view>
@ -33,23 +33,28 @@
<image src="/static/3.png" />
<view>做生意</view>
</view>
</view>
</view> -->
<view class="container">
<view class="re-empty font-c" style="display: none;">暂无数据</view>
<view class="card-item flex-sb" v-for="i in 10" @click="clickDetail()">
<view class="card-item flex-sb"
v-for="(item, index) in list"
:key="index"
@click="clickDetail(item)">
<view>
<image class="imx" src="/static/R01.png" />
<image class="imx" :src="item.image &&
item.image.split(',')[0]" />
</view>
<view style="width: calc(100% - 330rpx);">
<view class="t1">整租·康卓新城</view>
<view class="t2">1室1卫 60m2 | </view>
<view class="t1">{{ item.title }}</view>
<view class="t2">{{ item.home }} {{ item.crm }}m2 | {{ item.face }}</view>
<view class="flex">
<view class="t3">优选</view>
<view class="t3">低价</view>
<view class="t3" v-if="item.isGood">{{ item.isGood }}</view>
<view class="t3" v-if="item.isMinPrice">{{ item.isMinPrice }}</view>
<!-- <view class="t3">低价</view> -->
</view>
<view class="t4">2400/</view>
<view class="t4">{{ item.money }}/</view>
</view>
</view>
</view>
@ -58,32 +63,20 @@
</template>
<script>
import mixinsList from '@/mixins/list.js'
export default {
mixins: [mixinsList],
data() {
return {
keyword : '',
queryParams : {
pageNo : 1,
pageSize : 10,
}
mixinsListApi : 'getRentPage',
}
},
onShow() {
this.getRentPage()
},
methods: {
clickDetail(){
clickDetail(item){
uni.navigateTo({
url: '/pages_order/renting/rentingDetail'
url: '/pages_order/renting/rentingDetail?id=' + item.id
})
},
//
getRentPage(){
this.$api('getRentPage', this.queryParams,res =>{
// console.log(res);
})
}
}
}
</script>
@ -153,6 +146,7 @@
box-shadow: 0rpx 3rpx 6rpx 1rpx rgba(0, 0, 0, 0.16);
border-radius: 8rpx 8rpx 8rpx 8rpx;
margin-bottom: 36rpx;
overflow: hidden;
}
.imx {


pages_order/recruit/addRecruit.vue → pages_order/work/addWork.vue View File


pages_order/recruit/recruitDetail.vue → pages_order/work/workDetail.vue View File

@ -8,7 +8,7 @@
</view>
<view class="price">
{{ detail.salaryLow }}-{{ detail.salaryUp }}
{{ detail.minPrice }}-{{ detail.maxPrice }}
</view>
<view class="line">
@ -18,11 +18,11 @@
</view> -->
<view>
<!-- <image src="../static/work/g.png" mode=""></image> -->
{{ detail.workAge }}
{{ detail.workYear }}
</view>
<view>
<!-- <image src="../static/work/x.png" mode=""></image> -->
{{ detail.qulification }}
{{ detail.school }}
</view>
</view>
@ -44,7 +44,7 @@
-->
<view class="line"
style="justify-content: space-between;">
{{ detail.workAddress }}
{{ detail.address }}
<uv-icon
size="30rpx"
color="666"
@ -74,14 +74,14 @@
</view>
<view class="tag-list">
<view v-for="(t, i) in detail.tab && detail.tab.split('、')">
<view v-for="(t, i) in detail.iconText && detail.iconText.split('、')">
{{ t }}
</view>
</view>
<view
class="text"
v-html="text">
v-html="detail.jobDetails">
</view>
<!-- <view
class="text">
@ -108,13 +108,7 @@
return {
text : '',
id : 0,
detail : {
title : 'Java工程师',
salaryLow : 9000,
salaryUp : 12000,
tab : '应届生、包吃',
workAddress : '长沙',
},
detail : {},
collectionFlag : false,
}
},
@ -128,14 +122,15 @@
methods: {
getData(){
let data = {
jobId : this.id
id : this.id
}
if(uni.getStorageSync('token')){
data.token = uni.getStorageSync('token')
}
this.$api('employeeQueryJobById', data, res => {
this.$api('getJobDetail', data, res => {
if(res.code == 200){
this.detail = res.result.employJob
this.detail = res.result
this.detail.jobDetails = this.$utils.stringFormatHtml(res.result.jobDetails)
this.collectionFlag = res.result.collectionFlag
}
})

pages_order/recruit/recruitList.vue → pages_order/work/workList.vue View File

@ -1,6 +1,6 @@
<template>
<view>
<navbar title="招聘列表" leftClick @leftClick="$utils.navigateBack" />
<navbar title="找工作" leftClick @leftClick="$utils.navigateBack" />
<workList ref="workList"/>
@ -21,6 +21,12 @@
onShow() {
this.$refs.workList.getData()
},
onPullDownRefresh() {
this.$refs.workList.getData()
},
onReachBottom() {
this.$refs.workList.loadMoreData()
},
methods: {
}

+ 25
- 6
store/store.js View File

@ -11,6 +11,8 @@ const store = new Vuex.Store({
configList: [], //配置列表
shop : false,
userInfo : {}, //用户信息
city : [],//城市列表
category : [],//动态分类
},
getters: {
// 角色 true为水洗店 false为酒店
@ -59,13 +61,13 @@ const store = new Vuex.Store({
state.userInfo = res.result.userInfo
uni.setStorageSync('token', res.result.token)
if(!state.userInfo.nickName || !state.userInfo.headImage){
uni.navigateTo({
url: '/pages_order/auth/wxUserInfo'
})
}else{
// if(!state.userInfo.nickName || !state.userInfo.headImage){
// uni.navigateTo({
// url: '/pages_order/auth/wxUserInfo'
// })
// }else{
uni.navigateBack(-1)
}
// }
})
}
})
@ -77,6 +79,23 @@ const store = new Vuex.Store({
}
})
},
// 获取城市
getCityList(state){
api('getCityList', res => {
if(res.code == 200){
state.city = res.result
}
})
},
// 获取动态分类
getCategory(state){
// 发起请求
api('getClassInfo', res => {
if(res.code == 200){
state.category = res.result
}
})
},
},
actions: {},
})


Loading…
Cancel
Save