feat: 添加自定义栏

This commit is contained in:
sundongyu 2024-06-26 18:03:59 +08:00
parent a201815720
commit 845e170568
6 changed files with 326 additions and 301 deletions

16
.hbuilderx/launch.json Normal file
View File

@ -0,0 +1,16 @@
{ // launch.json configurations app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtypelocalremote, localremote
"version": "0.0",
"configurations": [{
"app-plus" :
{
"launchtype" : "local"
},
"default" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

View File

@ -1,7 +1,7 @@
<template> <template>
<view> <view style="background-color: #2c66a9; width: 100%; height: 5vh" :style="{ backgroundPositionY: -44 + safeAreaInsets.top + 'px' }">
<!-- 自定义导航栏 --> <!-- 自定义导航栏 -->
<view class="van-nav-bar"> <view :style="{ paddingTop: safeAreaInsets.top + 'px' }" class="van-nav-bar">
<view class="van-nav-bar__content"> <view class="van-nav-bar__content">
<view class="page-icon" @click="gotoBack"> <view class="page-icon" @click="gotoBack">
<uni-icons color="#fff" type="back" size="26"></uni-icons> <uni-icons color="#fff" type="back" size="26"></uni-icons>
@ -46,6 +46,7 @@
<script setup> <script setup>
import { ref } from 'vue'; import { ref } from 'vue';
const { safeAreaInsets } = uni.getSystemInfoSync();
const tags = ref([ const tags = ref([
{ {
text: '违法', text: '违法',

View File

@ -1,316 +1,311 @@
<template> <template>
<view class="van-nav-bar"> <view class="van-nav-bar">
<view class="van-nav-bar__content"> <view class="van-nav-bar__content">
<view class="page-icon" @click="gotoBack"> <view class="page-icon" @click="gotoBack">
<uni-icons color="#fff" type="back" size="26"></uni-icons> <uni-icons color="#fff" type="back" size="26"></uni-icons>
<view>返回</view> <view>返回</view>
</view> </view>
<view class="page-navbar">我的驾驶证</view> <view class="page-navbar">我的驾驶证</view>
</view> </view>
</view> </view>
<view class="content"> <view class="content">
<view class="business"> <view class="business">
<view class="business-top"> <view class="business-top">
<view style="display: flex; align-items: center;"> <view style="display: flex; align-items: center">
<image src="../../../static/认领.png" class="image"></image> <image src="../../../static/renling.png" class="image"></image>
<text style="margin-left: 30rpx; font-weight: 500; font-size: 32rpx;">代办驾驶证业务</text> <text style="margin-left: 30rpx; font-weight: 500; font-size: 32rpx">代办驾驶证业务</text>
</view> </view>
<view style="font-size: 24rpx; color: #858585;"> <view style="font-size: 24rpx; color: #858585">
{{'共一项代办业务'}} {{ '共一项代办业务' }}
</view> </view>
</view> </view>
<view class="business-bottom"> <view class="business-bottom">
<view class="tag"> <view class="tag">
<text style="margin-left: 10rpx;">待办</text> <text style="margin-left: 10rpx">待办</text>
</view> </view>
<view class=""> <view class="">期满换证</view>
期满换证 <view style="font-size: 28rpx; color: #666666; margin-left: 20rpx">请尽快更换驾驶证</view>
</view> <view style="width: 15%">
<view style="font-size: 28rpx; color:#666666; margin-left: 20rpx;"> <uni-tag text="详情" type="primary" size="small" inverted></uni-tag>
请尽快更换驾驶证 </view>
</view> </view>
<view style="width: 15%;"> </view>
<uni-tag text="详情" type="primary" size="small" inverted></uni-tag> <view class="driving">
</view> <view class="driving-content">
</view> <view v-for="(item, index) in drivingData" :key="idnex">
</view> <view class="driving-item">
<view class="driving"> <text style="font-weight: 600; margin-bottom: 10rpx; font-size: 26rpx">{{ item.title }}</text>
<view class="driving-content"> <text style="font-size: 26rpx; color: #5d5d5d">{{ item.content }}</text>
<view v-for="(item,index) in drivingData" :key="idnex"> </view>
<view class="driving-item"> </view>
<text style="font-weight: 600;margin-bottom: 10rpx; font-size: 26rpx;">{{item.title}}</text> </view>
<text style="font-size: 26rpx;color: #5d5d5d;">{{item.content}}</text> <view class="driving-print">
</view> <view>
</view> <view id="lineChartRef" :style="{ width: '200px', height: '200px' }" />
</view> </view>
<view class="driving-print"> </view>
<view> </view>
<view id="lineChartRef" :style="{ width: '200px', height: '200px' }" /> <view class="drivingList">
</view> <view class="item">
</view> <text style="margin-left: 40rpx; font-weight: 550">登录手机号码</text>
</view> <text style="margin-right: 20rpx">{{ '151****9198' }}</text>
<view class="drivingList"> </view>
<view class="item"> <view class="item">
<text style="margin-left: 40rpx; font-weight: 550;">登录手机号码</text> <text style="margin-left: 40rpx; font-weight: 550">驾驶证电子版</text>
<text style="margin-right: 20rpx;">{{'151****9198'}}</text> <text style="margin-right: 20rpx">
</view> <uni-icons color="#a8a8a8" type="right" size="26"></uni-icons>
<view class="item"> </text>
<text style="margin-left: 40rpx;font-weight: 550;">驾驶证电子版</text> </view>
<text style="margin-right: 20rpx;"> <view class="item">
<uni-icons color="#a8a8a8" type="right" size="26"></uni-icons> <text style="margin-left: 40rpx; font-weight: 550">安全驾驶记录</text>
</text> <text style="margin-right: 20rpx">
</view> <uni-icons color="#a8a8a8" type="right" size="26"></uni-icons>
<view class="item"> </text>
<text style="margin-left: 40rpx;font-weight: 550;">安全驾驶记录</text> </view>
<text style="margin-right: 20rpx;"> <view class="item">
<uni-icons color="#a8a8a8" type="right" size="26"></uni-icons> <text style="margin-left: 40rpx; font-weight: 550">驾驶证实习期信息</text>
</text> <text style="margin-right: 20rpx">
</view> <uni-icons color="#a8a8a8" type="right" size="26"></uni-icons>
<view class="item"> </text>
<text style="margin-left: 40rpx; font-weight: 550;">驾驶证实习期信息</text> </view>
<text style="margin-right: 20rpx;"> <view class="item">
<uni-icons color="#a8a8a8" type="right" size="26"></uni-icons> <text style="margin-left: 40rpx; font-weight: 550">我的违法</text>
</text> <text style="margin-right: 20rpx">
</view> <uni-icons color="#a8a8a8" type="right" size="26"></uni-icons>
<view class="item"> </text>
<text style="margin-left: 40rpx;font-weight: 550;">我的违法</text> </view>
<text style="margin-right: 20rpx;"> <text class="warning">当前您的驾驶证积分清除截止时间为2024年08月30日零点</text>
<uni-icons color="#a8a8a8" type="right" size="26"></uni-icons> </view>
</text> </view>
</view>
<text class="warning">当前您的驾驶证积分清除截止时间为2024年08月30日零点</text>
</view>
</view>
</template> </template>
<script setup> <script setup>
import { import { ref, onMounted } from 'vue';
ref, import * as echarts from 'echarts';
onMounted const gotoBack = () => {
} from 'vue' uni.navigateBack({
import * as echarts from 'echarts'; delta: 1
const gotoBack = () => { });
uni.navigateBack({ };
delta: 1 const drivingData = [
}) {
} title: '驾驶证号',
const drivingData = [{ content: '2302**********1229'
title: '驾驶证号', },
content: '2302**********1229' {
}, title: '准驾车型',
{ content: 'C1'
title: '准驾车型', },
content: 'C1' {
}, title: '驾驶证有效期止',
{ content: '2024-08-30'
title: '驾驶证有效期止', },
content: '2024-08-30' {
}, title: '审核有效期止',
{ content: '2024-08-30'
title: '审核有效期止', },
content: '2024-08-30' {
}, title: '下一清分日期',
{ content: '2024-08-30'
title: '下一清分日期', },
content: '2024-08-30' {
}, title: '下一体检日期',
{ content: '2024-08-30'
title: '下一体检日期', },
content: '2024-08-30' {
}, title: '数据更新时间',
{ content: '2023-08-30'
title: '数据更新时间', }
content: '2023-08-30' ];
},
]
const option = { const option = {
series: [{ series: [
type: 'gauge', {
min: 0, // type: 'gauge',
max: 12, min: 0, //
radius: '100%', max: 12,
progress: { radius: '100%',
show: true, progress: {
width: 18, show: true,
roundCap: true, width: 18,
itemStyle: { roundCap: true,
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ itemStyle: {
offset: 0, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
color: '#A65FFB' {
}, offset: 0,
{ color: '#A65FFB'
offset: 1, },
color: '#3163F5' {
} offset: 1,
]) color: '#3163F5'
} }
}, ])
axisLine: { }
lineStyle: { },
width: 18 axisLine: {
}, lineStyle: {
roundCap: true width: 18
}, },
axisTick: { roundCap: true
show: false },
}, axisTick: {
splitLine: { show: false
show: false },
}, splitLine: {
pointer: { show: false
show: false },
}, pointer: {
axisLabel: { show: false
show: false },
}, axisLabel: {
anchor: { show: false
show: false },
}, anchor: {
title: { show: false
offsetCenter: [0, '20%'], },
fontSize: 20 title: {
}, offsetCenter: [0, '20%'],
detail: { fontSize: 20
valueAnimation: true, },
formatter: '{value} 分', detail: {
color: 'inherit' valueAnimation: true,
}, formatter: '{value} 分',
data: [{ color: 'inherit'
value: 1, },
name: '累计积分\n\n\n\n\n\n正常', data: [
}] {
}] value: 1,
}; name: '累计积分\n\n\n\n\n\n正常'
}
]
}
]
};
// ECharts // ECharts
onMounted(() => { onMounted(() => {
// const lineChartContainer = lineChartRef.value; // const lineChartContainer = lineChartRef.value;
const lineChartContainer = document.getElementById('lineChartRef'); const lineChartContainer = document.getElementById('lineChartRef');
if (lineChartContainer) { if (lineChartContainer) {
const myChart = echarts.init(lineChartContainer); const myChart = echarts.init(lineChartContainer);
myChart.setOption(option); myChart.setOption(option);
} }
}); });
</script> </script>
<style lang="scss"> <style lang="scss">
.van-nav-bar__content { .van-nav-bar__content {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 4rem; height: 4rem;
background-color: #2c66a9; background-color: #2c66a9;
color: #fff; color: #fff;
letter-spacing: 1.5px; letter-spacing: 1.5px;
position: relative; position: relative;
.page-icon { .page-icon {
display: flex; display: flex;
align-items: center; align-items: center;
position: absolute; position: absolute;
left: 0; left: 0;
} }
.page-navbar { .page-navbar {
font-size: 1.1rem; font-size: 1.1rem;
} }
} }
.content { .content {
width: 689rpx; width: 689rpx;
height: 100%; height: 100%;
padding: 20rpx 30rpx; padding: 20rpx 30rpx;
background-color: #f4f3f8; background-color: #f4f3f8;
.business { .business {
background-color: #fff; background-color: #fff;
height: 250rpx; height: 250rpx;
padding: 0 60rpx; padding: 0 60rpx;
border-radius: 20rpx; border-radius: 20rpx;
.business-top {
height: 55%;
width: 100%;
border-bottom: 1rpx solid #f2f2f2;
display: flex;
align-items: center;
justify-content: space-between;
}
.business-bottom {
position: relative;
height: 45%;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.tag {
width: 70rpx;
position: absolute;
top: 0;
left: -60rpx;
color: #f27025;
background-color: #fed3b8;
font-size: 24rpx;
border-radius: 0 20rpx 20rpx 0;
}
}
}
.business-top { .driving {
height: 55%; background-color: #fff;
width: 100%; margin-top: 30rpx;
border-bottom: 1rpx solid #f2f2f2; padding: 20rpx;
display: flex; display: flex;
align-items: center; // border-bottom: 1rpx solid #f4f4f4;
justify-content: space-between;
}
.business-bottom { .driving-content {
position: relative; width: 50%;
height: 45%;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.tag { .driving-item {
width: 70rpx; width: 100%;
position: absolute; margin: 20rpx 0 20rpx 20rpx;
top: 0; display: flex;
left: -60rpx; flex-direction: column;
color: #f27025; }
background-color: #fed3b8; }
font-size: 24rpx;
border-radius: 0 20rpx 20rpx 0;
}
}
}
.driving { .driving-print {
background-color: #fff; display: flex;
margin-top: 30rpx; align-items: center;
padding: 20rpx; justify-content: center;
display: flex; }
// border-bottom: 1rpx solid #f4f4f4; }
.driving-content { .drivingList {
width: 50%; margin-bottom: 20rpx;
.item {
height: 120rpx;
background-color: #fff;
border-top: 1rpx solid #f4f4f4;
display: flex;
align-items: center;
justify-content: space-between;
}
}
}
.driving-item { .image {
width: 100%; width: 50rpx;
margin: 20rpx 0 20rpx 20rpx; height: 50rpx;
display: flex; }
flex-direction: column; .warning {
} display: inline-block;
} margin-top: 20rpx;
font-size: 25rpx;
.driving-print { color: #929196;
display: flex; width: 100%;
align-items: center; text-align: center;
justify-content: center; }
}
}
.drivingList {
margin-bottom: 20rpx;
.item {
height: 120rpx;
background-color: #fff;
border-top: 1rpx solid #f4f4f4;
display: flex;
align-items: center;
justify-content: space-between;
}
}
}
.image {
width: 50rpx;
height: 50rpx;
}
.warning{
display: inline-block;
margin-top: 20rpx;
font-size: 25rpx;
color: #929196;
width: 100%;
text-align: center;
}
</style> </style>

View File

@ -1,6 +1,6 @@
<template> <template>
<view class="content"> <view class="content" :style="{ backgroundPositionY: -44 + safeAreaInsets.top + 'px' }">
<view class="top"> <view class="top" :style="{ paddingTop: safeAreaInsets.top + 'px' }">
<uni-search-bar class="search" bgColor="#EEEEEE" radius="100" placeholder="搜索" clearButton="none" cancelButton="none" @confirm="search" /> <uni-search-bar class="search" bgColor="#EEEEEE" radius="100" placeholder="搜索" clearButton="none" cancelButton="none" @confirm="search" />
<uni-icons type="email-filled" size="30" color="#fff"></uni-icons> <uni-icons type="email-filled" size="30" color="#fff"></uni-icons>
</view> </view>
@ -85,6 +85,7 @@
<script setup> <script setup>
import { ref } from 'vue'; import { ref } from 'vue';
const { safeAreaInsets } = uni.getSystemInfoSync();
const businessList = ref([ const businessList = ref([
{ {
img: '../../static/rili.png', img: '../../static/rili.png',

View File

@ -1,7 +1,7 @@
<template> <template>
<view style="background-color: #f5f9fa; height: 100vh"> <view style="background-color: #2c66a9; height: 5vh" :style="{ backgroundPositionY: -44 + safeAreaInsets.top + 'px' }">
<!-- 导航栏 --> <!-- 导航栏 -->
<view class="van-nav-bar"> <view :style="{ paddingTop: safeAreaInsets.top + 'px' }" class="van-nav-bar">
<view class="van-nav-bar__content"> <view class="van-nav-bar__content">
<view class="page-icon" @click="gotoBack"> <view class="page-icon" @click="gotoBack">
<uni-icons color="#fff" type="back" size="26"></uni-icons> <uni-icons color="#fff" type="back" size="26"></uni-icons>
@ -28,6 +28,7 @@
<script setup> <script setup>
import { ref } from 'vue'; import { ref } from 'vue';
const { safeAreaInsets } = uni.getSystemInfoSync();
const serve = ref([ const serve = ref([
{ {
text: '登录密码修改', text: '登录密码修改',
@ -103,10 +104,12 @@ const gotoBack = () => {
background-color: #fff; background-color: #fff;
letter-spacing: 1.5px; letter-spacing: 1.5px;
font-weight: 700; font-weight: 700;
.userlist-box { .userlist-box {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
background-color: #fff;
.userlist-box-text { .userlist-box-text {
display: flex; display: flex;
align-items: center; align-items: center;
@ -126,6 +129,8 @@ const gotoBack = () => {
text-align: center; text-align: center;
} }
.active { .active {
padding: 0.8rem 0rem;
margin: 0.8rem 0rem; margin: 0.8rem 0rem;
background-color: #f5f9fa;
} }
</style> </style>

View File

@ -2,7 +2,14 @@
"hash": "f0e888ba", "hash": "f0e888ba",
"configHash": "046e9b57", "configHash": "046e9b57",
"lockfileHash": "fa978dd2", "lockfileHash": "fa978dd2",
"browserHash": "ef20b50a", "browserHash": "f56c9596",
"optimized": {}, "optimized": {
"echarts": {
"src": "../../../../../node_modules/echarts/index.js",
"file": "echarts.js",
"fileHash": "3a5ca97e",
"needsInterop": false
}
},
"chunks": {} "chunks": {}
} }