@ -0,0 +1,70 @@ | |||||
<template> | |||||
<scroll-view | |||||
scroll-y="true" | |||||
:style="{height: height}" | |||||
@scrolltolower="loadMoreData"> | |||||
<view class="bossList"> | |||||
<view | |||||
@click="$utils.navigateTo('/pages_order/boss/bossDetail?id=' + 123)" | |||||
:key="index" | |||||
v-for="(item, index) in 10"> | |||||
<userItem :item="item"/> | |||||
</view> | |||||
</view> | |||||
</scroll-view> | |||||
</template> | |||||
<script> | |||||
import userItem from './userItem.vue' | |||||
export default { | |||||
components : { | |||||
userItem, | |||||
}, | |||||
props : { | |||||
height : { | |||||
default : 'auto' | |||||
}, | |||||
api : { | |||||
default : '' | |||||
} | |||||
}, | |||||
data() { | |||||
return { | |||||
queryParams: { | |||||
pageNo: 1, | |||||
pageSize: 10, | |||||
}, | |||||
total : 0, | |||||
list : 10, | |||||
} | |||||
}, | |||||
methods: { | |||||
queryVideoList(){ | |||||
if(uni.getStorageSync('token')){ | |||||
this.queryParams.token = uni.getStorageSync('token') | |||||
} | |||||
this.$api(this.api, this.queryParams, res => { | |||||
if(res.code == 200){ | |||||
this.list = res.result | |||||
// this.total = res.result.total | |||||
} | |||||
}) | |||||
}, | |||||
loadMoreData(){ | |||||
if(this.queryParams.pageSize <= this.list.length){ | |||||
this.queryParams.pageSize += 10 | |||||
this.queryVideoList() | |||||
} | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.bossList { | |||||
&>view{ | |||||
margin: 20rpx; | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,128 @@ | |||||
<template> | |||||
<view class="boss-item"> | |||||
<view class="head"> | |||||
<view class="headImage"> | |||||
<image src="/static/image/center/headImage.png" mode=""></image> | |||||
</view> | |||||
<view class="info"> | |||||
<view class="name"> | |||||
李老板 | |||||
<view> | |||||
装配电工 | |||||
</view> | |||||
</view> | |||||
<view class="tips"> | |||||
男 · 汉族 · 本科 · 应届生 | |||||
</view> | |||||
</view> | |||||
<view class="right"> | |||||
<view class="price"> | |||||
12-18K | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<view class="bottom"> | |||||
<view class="time"> | |||||
09月23日 16:20 | |||||
</view> | |||||
<view class="phone"> | |||||
<image src="/static/image/home/phone.png" mode=""></image> | |||||
联系他 | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.boss-item{ | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
.head { | |||||
display: flex; | |||||
align-items: center; | |||||
position: relative; | |||||
padding: 20rpx; | |||||
image { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
.headImage { | |||||
width: 80rpx; | |||||
height: 80rpx; | |||||
background-size: 100% 100%; | |||||
overflow: hidden; | |||||
border-radius: 50%; | |||||
margin-right: 40rpx; | |||||
} | |||||
.info { | |||||
font-size: 28rpx; | |||||
.name { | |||||
font-size: 32rpx; | |||||
display: flex; | |||||
padding-bottom: 10rpx; | |||||
view { | |||||
display: flex; | |||||
font-size: 24rpx; | |||||
align-items: center; | |||||
margin-left: 20rpx; | |||||
background: rgba($uni-color, 0.2); | |||||
color: $uni-color; | |||||
padding: 10rpx; | |||||
border-radius: 10rpx; | |||||
} | |||||
} | |||||
.tips { | |||||
font-size: 24rpx; | |||||
} | |||||
} | |||||
.right{ | |||||
margin-left: auto; | |||||
font-size: 24rpx; | |||||
.price{ | |||||
color: $uni-color; | |||||
} | |||||
} | |||||
} | |||||
.bottom{ | |||||
display: flex; | |||||
justify-content: space-between; | |||||
align-items: flex-end; | |||||
font-size: 24rpx; | |||||
padding: 20rpx; | |||||
padding-top: 0; | |||||
.time{ | |||||
color: #999999; | |||||
} | |||||
.phone{ | |||||
background-color: rgba($uni-color, 0.2); | |||||
color: $uni-color; | |||||
padding: 8rpx 16rpx; | |||||
border-radius: 10rpx; | |||||
image{ | |||||
width: 20rpx; | |||||
height: 20rpx; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,278 @@ | |||||
<template> | |||||
<view class="page"> | |||||
<uv-drop-down ref="dropDown" | |||||
sign="dropDown_1" | |||||
text-active-color="#3796F8" | |||||
:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}" | |||||
:extra-active-icon="{name:'arrow-up-fill',color:'#3796F8',size:'26rpx'}" | |||||
:defaultValue="defaultValue" | |||||
:custom-style="{padding: '0 30rpx'}" | |||||
@click="selectMenu"> | |||||
<uv-drop-down-item name="area" type="2" | |||||
:label="dropItem('area').label" | |||||
:value="dropItem('area').value"> | |||||
</uv-drop-down-item> | |||||
<uv-drop-down-item | |||||
name="craft" type="2" | |||||
:label="dropItem('craft').label" | |||||
:value="dropItem('craft').value"> | |||||
</uv-drop-down-item> | |||||
<uv-drop-down-item | |||||
name="vip_type" | |||||
type="1" | |||||
label='智能推荐' | |||||
:value="0"> | |||||
</uv-drop-down-item> | |||||
</uv-drop-down> | |||||
<uv-drop-down-popup | |||||
sign="dropDown_1" | |||||
:click-overlay-on-close="true" | |||||
:currentDropItem="currentDropItem" | |||||
@clickItem="clickItem" | |||||
@popupChange="change"></uv-drop-down-popup> | |||||
<uv-popup ref="popup" :round="30" | |||||
:safeAreaInsetBottom="false"> | |||||
<view class="popup"> | |||||
<view class="list"> | |||||
<view class="item" | |||||
v-for="(item, index) in list" | |||||
:key="index"> | |||||
<view class="title"> | |||||
{{ item.title }} | |||||
</view> | |||||
<view class="tagList"> | |||||
<view | |||||
:class="{act : i == item.index}" | |||||
@click="clickTag(item, i)" | |||||
v-for="(t, i) in item.tag" | |||||
:key="t"> | |||||
{{ t }} | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<view class="btn" @click="submit"> | |||||
<button class="a">提交</button> | |||||
</view> | |||||
</view> | |||||
</uv-popup> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
data() { | |||||
return { | |||||
// 表示value等于这些值,就属于默认值 | |||||
defaultValue: [0, 'all'], | |||||
// 筛选结果 | |||||
result: [], | |||||
activeName: 'area', | |||||
area: { | |||||
label: '全国', | |||||
value: 0, | |||||
activeIndex: 0, | |||||
color: '#333', | |||||
activeColor: '#3796F8', | |||||
child: [ | |||||
{ | |||||
label: '全国', | |||||
value: 0, | |||||
}, | |||||
{ | |||||
label: '金牌讲解员', | |||||
value: 1 | |||||
}, | |||||
{ | |||||
label: '专业讲解员', | |||||
value: 2 | |||||
}, | |||||
] | |||||
}, | |||||
craft: { | |||||
label: '工种', | |||||
value: 'all', | |||||
activeIndex: 0, | |||||
color: '#333', | |||||
activeColor: '#3796F8', | |||||
child: [ | |||||
{ | |||||
label: '全部', | |||||
value: 'all' | |||||
}, | |||||
] | |||||
}, | |||||
list : [ | |||||
{ | |||||
title : '您目前所属的年龄段', | |||||
tag : ['18岁~35岁', '35岁~45岁', '45岁~50岁', '50岁以上'], | |||||
index : 0, | |||||
}, | |||||
{ | |||||
title : '您希望从事的工种', | |||||
tag : ['电工', '焊工', '叉车', '其他'], | |||||
index : 0, | |||||
}, | |||||
{ | |||||
title : '您希望从事的工作性质', | |||||
tag : ['全职', '临时工',], | |||||
index : 0, | |||||
}, | |||||
] | |||||
} | |||||
}, | |||||
computed : { | |||||
dropItem(name) { | |||||
return (name) => { | |||||
const result = {}; | |||||
const find = this.result.find(item => item.name === name); | |||||
if (find) { | |||||
result.label = find.label; | |||||
result.value = find.value; | |||||
} else { | |||||
result.label = this[name].label; | |||||
result.value = this[name].value; | |||||
} | |||||
return result; | |||||
} | |||||
}, | |||||
// 获取当前下拉筛选项 | |||||
currentDropItem() { | |||||
return this[this.activeName]; | |||||
}, | |||||
}, | |||||
methods: { | |||||
clickTag(item, i){ | |||||
console.log(i); | |||||
item.index = i | |||||
}, | |||||
change(e) {}, | |||||
/** | |||||
* 点击每个筛选项回调 | |||||
* @param {Object} e { name, active, type } = e | |||||
*/ | |||||
selectMenu(e) { | |||||
const { | |||||
name, | |||||
active, | |||||
type | |||||
} = e; | |||||
this.activeName = name; | |||||
if(type == 1){ | |||||
this.$refs.popup.open() | |||||
return | |||||
} | |||||
const find = this.result.find(item => item.name == this.activeName); | |||||
if (find) { | |||||
const findIndex = this[this.activeName] | |||||
.child.findIndex(item => item.label == find.label && item | |||||
.value == find.value); | |||||
this[this.activeName].activeIndex = findIndex; | |||||
} else { | |||||
this[this.activeName].activeIndex = 0; | |||||
} | |||||
}, | |||||
/** | |||||
* 点击菜单回调处理 | |||||
* @param {Object} item 选中项 { label,value } = e | |||||
*/ | |||||
clickItem(e) { | |||||
// 下面有重新赋值,所以用let | |||||
let { | |||||
label, | |||||
value | |||||
} = e; | |||||
const findIndex = this.result.findIndex(item => item.name == this.activeName); | |||||
if (this.defaultValue.indexOf(value) > -1 && this[this.activeName].label) { | |||||
label = this[this.activeName].label; | |||||
} | |||||
// 已经存在筛选项 | |||||
if (findIndex > -1) { | |||||
this.$set(this.result, findIndex, { | |||||
name: this.activeName, | |||||
label, | |||||
value | |||||
}) | |||||
} else { | |||||
this.result.push({ | |||||
name: this.activeName, | |||||
label, | |||||
value | |||||
}); | |||||
} | |||||
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1); | |||||
this.$emit('clickItem', this.result) | |||||
}, | |||||
submit(){ | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.page{ | |||||
.popup{ | |||||
width: 80vw; | |||||
padding: 40rpx; | |||||
.list{ | |||||
.item{ | |||||
margin-top: 20rpx; | |||||
.title{ | |||||
font-weight: 900; | |||||
font-size: 30rpx; | |||||
} | |||||
.tagList{ | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
padding: 10rpx 0; | |||||
view{ | |||||
background: rgba($uni-color, 0.1); | |||||
padding: 10rpx 20rpx; | |||||
margin: 10rpx; | |||||
border-radius: 10rpx; | |||||
font-size: 26rpx; | |||||
} | |||||
.act{ | |||||
color: #fff; | |||||
background: $uni-color; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.btn { | |||||
display: flex; | |||||
justify-content: center; | |||||
width: 100%; | |||||
margin-top: 20rpx; | |||||
.a { | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
width: 90%; | |||||
color: #FFF; | |||||
background-color: $uni-color; | |||||
border: 1px solid rgba($uni-color, 0.2); | |||||
border-radius: 100rpx; | |||||
font-size: 30rpx; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -1,112 +0,0 @@ | |||||
<template> | |||||
<view class="list"> | |||||
<view class="item" | |||||
v-for="(item, index) in 10" | |||||
@click="$utils.navigateTo('/pages_order/product/productDetail?id=123')" | |||||
:key="index"> | |||||
<image | |||||
class="image" | |||||
src="https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg" mode=""></image> | |||||
<view class="info"> | |||||
<view class="title"> | |||||
桌布租赁 | |||||
</view> | |||||
<view class="price"> | |||||
<text>¥58</text>元/起 | |||||
</view> | |||||
<view class="favorable"> | |||||
<view class="t"> | |||||
限时优惠 | |||||
</view> | |||||
<view class="p"> | |||||
¥48 | |||||
</view> | |||||
</view> | |||||
<view class="num"> | |||||
已售卖5000+件 | |||||
</view> | |||||
</view> | |||||
<view class="btn"> | |||||
<uv-icon name="shopping-cart" | |||||
color="#fff"></uv-icon> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
name:"productList", | |||||
data() { | |||||
return { | |||||
}; | |||||
}, | |||||
methods : { | |||||
}, | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.list{ | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
.item{ | |||||
position: relative; | |||||
width: 300rpx; | |||||
padding: 20rpx; | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
margin-top: 20rpx; | |||||
&:nth-child(odd){ | |||||
margin-right: 20rpx; | |||||
} | |||||
.image{ | |||||
width: 300rpx; | |||||
height: 250rpx; | |||||
border-radius: 20rpx; | |||||
} | |||||
.info{ | |||||
font-size: 26rpx; | |||||
.title{ | |||||
font-size: 30rpx; | |||||
} | |||||
.price{ | |||||
color: #D03F25; | |||||
margin-top: 6rpx; | |||||
text{ | |||||
font-size: 34rpx; | |||||
font-weight: 900; | |||||
} | |||||
} | |||||
.favorable{ | |||||
display: flex; | |||||
background-image: url(/static/image/product/favorable.png); | |||||
background-size: 100% 100%; | |||||
width: fit-content; | |||||
padding: 5rpx 10rpx; | |||||
font-size: 18rpx; | |||||
margin-top: 6rpx; | |||||
.p{ | |||||
color: #fff; | |||||
margin-left: 10rpx; | |||||
} | |||||
} | |||||
.num{ | |||||
margin-top: 6rpx; | |||||
font-size: 22rpx; | |||||
color: #888; | |||||
} | |||||
} | |||||
.btn{ | |||||
position: absolute; | |||||
right: 20rpx; | |||||
bottom: 20rpx; | |||||
padding: 10rpx; | |||||
border-radius: 50%; | |||||
background-color: $uni-color; | |||||
} | |||||
} | |||||
} | |||||
</style> |