first commit
This commit is contained in:
2
app-sqlite-master/app-sqlite/.gitignore
vendored
Normal file
2
app-sqlite-master/app-sqlite/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/unpackage
|
||||
/.hbuilderx
|
||||
36
app-sqlite-master/app-sqlite/App.vue
Normal file
36
app-sqlite-master/app-sqlite/App.vue
Normal file
File diff suppressed because one or more lines are too long
0
app-sqlite-master/app-sqlite/README.md
Normal file
0
app-sqlite-master/app-sqlite/README.md
Normal file
33
app-sqlite-master/app-sqlite/common/common.css
Normal file
33
app-sqlite-master/app-sqlite/common/common.css
Normal file
@@ -0,0 +1,33 @@
|
||||
/* 1. 页面背景色 */
|
||||
.page{
|
||||
background-color: #EDEDED;
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
min-height: 100vh;
|
||||
height: auto;
|
||||
/* #endif */
|
||||
/* #ifdef APP-PLUS-NVUE */
|
||||
flex: 1;
|
||||
/* #endif */
|
||||
}
|
||||
/* 2. 主背景色(原谅绿) */
|
||||
.main-bg-color{
|
||||
background-color: #08C060;
|
||||
}
|
||||
.main-bg-hover-color{
|
||||
background-color: #08d869;
|
||||
}
|
||||
/* 3. 主文字色(原谅绿) */
|
||||
.main-text-color{
|
||||
color: #08C060;
|
||||
}
|
||||
|
||||
.border-main{
|
||||
border-color: #08C060!important;
|
||||
}
|
||||
|
||||
.bg-chat-item{
|
||||
background-color: #6BEE68;
|
||||
}
|
||||
.text-chat-item{
|
||||
color: #6BEE68;
|
||||
}
|
||||
11
app-sqlite-master/app-sqlite/common/icon.css
Normal file
11
app-sqlite-master/app-sqlite/common/icon.css
Normal file
File diff suppressed because one or more lines are too long
14
app-sqlite-master/app-sqlite/common/lib/config.js
Normal file
14
app-sqlite-master/app-sqlite/common/lib/config.js
Normal file
@@ -0,0 +1,14 @@
|
||||
export default {
|
||||
// #ifndef H5
|
||||
baseUrl:"http://192.168.100.12:8000",
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
baseUrl:"http://192.168.100.12:8000",
|
||||
// #endif
|
||||
|
||||
version: "/v1",
|
||||
|
||||
env:"dev",
|
||||
appId: 10000
|
||||
}
|
||||
95
app-sqlite-master/app-sqlite/common/lib/request.js
Normal file
95
app-sqlite-master/app-sqlite/common/lib/request.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import $C from './config.js';
|
||||
import $U from './util.js';
|
||||
|
||||
export default {
|
||||
// 全局配置
|
||||
common:{
|
||||
baseUrl:$C.baseUrl + $C.version,
|
||||
header:{
|
||||
'Content-Type':'application/json;charset=UTF-8',
|
||||
},
|
||||
data:{},
|
||||
method:'GET',
|
||||
dataType:'json',
|
||||
token:true,
|
||||
},
|
||||
// 请求 返回promise
|
||||
request(options = {}){
|
||||
// 组织参数
|
||||
options.url = this.common.baseUrl + options.url
|
||||
options.header = options.header || this.common.header
|
||||
options.data = options.data || this.common.data
|
||||
options.method = options.method || this.common.method
|
||||
options.dataType = options.dataType || this.common.dataType
|
||||
options.token = options.token === false ? false : this.common.token
|
||||
// params
|
||||
options.url = options.url + "?appId=10000"
|
||||
console.log(options.url)
|
||||
|
||||
// 请求
|
||||
return new Promise((res,rej)=>{
|
||||
// 请求中...
|
||||
uni.request({
|
||||
...options,
|
||||
success: (result) => {
|
||||
// 返回原始数据
|
||||
if(options.native){
|
||||
return res(result)
|
||||
}
|
||||
console.log(result.statusCode)
|
||||
// 服务端失败
|
||||
if(result.statusCode !== 200){
|
||||
if (options.toast !== false) {
|
||||
uni.showToast({
|
||||
title: result.data.data || '服务端失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
return rej(result.data)
|
||||
}
|
||||
// 其他验证...
|
||||
// 成功
|
||||
let data = result.data
|
||||
|
||||
res(data)
|
||||
},
|
||||
fail: (error) => {
|
||||
uni.showToast({ title: error.errMsg || '请求失败', icon: 'none' });
|
||||
return rej(error)
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
setQueryConfig(params){
|
||||
var _str = "?";
|
||||
for(var o in params){
|
||||
if(params[o] != -1){
|
||||
_str += o + "=" + params[o] + "&";
|
||||
}
|
||||
}
|
||||
var _str = _str.substring(0, _str.length-1); //末尾是&
|
||||
return _str;
|
||||
},
|
||||
// get请求
|
||||
get(url,data = {},options = {}){
|
||||
options.url = url
|
||||
options.data = data
|
||||
options.method = 'GET'
|
||||
return this.request(options)
|
||||
},
|
||||
// post请求
|
||||
post(url,data = {},options = {}){
|
||||
options.url = url
|
||||
options.data = data
|
||||
options.method = 'POST'
|
||||
console.log(options)
|
||||
return this.request(options)
|
||||
},
|
||||
// delete请求
|
||||
del(url,data = {},options = {}){
|
||||
options.url = url
|
||||
options.data = data
|
||||
options.method = 'DELETE'
|
||||
return this.request(options)
|
||||
}
|
||||
}
|
||||
44
app-sqlite-master/app-sqlite/common/lib/util.js
Normal file
44
app-sqlite-master/app-sqlite/common/lib/util.js
Normal file
@@ -0,0 +1,44 @@
|
||||
import $C from './config.js'
|
||||
export default {
|
||||
// 获取存储列表数据
|
||||
getStorage(key){
|
||||
let data = null;
|
||||
// #ifdef H5
|
||||
if($C.env === 'dev'){
|
||||
data = window.sessionStorage.getItem(key)
|
||||
} else {
|
||||
data = uni.getStorageSync(key)
|
||||
}
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
data = uni.getStorageSync(key)
|
||||
// #endif
|
||||
return data
|
||||
},
|
||||
// 设置存储
|
||||
setStorage(key,data){
|
||||
// #ifdef H5
|
||||
if($C.env === 'dev'){
|
||||
return window.sessionStorage.setItem(key,data)
|
||||
} else {
|
||||
return uni.setStorageSync(key,data)
|
||||
}
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
return uni.setStorageSync(key,data)
|
||||
// #endif
|
||||
},
|
||||
// 删除存储
|
||||
removeStorage(key){
|
||||
// #ifdef H5
|
||||
if($C.env === 'dev'){
|
||||
return window.sessionStorage.removeItem(key);
|
||||
} else {
|
||||
return uni.removeStorageSync(key)
|
||||
}
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
return uni.removeStorageSync(key)
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
399
app-sqlite-master/app-sqlite/common/my.css
Normal file
399
app-sqlite-master/app-sqlite/common/my.css
Normal file
@@ -0,0 +1,399 @@
|
||||
/* 图标 */
|
||||
.iconfont{
|
||||
font-family:iconfont;
|
||||
}
|
||||
.view,.text{
|
||||
font-size:28rpx;
|
||||
line-height:1.8;
|
||||
color:#0E151D;
|
||||
}
|
||||
/* 宽度 */
|
||||
.w-100{ width: 750rpx; }
|
||||
|
||||
.row {
|
||||
margin-right: -20rpx;
|
||||
margin-left: -20rpx;
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.col-1,
|
||||
.col-2,
|
||||
.col-3,
|
||||
.col-4,
|
||||
.col-5,
|
||||
.col-6,
|
||||
.col-7,
|
||||
.col-8,
|
||||
.col-9,
|
||||
.col-10,
|
||||
.col-11,
|
||||
.col-12{
|
||||
position: relative;
|
||||
padding-right: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
.col-12 { width: 750rpx;}
|
||||
.col-11 { width: 687.5rpx; }
|
||||
.col-10 { width: 625rpx; }
|
||||
.col-9 { width: 562.5rpx; }
|
||||
.col-8 { width: 500rpx; }
|
||||
.col-7 { width: 437.5rpx; }
|
||||
.col-6 { width: 375rpx; }
|
||||
.col-5 { width: 312.5rpx;}
|
||||
.col-4 {width: 250rpx;}
|
||||
.col-3 {width: 187.5rpx;}
|
||||
.col-2 {width: 125rpx;}
|
||||
.col-1 {width: 62.5rpx;}
|
||||
|
||||
.col-offset-12 { margin-left: 750rpx;}
|
||||
.col-offset-11 { margin-left: 687.5rpx; }
|
||||
.col-offset-10 { margin-left: 625rpx; }
|
||||
.col-offset-9 { margin-left: 562.5rpx; }
|
||||
.col-offset-8 { margin-left: 500rpx; }
|
||||
.col-offset-7 { margin-left: 437.5rpx; }
|
||||
.col-offset-6 { margin-left: 375rpx; }
|
||||
.col-offset-5 { margin-left: 312.5rpx;}
|
||||
.col-offset-4 {margin-left: 250rpx;}
|
||||
.col-offset-3 {margin-left: 187.5rpx;}
|
||||
.col-offset-2 {margin-left: 125rpx;}
|
||||
.col-offset-1 {margin-left: 62.5rpx;}
|
||||
.col-offset-0 {margin-left: 0;}
|
||||
|
||||
/* flex 布局 */
|
||||
.flex{
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
display:flex;
|
||||
/* #endif */
|
||||
flex-direction:row;
|
||||
}
|
||||
.flex-row{ flex-direction:row!important; }
|
||||
.flex-column{ flex-direction:column!important; }
|
||||
.flex-row-reverse{ flex-direction:row-reverse!important; }
|
||||
.flex-column-reverse{ flex-direction:column-reverse!important; }
|
||||
.flex-wrap{ flex-wrap:wrap;}
|
||||
.flex-nowrap{ flex-wrap:nowrap;}
|
||||
.justify-start{justify-content:flex-start;}
|
||||
.justify-end{justify-content:flex-end;}
|
||||
.justify-between{justify-content:space-between;}
|
||||
.justify-center{justify-content:center;}
|
||||
.align-center{ align-items: center; }
|
||||
.align-stretch{ align-items: stretch; }
|
||||
.align-start{ align-items: flex-start; }
|
||||
.align-end{ align-items: flex-end; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.content-start {align-content: flex-start;}
|
||||
.content-end {align-content: flex-end;}
|
||||
.content-center {align-content: center;}
|
||||
.content-between {align-content: space-between;}
|
||||
.content-around {align-content: space-around;}
|
||||
.content-stretch {align-content: stretch;}
|
||||
/* #endif */
|
||||
.flex-1{ flex: 1; }
|
||||
.flex-2{ flex: 2; }
|
||||
.flex-3{ flex: 3; }
|
||||
.flex-4{ flex: 4; }
|
||||
.flex-5{ flex: 5; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.flex-shrink{ flex-shrink: 0; }
|
||||
/* #endif */
|
||||
|
||||
.container {
|
||||
padding-right: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
/* -- 内外边距 -- */
|
||||
.m-0 { margin: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.m-auto{ margin: auto; }
|
||||
/* #endif */
|
||||
.m-1 { margin: 10rpx; }
|
||||
.m-2 { margin: 20rpx; }
|
||||
.m-3 { margin: 30rpx; }
|
||||
.m-4 { margin: 40rpx; }
|
||||
.m-5 { margin: 50rpx; }
|
||||
.mt-0 { margin-top: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.mt-auto { margin-top: auto; }
|
||||
/* #endif */
|
||||
.mt-1 { margin-top: 10rpx; }
|
||||
.mt-2 { margin-top: 20rpx; }
|
||||
.mt-3 { margin-top: 30rpx; }
|
||||
.mt-4 { margin-top: 40rpx; }
|
||||
.mt-5 { margin-top: 50rpx; }
|
||||
.mb-0 { margin-bottom: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.mb-auto { margin-bottom: auto; }
|
||||
/* #endif */
|
||||
.mb-1 { margin-bottom: 10rpx; }
|
||||
.mb-2 { margin-bottom: 20rpx; }
|
||||
.mb-3 { margin-bottom: 30rpx; }
|
||||
.mb-4 { margin-bottom: 40rpx; }
|
||||
.mb-5 { margin-bottom: 50rpx; }
|
||||
.ml-0 { margin-left: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.ml-auto { margin-left: auto; }
|
||||
/* #endif */
|
||||
.ml-1 { margin-left: 10rpx; }
|
||||
.ml-2 { margin-left: 20rpx; }
|
||||
.ml-3 { margin-left: 30rpx; }
|
||||
.ml-4 { margin-left: 40rpx; }
|
||||
.ml-5 { margin-left: 50rpx; }
|
||||
.mr-0 { margin-right: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.mr-auto { margin-right: auto; }
|
||||
/* #endif */
|
||||
.mr-1 { margin-right: 10rpx; }
|
||||
.mr-2 { margin-right: 20rpx; }
|
||||
.mr-3 { margin-right: 30rpx; }
|
||||
.mr-4 { margin-right: 40rpx; }
|
||||
.mr-5 { margin-right: 50rpx; }
|
||||
.my-0 { margin-top: 0; margin-bottom: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.my-auto { margin-top: auto; margin-bottom: auto; }
|
||||
/* #endif */
|
||||
.my-1 { margin-top: 10rpx; margin-bottom: 10rpx; }
|
||||
.my-2 { margin-top: 20rpx; margin-bottom: 20rpx; }
|
||||
.my-3 { margin-top: 30rpx; margin-bottom: 30rpx; }
|
||||
.my-4 { margin-top: 40rpx; margin-bottom: 40rpx; }
|
||||
.my-5 { margin-top: 50rpx; margin-bottom: 50rpx; }
|
||||
.mx-0 { margin-left: 0; margin-right: 0; }
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.mx-auto { margin-left: auto; margin-right: auto; }
|
||||
/* #endif */
|
||||
.mx-1 { margin-left: 10rpx; margin-right: 10rpx;}
|
||||
.mx-2 { margin-left: 20rpx; margin-right: 20rpx;}
|
||||
.mx-3 { margin-left: 30rpx; margin-right: 30rpx;}
|
||||
.mx-4 { margin-left: 40rpx; margin-right: 40rpx;}
|
||||
.mx-5 { margin-left: 50rpx; margin-right: 50rpx;}
|
||||
|
||||
.p-0 { padding: 0; }
|
||||
.p { padding: 5rpx; }
|
||||
.p-1 { padding: 10rpx; }
|
||||
.p-2 { padding: 20rpx; }
|
||||
.p-3 { padding: 30rpx; }
|
||||
.p-4 { padding: 40rpx; }
|
||||
.p-5 { padding: 50rpx; }
|
||||
.pt-0 { padding-top: 0; }
|
||||
.pt { padding-top: 5rpx; }
|
||||
.pt-1 { padding-top: 10rpx; }
|
||||
.pt-2 { padding-top: 20rpx; }
|
||||
.pt-3 { padding-top: 30rpx; }
|
||||
.pt-4 { padding-top: 40rpx; }
|
||||
.pt-5 { padding-top: 50rpx; }
|
||||
.pb-0 { padding-bottom: 0; }
|
||||
.pb-1 { padding-bottom: 10rpx; }
|
||||
.pb { padding-bottom: 5rpx; }
|
||||
.pb-2 { padding-bottom: 20rpx; }
|
||||
.pb-3 { padding-bottom: 30rpx; }
|
||||
.pb-4 { padding-bottom: 40rpx; }
|
||||
.pb-5 { padding-bottom: 50rpx; }
|
||||
.pl-0 { padding-left: 0; }
|
||||
.pl { padding-left: 5rpx; }
|
||||
.pl-1 { padding-left: 10rpx; }
|
||||
.pl-2 { padding-left: 20rpx; }
|
||||
.pl-3 { padding-left: 30rpx; }
|
||||
.pl-4 { padding-left: 40rpx; }
|
||||
.pl-5 { padding-left: 50rpx; }
|
||||
.pr-0 { padding-right: 0; }
|
||||
.pr { padding-right: 5rpx; }
|
||||
.pr-1 { padding-right: 10rpx; }
|
||||
.pr-2 { padding-right: 20rpx; }
|
||||
.pr-3 { padding-right: 30rpx; }
|
||||
.pr-4 { padding-right: 40rpx; }
|
||||
.pr-5 { padding-right: 50rpx; }
|
||||
.py-0 { padding-top: 0; padding-bottom: 0; }
|
||||
.py { padding-top: 5rpx; padding-bottom: 5rpx; }
|
||||
.py-1 { padding-top: 10rpx; padding-bottom: 10rpx; }
|
||||
.py-2 { padding-top: 20rpx; padding-bottom: 20rpx; }
|
||||
.py-3 { padding-top: 30rpx; padding-bottom: 30rpx; }
|
||||
.py-4 { padding-top: 40rpx; padding-bottom: 40rpx; }
|
||||
.py-5 { padding-top: 50rpx; padding-bottom: 50rpx; }
|
||||
.px-0 { padding-left: 0; padding-right: 0; }
|
||||
.px-1 { padding-left: 10rpx; padding-right: 10rpx;}
|
||||
.px { padding-left: 5rpx; padding-right: 5rpx;}
|
||||
.px-2 { padding-left: 20rpx; padding-right: 20rpx;}
|
||||
.px-3 { padding-left: 30rpx; padding-right: 30rpx;}
|
||||
.px-4 { padding-left: 40rpx; padding-right: 40rpx;}
|
||||
.px-5 { padding-left: 50rpx; padding-right: 50rpx;}
|
||||
/* 文字大小 */
|
||||
.font-small { font-size: 20upx;}
|
||||
.font-sm { font-size: 25upx;}
|
||||
.font { font-size: 30upx;}
|
||||
.font-md { font-size: 35upx;}
|
||||
.font-lg { font-size: 40upx;}
|
||||
.h1{font-size:80upx; line-height:1.8;}
|
||||
.h2{font-size:60upx; line-height:1.8;}
|
||||
.h3{font-size:45upx; line-height:1.8;}
|
||||
.h4{font-size:32upx; line-height:1.8;}
|
||||
.h5{font-size:30upx; line-height:1.8;}
|
||||
.h6{font-size:28upx; line-height:1.8;}
|
||||
/* 文字缩进 */
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.text-indent{text-indent:2;}
|
||||
/* #endif */
|
||||
/* 文字划线 */
|
||||
.text-through{text-decoration:line-through;}
|
||||
/* 文字对齐 */
|
||||
.text-left { text-align: left;}
|
||||
.text-right { text-align: right;}
|
||||
.text-center { text-align: center;}
|
||||
/* 文字换行溢出处理 */
|
||||
.text-ellipsis {
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
|
||||
/* #endif */
|
||||
/* #ifdef APP-PLUS-NVUE */
|
||||
lines: 1;
|
||||
/* #endif */
|
||||
}
|
||||
/* 文字粗细和斜体 */
|
||||
.font-weight-light {font-weight: 300;} /*细*/
|
||||
.font-weight-lighter {font-weight: 100;}/*更细*/
|
||||
.font-weight-normal { font-weight: 400;} /*正常*/
|
||||
.font-weight-bold { font-weight: 700;} /*粗*/
|
||||
.font-weight-bolder { font-weight: bold;} /*更粗*/
|
||||
.font-italic { font-style: italic;} /*斜体*/
|
||||
/* 文字颜色 */
|
||||
.text-white {color: #ffffff;}
|
||||
.text-primary {color: #007bff;}
|
||||
.text-hover-primary { color: #0056b3;}
|
||||
.text-secondary {color: #6c757d;}
|
||||
.text-hover-secondary { color: #494f54;}
|
||||
.text-success {color: #28a745;}
|
||||
.text-hover-success{color: #19692c;}
|
||||
.text-info { color: #17a2b8;}
|
||||
.text-hover-info {color: #0f6674;}
|
||||
.text-warning {color: #ffc107;}
|
||||
.text-hover-warning { color: #ba8b00;}
|
||||
.text-danger { color: #dc3545;}
|
||||
.text-hover-danger { color: #a71d2a;}
|
||||
.text-light { color: #f8f9fa;}
|
||||
.text-hover-light { color: #cbd3da;}
|
||||
.text-dark { color: #343a40;}
|
||||
.text-hover-dark{ color: #121416;}
|
||||
.text-body { color: #212529;}
|
||||
.text-muted { color: #6c757d;}
|
||||
.text-light-muted { color: #A9A5A0;}
|
||||
.text-light-black { color: rgba(0, 0, 0, 0.5);}
|
||||
.text-light-white { color: rgba(255, 255, 255, 0.5);}
|
||||
|
||||
/* 背景颜色 */
|
||||
.bg-primary { background-color: #007bff;}
|
||||
.bg-hover-primary:hover{ background-color: #0062cc;}
|
||||
.bg-secondary { background-color: #6c757d;}
|
||||
.bg-hover-secondary:hover{ background-color: #545b62;}
|
||||
.bg-success { background-color: #28a745;}
|
||||
.bg-hover-success { background-color: #1e7e34;}
|
||||
.bg-info { background-color: #17a2b8;}
|
||||
.bg-hover-info { background-color: #117a8b;}
|
||||
.bg-warning { background-color: #ffc107;}
|
||||
.bg-hover-warning { background-color: #d39e00;}
|
||||
.bg-danger { background-color: #dc3545;}
|
||||
.bg-hover-danger{ background-color: #bd2130;}
|
||||
.bg-light { background-color: #f8f9fa;}
|
||||
.bg-hover-light{ background-color: #dae0e5;}
|
||||
.bg-dark { background-color: #343a40;}
|
||||
.bg-hover-dark { background-color: #1d2124;}
|
||||
.bg-white { background-color: #ffffff;}
|
||||
.bg-transparent { background-color: transparent;}
|
||||
/* 边框 */
|
||||
.border { border-width: 1rpx;border-style: solid;border-color: #dee2e6;}
|
||||
.border-top {
|
||||
border-top-width: 1rpx;
|
||||
border-top-style: solid;
|
||||
border-top-color: #dee2e6;
|
||||
}
|
||||
.border-right {
|
||||
border-right-width: 1rpx;
|
||||
border-right-style: solid;
|
||||
border-right-color: #dee2e6;
|
||||
}
|
||||
.border-bottom {
|
||||
border-bottom-width: 1rpx;
|
||||
border-bottom-style: solid;
|
||||
border-bottom-color: #dee2e6;
|
||||
}
|
||||
.border-left {
|
||||
border-left-width: 1rpx;
|
||||
border-left-style: solid;
|
||||
border-left-color: #dee2e6;
|
||||
}
|
||||
.border-0 { border-width: 0!important;}
|
||||
.border-top-0 { border-top-width: 0!important;}
|
||||
.border-right-0 {border-right-width: 0!important;}
|
||||
.border-bottom-0 {border-bottom-width: 0!important;}
|
||||
.border-left-0 {border-left-width: 0!important;}
|
||||
.border-primary { border-color: #007bff;}
|
||||
.border-secondary {border-color: #6c757d;}
|
||||
.border-light-secondary {border-color: #E9E8E5;}
|
||||
.border-success {border-color: #28a745;}
|
||||
.border-info {border-color: #17a2b8;}
|
||||
.border-warning {border-color: #ffc107;}
|
||||
.border-danger {border-color: #dc3545;}
|
||||
.border-light {border-color: #f8f9fa;}
|
||||
.border-dark {border-color: #343a40;}
|
||||
.border-white {border-color: #FFFFFF;}
|
||||
/* 圆角 */
|
||||
.rounded { border-radius: 8rpx;}
|
||||
.rounded-top {
|
||||
border-top-left-radius: 8rpx;
|
||||
border-top-right-radius: 8rpx;
|
||||
}
|
||||
.rounded-right {
|
||||
border-top-right-radius: 8rpx;
|
||||
border-bottom-right-radius: 8rpx;
|
||||
}
|
||||
.rounded-bottom {
|
||||
border-bottom-right-radius: 8rpx;
|
||||
border-bottom-left-radius: 8rpx;
|
||||
}
|
||||
.rounded-left {
|
||||
border-top-left-radius: 8rpx;
|
||||
border-bottom-left-radius: 8rpx;
|
||||
}
|
||||
.rounded-circle { border-radius: 100rpx;}
|
||||
.rounded-0 { border-radius: 0;}
|
||||
/* 显示 */
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.d-none{ display: none; }
|
||||
.d-inline-block{ display: inline-block; }
|
||||
.d-block{ display: block; }
|
||||
/* #endif */
|
||||
/* 内容溢出 */
|
||||
.overflow-hidden { overflow: hidden;}
|
||||
/* 定位 */
|
||||
.position-relative { position: relative;}
|
||||
.position-absolute { position: absolute;}
|
||||
.position-fixed { position: fixed;}
|
||||
/* 定位 - 固定顶部 */
|
||||
.fixed-top {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: 1030;
|
||||
}
|
||||
/* 定位 - 固定底部 */
|
||||
.fixed-bottom {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1030;
|
||||
}
|
||||
.top-0 { top: 0; }
|
||||
.left-0 { left: 0; }
|
||||
.right-0 { right: 0; }
|
||||
.bottom-0 { bottom: 0; }
|
||||
|
||||
/* 阴影 */
|
||||
/* #ifndef APP-PLUS-NVUE */
|
||||
.shadow { box-shadow: 0 2upx 12upx rgba(0, 0, 0, 0.15);}
|
||||
.shadow-lg { box-shadow: 0upx 40upx 100upx 0upx rgba(0, 0, 0, 0.175);}
|
||||
.shadow-none { box-shadow: none !important;}
|
||||
/* #endif */
|
||||
|
||||
BIN
app-sqlite-master/app-sqlite/font.ttf
Normal file
BIN
app-sqlite-master/app-sqlite/font.ttf
Normal file
Binary file not shown.
20
app-sqlite-master/app-sqlite/index.html
Normal file
20
app-sqlite-master/app-sqlite/index.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><!--app-html--></div>
|
||||
<script type="module" src="/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
12
app-sqlite-master/app-sqlite/main.js
Normal file
12
app-sqlite-master/app-sqlite/main.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import Vue from 'vue'
|
||||
import App from './App'
|
||||
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
App.mpType = 'app'
|
||||
|
||||
const app = new Vue({
|
||||
...App
|
||||
})
|
||||
app.$mount()
|
||||
88
app-sqlite-master/app-sqlite/manifest.json
Normal file
88
app-sqlite-master/app-sqlite/manifest.json
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"name" : "l-im-app",
|
||||
"appid" : "__UNI__621989A",
|
||||
"description" : "l-im-app",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
"nvueCompiler" : "uni-app",
|
||||
"usingComponents" : true,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {
|
||||
"VideoPlayer" : {},
|
||||
"SQLite" : {}
|
||||
},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {
|
||||
"UIBackgroundModes" : "audio",
|
||||
"idfa" : false
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {}
|
||||
},
|
||||
"compilerVersion" : 3,
|
||||
"renderer" : "native"
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"vueVersion" : "2"
|
||||
}
|
||||
|
||||
|
||||
20
app-sqlite-master/app-sqlite/pages.json
Normal file
20
app-sqlite-master/app-sqlite/pages.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"pages": [
|
||||
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
|
||||
{
|
||||
"path": "pages/common/study/study",
|
||||
"style": {}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "l-im-app",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8",
|
||||
"app-plus": {
|
||||
"titleNView": false,
|
||||
"scrollIndicator": "none"
|
||||
}
|
||||
},
|
||||
"uniIdRouter": {}
|
||||
}
|
||||
92
app-sqlite-master/app-sqlite/pages/common/study/study.nvue
Normal file
92
app-sqlite-master/app-sqlite/pages/common/study/study.nvue
Normal file
@@ -0,0 +1,92 @@
|
||||
<template>
|
||||
<view>
|
||||
|
||||
<view>
|
||||
<view class="flex align-center justify-center" style="height: 350rpx;">
|
||||
<text style="font-size: 50rpx;">lld-im</text>
|
||||
</view>
|
||||
<view class="p-3 flex align-center justify-center">
|
||||
<view class="main-bg-color rounded p-3 flex align-center justify-center flex-1"
|
||||
hover-class="main-bg-hover-color" @click="getAllFriend()">
|
||||
<text class="text-white font-md">拉取所有好友资料</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="p-3 flex align-center justify-center">
|
||||
<view class="main-bg-color rounded p-3 flex align-center justify-center flex-1"
|
||||
hover-class="main-bg-hover-color" @click="getSyncFriend()">
|
||||
<text class="text-white font-md">增量拉取好友资料好友资料</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="p-3 flex align-center justify-center">
|
||||
<view class="main-bg-color rounded p-3 flex align-center justify-center flex-1"
|
||||
hover-class="main-bg-hover-color" @click="clearAllFriend(seq)">
|
||||
<text class="text-white font-md">清空所有好友数据</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import $H from '@/common/lib/request.js';
|
||||
import sqlite from "@/store/modules/sql.js"
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
console.log("createTable")
|
||||
|
||||
},
|
||||
methods: {
|
||||
getAllFriend() {
|
||||
$H.post('/friendship/getAllFriendShip', {
|
||||
appId: 10000,
|
||||
fromId: "lld"
|
||||
}, {
|
||||
token: false
|
||||
}).then(res => {
|
||||
sqlite.bathAddFriend(res.data);
|
||||
})
|
||||
},
|
||||
getSyncFriend() {
|
||||
sqlite.getFriendMaxSeq("lld",10000).then(res => {
|
||||
var maxSeq = res[0].maxSeq;
|
||||
$H.post('/friendship/syncFriendShipList', {
|
||||
appId: 10000,
|
||||
operater: "lld",
|
||||
lastSequence:maxSeq,
|
||||
maxLimit:100
|
||||
}, {
|
||||
token: false
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
});
|
||||
},
|
||||
clearAllFriend() {
|
||||
sqlite.clearAllFriend();
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
},
|
||||
onShow() {
|
||||
if (!sqlite.isOpen("main", "/sdcard/Pictures/sql.db")) {
|
||||
sqlite.openSqlite();
|
||||
}
|
||||
sqlite.createTable().then(res => {
|
||||
console.log(res)
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
194
app-sqlite-master/app-sqlite/store/modules/sql.js
Normal file
194
app-sqlite-master/app-sqlite/store/modules/sql.js
Normal file
@@ -0,0 +1,194 @@
|
||||
let sqlite = {
|
||||
//创建数据库或者有该数据库就打开
|
||||
openSqlite: function() {
|
||||
//创建数据库或者打开
|
||||
//这plus.sqlite只在手机上运行
|
||||
return new Promise((resolve, reject) => {
|
||||
console.log("打开数据库");
|
||||
plus.sqlite.openDatabase({
|
||||
name: "main", //数据库名称
|
||||
path: "_doc/sql.db", //数据库地址,uniapp推荐以下划线为开头,这到底存在哪里去了,我也不清楚,哈哈
|
||||
success(e) {
|
||||
console.log("success")
|
||||
resolve(e); //成功回调
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
reject(e); //失败回调
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
getFriendMaxSeq: function(fromId, appId) {
|
||||
|
||||
var sql = "";
|
||||
|
||||
|
||||
sql =
|
||||
"select ifnull(max(friend_sequence),0) as maxSeq from im_friendship " +
|
||||
" where app_id = " +
|
||||
appId +
|
||||
" and from_id = '" +
|
||||
fromId + "'";
|
||||
return new Promise((resolve, reject) => {
|
||||
plus.sqlite.selectSql({
|
||||
name: "main",
|
||||
sql: sql,
|
||||
success(e) {
|
||||
console.log(e)
|
||||
resolve(e);
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
reject(e);
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
addFriend: function(fromId, toId, remark, status, black, friendSeq, blackSeq, addSource, ex, appId) {
|
||||
var sql =
|
||||
" insert into im_friendship(from_id,to_id,remark,status,black,friend_sequence,black_sequence,add_source,extra,app_id) " +
|
||||
' values ("' +
|
||||
fromId +
|
||||
'","' +
|
||||
toId +
|
||||
'","' +
|
||||
remark +
|
||||
'","' +
|
||||
status +
|
||||
'","' +
|
||||
black +
|
||||
'","' +
|
||||
friendSeq +
|
||||
'","' +
|
||||
blackSeq +
|
||||
'","' +
|
||||
addSource +
|
||||
'","' +
|
||||
123 +
|
||||
'","' +
|
||||
appId +
|
||||
'")';
|
||||
console.log(sql)
|
||||
plus.sqlite.executeSql({
|
||||
name: "main",
|
||||
sql: sql,
|
||||
success(e) {
|
||||
console.log("插入成功")
|
||||
resolve(e);
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
reject(e);
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
bathAddFriend: function(data) {
|
||||
// console.log(data)
|
||||
var sql =
|
||||
" insert into im_friendship(from_id,to_id,remark,status,black,friend_sequence,black_sequence,add_source,extra,app_id) values ";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var f = data[i];
|
||||
sql += ' ("' +
|
||||
f.fromId +
|
||||
'","' +
|
||||
f.toId +
|
||||
'","' +
|
||||
f.remark +
|
||||
'","' +
|
||||
f.status +
|
||||
'","' +
|
||||
f.black +
|
||||
'","' +
|
||||
f.friendSequence +
|
||||
'","' +
|
||||
f.blackSequence +
|
||||
'","' +
|
||||
f.addSource +
|
||||
'","' +
|
||||
123 +
|
||||
'","' +
|
||||
f.appId +
|
||||
'"),';
|
||||
}
|
||||
|
||||
sql = sql.substring(0, sql.length - 1); //末尾是&
|
||||
// console.log(sql)
|
||||
plus.sqlite.executeSql({
|
||||
name: "main",
|
||||
sql: sql,
|
||||
success(e) {
|
||||
console.log("插入成功")
|
||||
resolve(e);
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
reject(e);
|
||||
},
|
||||
});
|
||||
},
|
||||
clearAllFriend: function() {
|
||||
var sql = "delete from im_friendship"
|
||||
plus.sqlite.executeSql({
|
||||
name: "main",
|
||||
sql: sql,
|
||||
success(e) {
|
||||
console.log("清除成功")
|
||||
resolve(e);
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
reject(e);
|
||||
},
|
||||
});
|
||||
},
|
||||
// ---------------------------------------------------监听数据库是否开启-----------------------------------------------------------------
|
||||
//监听数据库是否开启
|
||||
isOpen: function(name, path) {
|
||||
var ss = name || "main";
|
||||
var qq = path || "_doc/sql.db";
|
||||
//数据库打开了就返回true,否则返回false
|
||||
var open = plus.sqlite.isOpenDatabase({
|
||||
name: ss,
|
||||
path: qq,
|
||||
});
|
||||
return open;
|
||||
},
|
||||
|
||||
// ---------------------------------------------------创建表----------------------------------------------------------------
|
||||
|
||||
//在该数据库里创建表格, 这一步也必须要!
|
||||
//下面注释里说的都是说sql:'create table if not exists....这里
|
||||
//userInfo是表格名,你也可以写其他的名,不能用数字作为表格名的开头!!!
|
||||
//括号里是表格的结构,列,这里我写了四列,list,id,gender,avatar这四列
|
||||
//list后面大写的英文是自动增加的意思,因为表格里的每一行必须有唯一标识
|
||||
//这sql语句会数据库的应该都看的懂,我是前端菜鸡,所以详细说明以便跟我一样不懂sql的前端看
|
||||
//"id" TEXT 意思是这一列放的值为字符串之类的,如果是想存数字之类的就改为INTEGER
|
||||
//数据库不能存对象,数组
|
||||
//创建 9、定位表(d_location)
|
||||
createTable: function() {
|
||||
return new Promise((resolve, reject) => {
|
||||
//创建表格在executeSql方法里写
|
||||
plus.sqlite.executeSql({
|
||||
name: "main",
|
||||
//表格创建或者打开,后面为表格结构
|
||||
sql: "create table if not exists im_friendship(\"from_id\" text(50) NOT NULL,\"to_id\" text(50),\"app_id\" INTEGER(10) NOT NULL,\"remark\" TEXT(50),\"status\" int(5),\"black\" int(5),\"friend_sequence\" bigint(20),\"black_sequence\" bigint(20),\"add_source\" TEXT(20),\"extra\" TEXT(2000),PRIMARY KEY (\"app_id\", \"from_id\", \"to_id\"))",
|
||||
success(e) {
|
||||
console.log("创建成功")
|
||||
resolve(e);
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
console.log("创建失败")
|
||||
reject(e);
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//把这些方法导出去
|
||||
export default sqlite;
|
||||
76
app-sqlite-master/app-sqlite/uni.scss
Normal file
76
app-sqlite-master/app-sqlite/uni.scss
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
|
||||
/* 颜色变量 */
|
||||
|
||||
/* 行为相关颜色 */
|
||||
$uni-color-primary: #007aff;
|
||||
$uni-color-success: #4cd964;
|
||||
$uni-color-warning: #f0ad4e;
|
||||
$uni-color-error: #dd524d;
|
||||
|
||||
/* 文字基本颜色 */
|
||||
$uni-text-color:#333;//基本色
|
||||
$uni-text-color-inverse:#fff;//反色
|
||||
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
|
||||
$uni-text-color-placeholder: #808080;
|
||||
$uni-text-color-disable:#c0c0c0;
|
||||
|
||||
/* 背景颜色 */
|
||||
$uni-bg-color:#ffffff;
|
||||
$uni-bg-color-grey:#f8f8f8;
|
||||
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
|
||||
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
|
||||
|
||||
/* 边框颜色 */
|
||||
$uni-border-color:#c8c7cc;
|
||||
|
||||
/* 尺寸变量 */
|
||||
|
||||
/* 文字尺寸 */
|
||||
$uni-font-size-sm:12px;
|
||||
$uni-font-size-base:14px;
|
||||
$uni-font-size-lg:16;
|
||||
|
||||
/* 图片尺寸 */
|
||||
$uni-img-size-sm:20px;
|
||||
$uni-img-size-base:26px;
|
||||
$uni-img-size-lg:40px;
|
||||
|
||||
/* Border Radius */
|
||||
$uni-border-radius-sm: 2px;
|
||||
$uni-border-radius-base: 3px;
|
||||
$uni-border-radius-lg: 6px;
|
||||
$uni-border-radius-circle: 50%;
|
||||
|
||||
/* 水平间距 */
|
||||
$uni-spacing-row-sm: 5px;
|
||||
$uni-spacing-row-base: 10px;
|
||||
$uni-spacing-row-lg: 15px;
|
||||
|
||||
/* 垂直间距 */
|
||||
$uni-spacing-col-sm: 4px;
|
||||
$uni-spacing-col-base: 8px;
|
||||
$uni-spacing-col-lg: 12px;
|
||||
|
||||
/* 透明度 */
|
||||
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
|
||||
|
||||
/* 文章场景相关 */
|
||||
$uni-color-title: #2C405A; // 文章标题颜色
|
||||
$uni-font-size-title:20px;
|
||||
$uni-color-subtitle: #555555; // 二级标题颜色
|
||||
$uni-font-size-subtitle:26px;
|
||||
$uni-color-paragraph: #3F536E; // 文章段落颜色
|
||||
$uni-font-size-paragraph:15px;
|
||||
Reference in New Issue
Block a user