11 changed files with 767 additions and 0 deletions
-
17src/pages.json
-
87src/subpackage/income/components/details_item/details_item.vue
-
8src/subpackage/income/js/api.js
-
10src/subpackage/income/js/server.js
-
561src/subpackage/income/pages/details_record/details_record.vue
-
84src/subpackage/income/pages/search/search.vue
-
BINsrc/subpackage/income/static/images/bot_arrow.png
-
BINsrc/subpackage/income/static/images/calendar.png
-
BINsrc/subpackage/income/static/images/close.png
-
BINsrc/subpackage/income/static/images/filter.png
-
BINsrc/subpackage/income/static/images/search.png
@ -0,0 +1,87 @@ |
|||||
|
<template> |
||||
|
<view class="dl-item"> |
||||
|
<view class="di-name">{{ incomeInfo.source || '-' }}</view> |
||||
|
<view class="di-top-line"> |
||||
|
<view class="dtl-view">{{ incomeInfo.desc || '-' }}</view> |
||||
|
<view :class="[ 'dtl-view', incomeInfo.amount > 0 ? 'orange' : '' ]">{{ incomeInfo.amount || '-' }}</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="di-bot-line"> |
||||
|
<view class="dbl-view">{{ incomeInfo.operator_text || '-' }}</view> |
||||
|
<view class="dbl-view" v-if="incomeInfo.amount < 0">{{ incomeInfo.refund_desc || '-' }}</view> |
||||
|
</view> |
||||
|
<view class="di-bot-line"> |
||||
|
<view class="dbl-view">{{ incomeInfo.order_no || '-' }}</view> |
||||
|
</view> |
||||
|
<view class="di-bot-line"> |
||||
|
<view class="dbl-view">{{ incomeInfo.created_at || '-' }}</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
props: { |
||||
|
incomeInfo: { |
||||
|
default: {}, |
||||
|
type: Object, |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
@import '~style/public.scss'; |
||||
|
.dl-item{ |
||||
|
padding: 30upx 40upx 30upx 0; |
||||
|
border-bottom: 2upx solid #D8D8D8; |
||||
|
.di-name{ |
||||
|
margin-bottom: 20upx; |
||||
|
line-height: 40upx; |
||||
|
font-size: 28upx; |
||||
|
color: #1A1A1A; |
||||
|
@include textHide(1); |
||||
|
} |
||||
|
.di-top-line{ |
||||
|
margin-bottom: 20upx; |
||||
|
@include centerFlex(space-between); |
||||
|
>.dtl-view{ |
||||
|
font-size: 32upx; |
||||
|
line-height: 44upx; |
||||
|
color: #1A1A1A; |
||||
|
@include textHide(1); |
||||
|
&:first-child{ |
||||
|
flex-shrink: 0; |
||||
|
max-width: 50%; |
||||
|
} |
||||
|
&+.dtl-view{ |
||||
|
font-weight: 500; |
||||
|
text-align: right; |
||||
|
&.orange{ |
||||
|
color: #F6843E; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.di-bot-line{ |
||||
|
@include centerFlex(space-between); |
||||
|
>.dbl-view{ |
||||
|
font-size: 24upx; |
||||
|
line-height: 34upx; |
||||
|
color: #9C9C9F; |
||||
|
&:first-child{ |
||||
|
flex-grow: 1; |
||||
|
@include textHide(1); |
||||
|
|
||||
|
} |
||||
|
&+.dbl-view{ |
||||
|
margin-left: 16upx; |
||||
|
flex-shrink: 0; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
</style> |
@ -0,0 +1,8 @@ |
|||||
|
import { ORIGIN } from '../../../js/api'; |
||||
|
|
||||
|
export const INCOME_API = { |
||||
|
consumeCountDetailList:`${ORIGIN}/admin/stadium/consumeCountDetail/list`, // 收款明细列表
|
||||
|
consumeRecordSceneLs:`${ORIGIN}/consumeRecordScene/list`, // 收款明细列表
|
||||
|
} |
||||
|
|
||||
|
export default { ORIGIN, INCOME_API }; |
@ -0,0 +1,10 @@ |
|||||
|
import { Server } from '../../../js/server'; |
||||
|
|
||||
|
class Servers extends Server { |
||||
|
constructor(props){ |
||||
|
super(props) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
export default new Servers(); |
@ -0,0 +1,561 @@ |
|||||
|
<template> |
||||
|
<view class="details-record"> |
||||
|
<view class="dr-header"> |
||||
|
<view class="dh-filter"> |
||||
|
<view class="df-date"> |
||||
|
<view class="df-name">收款日期</view> |
||||
|
<picker mode="date" @change="dateChange"> |
||||
|
<view class="dd-frame"> |
||||
|
<input disabled :value="incomeTime" v-if="!isFilterModal" /> |
||||
|
<view></view> |
||||
|
<image mode="aspectFit" src="/subpackage/income/static/images/calendar.png"></image> |
||||
|
</view> |
||||
|
</picker> |
||||
|
|
||||
|
</view> |
||||
|
<view class="df-right"> |
||||
|
<view class="df-name" @click="filterShow">筛选</view> |
||||
|
<view class="dr-icons"> |
||||
|
<image @click="filterShow" mode="aspectFit" src="/subpackage/income/static/images/filter.png"></image> |
||||
|
<view></view> |
||||
|
<image @click="toSearch" mode="aspectFit" src="/subpackage/income/static/images/search.png"></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="type-bar"> |
||||
|
<view |
||||
|
v-for="(e, i) in incomeTypeLs" :key="i" |
||||
|
:class="['tb-item', e.eng == incomeTypeInfo.eng ?'ti-active': '']" |
||||
|
@click="incomeTypeChange(e)" |
||||
|
>{{ e.name || '-' }}</view> |
||||
|
</view> |
||||
|
<view class="tab-bar"> |
||||
|
<view :class="[ 'tb-item', type == '全部'? 'tb-active' : '' ]" @click="typeChange('全部')"><view>全部</view></view> |
||||
|
<view :class="[ 'tb-item', type == '退款'? 'tb-active' : '' ]" @click="typeChange('退款')"><view>退款</view></view> |
||||
|
</view> |
||||
|
<view class="dh-total"> |
||||
|
收款{{ incomeMes.income_num || 0 }}笔(<text>¥{{ incomeMes.income_amount || 0 }}</text>) , |
||||
|
退款{{ incomeMes.refund_num || 0 }}笔(<text>¥{{ incomeMes.refund_amount || 0 }}</text>) |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
<view class="dr-ls"> |
||||
|
<details-item |
||||
|
v-for="(e, i) in incomeLs" |
||||
|
:key="i" |
||||
|
:income-info="e" |
||||
|
></details-item> |
||||
|
</view> |
||||
|
|
||||
|
<view class="dr-mask" v-if="isFilterModal" @touchmove.stop.prevent='_=>false' @click="isFilterModal = false"> |
||||
|
<view class="dm-content" @click.stop="_=>false"> |
||||
|
<image |
||||
|
class="dc-close" |
||||
|
mode="aspectFit" |
||||
|
src="/subpackage/income/static/images/close.png" |
||||
|
@click="isFilterModal = false" |
||||
|
></image> |
||||
|
<view class="dc-header" id="dcheader"> |
||||
|
<view class="dc-tit">筛选</view> |
||||
|
<view class="dc-stadium"> |
||||
|
<view class="ds-name">门店</view> |
||||
|
<picker> |
||||
|
<view class="ds-frame"> |
||||
|
<input /> |
||||
|
<image mode="aspectFit" src="/subpackage/income/static/images/bot_arrow.png"></image> |
||||
|
</view> |
||||
|
</picker> |
||||
|
</view> |
||||
|
<view class="dc-scene-name">收款场景({{ incomeTypeInfo.name || '-' }})</view> |
||||
|
</view> |
||||
|
<scroll-view class="dc-scroll" scroll-y :style="modalScrollViewHeight?('height:'+ modalScrollViewHeight + 'px;'): ''"> |
||||
|
<view class="dc-scene-ls"> |
||||
|
<view class="dsl-item" v-for="(e, i) in sceneLs" :key="i">{{ e.name || '-' }}</view> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
<view class="dc-btn-bar" id="dcbotbar"> |
||||
|
<view class="dbb-btns"> |
||||
|
<view>重置</view> |
||||
|
<view>确定</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import details_item from '../../components/details_item/details_item.vue'; |
||||
|
import util from '../../../../utils/util'; |
||||
|
import { INCOME_API } from '../../js/api'; |
||||
|
import server from '../../js/server'; |
||||
|
let incomeTypeLs = [ |
||||
|
{ |
||||
|
name: '线上收款', |
||||
|
eng: 'online', |
||||
|
}, |
||||
|
{ |
||||
|
name: '线下收款', |
||||
|
eng: 'offline' |
||||
|
}, |
||||
|
{ |
||||
|
name: '联营收款', |
||||
|
eng: ' joint' |
||||
|
}, |
||||
|
]; |
||||
|
export default { |
||||
|
components: { |
||||
|
'details-item': details_item |
||||
|
}, |
||||
|
data(){ |
||||
|
return { |
||||
|
modalScrollViewHeight: '', |
||||
|
isFilterModal: false, |
||||
|
incomeTime: '', |
||||
|
|
||||
|
incomeLs: [], |
||||
|
incomeMes: {}, |
||||
|
page: 1, |
||||
|
|
||||
|
type: '全部', // 全部/退款 |
||||
|
incomeTypeLs, |
||||
|
incomeTypeInfo: {}, // online 线上收款 offline 线下收款 joint 联营 |
||||
|
|
||||
|
sceneLs: [], |
||||
|
} |
||||
|
}, |
||||
|
onLoad(){ |
||||
|
let _timeStr = util.formatDate({}); |
||||
|
this.incomeTime = _timeStr; |
||||
|
this.incomeTypeInfo = incomeTypeLs[0]; |
||||
|
this.refreshPage(); |
||||
|
}, |
||||
|
methods: { |
||||
|
filterShow(){ |
||||
|
let { incomeTypeInfo } = this; |
||||
|
this.isFilterModal = true; |
||||
|
this.$nextTick(_=>{ |
||||
|
this.initFilterScrollView(); |
||||
|
this.getSceneLs({ |
||||
|
income_type: incomeTypeInfo.eng || '' |
||||
|
}) |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
getSceneLs({ |
||||
|
brand_id = '', |
||||
|
stadium_id = '', |
||||
|
income_type = '', |
||||
|
}){ |
||||
|
server.get({ |
||||
|
url: INCOME_API.consumeRecordSceneLs, |
||||
|
data: { |
||||
|
brand_id, |
||||
|
stadium_id, |
||||
|
income_type, |
||||
|
}, |
||||
|
failMsg: '加载场景列表失败!' |
||||
|
}) |
||||
|
.then(res=>{ |
||||
|
this.sceneLs = res || []; |
||||
|
}) |
||||
|
}, |
||||
|
incomeTypeChange(incomeTypeInfo){ |
||||
|
this.incomeTypeInfo = incomeTypeInfo || {}; |
||||
|
this.refreshPage(); |
||||
|
}, |
||||
|
typeChange(type){ |
||||
|
this.type = type; |
||||
|
this.refreshPage(); |
||||
|
}, |
||||
|
dateChange(e){ |
||||
|
let _time = e.detail.value || '' |
||||
|
this.incomeTime = _time; |
||||
|
this.refreshPage(); |
||||
|
}, |
||||
|
refreshPage(){ |
||||
|
this.$nextTick(_=>{ |
||||
|
let { incomeTime, type, incomeTypeInfo } = this; |
||||
|
this.page = 1; |
||||
|
this.incomeLs = []; |
||||
|
this.incomeMes = {}; |
||||
|
this.getRecordLs({ |
||||
|
type: type || '', |
||||
|
time_str: incomeTime || '', |
||||
|
income_type: incomeTypeInfo.eng || '', |
||||
|
}); |
||||
|
}) |
||||
|
}, |
||||
|
getRecordLs({ |
||||
|
brand_id = '', |
||||
|
stadium_id = '', // 空字符全部 -1品牌收款 其他门店id |
||||
|
time_str = '', // 日期y-m-d |
||||
|
scene = '', // 场景 int |
||||
|
type = '全部', // 全部/退款 |
||||
|
income_type = '', // 收款类型 online 线上收款 offline线下收款 joint联营 |
||||
|
page = 1, |
||||
|
page_size = 20, |
||||
|
}){ |
||||
|
util.showLoad(); |
||||
|
server.get({ |
||||
|
url: INCOME_API.consumeCountDetailList, |
||||
|
data: { |
||||
|
brand_id, |
||||
|
stadium_id, |
||||
|
time_str, |
||||
|
page, |
||||
|
page_size, |
||||
|
scene, |
||||
|
type, |
||||
|
income_type, |
||||
|
}, |
||||
|
failMsg: '加载失败!', |
||||
|
}) |
||||
|
.then(res=>{ |
||||
|
util.hideLoad(); |
||||
|
let { list, ...data } = res; |
||||
|
this.incomeMes = data || {}; |
||||
|
let _ls = list || []; |
||||
|
if(page == 1)return this.incomeLs = _ls; |
||||
|
if(!_ls || !_ls.length)return util.showNone('没有更多!'); |
||||
|
this.incomeLs = [ ...this.incomeLs, ..._ls ]; |
||||
|
this.page = page; |
||||
|
|
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
toSearch(){ |
||||
|
util.routeTo(`/subpackage/income/pages/search/search`, 'nT'); |
||||
|
}, |
||||
|
|
||||
|
async initFilterScrollView(){ |
||||
|
try{ |
||||
|
let _header = await util.getNodeMes('#dcheader'); |
||||
|
let _botBar = await util.getNodeMes('#dcbotbar'); |
||||
|
let _sysInfo = uni.getSystemInfoSync(); |
||||
|
this.modalScrollViewHeight = (_sysInfo.windowHeight || 0) - ((_header.height || 0) + (_botBar.height || 0)) |
||||
|
}catch(err){ |
||||
|
console.warn('initFilterScrollView err -->', err); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
@import '~style/public.scss'; |
||||
|
.dr-header{ |
||||
|
margin-bottom: 24upx; |
||||
|
background-color: #fff; |
||||
|
.dh-filter{ |
||||
|
padding: 26upx 24upx; |
||||
|
@include centerFlex(space-between); |
||||
|
.df-name{ |
||||
|
flex-shrink: 0; |
||||
|
font-size: 28upx; |
||||
|
line-height: 40upx; |
||||
|
color: #9C9C9F; |
||||
|
} |
||||
|
.df-date{ |
||||
|
@include centerFlex(flex-start); |
||||
|
.dd-frame{ |
||||
|
flex-shrink: 0; |
||||
|
padding: 0 20upx; |
||||
|
margin-left: 20upx; |
||||
|
width: 286upx; |
||||
|
height: 92upx; |
||||
|
border-radius: 10upx; |
||||
|
background-color: #F2F2F7; |
||||
|
@include centerFlex(space-between); |
||||
|
>input{ |
||||
|
flex-grow: 1; |
||||
|
height: 100%; |
||||
|
font-size: 28upx; |
||||
|
color: #1a1a1a; |
||||
|
} |
||||
|
>view{ |
||||
|
flex-shrink: 0; |
||||
|
margin: 0 20upx; |
||||
|
height: 40upx; |
||||
|
width: 1px; |
||||
|
background-color: #B2B2B2; |
||||
|
} |
||||
|
>image{ |
||||
|
flex-shrink: 0; |
||||
|
width: 40upx; |
||||
|
height: 40upx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.df-right{ |
||||
|
flex-shrink: 0; |
||||
|
@include centerFlex(flex-end); |
||||
|
.dr-icons{ |
||||
|
margin-left: 12upx; |
||||
|
flex-shrink: 0; |
||||
|
flex-wrap: nowrap; |
||||
|
@include centerFlex(center); |
||||
|
>image{ |
||||
|
flex-shrink: 0; |
||||
|
flex-grow: 0; |
||||
|
width: 40upx; |
||||
|
height: 40upx; |
||||
|
|
||||
|
} |
||||
|
>view{ |
||||
|
flex-grow: 0; |
||||
|
flex-shrink: 0; |
||||
|
margin: 0 30upx; |
||||
|
height: 40upx; |
||||
|
width: 1px; |
||||
|
background-color: #B2B2B2; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
.type-bar{ |
||||
|
padding: 20upx 0; |
||||
|
@include centerFlex(center); |
||||
|
.tb-item{ |
||||
|
margin: 0 16upx; |
||||
|
padding: 0 28upx; |
||||
|
line-height: 72upx; |
||||
|
text-align: center; |
||||
|
font-size: 36upx; |
||||
|
font-weight: 500; |
||||
|
border-radius: 36upx; |
||||
|
color: #1A1A1A; |
||||
|
&.ti-active{ |
||||
|
color: #fff; |
||||
|
background-color: $themeColor; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
.tab-bar{ |
||||
|
@include centerFlex(center); |
||||
|
border-top: 2upx solid #D8D8D8; |
||||
|
border-bottom: 2upx solid #D8D8D8; |
||||
|
.tb-item{ |
||||
|
margin: 0 92upx; |
||||
|
padding: 0 28upx; |
||||
|
&.tb-active{ |
||||
|
position: relative; |
||||
|
&::after{ |
||||
|
content: ''; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: 0; |
||||
|
width: 100%; |
||||
|
height: 8upx; |
||||
|
border-radius: 4upx; |
||||
|
background-color: $themeColor; |
||||
|
} |
||||
|
>view{ |
||||
|
color: $themeColor; |
||||
|
} |
||||
|
} |
||||
|
>view{ |
||||
|
line-height: 110upx; |
||||
|
text-align: center; |
||||
|
font-size: 32upx; |
||||
|
color: #9C9C9F; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.dh-total{ |
||||
|
padding: 0 48upx; |
||||
|
line-height: 110upx; |
||||
|
font-size: 24upx; |
||||
|
color: #9C9C9F; |
||||
|
@include textHide(1); |
||||
|
>text{ |
||||
|
color: #F6843E; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.dr-ls{ |
||||
|
padding-bottom: 120upx; |
||||
|
padding-bottom: calc( 120upx + constant(safe-area-inset-bottom)); /* 兼容 iOS < 11.2 */ |
||||
|
padding-bottom: calc( 120upx + env(safe-area-inset-bottom)); /* 兼容 iOS >= 11.2 */ |
||||
|
padding-left: 40upx; |
||||
|
background-color: #fff; |
||||
|
.dl-item{ |
||||
|
padding: 30upx 40upx 30upx 0; |
||||
|
border-bottom: 2upx solid #D8D8D8; |
||||
|
.di-name{ |
||||
|
margin-bottom: 20upx; |
||||
|
line-height: 40upx; |
||||
|
font-size: 28upx; |
||||
|
color: #1A1A1A; |
||||
|
@include textHide(1); |
||||
|
} |
||||
|
.di-top-line{ |
||||
|
margin-bottom: 20upx; |
||||
|
@include centerFlex(space-between); |
||||
|
>view{ |
||||
|
font-size: 32upx; |
||||
|
line-height: 44upx; |
||||
|
color: #1A1A1A; |
||||
|
@include textHide(1); |
||||
|
&:first-child{ |
||||
|
flex-shrink: 0; |
||||
|
max-width: 50%; |
||||
|
} |
||||
|
&+view{ |
||||
|
font-weight: 500; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.di-bot-line{ |
||||
|
@include centerFlex(space-between); |
||||
|
>view{ |
||||
|
font-size: 24upx; |
||||
|
line-height: 34upx; |
||||
|
color: #9C9C9F; |
||||
|
&:first-child{ |
||||
|
flex-grow: 1; |
||||
|
@include textHide(1); |
||||
|
|
||||
|
} |
||||
|
&+view{ |
||||
|
margin-left: 16upx; |
||||
|
flex-shrink: 0; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
.dr-mask{ |
||||
|
position: fixed; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
background-color: rgba($color: #000000, $alpha: .5); |
||||
|
.dm-content{ |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
bottom: 0; |
||||
|
top: 0; |
||||
|
|
||||
|
width: 600upx; |
||||
|
background-color: #fff; |
||||
|
.dc-header{ |
||||
|
padding-top: 36upx; |
||||
|
padding-bottom: 40upx; |
||||
|
} |
||||
|
.dc-close{ |
||||
|
position: absolute; |
||||
|
right: 34upx; |
||||
|
top: 20upx; |
||||
|
width: 40upx; |
||||
|
height: 40upx; |
||||
|
} |
||||
|
.dc-tit{ |
||||
|
margin-bottom: 20upx; |
||||
|
text-align: center; |
||||
|
line-height: 40upx; |
||||
|
font-size: 28upx; |
||||
|
color: #9C9C9F; |
||||
|
} |
||||
|
.dc-stadium{ |
||||
|
margin-bottom: 20upx; |
||||
|
padding: 26upx 30upx; |
||||
|
@include centerFlex(space-between); |
||||
|
.ds-name{ |
||||
|
flex-shrink: 0; |
||||
|
font-size: 28upx; |
||||
|
line-height: 40upx; |
||||
|
color: #9C9C9F; |
||||
|
} |
||||
|
.ds-frame{ |
||||
|
padding: 0 20upx; |
||||
|
width: 476upx; |
||||
|
height: 92upx; |
||||
|
border-radius: 10upx; |
||||
|
background-color: #F2F2F7; |
||||
|
@include centerFlex(space-between); |
||||
|
>image{ |
||||
|
flex-shrink: 0; |
||||
|
margin-left: 12upx; |
||||
|
width: 28upx; |
||||
|
height: 28upx; |
||||
|
} |
||||
|
>input{ |
||||
|
flex-grow: 1; |
||||
|
height: 100%; |
||||
|
font-size: 28upx; |
||||
|
color: #1a1a1a; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.dc-scene-name{ |
||||
|
|
||||
|
padding-left: 34upx; |
||||
|
line-height: 44upx; |
||||
|
font-weight: 500; |
||||
|
font-size: 32upx; |
||||
|
color: #1A1A1A; |
||||
|
} |
||||
|
.dc-scroll{ |
||||
|
width: 100%; |
||||
|
height: 600upx; |
||||
|
.dc-scene-ls{ |
||||
|
padding: 0 20upx; |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
.dsl-item{ |
||||
|
margin: 14upx 10upx; |
||||
|
width: 164upx; |
||||
|
height: 64upx; |
||||
|
line-height: 64upx; |
||||
|
text-align: center; |
||||
|
background-color: #F2F2F7; |
||||
|
border-radius: 10upx; |
||||
|
font-size: 24upx; |
||||
|
color: #1A1A1A; |
||||
|
@include textHide(1); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.dc-btn-bar{ |
||||
|
padding: 20upx 30upx; |
||||
|
padding-bottom: calc( 20upx + constant(safe-area-inset-bottom)); /* 兼容 iOS < 11.2 */ |
||||
|
padding-bottom: calc( 20upx + env(safe-area-inset-bottom)); /* 兼容 iOS >= 11.2 */ |
||||
|
.dbb-btns{ |
||||
|
height: 80upx; |
||||
|
border: 2upx solid $themeColor; |
||||
|
background-color: $themeColor; |
||||
|
border-radius: 40upx; |
||||
|
@include centerFlex(space-between); |
||||
|
>view{ |
||||
|
flex-shrink: 0; |
||||
|
flex-grow: 0; |
||||
|
text-align: center; |
||||
|
line-height: 76upx; |
||||
|
width: 50%; |
||||
|
height: 100%; |
||||
|
font-size: 28upx; |
||||
|
color: #fff; |
||||
|
border-radius: 40upx; |
||||
|
&:first-child{ |
||||
|
background-color: #fff; |
||||
|
color: $themeColor; |
||||
|
border-top-right-radius: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,84 @@ |
|||||
|
<template> |
||||
|
<view class="income-search"> |
||||
|
<view class="is-search-bar"> |
||||
|
<view class="isb-frame"> |
||||
|
<image class="if-search-icon"></image> |
||||
|
<input /> |
||||
|
<image class="if-close-icon"></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="is-main"> |
||||
|
<view class="im-null" v-if="false"> |
||||
|
<image></image> |
||||
|
</view> |
||||
|
<view class="im-ls"> |
||||
|
<details-item v-for="i in 20" :key="i"></details-item> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import details_item from '../../components/details_item/details_item.vue'; |
||||
|
export default { |
||||
|
components: { |
||||
|
'details-item': details_item |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
@import '~style/public.scss'; |
||||
|
page{ |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
.is-search-bar{ |
||||
|
padding: 30upx 24upx; |
||||
|
.isb-frame{ |
||||
|
padding: 0 24upx; |
||||
|
height: 72upx; |
||||
|
border: 2upx solid $themeColor; |
||||
|
border-radius: 36upx; |
||||
|
@include centerFlex(space-between); |
||||
|
>input{ |
||||
|
flex-grow: 1; |
||||
|
height: 68upx; |
||||
|
font-size: 28upx; |
||||
|
color: #1a1a1a; |
||||
|
} |
||||
|
>image{ |
||||
|
flex-shrink: 0; |
||||
|
width: 30upx; |
||||
|
height: 30upx; |
||||
|
background-color: skyblue; |
||||
|
} |
||||
|
.if-search-icon{ |
||||
|
margin-right: 24upx; |
||||
|
} |
||||
|
.if-close-icon{ |
||||
|
margin-left: 24upx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-main{ |
||||
|
border-top: 24upx solid #f2f1f6; |
||||
|
.im-null{ |
||||
|
padding-top: 106upx; |
||||
|
>image{ |
||||
|
margin: 0 auto; |
||||
|
display: block; |
||||
|
width: 370upx; |
||||
|
height: 370upx; |
||||
|
background-color: skyblue; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.im-ls{ |
||||
|
padding-bottom: 120upx; |
||||
|
padding-bottom: calc( 120upx + constant(safe-area-inset-bottom)); /* 兼容 iOS < 11.2 */ |
||||
|
padding-bottom: calc( 120upx + env(safe-area-inset-bottom)); /* 兼容 iOS >= 11.2 */ |
||||
|
padding-left: 40upx; |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
} |
||||
|
</style> |
After Width: 56 | Height: 56 | Size: 401 B |
After Width: 80 | Height: 80 | Size: 430 B |
After Width: 64 | Height: 72 | Size: 769 B |
After Width: 80 | Height: 80 | Size: 483 B |
After Width: 80 | Height: 80 | Size: 660 B |
Write
Preview
Loading…
Cancel
Save
Reference in new issue