This commit is contained in:
13405411873 2024-09-26 18:44:42 +08:00
parent 90cf155a95
commit 3254ba30e7
12 changed files with 637 additions and 601 deletions

View File

@ -1,4 +1,5 @@
<script>
export default {
onLaunch: function() {
console.log('App Launch')
@ -11,7 +12,10 @@
}
}
</script>
<style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "uview-ui/index.scss";
</style>
<style>
/*每个页面公共css */
page,

View File

@ -1,14 +1,14 @@
// 应用全局配置
module.exports = {
baseUrl: 'https://www.nuoyunr.com',
//baseUrl: 'http://192.168.1.4:48080/userClient',
//baseUrl: 'http://192.168.1.31:48080',
imagesUrl: 'http://shequ.0315e.com/static/images/pages/',
baseImageUrl: 'https://www.nuoyunr.com/minio/',
wsUrl: 'wss://www.nuoyunr.com',
// 应用信息
appInfo: {
// 应用名称
name: "道路救援",
name: "智修小助手",
// 应用版本
version: "2.6",
// 应用logo

View File

@ -1,5 +1,9 @@
import App from './App'
import uView from "uview-ui";
import config from '@/config'
const baseUrl = config.baseUrl
Vue.prototype.$baseUrl = baseUrl;
Vue.use(uView);
// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'

View File

@ -1,6 +1,6 @@
{
"name" : "智修小助手",
"appid" : "__UNI__D307B2B",
"appid" : "__UNI__DA69B61",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
@ -50,7 +50,7 @@
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "",
"appid" : "wxee677d54037bc5ac",
"setting" : {
"urlCheck" : false,
"es6" : true
@ -76,7 +76,7 @@
"devServer" : {
"port" : 8080,
"disableHostCheck" : true,
"https" : true
"https" : false
},
"title" : "智修小助手"
},

View File

@ -4,7 +4,7 @@
"weapp-qrcode": "^1.0.0"
},
"devDependencies": {
"sass": "^1.69.5",
"sass-loader": "^10.4.1"
"sass": "^1.79.3",
"sass-loader": "^10.5.2"
}
}

View File

@ -1,17 +1,14 @@
{
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
// {
// "path": "pages/index/index",
// "style": {
// "navigationBarTitleText": "uni-app"
// }
// },
{
"path": "pages/login/login",
"style": {
"navigationBarTitleText": "uni-app"
}
"easycom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
// // {
// // "path": "pages/index/index",
// // "style": {
// // "navigationBarTitleText": "uni-app"
// // }
// // },
{
"path" : "pages/home/home",
"style" :
@ -19,6 +16,12 @@
"navigationBarTitleText" : ""
}
},
{
"path": "pages/login/login",
"style": {
"navigationBarTitleText": "uni-app"
}
},
{
"path" : "pages/orderList/orderList",
"style" :

View File

@ -1,84 +1,62 @@
<template>
<view class="content">
<!-- <view class="top">-->
<!-- <view class="touxiang">-->
<!-- <image src="../../static/xinlogo.png" mode=""></image>-->
<!-- </view>-->
<!-- <view class="inputs">-->
<!-- <input type="text" v-model="userName" placeholder="请输入用户名">-->
<!-- </view>-->
<!-- <view class="inputs">-->
<!-- <input type="password" v-model="wrod" placeholder="请输入密码">-->
<!-- </view>-->
<!-- <view class="wjworb" @click="goforgot()">-->
<!-- <view class="">忘记密码</view>-->
<!-- </view>-->
<!-- </view>-->
<!-- <view class="dl" @click="getlogin()">-->
<!-- <text> </text>-->
<!-- </view>-->
<!-- &lt;!&ndash; <view class="hging">-->
<!-- <text>没有账号</text>-->
<!-- <text style="color: #0078FF;" @click="goregister()">立即注册</text>-->
<!-- </view> &ndash;&gt;-->
<!-- <view class="dbottom">-->
<!-- <view class="quanzi" v-if="qindex == false " @click="qindex =! qindex"></view>-->
<!-- <view class="lanquanzi" v-if="qindex == true" @click="qindex =! qindex">-->
<!-- <uni-icons type="checkmarkempty" color="#ffffff" size="14"></uni-icons>-->
<!-- </view>-->
<!-- <text>请仔细阅读</text>-->
<!-- <text class="lan">用户协议</text>-->
<!-- <text></text>-->
<!-- <text class="lan">隐私政策</text>-->
<!-- </view>-->
<view class="kuang">
<view class="land">您好</view>
<view class="land">欢迎登录智修小助手</view>
</view>
<view class="xiaoannoi">
<u-button v-if="privacyPolicyChecked == true" text="手机号快捷登录" class="dl" :customStyle="{color:'#ffffff'}"
color="#0D2E8D" open-type='getPhoneNumber'
@getphonenumber="getPhone"></u-button>
<u-button v-else text="手机号快捷登录" class="dl" :customStyle="{color:'#ffffff'}"
color="#0D2E8D" @click="shibai()" ></u-button>
</view>
<view class="dbottom">
<view class="axquan" v-if="privacyPolicyChecked == false" @click="privacyPolicyChecked = true"></view>
<view class="axquanl" v-if="privacyPolicyChecked == true" @click="privacyPolicyChecked = false">
<uni-icons type="checkmarkempty" color="#ffffff" size="14"></uni-icons>
</view>
<text>请您认真阅读</text>
<text class="lan" @click="goPolicy()">用户协议</text>
<text></text>
<text class="lan" @click="goPolicy()">隐私政策</text>
</view>
</view>
</template>
<script>
import request from '../../utils/request';
import {
loginAppuserName,
} from '@/api/login.js';
import {
setToken,
getToken,
setTenantId,
removeToken
} from '@/utils/auth.js'
import {
login,
getInfo,
getTenantIdByWebsite
} from '@/api/login.js'
import drawQrcode from "weapp-qrcode";
export default {
data() {
return {
//openId
openId: "",
import request from '../../utils/request';
import {setToken} from '@/utils/auth.js'
export default{
data(){
return{
yd : false,
shenfen:'jcyh',
show:false,
baseUrl:this.$baseUrl,
privacyPolicyChecked:false,
phoneNumber: "",
baseUrl: this.$baseUrl,
isButtonDisabled: false,
countdownTime: 60,
qindex: false,
sfindex: 'user',
userName: '',
yzm: '',
wrod: '',
activeid: 0,
tenantCode: 'lanan',
// false
isFirstLoad: false
qh:[
{text:'密码登录'},
{text:'验证码登录'}
],
columns: [
['用户','代办' ]
],
tel:'',
yzm:'',
wrod:'',
activeid:0
}
},
onLoad() {
this.wxlogin()
},
computed: {
groupChange(n) {
console.log('groupChange', n);
},
radioChange(n) {
console.log('radioChange', n);
},
buttonText() {
if (this.isButtonDisabled) {
return `${this.countdownTime}s 后重新发送`;
@ -87,114 +65,80 @@ export default {
}
},
},
mounted() {
},
created(){
//
if (!this.isFirstLoad) {
this.isFirstLoad = true;
//
this.checkIfLogin()
methods:{
async getsxshenfen(){
let data = {
roleCode : this.shenfen
}
},
onShow() {
//
if (this.isFirstLoad) {
//
if(getToken()){
//
uni.reLaunch({
url: '/pages/home/home'
let res = await request({
url:'/appInspection/userOwn/updateRole',
method:'post',
params: data
})
}else {
uni.showModal({
title: '提示',
content: '请关闭本页面重新打开',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
//
} else if (res.cancel) {
console.log('用户点击取消');
//
}
}
});
}
}
},
methods: {
checkIfLogin(){
if(getToken()){
//
uni.reLaunch({
url: '/pages/home/home'
})
}else{
//
this.checkIfCode()
}
},
/**
*判断是否有code
* */
checkIfCode(){
let code = this.getUrlCode('code')
if (code !== null && code !== "") {
//
this.getOpenidAndUserinfo(code)
} else {
uni.showToast({
title: '未获取到授权信息,请重新进入!!',
icon: 'none'
if(res.code == 200){
uni.redirectTo({
url: '/pages/detection/my'
})
}
},
/**
* 微信自动登录
* @param {Object} code 用户code
*/
async getOpenidAndUserinfo(code) {
await request({
url: '/userClient/weChat/wechatLogin',
method: 'get',
params: {code:code}
}).then((res) => {
if (res.code==200) {
if(res.data.hasOwnProperty("accessToken")){
setToken(res.data.accessToken)
uni.reLaunch({
url: '/pages/home/home'
})
}else{
//
this.openId = res.data
//
this.goregister()
}
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
})
},
/**
* 获取路径中的参数
* @param {Object} name
*/
getUrlCode(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1].replace(/\+/g, '%20')) || null
},
setidentity(text) {
this.sfindex = text
getshenfen(text){
this.shenfen = text
},
//
getlogin() {
if (this.qindex != true) {
open() {
// console.log('open');
},
close() {
// this.show = false
// uni.reLaunch({
// url: '/pages/detection/my'
// })
// // console.log('close');
},
goPolicy() {
uni.navigateTo({
url: "/pages/login/PrivacyPolicy"
})
},
wxlogin() {
uni.login({
provider: 'weixin',
success(res) {
console.log(543, res);
if (res.code) {
uni.setStorageSync('c1', res.code);
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
},
async getAppinfo(){
let res = await request({
url:'/getAppInfo',
method:'get',
})
console.log('getappinfo',res);
},
//
authorize() {
uni.showToast({
icon: "none",
title: "请阅读并勾选用户协议",
duration: 2000
})
},
shibai(){
uni.showToast({
icon: "none",
title: "请阅读并勾选用户协议",
duration: 2000
})
},
getPhone(e) {
console.log('执行了');
if (this.privacyPolicyChecked == false) {
uni.showToast({
icon: "none",
title: "请阅读并勾选用户协议",
@ -202,131 +146,150 @@ export default {
})
return;
}
if (this.userName == '') {
uni.showToast({
title: '输入框不能为空!',
icon: 'none'
})
return
}
uni.setStorageSync('identity', this.sfindex);
const loginFun = () => {
const data = {
username: this.userName,
password: this.wrod,
type: 0
uni.checkSession({
success: () => {
uni.request({
url: this.baseUrl + "/userClient/repair/wxLogin",
method: "POST",
data: {
code: uni.getStorageSync('c1'),
encryptedIv: e.detail.iv,
encryptedData: e.detail.encryptedData,
inviteId: uni.getStorageSync('inviteId')?uni.getStorageSync('inviteId'):null
},
success: (rex) => {
if (rex.data.code == 0) {
if (this.loginStatus) {
clearInterval(this.loginStatus)
}
loginAppuserName(data).then(res => {
if (res.code==200) {
if(res.data.hasOwnProperty("accessToken")){
setToken(res.data.accessToken)
uni.setStorageSync('App-Token', rex.data.data.token);
if (this.returnUrl) {
uni.navigateBack()
} else {
//this.userinfo()
console.log('跳转');
uni.reLaunch({
url: '/pages/home/home'
})
}else{
uni.showToast({
title: '登录失败',
icon: 'none'
})
}
} else {
uni.showToast({
title: res.msg,
icon: 'none'
icon: 'none',
title: '登录失败,请联系管理人员'
})
}
// if (res.data.needMobile === "1") {
// uni.navigateTo({
// url: '/pages/login/bindPhoe'
// })
// uni.setStorageSync('validaCodeToken', res.data.accessToken)
// } else {
// setToken(res.data.accessToken)
// uni.reLaunch({
// url: '/pages/home/home'
// })
// }
},
fail: (res) => {
console.log("fail", res);
uni.showToast({
icon: "error",
title: "登录失败,请重新点击并授权!",
duration: 2000
})
}
getTenantIdByWebsite(this.tenantCode).then(res => {
if (res.code === 200 && res.data && res.data.length > 0) {
uni.showActionSheet({
itemList: res.data.map(m => m.name),
success: ({
tapIndex
}) => {
setTenantId(res.data[tapIndex].id)
loginFun()
}
})
} else {
setTenantId('')
loginFun()
}
})
},
getxz(index) {
fail: () => {
uni.showToast({
icon: 'error',
duration: 2000,
title: "登录状态过期,重新登录"
});
}
})
},
userinfo(){
console.log('执行了');
request({
url: '/getAppInfo',
method: 'get',
}).then((res)=>{
let userJson = {}
userJson.userId = res.user.userId
console.log('身份信息',res,res.role.length);
uni.setStorageSync('role',res.role)
uni.setStorageSync('userinfo',res.user)
if(!res.role||res.role.length==0){
this.show = true
}else{
uni.reLaunch({
url: '/pages/detection/my'
})
}
})
},
// let roles=[];
// let jcshopRole = false;
// let jcgfRole = false;
// roles.forEach(it->{
// if(it=='jcshop'){
// jcshopRole = true
// }
// if(it=='jcgf'){
// jcgfRole = true
// }
// })
getxz(index){
this.activeid = index
},
goregister() {
uni.navigateTo({
url: '/pages/my/register?openId='+this.openId
goregister(){
uni.redirectTo({
url:'/pages/login/register'
})
},
goforgot() {
uni.navigateTo({
url: '/pages/login/forgot'
goforgot(){
uni.redirectTo({
url:'/pages/login/forgot'
})
},
goselect() {
console.log('执行去救援', this.sfindex);
// pages/rescue/trafficPolice
if (this.sfindex == 'police') {
uni.reLaunch({
url: '/pages/rescue/trafficPolice'
goselect(){
console.log('执行');
uni.redirectTo({
url:'/pages/index/index'
})
} else {
uni.reLaunch({
url: '/pages/rescue/rescue'
})
}
},
//
sendVerificationCode() {
let reg = /^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$/;
if (!reg.test(this.userName)) {
if (!reg.test(this.tel)) {
uni.showToast({
icon: 'none',
title: '请输入正确的11位手机号'
})
this.userName = '';
this.tel = '';
return false;
}
if (this.isButtonDisabled) {
return; //
}
const data = {
phone: this.userName,
phone:this.tel,
}
request({
url: '/loginSmsCode',
method: 'post',
params: data
}).then((res) => {
console.log('验证码', res);
if (res.code == 200) {
}).then((res)=>{
console.log('验证码',res);
if(res.code == 200){
uni.showToast({
title: '验证码已发送 请注意查收',
icon: 'none'
title:'验证码已发送 请注意查收',
icon:'none'
})
} else {
}else{
uni.showToast({
title: '网络不佳请稍后再试',
icon: 'none'
title:'网络不佳请稍后再试',
icon:'none'
})
}
})
@ -352,48 +315,105 @@ export default {
}, 1000);
},
}
}
}
</script>
<style scoped lang="scss">
.jsq {
.jsq{
border: none !important;
font-size: 14px;
font-weight: 400;
color: #0078FF;
}
button {
}
.anniu{
width: 150px;
height: 40px;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
color: white;
background: #0D2E8D;
color: #FFFFFF;
margin: 0 auto;
}
.cont-popup{
height: 250px;
width: 300px;
background-color: #FFFFFF;
box-sizing: border-box;
padding: 15px;
border-radius: 10px;
}
.popup-title{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
font-weight: bold;
color: #0D2E8D;
}
.dix{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 20px 0px;
font-size: 18px;
font-weight: bold;
}
.lqiu{
width: 15px;
height: 15px;
border-radius: 50%;
border: 1px solid #0D2E8D;
background: #0D2E8D;
color: white;
display: flex;
align-items: center;
justify-content: center;
}
.qiu{
width: 15px;
height: 15px;
border-radius: 50%;
border: 1px solid #E8E8E8;
}
button {
border: none !important;
background: none !important;
margin: 0px;
display: block;
}
button:focus {
}
button:focus {
color: #0078FF;
outline: none;
box-shadow: none;
}
.content {
}
.content{
box-sizing: border-box;
}
padding-top: 1px;
background-image: url('http://www.nuoyunr.com/lananRsc/jdc-bj.png');
.top {
background-size: cover;
width: 100%;
height: calc(100vh);
}
.top{
box-sizing: border-box;
padding: 0px 27px;
padding-top: 100px;
background-image: url('../../static/loginbj.png');
// background-color:lightseagreen;
// background-image: url('../../static/loginbj.png');
background-size: cover;
background-position: center;
width: 100%;
// height: 385px;
}
.touxiang {
}
.touxiang{
width: 88px;
height: 88px;
border-radius: 10px;
@ -401,42 +421,36 @@ button:focus {
margin: 0 auto;
margin-bottom: 40px;
overflow: hidden;
image {
image{
width: 100%;
height: 100%;
}
}
.twotap {
}
.twotap{
width: 100%;
display: flex;
align-items: center;
view {
view{
font-size: 15px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #666666;
margin-right: 38.5px;
}
}
.blck {
}
.blck{
color: #333333 !important;
font-weight: bold !important;
}
.inputs {
}
.inputs{
box-sizing: border-box;
padding: 16px 0px;
display: flex;
align-items: center;
border-bottom: 2px solid #E8E8E8;
border-bottom: 2px solid #E8E8E8 ;
margin-top: 20px;
}
.wjworb {
}
.wjworb{
margin-top: 5px;
width: 100%;
display: flex;
@ -445,54 +459,56 @@ button:focus {
justify-content: flex-end;
align-items: center;
}
.dl {
}
.dl{
width: 90%;
height: 44px;
background: linear-gradient(-46deg, #0853C4 0%, #4282D8 80%);
border-radius: 5px;
background-color: #0D2E8D;
border-radius: 50px;
margin: 0 auto;
font-size: 16px;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
margin-top: 22px;
}
.hging {
margin-top: 300px;
}
.xiaoannoi{
width: 90%;
height: 40px;
margin: 0 auto;
border-radius: 50px;
overflow: hidden;
margin-top: 300px;
}
.hging{
width: 100%;
text-align: center;
font-size: 14px;
font-weight: 400;
color: #636363;
margin-top: 20px;
}
.wx {
}
.wx{
width: 38px;
height: 38px;
overflow: hidden;
box-sizing: border-box;
margin: 0px auto;
margin-top: 20px;
image {
image{
width: 100%;
height: 100%;
}
}
.hui {
}
.hui{
font-size: 10px;
width: 100%;
text-align: center;
font-weight: 400;
color: #666666;
}
.dbottom {
}
.dbottom{
width: 100%;
text-align: center;
font-size: 12px;
@ -501,73 +517,38 @@ button:focus {
position: fixed;
bottom: 25px;
display: flex;
align-items: center;
justify-content: center;
}
align-items: center;
}
.quanzi {
width: 14px;
height: 14px;
border: 1px solid #666666;
border-radius: 50%;
margin-right: 10px;
}
.lan{
color: #0D2E8D;
}
.land{
.lanquanzi {
width: 14px;
height: 14px;
border: 1px solid #0078FF;
border-radius: 50%;
margin-right: 10px;
background: #0078FF;
color: white;
}
.lan {
color: #0078FF;
}
.jiuzhong {
font-size: 25px;
font-weight: bold;
color: #0D2E8D;
margin-bottom: 5px;
}
.kuang{
width: 90%;
margin: 10px auto;
display: flex;
align-items: center;
}
.dist {
display: flex;
align-items: center;
margin: 0px 10px;
}
.d-zi {
font-size: 14px;
}
.d-qian {
width: 14px;
height: 14px;
margin-right: 5px;
overflow: hidden;
margin: 0 auto;
margin-top: 100px;
}
.axquan{
width: 18px;
height: 18px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #666666;
color: white;
}
.d-qian-lan {
width: 14px;
height: 14px;
border: 1px solid #AAAAAA;
margin-right: 5px;
overflow: hidden;
}
.axquanl{
width: 18px;
height: 18px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: #0078FF;
border: 1px solid #0078FF;
color: white;
}
border: 1px solid #AAAAAA;
margin-right: 5px;
background-color: #0D2E8D;
}
</style>

View File

@ -65,13 +65,16 @@
import VNavigationBar from '@/components/VNavigationBar.vue'
import tabBarVue from '@/components/tabBar/tabBar.vue'
import request from "@/utils/request";
import {getToken} from '@/utils/auth.js'
export default {
components: {
tabBarVue,
VNavigationBar
},
onShow(data) {
if(getToken()){
this.getServer()
}
},
data() {
return {
@ -107,9 +110,17 @@
method: 'get',
params:{}
})
if(!res.data){
uni.reLaunch({
url: '/pages/my/register'
})
}else{
this.customInfo = res.data
uni.setStorageSync('customerInfo', JSON.stringify(this.customInfo))
}
}
}
}
</script>

View File

@ -1,6 +1,12 @@
<template>
<view class="container">
<VNavigationBar title-color="#333" background-color="#fff" title="注册会员"></VNavigationBar>
<!-- <VNavigationBar title-color="#333" background-color="#fff" title="注册会员"></VNavigationBar> -->
<view class="top_Bar">
<uni-icons @click="goHome()" size="24" type="left"
color="#000" style="margin-left: 10px;" ></uni-icons>
<view class="title_top">注册会员</view>
<view style="width: 24px;height: 24px;"></view>
</view>
<view class="body">
<view class="formItem">
<view class="formLabel">姓名</view>
@ -94,6 +100,11 @@ export default {
this.formData.openId = e.openId
},
methods: {
goHome(){
uni.reLaunch({
url:'/pages/home/home'
})
},
/**
* 注册
*/
@ -108,12 +119,9 @@ export default {
data: this.formData
}).then((res) => {
if (res.code==200) {
if(res.data.hasOwnProperty("accessToken")){
setToken(res.data.accessToken)
uni.reLaunch({
url: '/pages/home/home'
})
}
} else {
uni.showToast({
title: res.msg,
@ -316,4 +324,20 @@ export default {
align-items: center;
margin-top: 22px;
}
.top_Bar{
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
padding-top: 44px;
}
.title_top{
font-size: 36rpx;
font-weight: bold;
}
</style>

View File

@ -37,7 +37,7 @@
<text>{{ formatTimestamp(item.createTime) }}</text>
</view>
<view class="line3">
<view v-if="item.orderStatus == '0'" @click="goPay(item)" class="showOrder">支付</view>
<!-- <view v-if="item.orderStatus == '0'" @click="goPay(item)" class="showOrder">支付</view> -->
<view v-if="item.goodsType == '2'" @click="gotoDetail(item)" class="showOrder">查看订单</view>
<view @click="gotoEvaluate(item)" class="evaluate" v-if="item.goodsType == '2' && item.orderStatus === '1' && !item.commentDesc">评价订单</view>
</view>

View File

@ -74,6 +74,7 @@
<script>
import VNavigationBar from '@/components/VNavigationBar.vue'
import request from "../../utils/request";
import {getToken} from '@/utils/auth.js'
export default {
components: {
VNavigationBar
@ -110,9 +111,16 @@
methods: {
//
gotoReservation() {
if(getToken()){
uni.navigateTo({
url: '/pages/myReservation/addReservation?info=' + encodeURIComponent(JSON.stringify(this.info))
})
}else{
uni.navigateTo({
url: '/pages/login/login'
})
}
},
//
async getServer() {

View File

@ -74,3 +74,4 @@ $uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:26px;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:15px;
@import 'uview-ui/theme.scss';