Browse Source

粉丝列表

master
Bobi 3 months ago
parent
commit
a5425f3f5b
3 changed files with 317 additions and 129 deletions
  1. +153
    -81
      pages_order/components/list/workList/workItem.vue
  2. +129
    -23
      pages_order/scenicSpot/scenicSpotList.vue
  3. +35
    -25
      pages_order/work/workList.vue

+ 153
- 81
pages_order/components/list/workList/workItem.vue View File

@ -1,68 +1,74 @@
<template>
<view class="work-item"
@click="$emit('click', item)">
<view class="work-item" @click="$emit('click', item)">
<view class="top">
<view class="title">
{{ item.title }}
</view>
<view class="price"
v-if="item.minPrice >= 1000">
<text>
{{ (item.minPrice / 1000).toFixed(0) }}
</text>
<text
v-if="item.maxPrice">
-{{ (item.maxPrice / 1000).toFixed(0) }}
</text>
K
</view>
<view class="price" v-else>
<text>{{ item.minPrice }}</text>
<text
v-if="item.maxPrice">-{{ item.maxPrice }}</text>
<view class="hire">
<view class="Position">
{{ item.title }}
</view>
<view class="topo1">
</view>
<view class="topo2">
</view>
</view>
</view>
<view class="tag-list">
<view>
{{ item.school }}
</view>
<view
v-for="(t, i) in item.iconText && item.iconText.split(',')"
:key="i">
{{ t }}
<view class="index">
<view class="Salary">
{{item.minPrice}}-{{item.maxPrice}}
</view>
<view class="gang">
|
</view>
<view class="Cashregister">
{{item.title}}
</view>
<view class="gang">
|
</view>
<view class="ads">
湘潭市
</view>
</view>
</view>
<view class="bottom">
<view class="address">
<!-- <text>2.5km | 楚河汉区</text> -->
{{ item.address }}
<view class="shop">
{{ item.address }}
</view>
<view class="Famousenterprises">
名企
</view>
<view class="authentication">
已认证
</view>
</view>
<view class="time">
<!-- 09月23日 1620 -->
{{ $dayjs(item.createTime).format('YYYY-MM-DD') }}
<view class="bottom">
<view class="festival">
节假日福利
</view>
<view class="Apply">
应聘
</view>
</view>
<callPhone
style="margin-left: auto;"
:phone="item.phone"
title="老板"/>
</view>
</view>
</template>
<script>
export default {
props : {
item : {
default : {}
props: {
item: {
default: {}
}
},
data() {
return {
}
},
methods: {
callPhone(){
callPhone() {
uni.makePhoneCall({
phoneNumber: this.item.phone,
success() {
@ -78,49 +84,115 @@
</script>
<style scoped lang="scss">
.work-item{
background-color: #fff;
padding: 20rpx;
border-radius: 20rpx;
.top{
.work-item {
background-color: #fff;
padding: 20rpx;
border-radius: 20rpx;
}
.hire {
display: flex;
justify-content: space-between;
font-weight: 900;
.title{
align-items: center;
margin: 10rpx 0rpx;
.topo1 {
margin-left: 15rpx;
font-size: 23rpx;
background-color: rgb(139, 181, 240);
padding: 5rpx 15rpx;
color: white;
border-radius: 42%;
}
.topo2 {
margin-left: 15rpx;
font-size: 23rpx;
background-color: rgb(254, 196, 96);
padding: 5rpx 15rpx;
color: white;
border-radius: 42%;
}
}
.index {
display: flex;
.Salary {
color: red;
}
.price{
color: $uni-color;
.gang {
margin: 0rpx 25rpx 0rpx 25rpx;
color: rgb(75, 198, 153);
}
.Cashregister {
color: rgb(151, 151, 151);
}
.ads {
color: rgb(151, 151, 151);
}
}
.address {
display: flex;
margin-top: 10rpx;
color: #fff;
.shop {
color: rgb(151, 151, 151);
}
.Famousenterprises {
background-color: rgb(207, 198, 165);
margin-left: 10rpx;
border-radius: 7rpx;
padding: 5rpx 10rpx;
font-size: 25rpx;
}
.authentication {
background-color: #75c4a9;
margin-left: 10rpx;
padding: 5rpx 10rpx;
font-size: 25rpx;
}
}
.bottom{
.bottom {
display: flex;
margin-top: 10rpx;
justify-content: space-between;
align-items: flex-end;
font-size: 24rpx;
.time{
color: #999999;
align-items: center;
.festival {
display: flex;
justify-content: center;
align-items: center;
background-color: white;
color: rgb(75, 198, 153);
border: 2px solid rgb(209, 238, 228);
padding: 5rpx 10rpx;
border-radius: 10rpx;
font-size: 23rpx;
}
.phone{
background-color: rgba($uni-color, 0.2);
color: $uni-color;
padding: 8rpx 16rpx;
.Apply {
display: flex;
justify-content: center;
align-items: center;
// height: 30px;
// width: 130rpx;
padding: 15rpx 30rpx;
background-color: rgb(238, 244, 240);
color: rgb(75, 198, 153);
border-radius: 10rpx;
image{
width: 20rpx;
height: 20rpx;
}
}
}
}
.tag-list{
display: flex;
flex-wrap: wrap;
}
.tag-list > view{
margin: 10rpx;
padding: 10rpx;
background-color: #EFF2F1;
font-size: 24rpx;
border-radius: 10rpx;
}
</style>
</style>

+ 129
- 23
pages_order/scenicSpot/scenicSpotList.vue View File

@ -1,32 +1,77 @@
<template>
<view class="page pageList">
<navbar title="景点" leftClick @leftClick="$utils.navigateBack" />
<view
style="padding: 10rpx 30rpx;">
<uv-search
bgColor="#fff"
@search="getData"
:showAction="false"
searchIconSize="30rpx"
placeholder="请输入搜索关键字..."
v-model="queryParams.title"></uv-search>
<view style="padding: 10rpx 30rpx;">
<uv-search bgColor="#fff" @search="getData" :showAction="false" searchIconSize="30rpx"
placeholder="请输入搜索关键字..." v-model="queryParams.title"></uv-search>
</view>
<view class="">
<screenRen
@clickItem="clickItem"/>
<screenRen @clickItem="clickItem" />
</view>
<view class="list">
<view class="waterfall">
<uv-waterfall ref="waterfall" v-model="list"
:add-time="10"
:left-gap="leftGap"
:right-gap="rightGap"
:column-gap="columnGap"
@changeList="changeList">
<!-- 第一列数据 -->
<template v-slot:list1>
<!-- 为了磨平部分平台的BUG必须套一层view -->
<view>
<view v-for="(item, index) in list1" :key="item.id" class="waterfall-item"
@click="$utils.navigateTo('/pages_order/scenicSpot/scenicSpotDetail?id=' + item.id)">
<view class="waterfall-item__image" :style="[imageStyle(item)]">
<image :src="item.titleImage" mode="widthFix" :style="{width:item.width+'px'}"></image>
</view>
<view class="waterfall-item__ft">
<view class="waterfall-item__ft__title">
<text class="value">{{item.name}}</text>
</view>
<view class="waterfall-item__ft__desc uv-line-2">
<text class="value">{{item.address}}</text>
</view>
</view>
</view>
</view>
</template>
<!-- 第二列数据 -->
<template v-slot:list2>
<!-- 为了磨平部分平台的BUG必须套一层view -->
<view>
<view v-for="(item, index) in list2" :key="item.id" class="waterfall-item"
@click="$utils.navigateTo('/pages_order/scenicSpot/scenicSpotDetail?id=' + item.id)">
<view class="waterfall-item__image" :style="[imageStyle(item)]">
<image :src="item.titleImage" mode="widthFix" :style="{width:item.width+'px'}"></image>
</view>
<view class="waterfall-item__ft">
<view class="waterfall-item__ft__title">
<text class="value">{{item.name}}</text>
</view>
<view class="waterfall-item__ft__desc uv-line-2">
<text class="value">{{item.address}}</text>
</view>
</view>
</view>
</view>
</template>
</uv-waterfall>
</view>
<!-- <view class="list">
<scenicSpotItem
:key="index"
v-for="(item, index) in list"
:item="item"
@click="$utils.navigateTo('/pages_order/scenicSpot/scenicSpotDetail?id=' + item.id)"
/>
</view>
</view> -->
</view>
</template>
@ -34,19 +79,40 @@
import mixinsList from '@/mixins/list.js'
import screenRen from '../components/screen/screenRen.vue'
import scenicSpotItem from '../components/list/scenicSpot/scenicSpotItem.vue'
import { guid } from '@/uni_modules/uv-ui-tools/libs/function/index.js'
export default {
mixins: [mixinsList],
components : {
components: {
scenicSpotItem,
screenRen,
},
data() {
return {
mixinsListApi : 'getScenicPage',
mixinsListApi: 'getScenicPage',
list: [], //
list1: [], //
list2: [], //
leftGap: 10,
rightGap: 10,
columnGap: 10
}
},
computed: {
imageStyle(item) {
return item => {
const v = uni.upx2px(750) - this.leftGap - this.rightGap - this.columnGap;
const w = v / 2;
const rate = w / item.w;
const h = rate * item.h;
return {
width: w + 'px',
height: h + 'px'
}
}
}
},
methods: {
clickItem(result){
clickItem(result) {
this.queryParams = {
pageNo: 1,
pageSize: 10,
@ -56,14 +122,54 @@
})
this.getData()
},
// e.namelist1list2
changeList(e) {
this[e.name].push(e.value);
},
}
}
</script>
<style scoped lang="scss">
.page{
.list{
padding: 0 20rpx;
.page {
background: #f1f1f1;
.list {
padding: 0 20rpx;
}
}
$show-lines: 1;
@import '@/uni_modules/uv-ui-tools/libs/css/variable.scss';
.waterfall-item {
overflow: hidden;
margin-top: 10px;
border-radius: 6px;
}
.waterfall-item__ft {
padding: 20rpx;
background: #fff;
&__title {
margin-bottom: 10rpx;
line-height: 48rpx;
font-weight: 700;
.value {
font-size: 32rpx;
color: #303133;
}
}
&__desc .value {
font-size: 28rpx;
color: #606266;
}
&__btn {
padding: 10px 0;
}
}
}
</style>
</style>

+ 35
- 25
pages_order/work/workList.vue View File

@ -1,33 +1,24 @@
<template>
<view class="page pageList">
<navbar title="工作" leftClick @leftClick="$utils.navigateBack" />
<view
style="padding: 10rpx 20rpx;">
<uv-search
bgColor="#fff"
@search="getData"
:showAction="false"
searchIconSize="30rpx"
placeholder="请输入搜索关键字..."
v-model="queryParams.title"></uv-search>
<view style="padding: 10rpx 20rpx;">
<uv-search bgColor="#fff" @search="getData" :showAction="false" searchIconSize="30rpx"
placeholder="请输入搜索关键字..." v-model="queryParams.title"></uv-search>
</view>
<view class="">
<screenRen
@clickItem="clickItem"/>
<screenRen @clickItem="clickItem" />
</view>
<uv-tabs :list="tabsList" @click="click"></uv-tabs>
<!-- <workList ref="workList"/> -->
<view class="list">
<workItem
@click="$utils.navigateTo('/pages_order/work/workDetail?id=' + item.id)"
:key="index"
v-for="(item, index) in list"
:item="item"/>
<workItem @click="$utils.navigateTo('/pages_order/work/workDetail?id=' + item.id)" :key="index"
v-for="(item, index) in list" :item="item" />
</view>
</view>
</template>
@ -37,17 +28,36 @@
import screenRen from '../components/screen/screenRen.vue'
export default {
mixins: [mixinsList],
components : {
components: {
screenRen,
workItem,
},
data() {
return {
mixinsListApi : 'getJobPage',
mixinsListApi: 'getJobPage',
tabsList: [{
name: '最新职位',
}, {
name: '零售店/个体户',
}, {
name: '美术/图形设计'
}, {
name: '跑腿'
}, {
name: '音乐'
}, {
name: '美食'
}, {
name: '文化'
}, {
name: '财经'
}, {
name: '手工'
}]
}
},
methods: {
clickItem(result){
clickItem(result) {
this.queryParams = {
pageNo: 1,
pageSize: 10,
@ -62,4 +72,4 @@
</script>
<style scoped lang="scss">
</style>
</style>

Loading…
Cancel
Save